Maple常用函数[最新]

合集下载

maple 计算 行列式

maple 计算 行列式

maple 计算行列式
《maple计算行列式》
在线性代数中,行列式是一个非常重要的概念,它可以帮助我们判断一个矩阵的性质和特征。

而在数学软件Maple中,可以很方便地进行行列式的计算和操作。

首先,我们需要创建一个矩阵并输入具体的数值。

在Maple中,可以采用矩阵的形式来表示一个矩阵,然后使用Det函数来计算这个矩阵的行列式。

例如,如果我们有一个3x3的矩阵A,可以通过以下代码来计算它的行列式:
A := Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
detA := Det(A);
这样就可以得到矩阵A的行列式detA的值。

除了计算行列式,Maple还可以进行一系列行列式相关的操作,比如求逆矩阵、计算伴随矩阵等。

除了基本的行列式计算外,Maple还提供了一些高级的行列式计算和应用,比如求解线性方程组、计算特征值和特征向量等。

这些功能可以帮助我们更深入地理解矩阵的性质,并且在数学和工程领域的应用中起到重要作用。

总之,Maple是一个功能强大的数学软件,它提供了丰富的行列式计算工具,可以帮助我们更加方便地进行线性代数的学习和应用。

通过学习和使用Maple,我们可以更好地理解和运用行列式这一重要的数学概念。

maple 常用语句范例及语句含义分类

maple 常用语句范例及语句含义分类

pi:=evalf(%)*4; simpson(1/(1+x^2),x=0..1); pi:=evalf(%)*4;
滞后画图
display 执行 >with(plots): g1:=implicitplot(y^2=2*x,x=0..10,y=-5..5): g2:=implicitplot(y=x-4,x=0..10,y=-5..5): display(g1,g2); >solve({y^2=2*x,y=x-4},{x,y}); >int(2*sqrt(2*x),x=0..2)+int(sqrt(2*x)-(x-4),x=2..8); int 积分
simplify 简化
Matrix 生成矩阵 Rank 计算向量的秩
相关感悟 3
三、线性代数(Linear-Algebra) 三、线性代数(
VandermondeMatri
x 范德蒙德矩阵
LinearAlgebra 线性代数 RandomVector 随机生成向量 DotProduct 计算两向量内 积 Norm 2 22-范数 长度 VectorAngle 计算两向量夹 角 evalb 演算条件是否 成立 Determinant 计算矩阵的行 列式
注意避免:
> sol:=evalf(solve(f(x))); sol := 0., -0.7095905293 > evalf(f(-0.7095905293),10);
-0.1376920833
fsolve 计算 f(x)=0 f(x)=0 在某一 x 值旁 边的近似零点
>unassign('a','b','p','x'); a:=[seq(-Pi+k*Pi/2,k=0..4)]; b:=map(sin,a); p:=interp(a,b,x); g1:=plot(sin,-Pi..Pi,color=red): g2:=plot(p,x=-Pi..Pi,color=black): g2:=plot(p,x= x=-Pi..Pi,color=black): plots[display](g1,g2);

Maple基础教程(修订稿)

Maple基础教程(修订稿)

Maple 基础一Maple 的基本运算1 数值计算问题在应用Maple 做算术运算时, 只需将Maple 当作一个“计算器”使用, 所不同的是命令结束时需加“;”或“:”.在Maple 中, 主要的算术运算符有“+”(加)、“–”(减)、“*”(乘)、“/”(除)以及“^”(乘方或幂,或记为**),值得注意的是, “^”的表达式只能有两个操作数, 换言之, c b a ^^是错误的, 而“+”或“*”的任意表达式可以有两个或者两个以上的操作数. 2.1.1 有理数运算作为一个符号代数系统, Maple 可以绝对避免算术运算的舍入误差.如果要求出两个整数运算的近似值时, 只需在任意一个整数后加“.”(或“.0”), 或者利用“evalf ”命令把表达式转换成浮点形式, 默认浮点数位是10 (即: Digits:=10, 据此可任意改变浮点数位, 如Digits:=20). > 9/1;;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 的余数, 并将商赋给q iquo(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); #求x1,x2,…,x n中的最大值min(x1,x2,…,xn); #求x1,x2,…,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--510Iarctan2π- +()1) 绝对值函数…命令格式: abs(expr);当expr为实数时,返回其绝对值,当expr为复数时,返回复数的模.2)复数的幅角函数命令格式: argument(x); #返回复数x的幅角的主值3)共轭复数命令格式: conjugate(x); #返回x的共轭复数初等数学<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 0na k x k> 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 2}5)对数函数命令格式: 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 bac > 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 、cos convert 指令所提供的三角函数、指数与函数的转换共有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 121e x2.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 求 值赋值在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);变量代换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 p,求值规则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 x}4) 使用浮点算法求值命令格式为: 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 xx> 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 中表示为阵列, 是一种特殊的表.数据类型查询在Maple 中, 用whattype 指令来查询某个变量的数据类型或特定类型, 命令格式为: whattype(expr) # 查询expr 的数据类型`type(expr, t) # 查询expr 是否为t 类型, 若是则返回true, 否则返回false序列, 列表和集合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];1z xx1 -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)};1827641252163435127291000:=,,,,,,,,,A{},,,,,,,,,149162536496481100B{}:=`> A intersect B;,164{}数组和表在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 函数的极限和连续函数和表达式的极限)(lim x f ax →命令格式为: limit(f,x=a);求)(lim x f ax +→时的命令格式为limit(f, x=a, right); 求)(lim x f a x -→时的命令格式为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}));⎛⎝ ⎫⎭⎪⎪lim it ,()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);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);true`1.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求导数的原函数

maple求导数的原函数

maple求导数的原函数
积分(Integrals)是数学中一种重要的概念,是通过积分函数来表
示函数的综合结果,用于表示函数的一定段落内的总和。

严格来说,积分
就是在函数自变量的其中一范围内,将函数变量从起点叠加到终点的总和。

对一个函数进行积分可以得到其定积分,这种积分可以表示在特定范围内
函数变量的平均值,称为定积分,定积分可以帮助我们更好地理解函数的
特性。

求函数导数是积分理论中的一种重要方法。

在求函数导数中,用偏导
数的概念来描述函数的变化,以表示函数在特定点的变化情况。

偏导数的
定义有:一个函数在其中一特定点处变化的速度就是这个函数在这一点处
的偏导数。

偏导数可以使用微分的方法求得,微分即求得函数在单元位置
上的导数,它可以表示在一个位置上函数增长的程度。

Maple是一款用于科学计算的软件,可以帮助我们更好地求解函数及
其导数问题。

但是,要在Maple中求函数的导数,首先要输入原函数,然
后再给定自变量。

例如,假定求函数 f (x) = x2 + 3 的导数,那么我们
需要输入f (x) = x^2 + 3,然后在函数下面输入diff (f (x)); 就可以
得到求得的解析式 d/dx(x2+ 3)=2x。

此外,在Maple中还可以求取函数的不定积分,有时也称为普通积分。

MAPLE讲稿

MAPLE讲稿

快 速 进 入
Maple
Jan,8, 2004
毕业指导培训
M1-9
第一讲 MAPLE简介
Maple
小结:
本章仅就Maple 的基本功能作一个简短的解说, Maple的操 作界面尚有许多功能,例如,可以加入试算表,可以将文件存成 HTML格式等.限于时间的关系,本次培训不一一介绍.如果需要更 详细的说明,你可以从 Maple在线帮助系统里的Worksheet interface中查询. 当然,你也可以到 Maple 加拿大总公司的网站逛逛,收集最 新的资料,其网址为:
快 速 进 入
Maple
Jan,8, 2004
毕业指导培训
M1-10
第二讲 数值计算
2.1Maple 简介
数值运算可概括地分为精确与近似值运算.
2.1.1数值运算 一. 精确运算
通常我们把整数称为精确数,因为它不带任何小数.其它诸如3/4, sin2等数也叫精 确数.数值运算的结果为一个精确数,则称此运算为精确运算. > 1+3/7; 的结果为10/7,不是将它化为小数(1.42857142…)
Jan,8, 2004
快 速 进 入
Maple
毕业指导培训
M1-11
第二讲 数值计算
2.2 Maple 的基本运算
基本指令(一)
factorial(n)或n! irem(m,n) iquo(m,n)
基本指令(二)
计算n的阶乘 计算m/n的整数余数,其中m,n必须为整数 计算m/n的整数商,其中m,n必须为整数
快 速 进 入
Maple
Jan,8, 2004
毕业指导培训
M1-12
n e
第二讲 数值计算

Maple基础教程(修订稿).

Maple基础教程(修订稿).

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的一个非常实用的功能就是微积分计算它能求导数,作积分,作级数

第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 (不知道如何输入∞,输入?使用联机帮助.)。

Maple基础教程(修订稿)

Maple基础一 Maple的基本运算1数值计算问题在应用Maple做算术运算时,只需将Maple当作一个“计算器”使用,所不同的是命令结束时需加“;”或“:”J ■■在Maple中,主要的算术运算符有“ + ”(加)、“-(减卜“ * ” (乘卜“/”(除)以及“八”(乘方或幕,或记为**),值得注意的是,“A”的表达式只能有两个操作数,换言之,a A b A c是错误的,而“+”或“ *”的任意表达式可以有两个或者两个以上的操作数2.1.1有理数运算作为一个符号代数系统,Maple可以绝对避免算术运算的舍入误差.如果要求出两个整数运算的近似值时,只需在任意一个整数后加“.”(或“ .0”),或者利用“ evalf”命令把表达式转换成浮点形式,默认浮点数位是10 (即:Digits:=10,据此可任意改变浮点数位,如Digits:=20).> 123456789/987654321;13717421109739369> evalf(%);.1249999989> big_number:=3A(3A3);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(2A(2A4)+1);true3) 确定第i个素数(ithprime)若记第1个素数为2,判断第i个素数的命令格式:ithprime(i);4) 一组数的最大值(max)/最小值(min)命令格式:max(x1,x2,…,xn); #求xg,…,x n中的最大值min(x1,x2,…,xn); #求 X1,X2,…,X n 中的最小值5) 随机数生成器(rand)命令格式:rand( ); #随机返回一个12位数字的非负整数rand(a..b); #调用rand(a..b)返回一个程序,它在调用时生成一个在范围 [a, b]内的随机数> ran d();427419669081> myproc:=ra nd(1..2002):> myproc();> myproc(); 19161204注意,rand(n)是rand(0..n-1)的简写形式.2.1.2复数运算复数是Maple中的基本数据类型.虚数单位i在Maple中用I表示可以用Re( )、Im( )、conjugate()和argument )等函数分别计算实数的实部、虚部、共轭复数和幅角主值等运算.试作如下实验:> complex_number:=(1+2*l)*(3+4*l);complex, nu mber := -5+101> Re(%);lm(%%);conjugate(%%%);argume nt(complex_ nu mber);-510-5-10 1-arcta n(2) 二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的任意表达式.2> product(k A2,k=1..10); #计算k 关于 1..10 的连乘13168189440000> product(kA2,k); #计算k2的不确定乘积> product(a[k],k=0..5);■(k)2 #计算a i(i=0..5)的连乘a0 a1a2a3a4a5> Product(n+k,k=0..m)=product(n+k,k=0..m); #计算(n+k)的连乘,并写出其惰性表达式mnk =0(n kH;(n m 1)> product(k,k=RootOf(xA3-2));#计算 3x -2的三个根的乘积2) 指数函数 计算指数函数exp 关于x3) 确定求和与不确定求和 命令格式:sum(f,k);sum(f,k=m.. n);sum(f,k=alpha); sum(f,k=expr);其中,f —任意表达式,k —乘积指数名称,m,n —整数或任意表达式 含k 的表达式.Sum(kA2,k=1.. n)=sum(kA2,k=1.. n);的表达式的命令格式为:exp(x); sum,alpha —代数数 RootOf, expr —不' k 2;" 1)3-;(n 1)2k -13 2Sum(1/k!,k=0..i nfini ty)=sum(1/k!,k=0..i nfin ity);处1' | =e k! -e k =0 ©sum(a[k]*x[k],k=0.. n);nzk =0a k xksum(k/(k+1),k=RootOf(x A 2-3));3)三角函数/双曲函数命令格式: sin(x); cos(x); tan(x); sin h(x); cosh(x); tan h(x); 其中,x 为任意表达式. > Sin(Pi)=sin(Pi);cot(x);coth(x);sec(x);sech(x); csc(x);csch(x);Sin (二)=0 4) 反三角函数/反双曲函数 命令格式:arcsin(x);arccos(x);arcsin h(x); arccosh(x); arcta n( y,x);其中,x, y 为表达式.反三角函数/反双曲函数的参数必须按弧度计算 > arcsinh(l);arcta n( x); arccot(x); arcta nh(x); arccoth(x);arcsec(x); arccsc(x); arcsech(x); arccsch(x);> cos(arcsin(x));ln(1 2)〕(n)> f(1,2);> f:=(x,y)->a*x*y*exp(xA2+yA2);(X2+y 2) f := (x, y ) —■ a x y e另一个定义函数的命令是 un apply,其作用是从一个表达式建立一个算子或函数 命令格式为:f:=unapply(expr, x);命令格式为:f:=unapply(expr, x, y,…); > f:=u napply(xA4+xA3+xA2+x+1,x);432.f := X —; x x x x 15)对数函数 命令格式:In(x);log[a] (x);Iog10(x);一般地,在In(x)中要求#自然对数 #一般对数 #常用对数x>0.但对于复数型表达式x,有:In(x)=ln(abs(x)) I * argument(x)(其中,-二:::argument(x)空愿)> Iog10(1000000);ln (1000000 )ln( 10)> simplify(%); #化简上式 222函数的定义试看下面一个例子: > f(x):=a*x A 2+b*x+c;---并不是函数,而是一个表达式2f(x) := a x b x c> f(x),f(O),f(1/a);由上述结果可以看出,用赋值方法定义的f(x)是一个表达式而不是一个函数 在Maple 中,要真正完成一个函数的定义,需要用算子(也称箭头操作符): > f:=x->a*xA2+b*x+c;f := x — a x 2b x c> f(x),f(0),f(1/a);> f:=(x,y)->xA2+yA2;f := (x, y) —; x 2y 2 2a xb x c, f( 0), f借助函数piecewise 可以生成简单分段函数: > abs(x)=piecewise(x>O,x,x=O,O,x<O,-x);x 0 :: x | x | = « 0 x = 0-xX £ 0清除函数的定义用命令 un assig n. > un assig n(f); > f(1,1);f(1,1)定义了一个函数后,就可以使用op 或nops 指令查看有关函数中操作数的信息 .nops(expr),函数op的主要功能是,其命令格式为: op(expr); op(i, expr); op(i .. j, expr); nops(expr);expr:=6+cos(x)+s in( x)*cos(x)A 2;2expr := 6 cos( x) sin (x)cos(x)> op(expr);26, cos(x), sin(x) cos(x)> no ps(expr);32.2.3 Maple 中的常量与变量名为了解决数学问题,一些常用的数学常数是必要的.Maple 系统中已经存储了一些数学常数在表达式序歹U constants 中: > constants;false,,::, true, Catalan, FAIL,二为了方便使用,现将上述常数的具体含义列示如下:2.2.4函数类型转换实现函数类型转换的命令是convert .命令格式:convert(expr, form);#把数学式 expr 转换成 form 的形式#获取表达式的操作数#取出expr 里第i 个操作数, #expr 的第i 到第j 个操作数 #返回操作数的个数convert(expr, form, x); #指定变量 x,此时 form 只适于 exp、sin、cosconvert指令所提供的三角函数、指数与函数的转换共有exp等7种:(1) exp:将三角函数转换成指数(2) expln:把数学式转换成指数与对数⑶expsincos分别把三角函数与双曲函数转换成sin、cos与指数的形式(4) In:将反三角函数转换成对数(5) sincos将三角函数转换成sin与cos的形式,而把双曲函数转换成 sinh与cosh的形式⑹tan:将三角函数转换成tan的形式(7) trig :将指数函数转换成三角函数与对数函数> convert(sinh(x),exp);#将sinh(x)转换成exp类型1 x 1 1 e x -2 2 e x2.2.5函数的映射一map指令在符号运算的世界里,映射指令map可以说是相当重要的一个指令,它可以把函数或指令映射到这些结构里的元素,而不破坏整个结构的完整性 .命令格式为map(f, expr); map(f, expr, a); #将函数f映射到expr的每个操作数#将函数f映射到expr的每个操作数,并取出a为f的第2个自变量map(f, expr, a1, a2,…,an);井将函数f映射到expr的每个操作数,并取al〜an为f的第2〜n+1个自变量map2(f, a1, expr, a2,…,an); #以al为第1个自变量,expr的操作数为第2个自变量,a2为第3个自变量…,an为第n+1个自变量来映射函数f > f:=x->sqrt(x)+x A2;: 2f := x 、 x x> map(f,[a,b,c]);[a a2,b b2, c c2]> map(h, [a,b,c],x,y);[h(a,x,y),h(b,x,y),h(c,x,y)]3求值3.1赋值在Maple中,不需要申明变量的类型,甚至在使用变量前不需要将它赋值,这是Maple与其它高级程序设计语言不同的一点,也正是Maple符号演算的魅力所在,这个特性是由Maple与众不同的赋值方法决定的.为了理解其赋值机制,先看下面的例子.> p:=9*x A3-37*x A2+47*x-19;3 2p := 9 x -37 x 47 x - 19> roots(p);> subs(x=19/9,p);3.2变量代换subs ( var = repacedment expression;调用的结果是将表达式 expression中所有变量var出现的地方替换成replacement. > f:=xA2+exp(xA3)-8;2 (x3 )f := x e 「8> subs(x=1,f);-7 + e如果需要计算,必须调用求值函数evalf.如:> evalf(%);5.> subs(x=y,y=z,x A2*y); (顺序替换)3Z> subs({x=y,y=z},xA2*y); (同步替换)2y z> 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 + 3 a> subs({p=q,q=p},f(p,q)); (互换)f(q, p)3.3求值规则1) 对表达式求值命令格式:eval(e, x=a); #求表达式 e在x=a处的值eval(e, eqns); #对方程或方程组 eqns求值eval(e); #表达式e求值到上面两层eval(x, n); #给出求值名称的第n层求值> p:=xA5+xA4+xA3+xA2+x+73;5 丄4丄 3 丄2丄丄_ _p := x x x x x 73> eval(p,x=7);19680当表达式在异常点处求值时,eval会给一个错误消息.如下:> eval(s in( x)/x,x=0);Error, numeric exception: division by zero2) 在代数数(或者函数)域求值命令格式:evala(expr); #对表达式或者未求值函数求值evala(expr,op ts); #求值时可加选项(opts)在Maple中,代数数用函数RootOf()来表示.如3作为一个代数数,可以表示为:> alpha:=RootOf(xA2-3,x);2口:= RootOf (_Z - 3)> simplify(alphaA2);3在Maple内部,代数数不再表示为根式,而在化简时,仅仅利用到〉2= 3这样的事实.这里,Maple用到一个内部变量 _Z.再看下面一个例子,其中alias是缩写的定义函数,而参数lenstra指lenstra 椭圆曲线方法:> alias (al pha=RootOf(x A2-2)):> evala(factor(xA2-2,alpha),le nstra);(x 亠 *) (x -:)> evala(quo(xA2-x+3,x-alpha,x,'r'));亠:亠x> r;3 - /> simplify(%);5 -圧3) 在复数域上符号求值操纵复数型表达式并将其分离给出expr的实部和虚部的函数为 evalc,命令格式为:evalc(expr);evalc假定所有变量表示数值,且实数变量的函数是实数类型.其输出规范形式为:expr1+l*expr2.> evalc(si n(6+8*1));sin(6) cosh(8) +1 cos(6) sinh(8)> evalc(f(exp(alpha+x*l)));f( e cos( x) I e: sin(x))4) 使用浮点算法求值命令格式为:evalf(expr, n);> evalf(Pi,50);3.1415926535897932384626433832795028841971693993751> evalf(si n( 3+4*I));3.853738038 -27.01681326 I5) 对惰性函数求值把只用表达式表示而暂不求值的函数称为惰性函数,对任意代数表达式f求值的命令格式为:value(f); > F:=ln t(exp(x),x);J*F := | e x dxJ> value(%);xe> f:=Limit(s in (x)/x,x=0);sin(x)f := lim -----X—.0 x> value(%);1另外,将惰性函数的大写字母改为小写字母亦即可求值.如下例:> Limit(si n( x)/x,x=0)=limit(si n(x)/x,x=0);sin(x),lim 1X r04 数据结构Maple 中有许多内建的与 FORTRAN 、 C 或 Pascal 不同的数据结构 . 主要的数据结构有序列(sequenee卜列表(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 := 1,4, 9,16, 25> t:=sin,com,tan,cot;t := sin, com, tan, cot一个序列也可以由若干个序列复合而成, 如:> s:=1,(4,9,16),25;s := 1,4, 9,16, 25> s,s;1,4, 9, 16, 25, 1, 4, 9,16,25而符号 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 A2,i=1..10);1,4,9, 16, 25, 36, 49, 64, 81, 100> seq(iA3,i=x+y+z);333x ,y ,z获得一个序列中的特定元素选用操作符 [ ], 如:> seq(ithprime(i),i=1..20);2,3, 5,7, 11, 13, 17, 19, 23, 29,31,37,41,43, 47, 53,59,61,67,71> %[6],%[17];13, 594.2.2列表列表(list),就是把对象(元素)放在一起的一种数据结构,一般地,用方括号[]表示列表•如下例:> I:=[x,1,1-Z,x];l := [X, 1, 1 - z, x]> whattype(%);list4.2.3集合集合(set)也是把对象(元素)放在一起的数据结构,一般地,用花括号表示集合.> s:={x,1,1-z,x};s := { 1, X, 1 -z}> whattype(%);set空集定义为{ }.Maple中集合的基本运算有交 (intersect)、并(union)、差(minus):> A:={seq(i A3,i=1..10)};B:={seq(i A2,i=1..10)};A := { 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000}B := { 1,4, 9, 16,25,36,49,64, 81, 100}> A in tersect B;{1,64}4.3数组和表在Maple中,数组(array)由命令array产生,其下标变量(index)可以自由指定.下标由1开始的一维数组称为向量(vector),二维以上的数组称为矩阵(matrix).数组的元素按顺序排列,任意存取一数组的元素要比列表或序列快的多•区分一个数据结构是数组还是列表要用“type”命令.表(table)在建立时使用圆括号,变量能对一个表赋值,但一个在存取在算子中的未赋值变量会被自动地假定是表,表的索引可以成为任意Maple表达式.表中元素的次序不是固定的.5 Maple高级输入与输出操作生成LATEXMaple可以把它的表达式转换成LATEX,使用latex命令即可:> latex(xA2+yA2=zA2);{x}A{2}+{y}A{2}={z}A{2}还可以将转换结果存为一个文件(LatexFile):> latex(xA2 + yA2 = zA2, LatexFile);再如下例:> latex(I nt(1/(xA2+1),x)=i nt(1/(xA2+1),x));\i nt \! \left( {x}A{2}+1 \right) A{-1}{dx}=\arcta n\left( x \right)微积分运算1函数的极限和连续1.1函数和表达式的极限 lim f (x)命令格式为:limit(f,x=a);求lim f (x)时的命令格式为 X — j a ■ 的命令格式为limit(f, x=a, left);请看下述例子: Limit((1+1/x)^x,x=infinity)=limit((1+1/x)Ax,x=infin ity); x f 1 > 1 +— I X 丿 limx - ■::Limit((x A n-1)/(x-1),x=1)=limit((xAn-1)/(x-1),x=1); lim x >1n x - 1 -1 =n Limit(xAx,x=0,right)=limit(xAx,x=0,righ t); lim X r 0 +limit(a*x*y-b/(x*y),{x=1,y=1});limit(xA2*(1+x)-yA2*((1-y))/(xA2+yA2),{x=0,y=0});un defi ned 下例就是化二重极限为二次极限而得正确结果: limit((si n(x+y)/(si n(x)*sin(y)),{x=Pi/4,y=Pi/4}));■/ sin(x +y){ sin(x)sin(y)' xlim itlimit(limit(si n(x+y)/(si n(x)*si n(y)),x=Pi/4),y=Pi/4); 2 1.2函数的连续性limit(f, x=a, right); 求 lim f (x)时x _1<:}1.2.1连续 在Maple 中可以用函数iscont 来判断一个函数或者表达式在区间上的连续性 .命令格式为: isc on t(expr, x=a..b, ' colsed '/'ope ned ); 其中,closed 表示闭区间,而opened 表示开区间(此为系统默认状态). 如果表达式在区间上连续,iscont 返回true,否则返回false,当iscont 无法确定连续性时返回 FAIL. 另外,iscont 函数假定表达式中的所有符号都是实数型 .颇为有趣的是,当给定区间[a,b ] (a>b)时,iscont 会自动按[b,a ]处理. > isco nt(1/x,x=1..2); true > isc on t(1/x,x=-1..1,closed); false> iscont(1/(x+a),x=0..1);1.2.2间断函数discont 可以寻找函数或表达式在实数域的间断点 ,当间断点周期或成对出现时,Maple 会利用 一些辅助变量予以表达,比如,_Zn ~(任意整数)、_NZn ~(任意自然数)和Bn ~(一个二进制数,0或者1),其 中n 是序号.判定f (x )间断点的命令为:disc on t(f, x);> disco nt(l n(xA2-4),x);{ -2, 2}> disco nt(arcta n(1/2*ta n(2*x))/(xA2-1),x);1 1{-1, 1,2 二一Z 1~ 4 二}> disco nt(rou nd(3*x-1/2),x);{33-Z1函数rou nd 为“四舍五入”函数,上例并非一目了然,对其进一步理解可借助于函数 的fdisco nt 例子。

maple命令

Maple函数用法一、基本命令重新开始:restart 命名:名字:= 引用前值:% 字符连接:|| 保护命名:protect 解除保护命名:unprotrct 变量类型:whattype 检验命名:assigned 别名:alias 宏:macro 帮助:?函数名 map把命令作用到每一个元素,seq生成序列,add生成和,mul生成积二、基本运算1. 近似计算:evalf(表达式,小数位数),用Digits命令提前设定小数位数2. 取整运算:round四舍五入,trunc向0取整, ceil向-∝取整, floor向∝取整3. 范围限定:assume(限定变量范围)frac小数部分4. 绝对值(模):abs(表达式),复数求其模5. 同余:mod(数1,数2),或者:数1 mod 数26. 平方根:sqrt(表达式),平方根最接近整数:isqrt(表达式)7. 分解质因数:ifactor(数),分解质因数成组ifactors(数) 8. 商与余数:商iquo(除数,被除数),余数irem(除数,被除数) 9. 最大公约数:igcd(数1,数2),最小公倍数:ilcm (数1,数2) 10.形如as+bt=(a,b)分解:igcdex(a,b,’s’,’t’) 11.数组最大最小值:max(数1,数2,…),min(数1,数2,…) 12.实部、虚部与幅角:实部Re(复数),虚部Im(复数),幅角argument 13.共轭复数:conjugate(复数) 14.形如a+bi整理:evalc (表达式)15.并集:集合1 union 集合2,交集:intersect,差集:minus 16.元素个数:nops(集合),用op可把集合转化成表达式三、多项式1. 降幂排列:sort(多项式),字典排序plex(第三个参数)2. 次数:degree(多项式),系数:coeff(多项式,项),首项系数:lcoeff 尾项系数:tcoeff,所有系数:coeffs(多项式,变量,‘power‘)3. 合并同类项:collect(多项式,合并参数)4. 商式:quo(除式,被除式,变量),余式:rem,整除检验:divide5. 最大公因式:gcd(多项式1,多项式2),最小公倍式lcm6. 因式分解:factor(多项式),可用第二个参数限定数域缺省代表有理数域7. 分母有理化:rationalize(多项式),有理分式化简:normal或者factor 8. 化简表达式:simplify,带假设化简:simplify(表达式,assume=范围)附加关系化简:simplify(表达式,{条件})代换:subs(条件,表达式)9. 展开与合并:展开expand(表达式),合并combine(表达式) 10.等价转换:convert (函数,转化成的函数)四、解方程1. 方程(组):solve({方程(组)},{未知量(缺省对所有变量求解})2. 数值解:fsolve (方程,变量范围(可缺省),数域(可缺省))3. 三角方程:添加_EnvAllSolutions:=ture 以求得所有解4. 多项式方程解的区间:realroot(多项式)5. 不等式(组):solve({不等式(组)},{变量})6. 整数解:isolve(方程,变量)7. 模m的解:msolve(方程,模m)8. 递推关系的通项:rsolve({递推关系,初值},{通项}) 9. 函数方程:solve(函数方程,函数)10.系数匹配:match(式子1=式子2,变量,’sln’) 11.Grobner基原理:先调用with(grobner),此命令将方程的解等价化简 Gsolve({式子1,式子2,…},[变量1,变量2,…]12.微分方程:dsolve({方程,初值(可缺)},函数,’explicit’(可缺)) 13.微分方程组:dsolve ({方程1、2,…,初值},{函数1,函数2,…}) 14.拉普拉斯变换法:dsolve({微分方程},函数,method=laplace) 15.微分方程级数解:dsolve({微分方程},函数,type=series) 16.微分方程数值解:dsolve({微分方程},函数,type=numeric)17.微分方程图形解:DEplot图形表示微分方程,dfielplot箭头表示向量场,phaseportrait 向量场及积分曲线,DEplot3d三维空间图形表示微分方程 18.偏微分方程:pdsolve(偏微分方程,求解函数)19.分离变量解偏微分方程:pdsolve(方程,函数,HINT=’*’,’build’) 20.偏微分方程图形解:PDEplot(方程,函数,ini边界s,s范围)五、数据处理1. 统计软件包:先调用程序包with(stats) ,有7个子包:anova方差分析,describe描述数据分析,fit拟合回归分析,transform数据形式变换,random分布产生随机数,statevalf 分布的数值计算,statplots统计绘图2. 基本命令:平均值mean,方差variance,标准差standarddeviation,中位数median,众数mode,数据求和sumdata,协方差covariance,相对标准差(标准差/平均值)coefficientofvariation,计数(非缺失)count,计缺失数countmissing,范围range,几何平均值geometricmean,线性相关数linearcorrelation3. 统计图形:直方图histogram,散点图scatter2d、quantile2(先从小到大排序再作图),箱式图boxplot4. 统计分布函数值:正态分布随机分布命令normald[期望,方差]先调用程序包with(statevalf)用法statevalf(分布函数,求解函数)连续分布:cdf累积密度函数,icdf逆累积密度函数,pdf概率密度函数离散分布:dcdf离散累积概率函数,idcdf逆离散累积函数,pf概率函数 5. 插值:整体插值命令f:=interp(数据1,数据2,变量)分段插值命令f:=spline(数据1,数据2,变量,次数)6. 回归:leastsquare[[x,y],y=多项式,{多项式系数}]([数据1,数据2]) f:=fit(数据1,数据2,拟合函数,变量)六、微积分1. 函数定义:函数名:=->表达式,复合函数:f(g(x)):=f@g2. 表达式转换成函数:unapply (表达式,函数变量)3. 极值:极大值maximize(函数,变量,范围,location=true(极值点))极小值 minimize(函数,变量,范围,location=true(极值点))条件极值:extreme(函数,约束条件,{变量},’s’(极值点)) 4. 极限:limit(函数,x=趋值,方向(省缺,left,right,complex)) 5. 连续性:判断iscont(函数,x=范围)第三个参数closed表示闭区间求解discont(函数,变量)6. 微分:显函数diff(函数,变量)对x多次求导用x&n 微分算子D 隐函数implicitdiff (函数,依赖关系y(x),对象y,变量x)7. 切线作图:showtangent(函数,x=点,view=[x 范围,y范围])8. 不定积分:int(函数,积分变量),定积分:int(函数,x=下限..上限) 9. 复函数积分:先求奇点solve(denom(函数)),再用留数规则求解2*Pi*I(residue(f,z=奇点1)+ residue(f,z=奇点2)+…)10.定积分矩形:下矩形:作图leftbox(f,x=范围,块数)面积leftsum(f,x=范围,块数)。

maple不等式计算

maple不等式计算Maple是一种强大的数学计算软件,广泛应用于数学、科学工程和其他学科的研究领域。

在Maple中,我们可以使用其内置的函数和操作符来计算和求解各种数学问题,其中包括不等式计算。

在Maple中,我们可以使用solve函数来求解一元不等式。

这个函数可以帮助我们找到不等式的解集,以及判断不等式的真假。

例如,我们可以使用solve函数来解决如下的不等式问题:solve(x^2 - 4 < 0)这个问题要求我们找到满足不等式x^2 - 4 < 0的所有x的取值。

在Maple中,solve函数会返回一个解的列表,这个列表中的每个元素都是一个满足不等式的x取值。

在这个例子中,solve函数会返回{x < -2, 2 < x},表示x的取值范围是x < -2 或者 2 < x。

除了使用solve函数,Maple还提供了其他一些函数和操作符来处理不等式。

例如,我们可以使用simplify函数来简化复杂的不等式表达式,使用factor 函数来因式分解不等式,使用expand函数来展开不等式等。

另外,Maple还可以处理多元不等式。

我们可以使用solve函数来求解多元不等式系统,并找到满足所有不等式的变量取值。

例如,我们可以使用solve 函数来解决如下的多元不等式问题:solve({x + y < 4, x - y > 2}, {x, y})这个问题要求我们找到满足不等式x + y < 4和x - y > 2的所有x和y的取值。

在Maple中,solve函数会返回一个解的列表,这个列表的每个元素都是一个满足所有不等式的x和y的取值。

在这个例子中,solve函数会返回的解是{x < 3, y > -1},表示x的取值范围是x < 3,y的取值范围是y > -1。

总结起来,Maple是一种非常强大的数学计算软件,可以方便地进行不等式计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档