ebook img

Maple Introductory Programming Guide (1/2) PDF

398 Pages·1.193 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Maple Introductory Programming Guide (1/2)

Maple Introductory Programming Guide M. B. Monagan K. O. Geddes K. M. Heal G. Labahn S. M. Vorkoetter J. McCarron P. DeMarco Maplesoft, a division of Waterloo Maple Inc. 2007. ii Maplesoft, Maple, and Maplet are all trademarks of Waterloo Maple Inc. © Maplesoft, a division of Waterloo Maple Inc. 2007. All rights reserved. Information in this document is subject to change without notice and does not represent 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 except as specifically allowed in the agreement. Windows is a registered trademark of Microsoft Corporation. Java and all Java based marks are trademarks or registered trademarks 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 978-1-897310-17-5 Contents Preface 1 Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Worksheet Graphical Interface . . . . . . . . . . . . . . . . . . 1 Manual Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 The Maple Programming Language . . . . . . . . . . . . . 3 Using This Book . . . . . . . . . . . . . . . . . . . . . . . 3 Customer Feedback . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 Introduction to Programming in Maple 5 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 5 1.1 The Maple Software . . . . . . . . . . . . . . . . . . . . . 5 1.2 Maple Statements . . . . . . . . . . . . . . . . . . . . . . 6 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . 6 Maple Statements . . . . . . . . . . . . . . . . . . . . . . 7 Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . 7 Displaying a Text String . . . . . . . . . . . . . . . . . . . 7 Performing an Arithmetic Operation . . . . . . . . . . . . 8 Assigning to a Name . . . . . . . . . . . . . . . . . . . . . 8 Using Maple Library Routines. . . . . . . . . . . . . . . . 9 1.3 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Defining a Simple Procedure . . . . . . . . . . . . . . . . 9 Maple Library Routines, Built-In Routines, and User- Defined Procedures . . . . . . . . . . . . . . . . . . 13 1.4 InterruptingComputationsandClearingtheInternalMem- ory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Interrupting a Maple Computation . . . . . . . . . . . . . 16 Clearing the Maple Internal Memory . . . . . . . . . . . . 17 1.5 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 17 Unexpected End of Statement . . . . . . . . . . . . . . . . 17 iii iv • Contents Missing Operator . . . . . . . . . . . . . . . . . . . . . . . 18 Invalid, Wrong Number or Type of Arguments . . . . . . 19 Unbalanced Parentheses . . . . . . . . . . . . . . . . . . . 19 Assignment Versus Equality . . . . . . . . . . . . . . . . . 20 1.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2 Maple Language Elements 23 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 23 2.1 Character Set . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2 Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . 24 Programming-Language Operators . . . . . . . . . . . . . 25 Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Natural Integers . . . . . . . . . . . . . . . . . . . . . . . 46 2.3 Using Special Characters. . . . . . . . . . . . . . . . . . . 46 Token Separators . . . . . . . . . . . . . . . . . . . . . . . 46 Blank Spaces, New Lines, Comments, and Continuation . 46 Punctuation Marks . . . . . . . . . . . . . . . . . . . . . . 48 Escape Characters . . . . . . . . . . . . . . . . . . . . . . 51 2.4 Types and Operands . . . . . . . . . . . . . . . . . . . . . 51 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Concatenations . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 55 Attempting to Assign to a Protected Name . . . . . . . . 55 Invalid Left-Hand Assignment . . . . . . . . . . . . . . . . 56 Incorrect Syntax in Parse . . . . . . . . . . . . . . . . . . 56 White Space Characters within a Token . . . . . . . . . . 56 Incorrect Use of Double and Single Quotes . . . . . . . . . 57 2.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3 Maple Expressions and Statements 59 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 59 3.1 Syntax and Semantics . . . . . . . . . . . . . . . . . . . . 59 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.2 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Contents • v Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . 89 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 3.3 Using Expressions . . . . . . . . . . . . . . . . . . . . . . 96 Investigating the Parts of an Expression . . . . . . . . . . 96 Evaluating and Simplifying Expressions . . . . . . . . . . 100 Unevaluated Expressions . . . . . . . . . . . . . . . . . . . 100 Substituting Subexpressions . . . . . . . . . . . . . . . . . 103 Displaying Large Expressions: Labels . . . . . . . . . . . . 105 Structured Types . . . . . . . . . . . . . . . . . . . . . . . 106 3.4 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 110 The Assignment Statement . . . . . . . . . . . . . . . . . 111 Selection Statements . . . . . . . . . . . . . . . . . . . . . 114 Repetition Statements . . . . . . . . . . . . . . . . . . . . 115 The read and save Statements . . . . . . . . . . . . . . . 117 The break and next Statements . . . . . . . . . . . . . . 118 The error and return Statements . . . . . . . . . . . . . 118 The use Statement . . . . . . . . . . . . . . . . . . . . . . 119 The quit Statement . . . . . . . . . . . . . . . . . . . . . 119 3.5 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 119 Syntax Errors . . . . . . . . . . . . . . . . . . . . . . . . . 120 Reserved Word Unexpected . . . . . . . . . . . . . . . . . 120 Break or Next Not in Loop . . . . . . . . . . . . . . . . . 121 3.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4 Basic Data Structures 123 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 123 4.1 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Manipulating a Set . . . . . . . . . . . . . . . . . . . . . . 124 4.2 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Manipulating a List . . . . . . . . . . . . . . . . . . . . . 128 4.3 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 An Alternate Method for Generating a Table . . . . . . . 135 Table Evaluation Rules . . . . . . . . . . . . . . . . . . . 135 Manipulating a Table . . . . . . . . . . . . . . . . . . . . 136 4.4 arrays and Arrays . . . . . . . . . . . . . . . . . . . . . . 141 Evaluation Rules for arrays . . . . . . . . . . . . . . . . . 144 Manipulating arrays and Arrays. . . . . . . . . . . . . . . 145 4.5 Selecting Elements from a Data Structure . . . . . . . . . 152 vi • Contents The Selection Operation [] . . . . . . . . . . . . . . . . . 152 The op Command . . . . . . . . . . . . . . . . . . . . . . 155 The select, remove, and selectremove Commands . . . 156 4.6 Converting Between Data Structures . . . . . . . . . . . . 158 Converting a Sequence to a Set or a List . . . . . . . . . . 158 Converting Other Data Structures . . . . . . . . . . . . . 159 4.7 Other Maple Data Structures . . . . . . . . . . . . . . . . 159 Stacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 4.8 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 162 Wrong Number of Parameters in Function . . . . . . . . . 163 Invalid Subscript Selector . . . . . . . . . . . . . . . . . . 163 Requires Range or Initialization List for Building arrays . 164 Error in array Bound or Array Index out of Range . . . . 164 4.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 166 5 Flow Control 167 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 167 5.1 Selection and Conditional Execution . . . . . . . . . . . . 167 The if Statement . . . . . . . . . . . . . . . . . . . . . . 167 The ‘if‘ Operator . . . . . . . . . . . . . . . . . . . . . . 171 5.2 Repetition . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 The for Loop . . . . . . . . . . . . . . . . . . . . . . . . . 173 The while Loop . . . . . . . . . . . . . . . . . . . . . . . 177 Control within Loops . . . . . . . . . . . . . . . . . . . . . 178 5.3 Looping Commands . . . . . . . . . . . . . . . . . . . . . 180 The map Command . . . . . . . . . . . . . . . . . . . . . . 180 The select, remove, and selectremove Commands . . . 181 The zip Command . . . . . . . . . . . . . . . . . . . . . . 182 The seq, add, and mul Commands . . . . . . . . . . . . . 183 Using Specialized Looping Commands . . . . . . . . . . . 185 5.4 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 187 Cannot Evaluate Boolean in if Statement . . . . . . . . . 188 Value in Loop Must Be Numeric or Character . . . . . . . 188 Variable Previously Assigned . . . . . . . . . . . . . . . . 189 Wrong Parameters in Function $ . . . . . . . . . . . . . . 190 5.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 191 6 Maple Procedures 193 Contents • vii In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 193 6.1 Defining a Procedure . . . . . . . . . . . . . . . . . . . . . 193 Naming a Procedure . . . . . . . . . . . . . . . . . . . . . 194 Executing a Procedure . . . . . . . . . . . . . . . . . . . . 194 6.2 Procedure Components . . . . . . . . . . . . . . . . . . . 196 Formal Parameters . . . . . . . . . . . . . . . . . . . . . . 196 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Procedure Options . . . . . . . . . . . . . . . . . . . . . . 206 Procedure Description . . . . . . . . . . . . . . . . . . . . 214 Procedure Body Statements . . . . . . . . . . . . . . . . . 215 6.3 Procedure Interpretation . . . . . . . . . . . . . . . . . . . 215 6.4 Procedure Return Values . . . . . . . . . . . . . . . . . . 217 Explicit Returns . . . . . . . . . . . . . . . . . . . . . . . 217 Error Returns . . . . . . . . . . . . . . . . . . . . . . . . . 219 Returning Values through Parameters . . . . . . . . . . . 220 Returning Unevaluated . . . . . . . . . . . . . . . . . . . 222 6.5 Documenting Your Procedures . . . . . . . . . . . . . . . 225 Indicating Copyright . . . . . . . . . . . . . . . . . . . . . 225 Formatting Code for Readability . . . . . . . . . . . . . . 225 Adding Comments . . . . . . . . . . . . . . . . . . . . . . 226 Including a Procedure Description . . . . . . . . . . . . . 226 Creating Help Pages . . . . . . . . . . . . . . . . . . . . . 227 6.6 Saving and Retrieving Procedures . . . . . . . . . . . . . 227 6.7 Viewing Maple Library Source Code . . . . . . . . . . . . 228 Special Evaluation Rules for Procedures . . . . . . . . . . 228 Displaying Maple Library Source Code . . . . . . . . . . . 229 6.8 Alternate Methods for Defining a Procedure . . . . . . . . 231 Functional Operators: Mapping Notation . . . . . . . . . 231 The unapply Command . . . . . . . . . . . . . . . . . . . 232 Unnamed Procedures and the map Command . . . . . . . 232 Building a List of Arguments . . . . . . . . . . . . . . . . 234 6.9 The Procedure Object . . . . . . . . . . . . . . . . . . . . 236 The procedure Type . . . . . . . . . . . . . . . . . . . . . 236 Procedure Operands . . . . . . . . . . . . . . . . . . . . . 237 6.10 Using Data Structures to Solve Problems . . . . . . . . . 239 Computing an Average . . . . . . . . . . . . . . . . . . . . 239 Testing for Membership . . . . . . . . . . . . . . . . . . . 241 Performing a Binary Search . . . . . . . . . . . . . . . . . 242 Plotting the Roots of a Polynomial . . . . . . . . . . . . . 243 Connected Graphs . . . . . . . . . . . . . . . . . . . . . . 246 6.11 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 251 viii • Contents Missing Argument . . . . . . . . . . . . . . . . . . . . . . 251 Incorrect Argument Type . . . . . . . . . . . . . . . . . . 252 Implicitly Declared Local Variable . . . . . . . . . . . . . 252 Understanding Names, Functions, and Remember Tables . 253 6.12 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 6.13 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 256 7 Input and Output 257 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 257 7.1 Screen and Keyboard I/O . . . . . . . . . . . . . . . . . . 257 Printing Output to the Screen . . . . . . . . . . . . . . . . 257 Interactive Input . . . . . . . . . . . . . . . . . . . . . . . 264 7.2 Standard Disk I/O . . . . . . . . . . . . . . . . . . . . . . 269 Readable File Formats in Maple . . . . . . . . . . . . . . 270 Using Filenames in Maple Statements . . . . . . . . . . . 271 Reading and Saving Data in Maple . . . . . . . . . . . . . 271 Importing Data from Files . . . . . . . . . . . . . . . . . . 274 Exporting Data to Files . . . . . . . . . . . . . . . . . . . 278 7.3 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . 280 Syntax Error in readstat . . . . . . . . . . . . . . . . . . 280 Extra Characters at End of Parsed String . . . . . . . . . 280 Unable to Read Filename . . . . . . . . . . . . . . . . . . 281 7.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 7.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 282 8 Debugging and Efficiency 283 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 283 8.1 A Tutorial Example . . . . . . . . . . . . . . . . . . . . . 284 Numbering the Procedure Statements I . . . . . . . . . . 285 Invoking the Debugger I . . . . . . . . . . . . . . . . . . . 285 Controlling the Execution of a Procedure During Debug- ging I . . . . . . . . . . . . . . . . . . . . . . . . . 287 Invoking the Debugger II . . . . . . . . . . . . . . . . . . 292 8.2 Maple Debugger Commands . . . . . . . . . . . . . . . . . 296 Numbering the Procedure Statements II . . . . . . . . . . 296 Invoking the Debugger III . . . . . . . . . . . . . . . . . . 296 Controlling the Execution of a Procedure During Debug- ging II . . . . . . . . . . . . . . . . . . . . . . . . . 305 Changing the State of a Procedure During Debugging . . 306 Examining the State of a Procedure During Debugging . . 309 Using Top-Level Commands at the Debugger Prompt . . 314 Contents • ix Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . 314 8.3 Detecting Errors . . . . . . . . . . . . . . . . . . . . . . . 315 Tracing a Procedure . . . . . . . . . . . . . . . . . . . . . 315 Using Assertions . . . . . . . . . . . . . . . . . . . . . . . 320 Handling Exceptions . . . . . . . . . . . . . . . . . . . . . 323 Checking Syntax . . . . . . . . . . . . . . . . . . . . . . . 329 8.4 Creating Efficient Programs . . . . . . . . . . . . . . . . . 330 Displaying Time and Memory Statistics . . . . . . . . . . 330 Profiling a Procedure . . . . . . . . . . . . . . . . . . . . . 332 8.5 Managing Resources . . . . . . . . . . . . . . . . . . . . . 334 Setting a Time Limit on Computations. . . . . . . . . . . 334 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . 335 Communicating with the Kernel . . . . . . . . . . . . . . 336 8.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 8.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 337 9 Introduction to the Maplet User Interface Customization System 339 In This Chapter . . . . . . . . . . . . . . . . . . . . . . . 339 9.1 Uses of Maplet Applications . . . . . . . . . . . . . . . . . 339 Custom Maple Calculators . . . . . . . . . . . . . . . . . . 340 Interfaces to Maple Packages and Routines . . . . . . . . 341 Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 9.2 The Maplets Package . . . . . . . . . . . . . . . . . . . . . 342 Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 9.3 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 343 9.4 Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Window Body Elements . . . . . . . . . . . . . . . . . . . 344 Layout Elements . . . . . . . . . . . . . . . . . . . . . . . 353 MenuBar Elements . . . . . . . . . . . . . . . . . . . . . . 354 ToolBar Elements . . . . . . . . . . . . . . . . . . . . . . 355 Command Elements . . . . . . . . . . . . . . . . . . . . . 356 Dialog Elements . . . . . . . . . . . . . . . . . . . . . . . 357 Other Elements . . . . . . . . . . . . . . . . . . . . . . . . 361 Reference Options . . . . . . . . . . . . . . . . . . . . . . 363 9.5 Example Maplet Applications . . . . . . . . . . . . . . . . 363 Linear Algebra Subpackage . . . . . . . . . . . . . . . . . 364 x • Contents Using the Example Maplet Applications . . . . . . . . . . 364 9.6 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Maplet System Global Variables . . . . . . . . . . . . . . 367 9.7 Running a Maplet Application . . . . . . . . . . . . . . . 367 9.8 Writing a Maplet Application . . . . . . . . . . . . . . . . 368 Defining a Maplet Application . . . . . . . . . . . . . . . 368 Maplet Application Programming Style Guidelines . . . . 368 9.9 After Reading This Chapter . . . . . . . . . . . . . . . . . 369 9.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Index 371

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.