Maple微积分计算步骤
- 格式:pdf
- 大小:318.11 KB
- 文档页数:3
数学软件Maple使⽤教程数学实验数学软件Maple使⽤教程序⾔⼀.什么是数学实验?我们都熟悉物理实验和化学实验,就是利⽤仪器设备,通过实验来了解物理现象、化学物质等的特性。
同样,数学实验也是要通过实验来了解数学问题的特性并解决对应的数学问题。
过去,因为实验设备和实验⼿段的问题,⽆法解决数学上的实验问题,所以,⼀直没有听说过数学实验这个词。
随着计算机的飞速发展,计算速度越来越快,软件功能也越来越强,许多数学问题都可以由计算机代替完成,也为我们⽤实验解决数学问题提供了可能。
数学实验就是以计算机为仪器,以软件为载体,通过实验解决实际中的数学问题。
⼆.常⽤的数学软件⽬前较流⾏的数学软件主要有四种:1.MathACD其优点是许多数学符号键盘化,通过键盘可以直接输⼊数学符号,在教学⽅⾯使⽤起来⾮常⽅便。
缺点是⽬前仅能作数值运算,符号运算功能较弱,输出界⾯不好。
2.Matlab优点是⼤型矩阵运算功能⾮常强,构造个⼈适⽤函数⽅便很⽅便,因此,⾮常适合⼤型⼯程技术中使⽤。
缺点是输出界⾯稍差,符号运算功能也显得弱⼀些。
不过,在这个公司购买了Maple公司的内核以后,符号运算功能已经得到了⼤⼤的加强。
再⼀个缺点就是这个软件太⼤,按现在流⾏的版本5.2,⾃⾝有400多兆,占硬盘空间近1个G,⼀般稍早些的计算机都安装部下。
我们这次没⽤它主要就是这个原因。
3.Mathematica其优点是结构严谨,输出界⾯好,计算功能强,是专业科学技术⼈员所喜爱的数学软件。
缺点是软件本⾝较⼤,⽬前流⾏的3.0版本有200兆;另⼀个缺点就是命令太长,每⼀个命令都要输⼊英⽂全名,因此,需要英语⽔平较⾼。
4.Maple优点是输出界⾯很好,与我们平常书写⼏乎⼀致;还有⼀个最⼤的优点就是它的符号运算功能特别强,这对于既要作数值运算,⼜要作符号运算时就显得⾮常⽅便了。
除此之外,其软件只有30兆,安装也很⽅便(直接拷贝就可以⽤)。
所以,我们把它放到学校⽹上直接调⽤。
微分⽅程的maple求解1、常⽤函数1)求解常微分⽅程的命令dsolve.dsolve(常微分⽅程)dsolve(常微分⽅程,待解函数,选项)dsolve({常微分⽅程,初值},待解函数,选项)dsolve({常微分⽅程组,初值},{待解函数},选项)其中选项设置解得求解⽅法和解的表⽰⽅式。
求解⽅法有type=formal_series(形式幂级数解)、type=formal_solution(形式解)、type=numeric(数值解)、type=series(级数解)、method=fourier(通过Fourier变换求解)、method=laplace(通过Laplace变换求解)等。
解的表⽰⽅式有explicit(显式)、implicit(隐式)、parametric(参数式)。
当⽅程⽐较复杂时,要想得到显式解通常⼗分困难,结果也会相当复杂。
这时,⽅程的隐式解更为有⽤,⼀般也要简单得多。
dsolve为标准库函数。
2)求解⼀阶线性常微分⽅程的命令linearsol.在Maple中求解⼀阶线性⽅程既可以⽤dsolve函数求解,也可以⽤Detools函数包中的linearsol函数求解。
linearsol是专门求解线性微分⽅程的命令,使⽤格式为: linearsol(线性⽅程,待解函数)linearsol的返回值为集合形式的解。
3)偏微分⽅程求解命令pdsolve.pdsolve(偏微分⽅程,待解变量,选项)pdsolve(偏微分⽅程,初值或边界条件,选项)pdsolve为标准库函数,可直接使⽤。
如果求解成功,将得到⼏种可能结果:⽅程的通解;拟通解(包含有任意函数,但不⾜以构造通解);⼀些常微分⽅程的集合;2、⽅法1)⼀阶常微分⽅程的解法a 分离变量法 I 直接分离变量法。
如()()dyf xg y dx=,⽅程右端是两个分别只含x 或y 的函数因式乘积,其通解为()()dyf x dx Cg y =+?。
1.Maple概述什么是Maple, 怎么学习Maple?Maple软件是加拿大Waterloo大学在1980年开始开发,到现在最新的版本是Maple11, Maple具有强大的数值计算能力,图形处理能力,特别是符号计算能力。
常用的数学软件除Maple外,有Matlab等, 统计软件: SAS,SPSS,运筹学软件:Lingo, WINQSB.1. 数值计算与符号计算的区别a*x^2+b*x+c=0求这方程的跟, 来说明数值计算与符号计算的区别数值计算:切线法符号计算:Maple功能非常之强大, 不仅适合数学家, 还适合物理学家, 工程师,化学家,生物学家, 总之,它适合所有需要科学计算的人.举例:1) 求PI的前100位2) 求X的范围3) 求积分演示1.1.2界面介绍1.工具栏在Maple界面上说明2. 工作区每一个“>”是一个执行块. 表示命令提示符。
9-95 1.2基本运算能精确计算整数、有理数或者实数、复数的四则运算, 以及模算术、硬件浮点数和任意精度的浮点数甚至于矩阵的计算等等.总之, Maple可以进行任意数值计算.10-95 1.2.1数值计算问题关键符号问号(?) 帮助分号(;) 表示表达式结束,显示内容冒号(:) 表示表达式结束,不显示内容字符(\) 表示内容连续井号(#) 表示注释百分号(%) 表示上一步(I) 表示虚数单位演示11-951.2.1.2复数运算函数作用格式Re 返回实部function(co mplex)Im返回虚部conjugate 共轭复数argument 幅角abs模演示1.2.1.3数的进制转换convert 函数●b inary二进制●d ecimal 十进制●o ctal 八进制●h ex十六进制演示1.2.1.4常用函数●isprime素数isprime(n)●max/min最值max(a1,a2,…);●mod/modp/mods余a mod b; modp(a,b); mods(a,b);●rand随机数rand();rand(a..b)();14-95 1.2.1.5整数计算函数abs 求绝对值ifactor 求因子iquo 求商iquo(a,b,’r’)irem 余数irem(a,b,’q’)isqrt 近似的平方跟整数15-95 1.2.1.6精确与非精确运算在精确运算中,必须所有的数是整数或恒数(如, Pi), Maple不会对该表达式进行浮点运算.如果你想得到非精确值, 用浮点数进行该表达式计算.演示1.2.2初等函数初等数学是数学的基础之一, 也是数学中最有魅力的一部分内容. 通过下面的内容我们可以领略Maple对初等数学的驾驭能力, 也可以通过这些实验对Maple产生一些感性认识. 指数函数:exp自然函数:ln一般对数:log[a]常用对数: log101.2.2.1重要函数连乘函数: product/Product 连加函数: sum/Sum展开函数:expand合并函数:combine1.2.2.2简单函数定义Maple定义简单的函数有2种方法:•函数法:unapply(expr,vars);expr为任意表达式,vars为变量组•箭头法: (vars)->expr;expr为任意表达式,vars为变量组重要函数floorceilopnopsmap演示1.3求值1.3.1赋值在Maple中,不需要申明变量类型,直接对变量赋值,其赋值格式为.变量明:=表达式;例如:y:=5;f:=x^2+3*x+2;1.3.2变量代换在表达式化简中, 变量代换是一个得力工具. 我们可以利用函数subs根据自己的意愿进行变量代换, 最简单的调用这个函数的形式是这样的:单个变量替换subs ( x= a, expr);多个变量替换subs ( x = a,y=b, expr);调用的结果是将表达式expr中所有变量var出现的地方替换成变量的值.演示subs命令●顺序替换subs(var1=val1,var2=val2,…,expr);subs((var1=val1,var2=val2,…),expr);●同步替换subs({var1=val1,var2=val2,…},expr);演示1.3.3 假设机制解决某些问题的时候,我们必须要对其变量进行假设,格式如下:assume(x1::prop1,x2::prop2,…);assume(x1>val,x2<val);其中xi表示变量,propi表示属性,val表示值例如:sin(n*Pi),如果n是整数,这个表达式值为0assume(n::interger)演示1.3.4 求值规则●eval 命令格式:eval(e, x=a); #求表达式e在x=a处的值eval(e, vars); #对方多个变量求值●evalc #对复数求值●evalf #求浮点数●evala #对表达式或未求值函数求值●value #对惰性表达式求值1.4 数据结构●变量类型(数字,字符串,复合表达式)integer, float, list, set, exprseq,…●运算符: +, -, *, /, ^●关系表达式:=, <>, <, <=注意“>”●逻辑表达式: and, or ,not26-95 1.4.1 数据及变量类型查询●whattype(expr)其中expr是任何表达式●type(expr,t)其中expr是任何表达式,t为有效表达式1.4.2 序列,列表和集合1.4.2.1序列所谓序列(Sequence), 就是一组用逗号隔开的表达式列.如:s:=1,4,9,16,25;一个序列也可以由若干个序列复合而成s:=s,s;该值为:1,4,9,16,25,1,4,9,16,25;产生序列的函数为seq(f,i=m..n)其中f是函数,可以是i的函数,也可以不是.判断序列的函数为:nops演示1.4.2.2 列表简单的说, 就是序列加上方括号如:L:=[1,2,3,4];L1:=[[1,2,3],[2,3,4]];对序列和列表操作的函数nops:个数sort:排序op:解开操作extracts operands from an expression1.4.2.3 集合集合(set)也是把对象(元素)放在一起的数据结构, 与列表不同的是集合中不可以有相同的元素(如果有, Maple也会自动将其当作同一个元素), 另外, 集合中的元素不管次序. 用花括号表示集合.s:={x,1,1-z,x};集合的基本运算函数:交(intersect),并(union),差(minus)格式:函数(集合,集合);1.4.3 数组和表arraytableS := table([(2)=45,(4)=61]);1.4.4 数据类型的转换与合并convert 这个功能强大的类型转换函数,可以实现列表和数组的类型转换将array转换为list将array转换为set1.5 高级输入与输出操作Maple提供了良好的接口来编辑与计算数学式. 许多时候, 我们可能需要把Maple的运算结果输出到一个文件中, 或者在一个文本编辑器里先编好一个较大的Maple程序, 再将它加载到Maple的环境里.1.5.1 fprintffprintf函数是用来输出到文件中,在使用该函数前,先用fopen打开一个文件,再使用fprintf函数输出到fopen打开的文件中,最后用fclose关闭文件。
Maple 基础一Maple 的基本运算1 数值计算问题在应用Maple 做算术运算时, 只需将Maple 当作一个“计算器”使用, 所不同的是命令结束时需加“;”或“:”.在Maple 中, 主要的算术运算符有“+”(加)、“–”(减)、“*”(乘)、“/”(除)以及“^”(乘方或幂,或记为**),值得注意的是, “^”的表达式只能有两个操作数, 换言之, c b a ^^是错误的, 而“+”或“*”的任意表达式可以有两个或者两个以上的操作数.2.1.1 有理数运算作为一个符号代数系统, Maple 可以绝对避免算术运算的舍入误差.如果要求出两个整数运算的近似值时, 只需在任意一个整数后加“.”(或“.0”), 或者利用“evalf ”命令把表达式转换成浮点形式, 默认浮点数位是10 (即: Digits:=10, 据此可任意改变浮点数位, 如Digits:=20).> 123456789/987654321;13717421109739369> evalf(%); .1249999989> big_number:=3^(3^3);:= big_number 7625597484987> length(%);13函数“length ”作用在整数上时是整数的十进制位数即数字的长度. “%”是一个非常有用的简写形式, 表示最后一次执行结果1)整数的余(irem)/商(iquo)命令格式:irem(m,n); #求m 除以n 的余数irem(m,n,'q'); #求m 除以n 的余数, 并将商赋给qiquo(m,n); #求m 除以n 的商数iquo(m,n,'r'); #求m 除以n 的商数, 并将余数赋给r其中, m, n 是整数或整数函数, 也可以是代数值, 此时, irem 保留为未求值.2)素数判别(isprime)命令格式: isprime(n);如果判定n 可分解, 则返回false, 如果返回true, 则n “很可能”是素数. > isprime(2^(2^4)+1);true3) 确定第i 个素数(ithprime)若记第1个素数为2,判断第i 个素数的命令格式: ithprime(i);4) 一组数的最大值(max)/最小值(min)命令格式: max(x1,x2,…,xn); #求x 1,x 2,…,x n 中的最大值min(x1,x2,…,xn); #求x 1,x 2,…,x n 中的最小值5)随机数生成器(rand)命令格式:rand( ); #随机返回一个12位数字的非负整数rand(a..b); #调用rand(a..b)返回一个程序, 它在调用时生成一个在范围[a, b]内的随机数> rand();427419669081> myproc:=rand(1..2002):> myproc();1916> myproc();1204注意, rand(n)是rand(0..n-1)的简写形式.2.1.2 复数运算复数是Maple中的基本数据类型. 虚数单位i在Maple中用I表示可以用Re( )、Im( )、conjugate( )和argument( )等函数分别计算实数的实部、虚部、共轭复数和幅角主值等运算. 试作如下实验:> complex_number:=(1+2*I)*(3+4*I);-510Icomplex_number +:=> Re(%);Im(%%);conjugate(%%%);argument(complex_number);-510-510I-- +arctan2π()1) 绝对值函数命令格式: abs(expr);当expr为实数时,返回其绝对值,当expr为复数时,返回复数的模.2)复数的幅角函数命令格式: argument(x); #返回复数x的幅角的主值3)共轭复数命令格式: conjugate(x); #返回x的共轭复数2.2 初等数学2.2.1 常用函数1) 确定乘积和不确定乘积命令格式: product(f,k);product(f,k=m..n);product(f,k=alpha);product(f,k=expr);其中, f—任意表达式, k—乘积指数名称, m,n—整数或任意表达式, alpha—代数数RootOf, expr—包含k的任意表达式.> product(k^2,k=1..10); #计算2k关于1..10的连乘13168189440000> product(k^2,k); #计算2k的不确定乘积()Γk 2> product(a[k],k=0..5); #计算a i (i=0..5)的连乘a 0a 1a 2a 3a 4a 5> Product(n+k,k=0..m)=product(n+k,k=0..m); #计算(n+k)的连乘, 并写出其惰性表达式= ∏ = k 0m() + n k ()Γ + + n m 1()Γn> product(k,k=RootOf(x^3-2)); #计算23-x 的三个根的乘积22)指数函数计算指数函数exp 关于x 的表达式的命令格式为: exp(x);3)确定求和与不确定求和sum命令格式: sum(f,k);sum(f,k=m..n);sum(f,k=alpha);sum(f,k=expr);其中, f —任意表达式, k —乘积指数名称, m,n —整数或任意表达式, alpha —代数数RootOf,expr —不含k 的表达式.> Sum(k^2,k=1..n)=sum(k^2,k=1..n);= ∑ = k 1nk 2 - + + 13() + n 1312() + n 1216n 16> Sum(1/k!,k=0..infinity)=sum(1/k!,k=0..infinity);= ∑ = k 0∞1!k e> sum(a[k]*x[k],k=0..n);∑ = k 0n a k xk> sum(k/(k+1),k=RootOf(x^2-3));33)三角函数/双曲函数命令格式: sin(x); cos(x); tan(x); cot(x); sec(x); csc(x);sinh(x); cosh(x); tanh(x); coth(x); sech(x); csch(x);其中, x 为任意表达式.> Sin(Pi)=sin(Pi);= ()Sin π04)反三角函数/反双曲函数命令格式: arcsin(x); arccos(x); arctan(x); arccot(x); arcsec(x); arccsc(x);arcsinh(x); arccosh(x); arctanh(x); arccoth(x); arcsech(x); arccsch(x);arctan(y,x);其中, x, y 为表达式. 反三角函数/反双曲函数的参数必须按弧度计算.> arcsinh(1);()ln + 12> cos(arcsin(x));- 1x 25)对数函数命令格式: ln(x); #自然对数log[a](x); #一般对数log10(x); #常用对数一般地, 在ln(x)中要求x>0. 但对于复数型表达式x, 有:)(argument *))(abs ln()ln(x I x x += (其中, ππ≤<-)(argument x )> log10(1000000);()ln 1000000()ln 10 > simplify(%); #化简上式62.2.2 函数的定义试看下面一个例子:> f(x):=a*x^2+b*x+c;---并不是函数,而是一个表达式:= ()f x + + a x 2b x c> f(x),f(0),f(1/a);,, + + a x 2b x c ()f 0⎛⎝ ⎫⎭⎪⎪f 1a 由上述结果可以看出, 用赋值方法定义的f(x)是一个表达式而不是一个函数在Maple 中, 要真正完成一个函数的定义, 需要用算子(也称箭头操作符):> f:=x->a*x^2+b*x+c;:= f → x + + a x 2b x c> f(x),f(0),f(1/a);,,+ + a x 2b x c c + + 1a b ac > f:=(x,y)->x^2+y^2; := f → (),x y + x 2y 2> f(1,2);5> f:=(x,y)->a*x*y*exp(x^2+y^2);:= f → (),x y a x y e() + x 2y 2另一个定义函数的命令是unapply,其作用是从一个表达式建立一个算子或函数.命令格式为: f:=unapply(expr, x);命令格式为: f:=unapply(expr, x, y, …);> f:=unapply(x^4+x^3+x^2+x+1,x);:= f → x + + + + x 4x 3x 2x 1借助函数piecewise 可以生成简单分段函数:> abs(x)=piecewise(x>0,x,x=0,0,x<0,-x); = x ⎧⎩⎪⎪⎪⎪⎪⎨x < 0x 0 = x 0-x < x 0清除函数的定义用命令unassign.> unassign(f);> f(1,1); ()f ,11定义了一个函数后, 就可以使用op 或nops 指令查看有关函数中操作数的信息. nops(expr), 函数op 的主要功能是,其命令格式为:op(expr); #获取表达式的操作数op(i, expr); #取出expr 里第i 个操作数,op(i .. j, expr); #expr 的第i 到第j 个操作数nops(expr); #返回操作数的个数> expr:=6+cos(x)+sin(x)*cos(x)^2;:= expr + + 6()cos x ()sin x ()cos x 2> op(expr);,,6()cos x ()sin x ()cos x 2> nops(expr);32.2.3 Maple 中的常量与变量名为了解决数学问题, 一些常用的数学常数是必要的. Maple 系统中已经存储了一些数学常数在表达式序列constants 中:> constants;,,,,,,false γ∞true Catalan FAIL π为了方便使用, 现将上述常数的具体含义列示如下:2.2.4 函数类型转换实现函数类型转换的命令是convert . 命令格式:convert(expr, form); #把数学式expr 转换成form 的形式convert(expr, form, x); #指定变量x, 此时form 只适于exp 、sin 、cosconvert 指令所提供的三角函数、指数与函数的转换共有exp 等7种:(1) exp : 将三角函数转换成指数(2) expln : 把数学式转换成指数与对数(3) expsincos : 分别把三角函数与双曲函数转换成sin 、cos 与指数的形式(4) ln : 将反三角函数转换成对数(5) sincos : 将三角函数转换成sin 与cos 的形式, 而把双曲函数转换成sinh 与cosh 的形式(6) tan : 将三角函数转换成tan 的形式(7) trig : 将指数函数转换成三角函数与对数函数> convert(sinh(x),exp); #将sinh(x)转换成exp 类型 - 12e x 121ex 2.2.5 函数的映射—map 指令在符号运算的世界里, 映射指令map 可以说是相当重要的一个指令, 它可以把函数或指令映射到这些结构里的元素, 而不破坏整个结构的完整性. 命令格式为:map(f, expr); #将函数f 映射到expr 的每个操作数map(f, expr, a); #将函数f 映射到expr 的每个操作数, 并取出a 为f 的第2个自变量map(f, expr, a1, a2,…, an); #将函数f 映射到expr 的每个操作数, 并取a1~an 为f 的第2~n+1个自变量map2(f, a1, expr, a2, …, an); #以a1为第1个自变量, expr 的操作数为第2个自变量, a2为第3个自变量…, an 为第n+1个自变量来映射函数f> f:=x->sqrt(x)+x^2;:= f → x + x x 2> map(f,[a,b,c]); [],, + a a 2 + b b 2 + c c 2> map(h, [a,b,c],x,y);[],,()h ,,a x y ()h ,,b x y ()h ,,c x y3 求 值3.1 赋值在Maple 中, 不需要申明变量的类型, 甚至在使用变量前不需要将它赋值, 这是Maple 与其它高级程序设计语言不同的一点, 也正是Maple 符号演算的魅力所在, 这个特性是由Maple 与众不同的赋值方法决定的. 为了理解其赋值机制, 先看下面的例子.> p:=9*x^3-37*x^2+47*x-19;:= p - + - 9x 337x 247x 19> roots(p);⎡⎣⎢⎢⎤⎦⎥⎥,[],12⎡⎣⎢⎢⎤⎦⎥⎥,1991> subs(x=19/9,p);3.2 变量代换subs ( var = repacedment , expression );调用的结果是将表达式expression 中所有变量var 出现的地方替换成 replacement.> f:=x^2+exp(x^3)-8;:= f + - x 2e()x 38> subs(x=1,f); - + 7e如果需要计算, 必须调用求值函数evalf . 如:> evalf(%);5.> subs(x=y,y=z,x^2*y); (顺序替换)z 3> subs({x=y,y=z},x^2*y); (同步替换)y 2z> subs((a=b,b=c,c=a),a+2*b+3*c); (顺序替换)6a> subs({a=b,b=c,c=a},a+2*b+3*c); (轮 换)+ + b 2c 3a> subs({p=q,q=p},f(p,q)); (互 换)()f ,q p3.3 求值规则1) 对表达式求值命令格式: eval(e, x=a); #求表达式e 在x=a 处的值eval(e, eqns); #对方程或方程组eqns 求值eval(e); #表达式e 求值到上面两层eval(x,n); #给出求值名称的第n 层求值> p:=x^5+x^4+x^3+x^2+x+73;:= p + + + + + x 5x 4x 3x 2x 73> eval(p,x=7);19680当表达式在异常点处求值时, eval 会给一个错误消息. 如下:> eval(sin(x)/x,x=0);Error, numeric exception: division by zero2) 在代数数(或者函数)域求值命令格式: evala(expr); # 对表达式或者未求值函数求值evala(expr,opts); #求值时可加选项(opts)在Maple 中, 代数数用函数RootOf ()来表示. 如3作为一个代数数, 可以表示为:> alpha:=RootOf(x^2-3,x);:= α()RootOf - _Z 23> simplify(alpha^2);3在Maple 内部, 代数数α不再表示为根式, 而在化简时, 仅仅利用到32=α这样的事实. 这里, Maple 用到一个内部变量_Z. 再看下面一个例子,其中alias 是缩写的定义函数,而参数lenstra 指lenstra 椭圆曲线方法:> alias(alpha=RootOf(x^2-2)):> evala(factor(x^2-2,alpha),lenstra); () + x α() - x α> evala(quo(x^2-x+3,x-alpha,x,'r'));- + + 1αx> r;- + 3αα2> simplify(%);- 5α3) 在复数域上符号求值操纵复数型表达式并将其分离给出expr 的实部和虚部的函数为evalc, 命令格式为:evalc(expr);evalc 假定所有变量表示数值, 且实数变量的函数是实数类型. 其输出规范形式为: expr1+I*expr2. > evalc(sin(6+8*I));+ ()sin 6()cosh 8I ()cos 6()sinh 8> evalc(f(exp(alpha+x*I)));()f + e α()cos x I e α()sin x4) 使用浮点算法求值命令格式为: evalf(expr, n);> evalf(Pi,50);3.1415926535897932384626433832795028841971693993751> evalf(sin(3+4*I)); - 3.853********.01681326I5) 对惰性函数求值把只用表达式表示而暂不求值的函数称为惰性函数,对任意代数表达式f 求值的命令格式为: value(f); > F:=Int(exp(x),x);:= F d ⎛⎠⎜e x x > value(%);e x> f:=Limit(sin(x)/x,x=0);:= f lim→ x 0()sin x x> value(%); 1另外, 将惰性函数的大写字母改为小写字母亦即可求值. 如下例:> Limit(sin(x)/x,x=0)=limit(sin(x)/x,x=0);= lim → x 0()sin x x1 4 数据结构Maple 中有许多内建的与FORTRAN 、C 或Pascal 不同的数据结构. 主要的数据结构有序列(sequence)、列表(list)、集合(set)、代数数( algebraic number)、未求值或惰性函数调用、表(table)、级数(series)、串(string)、索引名(index)、关系(relation)、过程体(process)以及整数(integer)、分数(fraction)、浮点数(float)、复数(complex number)等数据结构, 而矩阵(matrix)在Maple 中表示为阵列, 是一种特殊的表.4.1 数据类型查询在Maple 中, 用whattype 指令来查询某个变量的数据类型或特定类型, 命令格式为:whattype(expr) # 查询expr 的数据类型type(expr, t) # 查询expr 是否为t 类型, 若是则返回true, 否则返回false4.2 序列, 列表和集合4.2.1 序列所谓序列(Sequence), 就是一组用逗号隔开的表达式列. 如:> s:=1,4,9,16,25;:= s ,,,,1491625> t:=sin,com,tan,cot;:= t ,,,sin com tan cot一个序列也可以由若干个序列复合而成, 如:> s:=1,(4,9,16),25;:= s ,,,,1491625> s,s;,,,,,,,,,14916251491625而符号NULL 表示一个空序列. 序列有很多用途, 如构成列表、集合等. 事实上, 有些函数命令也是由序列构成. 例如:> max(s);25> min(s,0,s);函数seq 是最有用的生成序列的命令, 通常用于写出具有一定规律的序列的通项, 命令格式为: seq(f(i), i=m..n); # 生成序列f(m), f(m+1), …, f(n) (m,n 为任意有理数)seq(f(i), i=expr); # 生成一个f 映射expr 操作数的序列seq(f(op(i,expr)), i=1..nops(expr)); # 生成nops(expr)个元素组成的序列> seq(i^2,i=1..10);149162536496481100,,,,,,,,,> seq(i^3,i=x+y+z);x3y3z3,,获得一个序列中的特定元素选用操作符[ ], 如:> seq(ithprime(i),i=1..20);235711131719232931374143475359616771,,,,,,,,,,,,,,,,,,,> %[6],%[17];1359,4.2.2 列表列表(list), 就是把对象(元素)放在一起的一种数据结构, 一般地, 用方括号[ ]表示列表. 如下例: > l:=[x,1,1-z,x];x1 -1z x,,,:=l[]> whattype(%);list4.2.3 集合集合(set)也是把对象(元素)放在一起的数据结构,一般地, 用花括号表示集合.> s:={x,1,1-z,x};1z1x -,,s{}:=> whattype(%);set空集定义为{ }.Maple中集合的基本运算有交(intersect)、并(union)、差(minus):> A:={seq(i^3,i=1..10)};B:={seq(i^2,i=1..10)};,,,,,,,,,1827641252163435127291000A{}:=149162536496481100,,,,,,,,,B{}:=> A intersect B;,164{}4.3 数组和表在Maple中, 数组(array)由命令array产生, 其下标变量(index)可以自由指定. 下标由1开始的一维数组称为向量(vector), 二维以上的数组称为矩阵(matrix). 数组的元素按顺序排列, 任意存取一数组的元素要比列表或序列快的多. 区分一个数据结构是数组还是列表要用“type”命令.表(table)在建立时使用圆括号, 变量能对一个表赋值, 但一个在存取在算子中的未赋值变量会被自动地假定是表, 表的索引可以成为任意Maple表达式. 表中元素的次序不是固定的.5 Maple 高级输入与输出操作生成LATEXMaple 可以把它的表达式转换成LATEX, 使用latex 命令即可: > latex(x^2+y^2=z^2);{x}^{2}+{y}^{2}={z}^{2}还可以将转换结果存为一个文件(LatexFile):> latex(x^2 + y^2 = z^2, LatexFile);再如下例:> latex(Int(1/(x^2+1),x)=int(1/(x^2+1),x));\int \! \left( {x}^{2}+1 \right) ^{-1}{dx}=\arctan\left( x \right)二 微积分运算1 函数的极限和连续1.1 函数和表达式的极限)(lim x f ax →命令格式为: limit(f,x=a);求)(lim x f a x +→时的命令格式为limit(f, x=a, right); 求)(lim x f ax -→时的命令格式为limit(f, x=a, left); 请看下述例子:> Limit((1+1/x)^x,x=infinity)=limit((1+1/x)^x,x=infinity);= lim → x ∞⎛⎝ ⎫⎭⎪⎪ + 11x xe > Limit((x^n-1)/(x-1),x=1)=limit((x^n-1)/(x-1),x=1);= lim → x 1 - x n 1 - x 1n > Limit(x^x,x=0,right)=limit(x^x,x=0,right);= lim → +x 0x x 1> limit(a*x*y-b/(x*y),{x=1,y=1});- a b> limit(x^2*(1+x)-y^2*((1-y))/(x^2+y^2),{x=0,y=0});undefined下例就是化二重极限为二次极限而得正确结果:> limit((sin(x+y)/(sin(x)*sin(y)),{x=Pi/4,y=Pi/4}));⎛⎝ ⎫⎭⎪⎪limit ,()sin + x y ()sin x ()sin y {}, = x 14π = y 14π > limit(limit(sin(x+y)/(sin(x)*sin(y)),x=Pi/4),y=Pi/4);21.2 函数的连续性1.2.1 连续在Maple 中可以用函数iscont 来判断一个函数或者表达式在区间上的连续性. 命令格式为: iscont(expr, x=a..b, 'colsed '/'opened');其中, closed 表示闭区间, 而opened 表示开区间(此为系统默认状态).如果表达式在区间上连续, iscont 返回true, 否则返回false, 当iscont 无法确定连续性时返回FAIL. 另外, iscont 函数假定表达式中的所有符号都是实数型. 颇为有趣的是, 当给定区间[a,b ] (a >b )时, iscont 会自动按[b,a ]处理.> iscont(1/x,x=1..2);true> iscont(1/x,x=-1..1,closed);false> iscont(1/(x+a),x=0..1);FAIL> iscont(ln(x),x=10..1);true1.2.2 间断函数discont 可以寻找函数或表达式在实数域的间断点, 当间断点周期或成对出现时, Maple 会利用一些辅助变量予以表达, 比如, _Zn ~(任意整数)、_NZn ~(任意自然数)和Bn ~(一个二进制数, 0或者1), 其中n 是序号. 判定f(x)间断点的命令为:discont(f, x);> discont(ln(x^2-4),x);{},-22> discont(arctan(1/2*tan(2*x))/(x^2-1),x);{},,-11 + 12π_Z1~14π> discont(round(3*x-1/2),x);{} + 1313_Z1 函数round 为“四舍五入”函数,上例并非一目了然,对其进一步理解可借助于函数plot 或下面给出的fdiscont 例子。
数学软件Maple使用教程序言一.什么是数学实验?我们都熟悉物理实验和化学实验,就是利用仪器设备,通过实验来了解物理现象、化学物质等的特性。
同样,数学实验也是要通过实验来了解数学问题的特性并解决对应的数学问题。
过去,因为实验设备和实验手段的问题,无法解决数学上的实验问题,所以,一直没有听说过数学实验这个词。
随着计算机的飞速发展,计算速度越来越快,软件功能也越来越强,许多数学问题都可以由计算机代替完成,也为我们用实验解决数学问题提供了可能。
数学实验就是以计算机为仪器,以软件为载体,通过实验解决实际中的数学问题。
二.常用的数学软件目前较流行的数学软件主要有四种:1.MathACD其优点是许多数学符号键盘化,通过键盘可以直接输入数学符号,在教学方面使用起来非常方便。
缺点是目前仅能作数值运算,符号运算功能较弱,输出界面不好。
2.Matlab优点是大型矩阵运算功能非常强,构造个人适用函数方便很方便,因此,非常适合大型工程技术中使用。
缺点是输出界面稍差,符号运算功能也显得弱一些。
不过,在这个公司购买了Maple公司的内核以后,符号运算功能已经得到了大大的加强。
再一个缺点就是这个软件太大,按现在流行的版本5.2,自身有400多兆,占硬盘空间近1个G,一般稍早些的计算机都安装部下。
我们这次没用它主要就是这个原因。
3.Mathematica其优点是结构严谨,输出界面好,计算功能强,是专业科学技术人员所喜爱的数学软件。
缺点是软件本身较大,目前流行的3.0版本有200兆;另一个缺点就是命令太长,每一个命令都要输入英文全名,因此,需要英语水平较高。
4.Maple优点是输出界面很好,与我们平常书写几乎一致;还有一个最大的优点就是它的符号运算功能特别强,这对于既要作数值运算,又要作符号运算时就显得非常方便了。
除此之外,其软件只有30兆,安装也很方便(直接拷贝就可以用)。
所以,我们把它放到学校网上直接调用。
缺点就是目前市面上买不到教材,帮助系统又是英语,为学习带来了不便。
第二章微积分运算微积分是数学学习的重点和难点之一, 而微积分运算是Maple最为拿手的计算之一, 任何解析函数, Maple都可以求出它的导数来, 任何理论上可以计算的积分, Maple都可以毫不费力的将它计算出来. 随着作为数学符号计算平台的Maple的不断开发和研究, 越来越多的应用程序也在不断地创设.1 函数的极限和连续1.1 函数和表达式的极限在Maple中, 利用函数limit计算函数和表达式的极限. 如果要写出数学- 34 -- 35 -表达式, 则用惰性函数Limit . 若a 可为任意实数或无穷大时, 求)(lim x f ax →命令格式为: limit(f,x=a);求)(lim x f ax +→时的命令格式为limit(f, x=a, right); 求)(lim x f ax -→时的> Limit(x^x,x=0,right)=limit(x^x,x=0,right);= lim→ +x 0x x1> Limit(abs(x)/x ,x=0,left)=limit(abs(x)/x,x=0,left);> limit(abs(x)/x,x=0);undefined对于多重极限计算, 也用limit. 命令格式为: limit(f, points, dir); 其中, points是由一系列方程定义的极限点, dir(可选项)代表方向: left(左)、right(右)等. 例如:> limit(a*x*y-b/(x*y),{x=1,y=1});- 36 --a b> limit(x^2*(1+x)-y^2*((1-y))/(x^2+y^2),{x=0,y=0});undefined>- 37 -limit(limit(sin(x+y)/(sin(x)*sin(y)),x=Pi/4),y=Pi/4);21.2 函数的连续性1.2.1 连续在Maple中可以用函数iscont来判断一个函数或者表达式在区间上的连续性. 命令格式为:iscont(expr, x=a..b, 'colsed'/'opened');其中, closed表示闭区间, 而opened表示开区间(此为系统默认状态).如果表达式在区间上连续, iscont返回true, 否则返回false, 当iscont无法确定连续性时返回FAIL. 另外, iscont函数假定表达式中的所有符号都是实数型. 颇为有趣的是, 当给定区间[a,b] (a>b)时, iscont会自动按[b,a]处理. > iscont(1/x,x=1..2);- 38 -true> iscont(1/x,x=-1..1,closed);false> iscont(1/(x+a),x=0..1);FAIL> iscont(ln(x),x=10..1);true1.2.2 间断函数discont可以寻找函数或表达式在实数域的间断点, 当间断点周期或成对出现时, Maple会利用一些辅助变量予以表达, 比如, _Zn~(任意整数)、- 39 -_NZn~(任意自然数)和Bn~(一个二进制数, 0或者1), 其中n是序号. 判定f(x)间断点的命令为:discont(f, x);> discont(ln(x^2-4),x);-22{},- 40 -函数round为“四舍五入”函数,上例并非一目了然,对其进一步理解可借助于函数plot或下面给出的fdiscont例子。
1、常用函数1)求解常微分方程的命令dsolve.dsolve(常微分方程)dsolve(常微分方程,待解函数,选项)dsolve({常微分方程,初值},待解函数,选项)dsolve({常微分方程组,初值},{待解函数},选项)其中选项设置解得求解方法和解的表示方式。
求解方法有type=formal_series(形式幂级数解)、type=formal_solution(形式解)、type=numeric(数值解)、type=series(级数解)、method=fourier(通过Fourier变换求解)、method=laplace(通过Laplace变换求解)等。
解的表示方式有explicit(显式)、implicit(隐式)、parametric(参数式)。
当方程比较复杂时,要想得到显式解通常十分困难,结果也会相当复杂。
这时,方程的隐式解更为有用,一般也要简单得多。
dsolve为标准库函数。
2)求解一阶线性常微分方程的命令linearsol.在Maple中求解一阶线性方程既可以用dsolve函数求解,也可以用Detools函数包中的linearsol函数求解。
linearsol是专门求解线性微分方程的命令,使用格式为: linearsol(线性方程,待解函数)linearsol的返回值为集合形式的解。
3)偏微分方程求解命令pdsolve.pdsolve(偏微分方程,待解变量,选项)pdsolve(偏微分方程,初值或边界条件,选项)pdsolve为标准库函数,可直接使用。
如果求解成功,将得到几种可能结果:方程的通解;拟通解(包含有任意函数,但不足以构造通解);一些常微分方程的集合;2、方法1)一阶常微分方程的解法a 分离变量法 I 直接分离变量法。
如()()dyf xg y dx=,方程右端是两个分别只含x 或y 的函数因式乘积,其通解为()()dyf x dx Cg y =+⎰⎰。
II 换元法之后再用分离变量法。
用Maple学习微积分用Maple 学习微积分:周期延拓子函数while 循环☐在“条件”满足时执行“命令行”直至“条件”不满足while 条件do命令行end do:☐g,a,b 都是全局变量用Maple学习微积分:Möbius带Möbius带☐“Tools”→“Math Apps”→“Algebra and Geometry”→“Mobius Strip”用Maple学习微积分:Boy’s曲面Boy’s曲面☐类似于克莱因瓶,有参数表示可3D做图☐“Tools”→“Math Apps”→“Algebra and Geometry”→“Boy's Surface”☐更多阅读:/BoySurface.html蒲丰投针☐平面上画有距离为d的平行线,现随机地投掷若干长度均为l的针(设l≤d)。
☐设某根针中点距最近平行线的距离为x,其与平行线的夹角(锐角)为θ,则该针与平行线相交当且仅当x≤l2sinθ.☐从而计算可得针与平行线相交的概率为☐里面含有π!说明我们可以用针与平行线相交的“频率”计算得到π的近似值!法国数学家、自然科学家蒲丰π蒲丰投针实验是☐一种蒙特卡洛方法☐经典的几何概率模型☐“Tools ”→“Math Apps ”→“Probability and Statistics ”→“Buffon's Needle Problem ”霍尔问题☐三扇门,两扇门后是山羊(代表失败),一扇门后是崭新的凯迪拉克汽车(成功的奖品)☐玩家先选择一扇门,然后霍尔打开剩下未选的两扇门中门后有山羊的一扇,然后霍尔问玩家:“你是坚持原先的选择,还是换另一扇没开的门?”因蒙提·霍尔1990年前后主持的电视秀中而得名蒙提·霍尔著名数学家厄多斯起初也没想明白(就是著名厄多斯数的厄多斯)为什么?假设选择坚持:☐一开始选择正确获胜☐一开始选择错误失败☐“Tools ”→“Math Apps ”→“Probability and Statistics ”→“Monty Hall Problem ”构造方式●实数的语言:☐选取一对数,分别记为x 和y 。
第3章微积分Maple 的一个非常实用的功能就是微积分计算.它能求导数,作积分,作级数展开,作无穷求和,还有很多很多功能.在这一章,我们关注最基本的功能.极限极限思想是微积分学中最基本的思想,而Maple 知道怎么计算它们.例如,要求lim x →0sin 3x x 的极限值,可以使用Maple 的limit 命令,表达式如下所示:>limit(sin(3*x)/x,x=0);3当然你也可以使用Maple 函数来求解>y:=x->sin(3*x)/x;limit(y(x),x=0);y :=x →sin (3x )x3您可以输入?limit 来查看这条命令的详细说明,但这并不是命令的全部说明.问题3.1尝试着练习这个问题:lim x →0cos (x )−1x 2微分导数相对来说是容易的,所以这一节也一样.Maple 对初等函数和特殊函数的求导是同样容易的,所以这一节只是展示两条Maple 的微分命令,一条用于表达式,一条用于函数.首先,我们对表达式进行微分.我建议你使用下面说明正切函数用法的形式来求一阶导数,二阶导数和三阶导数.你也可以使用diff命令,它直接求出导数,或者Diff和value 命令,给出所求表达式的导数,并计算其值.Diff命令的用途实际上超出你的想像,因为它给你一个机会查看你要Maple 求的导数是不是你所想要的.>diff(tan(x),x);1+tan (x )2>diff(tan(x),x\$2);2tan (x )(1+tan (x )2)>d:=Diff(tan(x),x\$3);>d:=value(d);d :=∂3∂x3tan (x )d :=2(1+tan (x )2)2+4tan (x )2(1+tan (x )2)>d:=simplify(d);d:=2+8tan(x)2+6tan(x)4下面让我们看一下如何对函数进行微分.>f:=x->tan(x)/x;f:=x→tan(x)xDiff命令不能对函数进行微分,因此我们要使用Maple的D命令.这是一条体积小但功能非常强的命令.它能求复合函数的多阶导数(查看所有用法请输入?D),但我们只能对单一函数求一阶导数.求一阶导数是非常容易的fp:=D(f);f p:=x→1+tan(x)2x−tan(x)x2注意,指定D(f)对f p的结果产生函数f p(x).求高阶导数的方法有很多种,这是最通用的一种.>fpp:=D[1$2](f);f pp:=x→2tan(x)(1+tan(x)2x−2(1+tan(x)2)x2+2tan(x)x3方括号里的“1”表示关于参数列表里的第一个变量(这里只有一个)求微分,“$2”表示相当于执行diff命令两次.好了,内容就这么多.这里有一些练习需要训练.问题3.2求下列函数的形式导数.大部分使用表达式形式,(a)和(d)使用函数形式.如果得到混乱的结果,尝试使用simplify命令化简它.你会发现simplify命令对函数无效,为了使结果更好看,用鼠标把你想要化简的混乱结果复制到剪贴板,把它赋给一个新的变量,删除无关的内容,然后再执行化简命令.然后再使用剪切和粘贴命令重建求导函数.Maple的这个组合及编辑是做无错误代数的好方法.(a)∂3∂x3√1+x3(b)∂∂xJ0(x)(c)∂∂xI1(x)(d)∂2∂x2e tan(x)(e)∂∂xΓ(x)(f)∂∂xerf(x)(g)∂∂kK(k)((g)是第一种形式的完全椭圆积分,使用Maple的EllipticK命令.)问题3.3这是一个你在大学里也使用的求最大最小问题.考虑函数ln(x)J0(x)(我用词“函数”是数学意义的,而不是Maple意义的.如果你仅仅使用一个Maple表达式来定义上面的函数,这个问题是很简单的.)(a)首先画出函数在区间[0,10]上的图像.(b)观察图像,找出并估摸函数取得最大最小值时x的值.接着对函数求导,然后使用fsolve 命令求出x的精确值.假若求导后的表达式为f,如果你想求出1.1附近的零点,你可以这样做:fsolve(f,x=1.1);在量子力学中,你会遇到近似我们已经见过的勒让德函数P n (x ).这些新函数叫做联合勒让德函数P m n .对于每一个整数n ,在区间[0..n ]上,函数由m 的值定义,当m =0时,函数等价于P n (x ).这些函数由勒让德函数的导数的项定义:P m n =(−1)m (1−x 2)(m 2),diff (P n (x ),x $m )这个定义对于大多数的计算机语言来说是累赘的,但是Maple 操控它很容易,因为Maple 用符号化代替数值化.这里有个函数评价它>with(orthopoly);[G,H,L,P,T,U ]>Pnm:=(n,m,x)->(-1)^m*(1-x^2)^(m/2)*diff(P(n,x),x$m);P nm:=(n,m,x )→(−1)m (1−x 2)(12m ),diff (P (n,x ),x $m )在做任何花哨的事情之前我们测试它,因此让我们为n,m 和x 输入数字.>Pnm(3,1,.5);Error,(in Pnm)wrong number (or type)of parameters in function diff 好了,我们又遇到麻烦了.这个问题是P (n,x )返回了什么.如同我们在第2章一个节中看到的这个函数,它不返回数字,而是返回多项式.当我们把0.5赋给x 时,它进入到上面定义的函数Pnm ,并代替x ,然后diff命令尝试关于0.5求导数,而这是没有意义的.观察当我们用一个变量而不是数字来代替x 时发生什么.>Pnm(3,1,t);−√1−t 2(152t 2−32)倘若你想要一个数值结果你可以这样做>a:=Pnm(3,1,t);t:=0.5;a;a :=−√1−t 2(152t 2−32)t :=.5−.3247595264这是很烦人的,另一方面,仅仅考虑它;总之,为什么在Maple 里需要一个数字呢?你要画函数图像,微分,求积,在微分方程里使用,等等.有什么事情比得到一个明确的表达式更好呢?Maple 认为这不是一个问题;而是一个特性.而且这个特性为你使用with(orthopoly)想要得到的所有正交函数所享有.这里还有另一个关于函数Pnm 更烦人的事情.观察当我们尝试用m =0执行时发生什么.>Pnm(5,0,x);Error,(in Pnm)wrong number (or type)of parameters in function diff 当m =0时它假想返回Pn(x)的结果,但事与愿违.不工作的原因是因为我们要求它求一个函数的0阶导数,而Maple 的diff命令应付不了.稍后学习程序之后我们返回这个问题并修复它,使得当m =0时也工作.好了,我已经演示怎样做了.现在请你结合P (5,x )作5个联合勒让德函数的图像,例如,n =5及m =1,2,3,4,5.图像从x =−1画到x =1.用不同的颜色把5个图像画在同一轴上,当m 的范围从1变化到n =5时发生了什么.看过图片之后你可能想要重新缩放函数图像使得它们看起来大小相同.在下一节积分中,我们会重新绘制并用一种自然的方式让函数图像接近相同的尺寸.这是下一节积分中引过来的一个电学问题.电势函数z ,电荷球半径为R ,电荷面密度为σ,其中z 上升到半球的对称轴,表达式如下>V:=-1/2*sigma*R*(-sqrt(R^2+z^2)+sqrt((z-R)^2))/(z*e0);V :=−12σR (−√R 2+z 2+√(z −R )2)ze 0其中e 0表示电荷常数ε0.电场分量E z 可以通过电势V 微分得到:E z =−(∂∂zV ).使用Maple 对这个求导可以得到一个关于E z (繁杂)的表达式.化简它.你会看到一个叫csgn 的陌生函数,输入?csgn 查看函数说明以确保你知道它是做什么的.然后令σ=1,R =1及e 0=1,然后从z =−4到z =4同时画V 和E z 的图像.这是一个电磁定律关于跨表面电荷密度,电场区域通过σε0变化.(你可能注意到上面定义的V 我用e 0代替ε0.这是故意的.尽可能是避免变量下标,因为Maple 中的下标引用矩阵元素.)验证你的图像以获得正确的跳跃.在图像中,负z 在半球圆缘的下方,正z 从0到R 在半球内部,且正z 从R 到无穷在圆顶之上.想像你的图像并说服你自己使它有意义.问题3.6这是一类花俏的微分叫做隐式微分,且Maple 可能求解.假设你有一个方程涉及x 和y ,像这个x 2+y 2=3.你想要解出dy dx 而不求解y (x ).这种方式求隐式方程的微分得2x +3y 2(∂∂x y )=0,然后求解dy dx .Maple 知道如何求解,规定你告诉它y 依赖于x ,像这样.>restart;>eq:=x^2+y(x)^3=3;eq :=x 2+y (x )3=3>deq:=diff(eq,x);deq :=2x +3y (x )2(∂∂x y (x ))=0>dydx:=solve(deq,diff(y(x),x));dydx :=−23xy (x )2如果你任何时候都不想输入y (x ),你可以使用Maple 的alias 命令告诉它把y 变为y (x )(只适用Maple 的内部进程)当遇到的时候.>restart;允许我们使用y 代替y (x )>alias(y=y(x));y>eq:=x^2+y^3=3;eq :=x 2+y 3=3>deq:=diff(eq,x);deq :=2x +3y 2(∂∂x y )=0>dydx:=solve(deq,diff(y,x));dydx :=−23xy 2这是一个物理学中的例子.等离子体电磁波的分散关系是ω2=wp 2+k 2c 2,其中wp 是一个频率叫做等离子体频率.波的相对速度由ωk 给出,群速度由dωdk 给出.首先用Maple 求出相对和群速度的公式,在wp ,k 及c 的条件下求解ω(k )并微分.然后在k ,c 及ω的条件下用隐式微分得到群速度.最后,Maple 也知道怎样求解偏导数.考虑关于x 和y 的函数f (x,y )=cos (xy )y .这是关于x ,y ,以及x 和y 的导数,用表达式形式>restart;f:=cos(x*y)/y;f :=cos (xy )y>diff(f,x);diff(f,y);diff(f,x,y);−sin (xy )−sin (xy )x y −cos (xy )y 2−cos (xy )x也可以通过Maple 的符号函数来做相同的事情>restart;f:=(x,y)->cos(x*y)/y;f :=(x,y )→cos (xy )y>D[1](f);D[2](f);D[1,2](f);(x,y )→−sin (xy )(x,y )→−sin (xy )x y −cos (xy )y 2(x,y )→−cos (xy )x问题3.7求出下面这个函数的一阶导数及三个二阶导数(两个x ,两个y 以及xy )K (√4xy (x +y )2)其中K 是完全椭圆积分EllipticK .使用符号表达式并用diff命令求解.尝试使用expand 和simplify 命令清除杂乱的东西以得到结果.积分你使用Maple做得最多的简单事情就是积分.事实上,你没有更多的思想比较积分表和计算尺.大多数都是可以的,因为你很容易获得Maple并且它是不错的.但是它不会做任何事情(就如果你在这一节看到的一些例子一样),所以你需要知道当Maple 失败的时候该怎么做.最好的做法是看一本由Gradshteyn和Ryzhik编写的一本名为《A Table of Series and Integrals》的数学参考书.你可以从图书馆的数学参考书部分找到它,或者在我们系图书室,如果没有教员把它借走.初等积分Maple可以求解你在第一节积分课里遇到的所有积分问题.实现这个功能的命令叫做int,你可以像这样使用表达式>int(sin(x),x);−cos(x)或者>f:=sin(x)*x;int(f,x);f:=sin(x)xsin(x)−x cos(x)注释:不要使用f(x)作为参数如果f是一个表达式.倘若是函数,积分命令这样用:>g:=(x,y)->sin(x*y)*x;g:=(x,y)→sin(xy)x>int(g(x,y),x);sin(xy)−xy cos(xy)y2这有一个int的简化形式,叫做Int,用来显示积分.这个形式你可以用于记录表.尝试这个:>s1:=Int(exp(x),x);s1:=∫e x dx请注意:Int命令只显示,并不做数学运算.也许你会问,“但如果它不做任何事,我为什么要用它呢?”因为它能帮助查看你是否输入正确的积分,Int命令是很有价值的调试工具.当显示形式你看起来对之后,使用value(s1)得到结果.因此正确求解上面的简单积分并取得结果是这样的:>s1:=Int(exp(x),x);>s1:=value(s1);s1:=∫e2dxs1:=e2我建议你总是使用Int和value组合的方式求解积分.这是一个好习惯,可以减少你查看愚蠢错误的时间.当然,你也可以像这样求解定积分:>s2:=Int(tan(x),x=0..1);>s2:=value(s2);s 2:=∫10tan (x )dxs 2:=−ln (cos (1))如果想要求积分值,你可以这样做:>evalf(s2);.6156264703噢,如果你仅仅是想要数值结果而不通过evalf 命令,只需给int 命令浮点极限你就可马上得到结果.>s2:=Int(tan(x),x=0..1.);>value(s2);s 2:=∫10tan (x )dx当然你也知道Maple 可以对无穷极限求积分,但你需要通过assume 命令做一些引导.好了,你要了解的Maple 求解积分的东西就这么多.输入?int 获取更多Maple 提供的积分选项.下面让我们做些练习.问题3.8用Maple 求解下列积分,其中(a)-(d)用表达式符号,(e)-(g)用函数符号.求出(e)和(f)的积分值.求解(g)时你会遇到麻烦,你得到的结果看起来很繁杂,试着用simplify 命令化简.(a )∫ln (x )dx (b )∫√1−x 2dx (c )∫x 1+x 3dx (d )∫cos h (x )dx (e )∫10√1+x 1−x dx (f )∫120x x 3−1dx (尝试使用1/2和1./2.作为积分上限)(g )∫∞e −ax cos (x )dx (不知道如何输入∞,输入?使用联机帮助.)。
1第三章 微积分运算在student 库。
§3.1 极 限3.1.1 一元函数的极限在Maple 中,求极限的函数是limit(或Limit),完整的函数表达式是:limit(f(x),x=a[,dir]);Limit(f(x),x=a[,dir]);其中,a 为极限点或无穷,dir 极限方向(left 、right )或real(实)和complex (复)。
参数空时,系统自动取实。
EX.1> f:=x*sin(1/x);:= f x ⎛⎝ ⎫⎭⎪⎪sin 1x > limit(f,x=0);> plot(f,x=-0.1..0.1);> limit(f,x=0,left);> limit(f,x=0,real);> limit(f,x=0,complex); 由于复数不能求三角函数,故以复数趋于0极限不存在lim→ ,com plex x0x⎛⎝⎫⎭⎪⎪sin1xEx.2> f:='f':f:=(sqrt(1+x^4)-(x^6-2*x^2)^(1/3))/(x^2*tan(1/x)*sin(1/x)*(1-cos(1/x)));:= f-+1x4()-x62x2()/13x2⎛⎝⎫⎭⎪⎪tanx⎛⎝⎫⎭⎪⎪sinx⎛⎝⎫⎭⎪⎪-1⎛⎝⎫⎭⎪⎪cosx> limit(f,x=infinity);73也可用求极限的另一形式:> f:='f':f:=x->(sqrt(1+x^4)-(x^6-2*x^2)^(1/3))/(x^2*tan(1/x)*sin(1/x)*(1-cos(1/x)));:=f →x-+1x4()-x62x2()/13x2⎛⎝⎫⎭⎪⎪tanx⎛⎝⎫⎭⎪⎪sinx⎛⎝⎫⎭⎪⎪-1⎛⎝⎫⎭⎪⎪cosx> limit(f(x),x=infinity);73Ex.3> limit(1/x,x=0); x->infinity的符号影响结果,故出给不存在undefined> limit(1/x,x=0,left);-∞3.1.2 多元函数的极限多元函数求极限,公式与一元函数极限公式类似,其完整形式如下:limit(expr(x1,x2,…,xn), {x1=a1,x2=a2,…,xn=an},dir);Limit(expr(x1,x2,…,xn), {x1=a1,x2=a2,…,xn=an},dir);其中,如果某些xi没有取值时,系统将保留不动。
《探寻maple 牛顿-莱布尼茨公式》一、引言maple 牛顿-莱布尼茨公式,作为微积分中的经典公式,是描述求导和积分的关系的重要定理。
它由两位伟大的数学家牛顿和莱布尼茨分别独立发现,并且在实际应用和理论探讨中发挥着重要作用。
本文将从浅入深地探讨maple 牛顿-莱布尼茨公式,希望能为读者深入理解这一数学定理的内涵和应用。
二、maple 牛顿-莱布尼茨公式的基本概念1. maples 的概念在微积分中,maple 是代表一个函数的导数。
它描述了函数在某一点的瞬时变化率,是微积分中非常重要的概念之一。
2. 牛顿-莱布尼茨公式的表达maple 牛顿-莱布尼茨公式由以下表达式所描述:∫(a, b) f(x)dx = F(b) - F(a)其中,∫代表积分,f(x)是函数,F(x)是f(x)的不定积分函数,a和b是积分的上下限。
三、maple 牛顿-莱布尼茨公式的探讨1. 证明方法maple 牛顿-莱布尼茨公式的证明可以通过利用极限的性质,结合微分学和积分学的知识进行推导。
基于导数和积分的定义,可以清晰地展示maple 牛顿-莱布尼茨公式的成立过程。
2. 函数的连续性和可导性maple 牛顿-莱布尼茨公式适用于连续函数和可导函数。
在进行积分操作时,对函数连续性和可导性的要求是必不可少的。
3. 应用场景maple 牛顿-莱布尼茨公式在物理学、工程学、经济学等领域都有广泛的应用。
在物理学中,可以利用maple 牛顿-莱布尼茨公式求解曲线下的面积和质心等问题。
四、个人理解和观点作为一名数学爱好者,我深刻理解maple 牛顿-莱布尼茨公式的重要性和美妙之处。
它不仅揭示了导数和积分之间的奇妙关系,还为我们解决实际问题提供了强大的工具。
maple 牛顿-莱布尼茨公式的深入理解不仅有助于提高数学水平,还能拓展思维,对于培养逻辑思维和解决实际问题具有重要意义。
五、总结本文从maple 牛顿-莱布尼茨公式的基本概念出发,深入探讨了其证明方法、适用条件和应用场景,同时结合个人观点和理解进行了阐述。
第5章微分方程5.1 常微分方程5.1.1 常微分方程的求解和作图命令z 求解微分方程命令dsolve在微分方程中,我们称只有一个自变量的微分方程为常微分方程,具有两个或两个以上自变量的微分方程为偏微分方程。
例如:描述物体冷却过程的数学模型)(0u u k dtdu−−= 含有自变量t 、未知函数u 以及一阶导数dudt,是一个常微分方程。
Maple 中求解常微分方程的命令为dsolve 函数,其用法有dsolve (常微方程)dsolve (常微方程,待解函数,选项)dsolve ({常微方程,初值},待解函数,选项) dsolve ({常微方程组,初值},{待解函数},选项)z 方程数值解作图命令odeplot要做出常微分方程数值解的图象,请使用odeplot 函数。
odeplot 在程序包plots 中,可通过with(plots)或plots[odeplot]调出。
odeplot (数值解,被绘函数,参数范围,选项)5.1.2 一阶常微分方程z 可分离变量方程若一阶微分方程有形式)()(y g x f dxdy=,则称为可分离变量方程。
一般可以通过对方程dx x f y g dy)()(=两边分别积分,得到方程的隐式解。
例:求解微分方程sin()'()sin()x y x y =。
> eq:=diff(y(x),x)=sin(x)/sin(y(x));显然,这是可分离变量的常微分方程。
用Detools 程序包中的odeadvisor 函数检测方程的类型,输出结果_separable 说明方程类型是可分离变量的。
> DEtools[odeadvisor](eq);[_separable]用dsolve 函数求解方程,得到方程的通解。
> dsolve(eq);设定选项implicit ,得到方程的隐式解。
> dsolve(eq,implicit);附加初始值y(0)=1,得到方程的准确解。
Maple微积分计算步骤首先这个貌似要在Maple13版本以上才有。
准备工作:首先打开Maple。
再打开菜单工具栏中的工具——调用程序包。
在调用程序包中找到Student:-Calculus1。
并点击它,则Maple中出现。
当然也可以自己输入with(Student[Calculus1]):。
并按enter结束方法一:例如我想用Maple求一下三个积分的求解步骤:有了以上的准备工作后,在面板中输入。
然后鼠标右键—2-D数学—转换为—惰性形式。
转换为惰性形式之后的式子为。
(在点击右键的时候鼠标要在虚线框内。
)然后再鼠标右键—solve—Show Solution Steps。
即求解完毕。
完毕之后的内容为:这两个的方法也是同上面一样。
过程在“Maple步骤程序”中。
方法二:还是同样计算上面的三个式子。
在面板中直接输入。
然后也是鼠标右键——2-D ——转换为——惰性形式。
再按Enter就行了。
过程为:其它两个也一样。
Maple中的步骤不仅对以上三种有用。
对极限和偏导也可以。
具体的可以试试。
我在“Maple步骤程序”中也举了例子。
至于其它的,有兴趣的可以自己去研究。
但并不是每个微分里面的Maple都会有步骤显示。
而且如果你们自己试过Maple里面的步骤之后会看到,它里面的步骤是一步一步来的。
有些明明自己做起来很简单的步骤,Maple也许会很复杂。
我们自己做的时候并不需要那么多步骤。
有些还要自己省。
而且有些步骤不一定适合我们自己。
毕竟Maple不是人,它的步骤是唯一的。
但那些步骤或许会给我们点启发。
所以我们只能做参考。
用Maple计算简单的微分操作
在利用Maple解决数学问题时,更多的是因为Maple符号计算的强大功能。
利用Maple可以完成符号和数值微分计算。
下面介绍常见的Maple微分命令。
更多Maple基本功能与常用操作命令介绍请访问Maple中文版网站。
对表达式求微分:
1)在左侧的表达式面板中,点击微分项,或者偏微分项。
2)定义表达式和自变量,然后求值。
例如,求xsin(ax)关于x的微分:
用户也可以使用右键菜单求微分。
想要计算高阶或偏微分,需要编辑插入的微分符号。
例如,计算xsin(ax)+x2关于x的二阶微分:
计算xsin(3x)+yx5的混合偏导数:
注意:想要插入偏导符号,用户可以通过拷贝和粘帖已有的符号,或者输入字母d然后按ESC符号补全。
diff命令:
Maple使用diff命令对表达式求微分。
通常的用法是diff(expr,var),其中var是要求微分的变量。
例如:
用户可以通过定义一组微分变量计算高阶微分。
Maple递归地调用diff 命令。
想要计算偏微分,使用相同的语法。
Maple会假设为偏微分计算。
如果要对一个变量多次求导,可以使用diff(f,x$n),它实际上是一种缩写的形式,n代表变量x重复的次数。
这个语法也可以用于计算符号nth阶微分。
以上内容向大家介绍了Maple符号计算中有关微分的一些使用,这些常见的Maple微分命令是大家经常使用的,熟记在心后会使处理问题快捷很多。
如果需要了解更多Maple基本操作,可以参考教程:怎样用Maple键盘命令解决数学问题。
[整理版]Maple微积分積分技巧积分方法基本上可概分为分部积分法与代换积分法两种。
分部积分法将于9.2节里介绍,而简单的代换积分法已于5.3节探讨过。
于本章里首先将就基本的积分公式与代换积分法做一个简单的复习,同时也介绍了Maple的几个基本的积分指令,来为本章的学习暖个身。
9.1 基本积分公式与代换积分法的复习 9-2 9.2 分部积分法 9-99.3 三角函数的乘幂积分 9-229.4 三角代换积分法 9-349.5 含二次项的积分 9-429.6 有理函数的积分法 9-469.7 技巧性的代换积分法 9-569.8 数值积分 9-629.1基本积分公式与代换积分法的复习代换积分法(method of substitution)系利用变量变换,将较不易积分的数学式代换成较易积分的式子。
通常代换积分法必须利用一些现成的积分公式或积分表来完成,以下列出了常用的积分公式: 乘幂与指数n,11xndx,lnx,Cxdx,,C,n,,1,,xn,1 1. 2.nanxxadx,,C,a,1,a,0edx,e,C,,lna 3. 4.三角函数sinxdx,,cosx,Ccosxdx,sinx,C,, 5. 6.22secxdx,tanx,Ccscxdx,,cotx,C,, 7. 8.secxtanxdx,secx,Ccscxcotxdx,,cscx,C,, 9. 10.tanxdx,,lncosx,Ccotxdx,lnsinx,C,, 11. 12. 基本的代数函数1x,,,111x,,,1dx,sin,C,,dx,tan,C,,,,2222a,,aaa,x,,a,x 13. 14.11a1x,,,,,1,1dx,cos,C,sec,C,a,0,,,,,22axaa,,,,xx,a15.xedx2x,16,9e【例题9.1.1】试求xxu,3edu,3edx【解】设,则,因此xe1111xdx,(3edx),du,,,2x2x23316,9e16,9e16,u(1)11u,,,1tan,,,C,,344,, (利用积分公式14) (2)x,,13e,1,,,,Ctan,,124,, (3) Maple的student链接库里所提供的changevar指令可以用来做变量变换积分,下列的步骤模拟了本例题中,整个手算的过程。