Maple Advanced Programming Guide
Total Page:16
File Type:pdf, Size:1020Kb
Maple 9 Advanced Programming Guide M. B. Monagan K. O. Geddes K. M. Heal G. Labahn S. M. Vorkoetter J. McCarron P. DeMarco c Maplesoft, a division of Waterloo Maple Inc. 2003. ii ¯ Maple, Maplesoft, Maplet, and OpenMaple are trademarks of Water- loo Maple Inc. c Maplesoft, a division of Waterloo Maple Inc. 2003. All rights re- served. The electronic version (PDF) of this book may be downloaded and printed for personal use or stored as a copy on a personal machine. The electronic version (PDF) of this book may not be distributed. Information in this document is subject to change without notice and does not rep- resent a commitment on the part of the vendor. The software described in this document is furnished under a license agreement and may be used or copied only in accordance with the agreement. It is against the law to copy the software on any medium as specifically allowed in the agreement. Windows is a registered trademark of Microsoft Corporation. Java and all Java based marks are trademarks or registered trade- marks of Sun Microsystems, Inc. in the United States and other countries. Maplesoft is independent of Sun Microsystems, Inc. All other trademarks are the property of their respective owners. This document was produced using a special version of Maple that reads and updates LATEX files. Printed in Canada ISBN 1-894511-44-1 Contents Preface 1 Audience . 1 Worksheet Graphical Interface . 2 Manual Set . 2 Conventions . 3 Customer Feedback . 3 1 Procedures, Variables, and Extending Maple 5 Prerequisite Knowledge . 5 In This Chapter . 5 1.1 Nested Procedures . 5 Scoping Rules . 6 Local Versus Global Variables . 6 The Quick-Sort Algorithm . 8 Example . 8 Creating a Uniform Random Number Generator . 11 1.2 Procedures That Return Procedures . 14 Conveying Values . 14 Creating a Newton Iteration . 14 Example 1 . 15 Example 2 . 16 A Shift Operator . 17 1.3 Local Variables and Invoking Procedures . 19 Example 1 . 19 Example 2 . 20 Procedure as a Returned Object . 22 Example 3 . 22 Example 4 . 24 Exercises . 26 1.4 Interactive Input . 27 iii iv Contents ¯ Reading Strings from the Terminal . 27 Example 1 . 28 Reading Expressions from the Terminal . 28 Example 2 . 29 Converting Strings to Expressions . 30 1.5 Extending Maple . 31 Defining New Types . 31 Exercises . 33 Neutral Operators . 33 Example 1 . 34 Exercise . 37 Extending Commands . 39 1.6 Conclusion . 42 2 Programming with Modules 43 Modules . 43 Examples . 44 Module Versus Procedure . 45 Accessing Module Exports . 46 In This Chapter . 46 2.1 Syntax and Semantics . 47 The Module Definition . 47 The Module Body . 48 Module Parameters . 48 Named Modules . 48 Declarations . 50 Exported Local Variables . 52 Module Options . 57 Implicit Scoping Rules . 58 Lexical Scoping Rules . 58 Modules and Types . 60 Example: A Symbolic Differentiator . 61 2.2 Records . 72 2.3 Packages . 78 What Is a Package . 78 Writing Maple Packages by Using Modules . 80 The LinkedList Package . 80 Code Coverage Profiling Package . 87 The Shapes Package . 94 2.4 The use Statement . 103 Operator Rebinding . 106 Contents v ¯ 2.5 Modeling Objects . 108 Priority Queues . 111 An Object-oriented Shapes Package . 115 2.6 Interfaces and Implementations . 117 Interfaces . 118 Generic Graph Algorithms . 124 Quotient Fields . 129 A Generic Group Implementation . 138 2.7 Extended Example: A Search Engine . 159 Introduction to Searching . 159 Inverted Term Occurrence Indexing . 161 The Vector Space Model . 164 Term Weighting . 167 Building a Search Engine Package . 168 Latent Semantic Analysis . 172 The Search Engine Package . 173 Using the Package . 180 2.8 Conclusion . 184 3 Input and Output 185 In This Chapter . 185 3.1 A Tutorial Example . 186 3.2 File Types and Modes . 190 Buffered Files versus Unbuffered Files . 190 Text Files versus Binary Files . 190 Read Mode versus Write Mode . 191 The default and terminal Files . 191 3.3 File Descriptors versus File Names . 192 3.4 File Manipulation Commands . 193 Opening and Closing Files . 193 Position Determination and Adjustment . 194 Detecting the End of a File . 195 Determining File Status . 195 Removing Files . 196 3.5 Input Commands . 197 Reading Text Lines from a File . 197 Reading Arbitrary Bytes from a File . 197 Formatted Input . 198 Reading Maple Statements . 204 Reading Tabular Data . 204 3.6 Output Commands . 206 vi Contents ¯ Configuring Output Parameters Using the interface Com- mand . 206 One-Dimensional Expression Output . 206 Two-Dimensional Expression Output . 207 Writing Maple Strings to a File . 210 Writing Bytes to a File . 210 Formatted Output . 211 Writing Tabular Data . 215 Flushing a Buffered File . 216 Redirecting the default Output Stream . 217 3.7 Conversion Commands . 218 Conversion between Strings and Lists of Integers . 218 Parsing Maple Expressions and Statements . 218 Formatted Conversion to and from Strings . 220 3.8 Notes to C Programmers . 221 3.9 Conclusion . 221 4 Numerical Programming in Maple 223 Floating-Point Calculations . 223 In This Chapter . 223 Why Use Numerical Computations . 223 4.1 The Basics of evalf . 224 4.2 Hardware Floating-Point Numbers . 227 Newton's Method . 230 Computing with Arrays of Numbers . 232 4.3 Floating-Point Models in Maple . 235 Software Floats . 235 Roundoff Error . 236 4.4 Extending the evalf Command . 238 Defining New Constants . 238 Defining New Functions . 240 4.5 Using the Matlab Package . 243 4.6 Conclusion . 244 5 Programming with Maple Graphics 245 Maple Plots . 245 Creating Plotting Procedures . 245 In This Chapter . 245 5.1 Basic Plotting Procedures . ..