95503統資軟體課程講義 符號數學運算軟體 1 銘傳大學應用統計資訊學系 蔡桂宏 製作 95503統資軟體課程講義 MAPLE軟體簡介 2 銘傳大學應用統計資訊學系 蔡桂宏 製作 Introduction to Maple Installing Maple Starting Maple The Maple Worksheet Window Accessing Help Pages Entering Expressions in Maple 3 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple worksheet window 4 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple worksheet window A.toolbar B.Context bar C.Section heading D.Maple input E.Maple output F.Execution group G.Section range bracket H.Prompt I.Symbol palette J.Expression palette K.Matrix palette L.Vector palette 5 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple Help window 6 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple Help window A.Help page name B.toolbar C.Help navigator Tabs G.Help Page Title D.Topic folder E.Bullet H.Example I.Also See F.Description 7 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple 9 Getting Started Guide This guide contains an introduction to the graphical user interface and a tutorial that outlines using Maple to solve mathematical problems and create technical documents. It also contains additional information for new users about the help system, N e w U s e r ’ s To u r , e x a m p l e worksheets and Maplesoft Web site. 8 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple 9 Learning Guide This guide explains how Maple and the Maple language work. It describes the most important commands and uses them to solve technical problems. User hints for Maplet applications are also described in the guide. 9 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple 9 Introductory Programming Guide This guide introduces the basic Maple programming concepts, such as expressions, data structures, looping and decision mechanisms, procedures, input and output, debugging, and the Maplet User Interface Customization System. 10 銘傳大學應用統計資訊學系 蔡桂宏 製作 Maple 9 Advanced Programming Guide This guide extends the basic Maple programming concepts to more advanced topics, such as modules, graphics programming, and compiled code. 11 銘傳大學應用統計資訊學系 蔡桂宏 製作 Tutorials Maple provides three tutorials that can be accessed from the New User submenu of the help menu: Full Tour Quick Tour Basic How To 12 銘傳大學應用統計資訊學系 蔡桂宏 製作 Websites www.maplesoft.com www.mapleapps.com Information on products, support, and services. Including a forum for sharing solutions, demonstrations, of Maple PowerTools, and an online tutorial www.maple4students.com Includes course help, Maple tutorials, and Maple graphics 13 銘傳大學應用統計資訊學系 蔡桂宏 製作 Tokens—Reserved Words(1) Keywords break, next if, then, elif, else for, from, in, by, to, while, do proc, local, global, option, error, return options, description export, module, use end 銘傳大學應用統計資訊學系 蔡桂宏 製作 Purpose loop control if statement for and while loops procedures modules ends structures 14 Tokens—Reserved Words(2) Keywords Purpose assuming try, catch, finally assume facility exception handling read and save read, save statements quit, done, stop ending Maple union, minus, intersect, subset set operators and, or, not, xor Boolean operators implies implication operator mod modulus operator 銘傳大學應用統計資訊學系 蔡桂宏 製作 15 Tokens—%operator % last expression %% second-last expression %%% third-last expression 16 銘傳大學應用統計資訊學系 蔡桂宏 製作 Tokens—Binary Operator Operator Meaning Operator Meaning + addition < less than - subtraction <= less or equal * multiplication > greater than / division >= greater or equal ^ exponentiation <> not equal $ sequence operator -> arrow operator @ composition union set union @@ repeated composition minus set difference &string neutral operator intersect set intersection , expressiop separator :: type declaration, pattern binding || concatenation and logical and . noncommutative multiplication or logical or .. ellipsis xor exclusive or mod modulo implies inplication := assignment subset subset 17 銘傳大學應用統計資訊學系 蔡桂宏 製作 Tokens—Unary Operator Operator + ! $ not &string . Meaning unary plus(prefix) unary minus(prefix) factorial(postfix) sequence operator(prefix) logical not(prefix) neutral operator(prefix) decimal point(prefix or postfix) 18 銘傳大學應用統計資訊學系 蔡桂宏 製作 Tokens—Initially known Name Name Meaning Name Meaning Catalan Catalan's constant lasterror most recent error libname pathname of Maple library(ies) constant initially-known symbolic s const. Digits number of digits in floatingpoint NULL empty expression sequence FAIL cannot determine value Order truncation order for series false Boolean evaluation Pi mathematical constant gamma Euler's constant printleve control display of information l I complex number true Boolean evaluation infinity mathematical infinity undefine d undefined 銘傳大學應用統計資訊學系 蔡桂宏 製作 19 Token – Concatenation Operator | | String | | name String | | naturalInteger String | | string String | | (expression) 20 銘傳大學應用統計資訊學系 蔡桂宏 製作 Token – Escape Characters ? – Help procedure ! --Host operating system # -- Comment \ --continuation of lines and grouping characters in a token. 21 銘傳大學應用統計資訊學系 蔡桂宏 製作 Selection Statements if Boolean expression then statement sequence elif Boolean expression then statement sequence else statement sequence end if 銘傳大學應用統計資訊學系 蔡桂宏 製作 22 Repetition Statements for name from expr by expr to expr while expr do statement sequence end do; 23 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.1 Introduction Understanding functions in Maple is also a good starting point for our discussions about Maple programming. There are two distinct ways to represent mathematical functions in Maple. That is Maple expression ( := ) and a Maple function ( -> ). 24 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.2 Functions in Mathematics the formula f ( x) x 2has as its domain the set of all real numbers, its codomain is the set of all positive real numbers. 2 g ( x ) x the formula has as its domain the set of all positive real numbers, its codomain is the set of all positive real numbers. the formula h( x) x 2 has as its domain the set of all negative real numbers, its codomain is the set of all positive real numbers. 25 銘傳大學應用統計資訊學系 蔡桂宏 製作 the function f is not invertible. The inverse of the function g is g ( 1) ( x) The inverse of the function h is h ( 1) ( x) .x So f, g, and h all have the same formula (i.e., rule) but they are not the same function. The domain and codomain are important parts of the definition of a mathematical function. .x 26 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.3 Functions in Maple These two ways of representing mathematical functions are not equivalent. And it is subtle and non-obvious. A Maple function is something defined using arrow notation ( ->). A Maple expression is something defined using ( := ). x -> x^2; x -> a*x^2; (x,a) -> a*x^2; 27 銘傳大學應用統計資訊學系 蔡桂宏 製作 ax 2 bx c . Maple will treat all unassigned names (i.e., all unknowns) as variables. The mathematical function g := x -> x^2 – 1; g(2); g(x) := x^2-1; g ( x) x 2 1. g(2); 28 銘傳大學應用統計資訊學系 蔡桂宏 製作 g := cos + ln; k := x -> cos(x) + ln(x); g(Pi); k(Pi); h := cos + (x -> 3*x-1); h(z); 29 銘傳大學應用統計資訊學系 蔡桂宏 製作 f := x -> (1 + x^2)/x^3; g := (1 + (x -> x^2))/(x -> x^3); h := (1 + (z -> z^2))/(y -> y^3); f(1); g(1); h(1); m := x -> (1 + exp(x))/x^3; n := (1 + exp)/(x -> x^3); m(1); n(1); 30 銘傳大學應用統計資訊學系 蔡桂宏 製作 f := x^2; g := x -> 2 * x^3 * f; g(x); g(2); f := x -> x^2; g := 2 * (x -> x^3) * f; g(x); g(2); 31 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.4 Expressions vs. functions: Some puzzles The following examples are meant to show that there are still a lot of subtle things to learn about variables and functions and how Maple handles them. 32 銘傳大學應用統計資訊學系 蔡桂宏 製作 Puzzle 1 f1 := x^2+1; f2 := y^2+1; f3 := f1 + f2; f3 is a function of two variables. g1 := x -> x^2+1; g2 := y -> y^2+1; g3 := g1 + g2; g3(x); g3 is not a function of two variables. 33 銘傳大學應用統計資訊學系 蔡桂宏 製作 Puzzle 2 x:='x': a:=1: b:=2: c:=3: a*x^2+b*x+c; f := unapply( a*x^2+b*x+c, x ); g := x -> a*x^2+b*x+c; f(x); g(x); D(f); D(g); p := x^2 + sin(x) + 1; p(2); p := unapply(p,x); p(2); 34 銘傳大學應用統計資訊學系 蔡桂宏 製作 Puzzle 3 plot( x^2, x=-10..10 ); plot( x->x^2, -10..10 ); plot( x^2, -10..10 ); plot( x->x^2, x=-10..10 ); 35 銘傳大學應用統計資訊學系 蔡桂宏 製作 x := 5; plot( x^2, x=-10..10 ); plot( x->x^2, -10..10 ); 36 銘傳大學應用統計資訊學系 蔡桂宏 製作 Puzzle 4 f := x^2; f := x*f; f; g := x -> x^2; g := x -> x*g(x); g(x); 37 銘傳大學應用統計資訊學系 蔡桂宏 製作 Puzzle 5 x^2; f := %; plot( f, x=-3..3 ); x^2; g := x -> %; plot( g, -3..3 ); 38 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.5 Working with expressions and Maple functions (review) g := x -> x^2-3*x-10; g(x); g; print(g); eval(g); op(g); 39 銘傳大學應用統計資訊學系 蔡桂宏 製作 plot( a*x^2, -5..5 ); plot( x->a*x^2, -5..5 ); plot3d( (x,a)->a*x^2, -5..5, -10..10 ); 40 銘傳大學應用統計資訊學系 蔡桂宏 製作 We wanted to evaluate our mathematical function at a point, say at 1. f := x^2 - 3*x-10; g := x -> x^2-3*x-10; subs( x=1, f ); eval( f, x=1 ); g(1); f(1); subs( x=1, g ); 41 銘傳大學應用統計資訊學系 蔡桂宏 製作 eval( f, x=1 ); subs( x=1, f ); Think of reading eval( f, x=1) as " evaluate f at x=1" and think of reading subs (x=1,f) as " substitute x=1 into f". factor( f ); factor( g(x) ); factor( f (x) ); factor( g ); 42 銘傳大學應用統計資訊學系 蔡桂宏 製作 diff( f, x ); D( g ); diff command needed a reference to x in it but the D command did not. D( f ); diff( g, x ); 43 銘傳大學應用統計資訊學系 蔡桂宏 製作 Let us do an example of combining two mathematical functions f and g by composing them to make a new function . h( x) f ( g ( x)) For the expression: f := x^2 + 3*x; g := x + 1; h := subs( x=g, f ); subs(x=1, h); 44 銘傳大學應用統計資訊學系 蔡桂宏 製作 For the function: f := x -> x^2 + 3*x; g := x -> x + 1; h := f@g; h(x); h(1); 45 銘傳大學應用統計資訊學系 蔡桂宏 製作 Example: representing a mathematical function of two variables. f := (x^2+y^2)/(x+x*y); g := (x,y) -> (x^2+y^2)/(x+x*y); subs( x=1, y=2, f ); eval( f, {x=1, y=2} ); g(1,2); simplify( f ); simplify( g(x,y) ); 46 銘傳大學應用統計資訊學系 蔡桂宏 製作 Here is how we compute partial derivatives of the expression. diff( f, x ); simplify( % ); diff( f, y ); simplify( % ); D[1](g); simplify( %(x,y) ); D[2](g); simplify( %(x,y) ); 47 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.6 Anonymous functions and expressions (review) Here we define an anonymous function and then evaluate, differentiate, and integrate it. (z -> z^2*tan(z))(Pi/4); x -> x^3 + 2*x; %(2); D( %% ); int( (%%%)(x), x ); 銘傳大學應用統計資訊學系 蔡桂宏 製作 48 These next two commands show again that defining a function and naming a function are two distinct steps. z -> z/sqrt(1-z); f := %; 49 銘傳大學應用統計資訊學系 蔡桂宏 製作 f := ((x,y) -> x^2) + ((x,y) -> y^3); f(u,v); f(2,3); g := (x -> x^2) + (y -> y^3); g(u,v); g(2,3); 50 銘傳大學應用統計資訊學系 蔡桂宏 製作 plot(w^3+1, w=-1..1); plot( ((x,y)->x^3-y^3)(w,-1), w = -1..1 ); plot( w->(((x,y)->x^3-y^3)(w,-1)), -1..1 ); 51 銘傳大學應用統計資訊學系 蔡桂宏 製作 1.7. Functions that return a function f := a -> ( y->a*y ); f(3); f(3)(4); 52 銘傳大學應用統計資訊學系 蔡桂宏 製作 f := (x,y) -> 3*x^2+5*y^2; f(x,3); fx3 := x -> f(x,3); fx3(x); slice_f_with_y_fixed := c -> ( x>f(x,c) ); fx3 := slice_f_with_y_fixed(3); fx3(x); 53 銘傳大學應用統計資訊學系 蔡桂宏 製作