资源描述
第三章 微积分运算
在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);
> 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极限不存在
Ex.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)));
> limit(f,x=infinity);
也可用求极限的另一形式:
> 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)));
> limit(f(x),x=infinity);
Ex.3
> limit(1/x,x=0); x->infinity的符号影响结果,故出给不存在
> 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没有取值时,系统将保留不动。
> limit((x^2-y^2)/(x^2+y^2),x=1,left);
> limit((x^2-y^2)/(x^2+y^2),{x=1,y=2});
> limit((x^2-y^2)/(x^2+y^2),{x=0,y=0});
> limit((x^2-y^2)/(x^2+y^2),{x=0,y=infinity});
3.1.3 复变函数的极限
> z:=x+y*I;
> f:='f': f:=(abs(z))^2;
> limit(evalc(f),{x=1,y=1});
求极限的另一方法:
> f:='f': z:='z': f:=z->(z+4)/(z-4);
limit(f(z),z=-4+4*I);
4.1.4 函数的连续性
用来判断函数连续性的函数:
iscont(expr, x=a..b, dir);
其中expr是一个代数表达式,即要判断的表达式。x=a..b用来表示需要判断的自变量所在的区间,a和b都取实数,当a比b大时,系统会自动将其转换。Dir可取open、closed或什么都不选,用来表示在开区间中判断函数的连续性还是在闭区间中判断,默认值是在开区间中进行,当在闭区间中判断连续性是将检查起始点和终止点的连续性。
> iscont(1/x,x=0..1); 在(0,1)上连续
> iscont(1/x,x=0..1,open); 在(0,1)上连续
> iscont(1/x,x=0..1,closed); 在[0,1]上不连续
> iscont(1/(exp(x)+b),x=1..2); 在(1,2)上没有结果
Maple还提供两个寻找函数表达式的不连续点,它们是:参P129。
discont(f,x);
fdiscont(f,domain,res ivar,eqns);
第二个函数中“domain”表示求解区间;“res”是期望值的精度;“ivar”是独立变量的名称;“eqns”是一个可选的等式,用来设置系统运算的参数。
§3.2 序列与级数
3.2.1 创建一个序列
序列的创建多种多样,这里给出生成函数
seq(f, i=m..n);
seq(f,i=x);——x
其中第一个参数f为代数表达式,第二个参数是设定的自量变的取值范围,可以是区间,也可以是另外一个序列或集合、列表等。如:
> x:=seq(i^2,i=1..5); 生成区间[1,5]上的整数的平方序列x
> seq(i mod 5, i=x); 生成上序列x的模5的值序列
> seq(i,i="a".."f"); 生成字符串序列
> seq(x^2,x=[a,a^2,3]);
3.2.2 序列的基本运算
1. 赋值操作
由于序列是多个元素的集合,在各种运算时都是对多个元素进行操作,Maple又把序列看成是一个多元素对象,因此有些普通数值和符号运算规则需要稍做修改。
> SqC:=a,b,a+b,a-b,a*b,a/b;
> subs(a=3,b=4,SqC); 将SqC中的a,b分别换为3,4
Error, wrong number (or type) of parameters in function subs
出错的原因是subs()只能包含一个代数表达式,而Maple却将序列SqC看成是多个代数表达式。为了解决这个问题,我们不得不先将序列转换成一个列表(list),操作完成后以后再转换成序列,如:
> op(subs(a=3,b=4,[SqC])); op()——取列表中各元素得序列
或
> subs(a=3,b=4,[SqC]);
> whattype(%);
> op(%%);
2. 函数运算
上面对序列进行赋值运算时需将其转化为列表才行。如果按同样的思路,将序列转化
为列表,然后将元素作为一个函数自变量的值进行运算,实际上行不通,如:
> exp([%]);
Error, exp expects its 1st argument, x, to be of type algebraic, but received [3, 4, 7, -1, 12, 3/4]
系统报错,好在Maple有一个函数map()可以解决这个问题:
map(fcn, expr, arg2, …, argn);
fcn为操作名,expr是任何一个表达式,argi是一个可选操作名。如:
> op(map(exp,[SqC]));
又如:
> map(f, x + y*z);
> map(f, y*z);
> map(f, {a,b,c});
> map(x -> x^2, x + y);
> map(proc(x,y) x^2+y end proc, [1,2,3,4], 2);
> map(f, g, {a,b,c});
> map2(f, g, {a,b,c});
> map(op, 1, [a+b,c+d,e+f]);
3. 从序列中按位置寻找元素——P133
4. 判断元素是否在序列中
5. 寻找最大和最小值
6. 寻找满足特写条件的元素
7. 序列各元素之间的代数运算
3.2.3 数的定义与展开
1. 幂级数展开
series(expr,eqn);
series(expr,eqn,n);
expr是需要展开的表达式,eqn是一个等式(如,x=a)或是一个变量名(如,x),n是级数展开的阶数(n-1),缺省“n”,系统取默认的值“Order=6”,展开Order-1阶。如:
> series(exp(x),x);
> Order:=4;
> series(exp(x),x);
> series(exp(x),x=a,4);
> Ps:=convert(%,polynom); # 将高阶项去掉
2. 泰勒(Taylor)展开
Maple提供两个函数taylor、mtaylor来分别处理一元表达式和多元表达式的展开,它们的参数设置与幂级数展开series相同,如:
> taylor(exp(x),x);
> Order:=4;
> taylor(exp(x),x);
> taylor(exp(x),x=a,4);
> Ps:=convert(%,polynom);
多元函数的泰勒展式:
> mtaylor(exp(x*y),{x=1,y=1},3);
3. Laurent级数展开
4. 泊松(Possion)级数展开
5. 傅立叶(Fourier)展开
3.2.4 级数的基本运算
> Sn:=1/x^n;
> sum(Sn,n=1..infinity);
> sum(Sn,n=4..10);
> simplify(%);
§3.3 微 分
3.3.1 一元函数的微分运算
定义:
> f:='f': f:=x->x/(x^2+1);
> limit((f(x+h)-f(x))/h,h=0);
求导函数:
diff(f,x);——返回经过计算的表达式
diff(f,x,x,…,x);——求高阶导数表达式
Diff(f,x); ——返回没有经过计算的表达式
如:
> diff(x/(x^2+1),x): simplify(%); 一阶导数
> diff(x/(x^2+1),x,x): simplify(%); 二阶导数
> diff(x/(x^2+1),x, x$3): simplify(%); 三阶导数
另有函数D:——P142
> D(x->x/(x^2+1))(x): simplify(%); 一阶导数
> D(x/(x^2+1))(x): simplify(%); 视x为函数
3.3.2 多元函数的偏微分运算
> f(x,y):=x^6*y^5;
> diff(f(x,y),x,y);
> diff(f(x,y),x$3,y$2);
3.3.3 隐函数的微分运算
例:设,求y’.
> Eq:='Eq': Eq:=2*x^2-2*x*y(x)+y(x)^2+x+2*y(x)+1=0;
上步中,一定将“y”换成“y(x)”,否则将y视为参数,而不是x的函数
> dEq:=diff(Eq,x); 对方程两边关于x求导数
> isolate(dEq,diff(y(x),x)); 解出diff(y(x),x)
练习: 已知氢分了离子的反键态能量如下形式:
(1)证明Eg可以写成Eg=,并求出F(t)和G(t),其中t=kR;
(2) 假设已知 =0情况下导致k= , 求解当t分别趋于0和正无穷时k的值。
提示:
> Eg:='Eg':
> Eg:=-1/2*k^2+(k^2-k-1/R+1/R*(1+k*R)*e^(-2*k*R)-k*(k-2)*(1+k*R)*e^(-k*R))/(1-e^(-k*R)*(1+k*R+1/3*k^2*R^2)):
Eg:=subs(e=exp(1),%); 这一行的命令起什么作用?
> E1:=subs(R=t/k,Eg);
> E1:=collect(E1,k);
> F:='F': F:=subs(k^2=1,k=0,E1): F:=simplify(%);
> G:='G': subs(k^2=0,k=1,E1): G:=simplify(%);
> F1:=simplify(diff(F,t));
> G1:=simplify(diff(G,t));
> limit(-(G+t*G1)/(-F+t*F1),t=0);
> limit(-(G+t*G1)/(F+t*F1),t=infinity);
问题: 如何求出k?
§3. 4 不定积分与定积分
3.4.1 不定积分
int(expr,x);——给出算出的结果
Int(expr,x);——不给出计算结果
> int(1/(x^2+x),x);
> Int(1/(x^2+x),x);
> %=value(%);
3.4.2 定积分
int(f,x=a..b);
Int(f,x=a..b);
> int(sin(x),x=0..Pi);
> Int(sin(x),x=0..Pi);
> %=evalf(%);
> int(Dirac(x),x=-infinity..infinity); ?Dirac(x)
> f(x):=sqrt(1+x^2):
> int(f(x),x);
> assume(n,integer):
> simplify(int(x^n*exp(-x^2),x=-infinity..infinity));
Definite integration: Can't determine if the integral is convergent.
Need to know the sign of --> n+1
Will now try indefinite integration and then take limits.
3.4.3 多重积分
Doubleint(f(x,y),x,y);——二重积分
Tripleint(f(x,y,z),x,y,z);——三重积分
> with(student):
> Doubleint(x/y,x,y); 二重不定积分
> %=value(%);
> Doubleint(x/y,x,y,D); 区域D上的二重积分
> Doubleint(x/y,x=1..2,y=1..2); 二重积分转化为二次积分计算
> %=value(%);
> int(int(x/y,x),y); 用不定积分求二重不定积分
> int(int(x/y,x=1..2),y=1..2); 用定积分计算累次积分
> f(x,y,z):=x^2*y^2*z^2; 三元函数的重积分
> Tripleint(f(x,y,z),x,y,z); 三重不定积分
> %=value(%);
> Tripleint(f(x,y,z),x,y,z,D); 区域D上的三重不定积分
求单位球体区域D: 上的三重积分:
> Tripleint(x^2*y^2*z^2,x=-sqrt(1-y^2-z^2)..sqrt(1-y^2-z^2),y=-sqrt(1-z^2)..sqrt(1-z^2),z=-1..1);
> value(%);
其它参P152。
15
展开阅读全文