1、数学软件,Maple软件使用教程课件,A comprehensive computer system for advanced mathematics,提高篇,数学软件提高篇,数学软件Maple篇第二章 Maple数学,Maple Maple Maple Maple Maple,第二章 Maple数学,1.寻求帮助2.Maple程序设计3.Maple的数据类型4.初等数学实验5.函数6.Maple作图7.微积分实验8.输入输出与文件操作9.应用专题,内容提要,1. 寻求帮助,从Help(帮助)菜单按类查找?命令, 例:?animate ?anim完整帮助信息,包括六个方面: Function:
2、函数 Calling sequence:命令格式 Parameters:参数 Synopsis:说明 Examples:例 See also:相关条目查找部分信息 info(命令);函数作用 usage(命令); 调用格式 example(命令);实例 related(命令);相关条目F1,选择左侧导航栏打开相应面板进行输入,2. Maple程序设计,语句类型,2.1 语句和表达式,2. Maple语言基础,条件语句格式1: if then fi;格式2: if then else fi;格式3: if then elif then else end if;,2.1 语句和表达式,例:,res
3、tart:f:=proc(x) local y; if x=0 then y:=0; else if x=10 then y:=10+2*x; else if x=20 then y:=30; else y:=30-(x-20)/2; fi; fi; fi; end proc;plot(f(x),x=-10.50);,或者写成:restart:f:=proc(x) local y; if x=0 then y:=0; elif x=10 then y:=10+2*x; elif x100 then exit else x:=x+i fi od: x; 1+2+(k-1)100 #嵌套, 退出x
4、:=0 : j:=0: while j=100 do x:=x+j:j:=j+1 od:x; #while-do-od 1+2+100x:=0 : j:=0: for j in 1,4,5,108 while j=100 do x:=x+j: j:=j+1 od: x;tot:=0: for z in 1,x,y,q2,3 do tot:=tot+z end do: tot;tot=1: for z in 1,x,y,q2,3 do tot:=tot z end do:tots:=The quick brown fox jumped over the lazy dog.; for c from
5、 a to z while 0L:=1,2,abc,a,7.0,infinity:for x in L do if type(x,string) then print(x); break end if end do,break和nextNext Description When the next statement is executed, the result is to exit from the current statement sequence (that is, the do-end do block) that corresponds to the innermost repet
6、ition (for/while/do) statement within which it occurs. To exit from the current statement sequence means to allow execution to proceed with the next iteration of this repetition statement. Note: To proceed with the next iteration implies to increment the index of iteration, and then to apply the tes
7、ts for termination (specified by the to-clause and the while-clause, if present) before proceeding. Thus, an exit from the loop may occur. It is an error if the next statement is executed in a context other than within a repetition statement.Examplesfor n to 3 do if n = 2 then next end if; print(n)
8、end do,2.2 过程(procedure),Maple 程序的主要结构关键字: proc local global end参 数: 可以是空的,如:proc() 可限制参数类型;如:proc(x:numeric, y:numeric) #参数类型有 x:numeric; x:integer; x:symbol; x:string; 可以用args代表所有实际输入的参数,并可用nargs测量参数的长度。,例如:restart;f:=proc(a,b) a*b;end proc;f(2,3);f(the, student);,restart;f:=proc(a,b) a+b; a-b; a*
9、b; a/b;end proc:f(10,5);,局部变量和全局变量,a: =1;f: =proc( ) local a; a: =105615750/456210 evalf(a/2); end:f( );a;,a: =1;f: =proc( ) global a; a: =105615750/456210 evalf(a/2); end:f( );a;,例:,Max:=proc() local i,m; if nargs=0 then return(Fail) end if; m:=args1; for i from 2 to nargs do if argsim then m:=args
10、i end if ; end do; m; end: Max(2,5,4,7,4,6,4);,过程内部变量 判断参数长度赋值循环判断大小输出 试用,函数或过程调用自身,称为递归。例如, 计算自然数的阶乘:fact:=proc(n:nonnegint); if n2 then n; else fact(n-1)*n; fi; end proc:fact(5);,2.3 递归调用,2.4 返回与嵌套,返回函数或过程中,可以使用return将结果返回。例如:f:=proc(x) local d,m; if x=250 then d:=0;m:=x*(1-d);return(m); elif x=50
11、0 then d:=0.05;m:=x*(1-d);return(m); else d:=0.075;m:=x*(1-d);return(m); fi;end proc:f(501);,2.4 返回与嵌套,嵌套一个函数或过程中,调用另一个函数或过程,称为嵌套。例如:fact:=proc(n:nonnegint); if np:=1153*(358+540)/(29!-736);常用运算符:+,-,*,/,或*,abs( )浮点运算 evalf(p,20); 2 2.0数学常数 Pi(p大写)、I(复数单位)、infinity(无穷) Pi; infinity;,4.1 数字运算,4.2 基本代
12、数运算,运算符,基本初等函数,sqrt、 、exp、log、sin、cos、tan、cot、sec、csc、arc,数值显示,例:,3!*6;sin(5); exp(1);%;%evalf(Pi,100);,4.3 多项式,定义y:=x- x3-2*x2-5*x+6;.y(x)z:=x2-5*x+4;算术运算,例 w:=y(x)/z; y(x)*z; y(x)-z; gcd(y(x),z); lcm(y(x),z); quo(y(x),z,x,r);r;,例 将100!分解成素数?第1000个素数是什么? ifactor(100!);ithprime(1000);,重组,例:factor(y(
13、x); (2*x2-5*x+6)*z; expand(%);求根,例:t:=x3+2; fsolve(t); fsolve(t,x,complex);realroot(t); roots(t); solve(t); evalf(%);,例: s:= (x3-2*x2-5*x+6)/(x2-5*x+4);,4.4 有理式,例:%+x; simplify(%);simplify(%);,Maple,5. 函数,自定义函数 赋值法 f:=数 或 表达式; (后赋值将替换以前的赋值, 加单引号表示符号变量) 箭头算子法 f:=x-表达式、f:=(x,y)- 表达式; y:=x2-5*x+3;y(3);
14、 y:=x-x2-5*x+3;y(3); 函数运算 函数可以进行+,-,*,/,(复合运算),说明: 函数定义,例:,lc := proc( s, u, t, v )description form a linear combination of the arguments:s * u + t * vend proc:print( lc );lc( Pi, x, -I, y );p:=proc(x) if x1 then x2-1 else 2*(1-x) fi end:p(2);p:=piecewise(x1,x2-1,2*(1-x) );,6. Maple作图,基本命令二维图形,三维图形,
15、其他,例:, plot(x2,x=-3.3); plot(2*x3-6*x,x=-2.5.2.5,style=point,symbol=box); plot(4*x-x2+2,x2,3*x+1,x=-2.5, color=red,blue,green, linestyle= 20, 20) f:=10*sin(x)*exp(-x2):#先定义函数 plot(f,x=-2.5,color=green,linestyle=20);作上述函数图 f:=x-sin(x)*exp(x): plot(f(x),x=-2.5); plot(sin(t),cos(t),t=0.2*Pi,2*x-1,x=-2.
16、2,y=-2.2); with(plots):animate(sin(t*x),x=-2*Pi.2*Pi, t=.5.4, color=1, linestyle =30);,续,极坐标 plot(sin(4*x),x,x=0.2*Pi,coords=polar,thickness=3); with(plots):animate(sin(x*t),x,x=-4.4,t=1.4, coords=polar, numpoints=100,frames=100); 曲面图: plot3d(x2+y2,x=-2.2,y=-2.2,color=0.1);动画图 with(plots): animate3d
17、( cos(t*x)*sin(t*y), x=-Pi.Pi, y=-Pi.Pi, t=1.2 ); 三维曲线图:plot3d(x(t),y(t),z(t),t=t1.t2,z=z1.z2,选项); plot3d(cos(t),sin(t),t,t=0.3*Pi,z=a.b);,7. 微积分实验,7.1 极限,格式,limit(f(x), 极限点,选项) 为极限计算指令 Limit (f(x), ) 为极限符号,可用value显示值,例:,Limit(x-sin(x)/x3,x=0)=limit(x-sin(x)/x3,x=0); Limit(exp(1/x),x=0,left)=limit(e
18、xp(1/x),x=0,left); Limit(x2-3*x+2)/(5*x2-4),x=infinity)=limit(x2-3*x+ 2) /(5*x2-4),x=infinity); Limit(xsin(x),x=0)=limit(xsin(x),x=0); Limit(sin(x),x=infinity)=limit(sin(x),x=infinity); Limit(exp(x),x=-infinity)=limit(exp(x),x=-infinity);注:函数若由箭头算子定义,求极限函数要用f(x)形式 y:=x-exp(x):limit(y,x=3);limit(y(x)
19、,x=3);,7.2 导数,格式,diff(f,x1,x2,) x1,x2,为各次求混合导数的自变量 diff(f,x$m,y$n) m,n分别为对自变量x、y求导阶数 Diff 为求导符号,可用value显示值,例:, Diff(exp(x2),x)=diff(exp(x2),x); Diff(log(x+sqrt(1+x2),x$2); value(Diff(log(x+sqrt(1+x2),x$2); simplify(value(Diff(log(x+sqrt(1+x2),x$2); Diff(x2*cos(y),x,y$3)=diff(x2*cos(y),x,y$3); subs(x
20、=3,y=4,diff(exp(sqrt(x2+y2)+x),x,y); evalf(subs(x=3,y=4,diff(exp(sqrt(x2+y2)+x),x,y); #计算函数在(3,4)点混合导数值注:函数若由箭头算子定义,求导函数要用f(x)形式 y:=x-sin(1/x):diff(y,x);diff(y(x),x);,7.3 积分,格式,不定积分 int(f,x) 定积分 int(f,x=a.b) Int为积分符号,用value显示值重积分 int(int(f(x,y),y=y1(x).y2(x),x=a.b),例:, Int(2*x*sin(x),x)=int(2*x*sin(
21、x),x)+c; Int(sqrt(a2+x2),x)=int(sqrt(a2+x2),x)+C; Int(x-2)/(x3-1),x)=int(x-2)/(x3-1),x)+C; value( Int(x*ln(x),x); Int(x-2)/(x3-1),x=2.3)=int(x-2)/(x3-1),x=2.3); int(sin(sin(x),x=0.2);Evalf(%);注:箭头算子定义函数要用int(f(x),x) f:=x-x2-1/x:int(f(x),x); Int(Int(abs(y)*x2,y=-sqrt(1-x2).sqrt(1-x2),x=-1.1) =int(int
22、(abs(y)*x2,y=-sqrt(1-x2).sqrt(1-x2),x=-1.1) ;,7.4 循序渐进,例:f:=sqrt(x+1)/sin(x); iscont(f,x=-0.5.1); discont(f,x);,例:f:=sqrt(x+1)/sin(x); diff(f,x); D(f); D(f)(2);g:=x-sqrt(x+1)/sin(x); diff(g,x); D(f); D(f)(2); evalf(%);eqn:=x2+y2=1; implicitdiff(eqn,y,x);,续,with(student):expr:=Int(x2*exp(x),x);intpar
23、ts(expr,x2); #设u=x2, 分部积分value(%);,7.5 级数,级数,例:Sum(xn/n!,n=0.infinity)=sum(xn/n!,n=0.infinity);Sum(1/k2,k=1.infinity):%=value(%); 1/(1-x)=series(1/(1-x),x); taylor(1/(1-x),x);sin(x)=series(sin(x),x=Pi/2,8); exp(x)/x=taylor(exp(x)/x,x);series(exp(x)/x,x); x3/(x4+4*x-5)=series(x3/(x4+4*x-5),x=infinity
24、);,续,幂级数,一 ,with(powseries):powcreate(f(n)=2n/n!):powcreate(h(n)=(-1)(n+1)/n,h(0)=1):Sum(2n*xn/n!,n=0.infinity)=tpsform(f,x,7);powcreate(h(n)=(-1)(n+1)/n,h(0)=1):Sum(-1)(n+1)*xn/n,n=1.infinity)=tpsform(h,x,5);powcreate(v(n)=(v(n-1)+v(n-2)/4,v(0)=4,v(1)=2):tpsform(v, x);,7.6 方程求解,solve(方程,未知数);fsolve
25、(方程,未知数,选项);解数值解 选项:plex复数域上求根 2.fulldigits保持精度 3.maxsols=n求n个解 4.范围(省略“=”号为=0) p:=x-x2+2*x-3:plot(p(x),x=-4.2); solve(p(x); fsolve(p(x)=12,x); t:=solve(6*x4-35*x3+22*x2+17*x-10):t1:=eval(t1); t2:=eval(t2); t3:= eval(t3); t4:=eval (t 4); p:=x-12*x5+32*x4-57*x3-213*x2-104*x+60: plot(p,-5.5,650. -300)
26、; solve(p(x);,续, solve(2*x+3*y,y= x+1); solve(x5-3*x4-23*x3+27*x2+166*x+120=0,x); fsolve(x5-3*x4-23*x3+27*x2+166*x+120,x, -1.5.3.5); fsolve (x4-3*x+4,x,complex); fsolve(x5-3*x4-23*x3+27*x2+166*x+120=0,x, maxsols=2);,7.7 微分方程,差分方程,微分方程,方程中未知函数要用y(x)记,n阶导可用Dn(y)(x), 初始条件y(x0)=a,(Dn)(y)(x0)=b,差分方程,例:,d
27、solve(diff(y(x),x)=0.003*y (x) *(100-y (x) ),y(0)=15,y(x); assign(“); plot(y(x),x); dsolve(diff(y(x),x$2) - y(x) = sin(x)*x, y(x);p:= dsolve(D(y)(x) = y(x), y(0)=1, y(x), type=numeric): #解数值解 with(plots); odeplot(p,x,y(x),-1.1 ); #作微分方程数值解图sys := diff(y(x),x)=z(x), diff(z(x),x)=y(x): fcns := y(x), z
28、(x): p:= dsolve(sys,y(0)=0,z(0)=1,fcns,type=numeric): odeplot(p, x,y(x), -4.4, numpoints=25);,8. 输入输出与文件操作,Maple提供的输入输出函数可以将运算结果写到文件中保存, Maple对文件支持完整的格式化文字,如字型、字号、颜色、对齐等功能.,8.1 输入输出,1、printf 函数,printf函数可以将Maple运算的结果输出到屏幕上。格式:printf(fmt,x1,x2,.,xn);,例如:printf(%-2.5s,%2.5s,%2.5sn,M,Map,Maple);x:=23;y:
29、=-1/x;printf(x=%+06.2f y=%+0*.*f y=%a y=%mn,x,6,2,y,y,y);,2、scanf 函数,scanf函数接受键盘输入的数据.格式: scanf(fmt); 例如:restart;printf(Input an integer:n);a:=scanf(%d):print(a!);b:=scanf(%d,%d,%d):printf(%d,%d,%d,b1,b2,b3);,3、fscanf函数,fscanf函数从文件读数据.格式: fscanf(file,fmt); #文件使用后必须调用fclose(file)关闭。例如:restart;tp:=fsc
30、anf(f:数学软件test.txt,%f,%f,%f,%f,%f,%f,%f,%f);fclose(f:数学软件test.txt);restart:a:=array(1.4,1.4):for i from 1 to 4 do tp:=fscanf(f:数学软件test.txt,%d,%d,%d,%d,%d,%d,%d,%d); for j from 1 to 4 do ai,j:=tpj;od:od:fclose(f:数学软件test.txt);,1、文件的打开和关闭,例如:fp:=open(f:数学软件test1.txt,WRITE);fprintf(fp, Maple 9.5rn);fp
31、rintf(fp, 符号处理与应用);close(fp);,打开文件使用open或fopen;格式:open(name,mode);fopen(name,mode);,8.2 文件操作,可以使用readline逐行读出文件内容.restart:a:=readline(f:数学软件test1.txt);b:=readline(f:数学软件test1.txt);close(f:数学软件test1.txt);fp:=fopen(f:数学软件test1.txt,READ);a:=readline(fp);b:=readline(fp);fclose(fp);,2、文件的读写,文件打开后,就可以进行读写
32、。读写文件的函数有:fprintf, fscanf, readline, read, save.,例如:restart:a:=3*5;b:=43;save(a,b,f:temp.m);restart:read(f:temp.m);a+b;,9. 应用专题,本章给出应用Maple提供的函数和编程方法解决一些数学和物理问题的实例。,调和数列研究,1、调和数列,自然数的倒数组成的数列称为调和数列。它的前n项和数列 记作H(n)。,2、提出问题:H(n)是否收敛?,我们对H(n)的收敛性进行观察。,Step1 定义前n项和H(n) H:=n-sum(1/k,k=1.n);,Step2 列出H(n)随n
33、变化的数据表 t:=evalf(seq(n,H(n),n=1.100);,Step3 根据数据表画出H(n)的图形with(plots): pointplot(t);ph1:=pointplot(t):,通过对所得图象的观察和分析,我们发现它很接近对数函数的图象。我们把它与对数函数 y=lnx 的图象一起比较一下。,Step4 与对数函数 y=lnx 作比较plot(ln(x),x=1.100);ph2:=plot(ln(x),x=1.100):display(ph1,ph2);,根据图象比较的结果可以看出,当n很大时,H(n)的图象与ln(n)的图象非常相似,但它们大致相差一个常数。这个常数
34、约为 C=H(100)-ln1000.5822.,我们将 lnx 的图象向上平移C个单位后再进行观察。c1:=evalf(H(100)-ln(100);plot(ln(x)+c1,x=1.100);ph3:=plot(ln(x)+c1,x=1.100):display(ph1,ph3);,猜测1 调和数列的前n项和H(n)是发散数列,它的数值与ln(n)+C 很接近。,猜测2 数列H(n)- ln(n)可能是收敛的。,Step5 用计算数据作印证 对充分大的n,计算H(n)-ln(n)的值:t2:=evalf(seq(1000*n,H(1000*n),ln(1000*n),H(1000*n)-
35、ln(1000*n),n=1.10),10);,可以得到如下的数据表:,3、研究数列H(n)-ln(n)的收敛性,Step1 令C(n)=H(n)-ln(n),通过图象观察其特性:Cup:=n-H(n)-ln(n):tup:=seq(n, Cup(n),n=1.100):ph4:=pointplot(tup,color=blue):,Step2 令c(n)=H(n)-ln(n+1),通过图象观察其特性:Clow:=n-H(n)-ln(n+1):tlow:=seq(n,Clow(n),n=1.100):ph5:=pointplot(tlow,color=red):,Step3 比较C(n)和c(n),在同一坐标系中作出它们的图象。display(ph4,ph5,view=0.100,0.46.0.70);,通过观察可知如下事实: 1、C(n)是单调递减数列; 2、c(n)是单调递增数列; 3、c(n) C(n); 4、c(n),C(n)都是收敛数列,而且它们有相同的极限。,4、结论与证明,结论: 极限 存在。,把这个极限值记为C,C 0.5772,称为欧拉(Euler)常数。,再 见,
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。