学生微积分运算命令与例题.docx
《学生微积分运算命令与例题.docx》由会员分享,可在线阅读,更多相关《学生微积分运算命令与例题.docx(21页珍藏版)》请在冰豆网上搜索。
学生微积分运算命令与例题
求极限运算
命令形式1:
Limit(f)
功能:
计算
其中f是符号函数。
命令形式2:
Limit(f,x,a)
功能:
计算
,其中f是符号函数。
命令形式3:
Limit(f,x,inf)
功能:
计算
,其中f是符号函数。
命令形式4:
Limit(f,x,a,’right’)
功能:
计算
,其中f是符号函数。
命令形式5:
Limit(f,x,a,’left’)
功能:
计算
,其中f是符号函数。
注意:
在左右极限不相等或左右极限有一个不存在时,Matlab的默认状态为求右极限。
例4:
求极限
解:
Matlab命令为:
symsx↙
y=(1/(x*(log(x))^2))-1/(x-1)^2;
limit(y,x,1,'right')↙
ans=
1/12
此极限的计算较难,用Matlab很容易得结果。
例6:
求极限
解:
Matlab命令为:
symsx↙
y=(1+tan(x))/(1+sin(x))^(1/x^3);↙
limit(y)↙
ans=
0
导数与微分
6.2.1一元函数的导数与微分
导数是函数增量与自变量增量之比的极限,即
.在Matlab中求函数的导数及其他一些类似运算均由diff命令来完成.
●用差分法求导数的数值解
用差分法求导数比较粗略,误差较大,尽量少采用差份法取计算数值微分,具体指令为:
D=diff(X)求向量或矩阵的差分
因为
,则
,所以y对x的导数近似等于y的有限差分除以x的有限差分。
例7:
用差分法求出
的导数。
解:
(1)建立M命令文件:
x=-5:
.1:
5;
y=(x+tan(x)).^(1/2)+sin(x).*cos(5*x);
dx=diff(x);
dy=diff(y);
disp('f(x)的导数为:
')
yd0=dy./dx
●对符号函数求一阶导diff(f)
格式:
diff(f),其中f是符号函数。
例9:
求
的导数。
解:
Matlab命令为:
symsx↙
r=sqrt(1+x^2);↙
y=1/2*atan(r)+1/4*log((r+1)/(r-1));↙
diff(y)↙
●对符号函数求n阶导
格式:
diff(f,n),其中f是符号函数。
例10:
求
的一阶、二阶导数。
解:
Matlab命令为:
symsabx↙
y=(a*x+tan(3*x))^(1/2)+sin(x)*cos(b*x);↙
y1=diff(y);↙
y2=diff(y,2);↙
disp('一阶导数为:
'),pretty(y1)↙
一阶导数为:
2
a+3+3tan(3x)
1/2-------------------+cos(x)cos(bx)-sin(x)sin(bx)b
1/2
(ax+tan(3x))
disp('二阶导数为:
'),y2↙
二阶导数为:
y2=
1/4/(a*x+tan(3*x))^(3/2)*(a+3+3*tan(3*x)^2)^2+3/(a*x+tan(3*x))^(1/2)*tan(3*x)*(3+3*tan(3*x)^2)-sin(x)*cos(b*x)-2*cos(x)*sin(b*x)*b-sin(x)*cos(b*x)*b^2
(3)分析结果:
参数方程求导
对参数方程
所确定的函数y=f(x),根据公式
,连续两次利用指令diff(f)就可求出结果。
例15.求参数方程
的一阶导数。
解:
Matlab命令:
symst↙
x=t*(1-sin(t));↙
y=t*cos(t);↙
dx=diff(x,t)↙
dx=
1-sin(t)-t*cos(t)
dy=diff(y,t)↙
dy=
cos(t)-t*sin(t)
pretty(dy/dx)↙
cos(t)-tsin(t)
---------------------
1-sin(t)-tcos(t)
6.2.2多元函数求导
●对多元函数求导
格式:
diff(f,x,n),表示对变量x求n阶导数,其中f是符号函数,。
例16:
求
解:
Matlab命令:
symsabcx↙
y=a*sin(b*exp(c*x)+x^a)*cos(c*x);↙
diff(y,x)↙
例18:
对函数
求
解:
Matlab命令:
symsxy↙
z=x^3*y^2+sin(x*y);↙
diff(z,x,3)↙
ans=
6*y^2-cos(x*y)*y^3
6.2.3隐函数求导
●一元隐函数求导
由方程
确定的隐函数y=y(x),则
例23:
求
所确定的隐函数y=y(x)的导数
。
解:
Matlab命令:
symsxy↙
f=x*y-exp(x)+exp(y);↙
dfx=diff(f,x);↙
dfy=diff(f,y);↙
dyx=-dfx/dfy;↙
pretty(dyx)↙
-y+exp(x)
-----------
x+exp(y)
结果分析:
●多元隐函数求导
由方程
确定的隐含数z=z(x,y),则
,
例24.
,其中z=z(x,y),求
,
。
解:
Matlab命令symsxyz↙
u=x^2+y^2+z^2;↙
dux=diff(u,x);duy=diff(u,y);duz=diff(u,z);↙
dzx=-dux/duz↙
dzx=
-x/z
dzy=-duy/duz↙
dzy=
-y/z
结果分析:
,
。
6.1求不定积分
高等数学中求不定积分是较费时间的事情,在Matlab中,只要输入一个命令就可以快速求出不定积分来。
指令:
int(f)f是被积函数,表示对默认的变量求不定积分。
int(f,v)f是被积函数,表示对变量v求不定积分
例25:
计算
解:
Matlab命令:
symsx↙
y=1/(sin(x)^2*cos(x)^2);↙
int(y);↙
pretty(int(y))↙
1cos(x)
--------------2------
sin(x)cos(x)sin(x)
例26:
计算
解:
Matlab命令:
symsabx↙
y=[a*xb*x^2;1/xsin(x)];↙
int(y,x)↙
ans=
[1/2*a*x^2,1/3*b*x^3]
[log(x),-cos(x)]
定积分的符号解法
指令:
int(f,v,a,b)f是被积函数,表示对变量v求区间[a,b]上的定积分。
例31:
解:
Matlab命令为:
symsxa↙
f=sqrt(x^2+a);↙
int(f,x,-2,2);↙
pretty(int(f,x,-2,2))↙
1/21/21/2
2(4+a)+1/2alog(2+(4+a))-1/2alog(-2+(4+a))
例32:
求
解:
Matlab命令为:
symstx↙
y1=exp(t^2);y2=t*y1^2;↙
r1=int(y1,t,0,x);r2=int(y2,t,0,x);↙
f=r1^2/r2;↙
limit(f,x,0)↙
ans=
2
6.4.2广义积分
指令:
int(f,v,a,inf)f是被积函数,表示对变量v求区间
上的定积分
int(f,v,-inf,b)f是被积函数,表示对变量v求区间
上的定积分
int(f,v,-inf,inf)f是被积函数,表示对变量v求区间
上的定积分
例35.计算广义积分
解:
Matlab命令symsx↙
f=1/(x^4);↙
int(f,x,1,inf)↙
ans=
1/3
例36:
计算瑕积分
解:
Matlab命令symsx↙
f=x/sqrt(1-x^2);↙
int(f,x,0,1)↙
ans=
1
6.4.3计算二重积分
指令:
dblquad('fun',inmin,inmax,outmin,outmax)
其中:
例37.计算
D由y=1,x=4,x=0,y=0所围
解:
Matlab命令为:
ff=inline('x*y','x','y');↙
dblquad(ff,0,4,0,1)↙
ans=
4
例38.计算
解:
Matlab命令ff=inline('x.^2+y','x','y');↙
dblquad(ff,0,1,0,1)↙
ans=
0.8333
6.2函数展开成幂级数
6.5.1一元函数泰勒展开
指令:
taylor(f)f是待展开的函数表达式,展开成默认变量的6阶麦克劳林公式
taylor(f,n)f是待展开的函数表达式,展开成默认变量的n阶麦克劳林公式
taylor(f,n,v,a)f是待展开的函数表达式,展开成变量v=a的n阶泰勒公式
例39.将函数
展开为x的6阶麦克劳林公式。
解:
Matlab命令symsx↙
f=x*atan(x)-log(sqrt(1+x^2));↙
taylor(f)↙
ans=
1/2*x^2-1/12*x^4
例40.将函数
展开为关于(x-2)的最高次为4的幂级数。
解:
Matlab命令:
symsx↙
f=1/x^2;↙
taylor(f,4,x,2);↙
pretty(taylor(f,4,x,2))↙
23
3/4-1/4x+3/16(x-2)-1/8(x-2)
例41:
用正弦函数sinx的不同Taylor展式观察函数的Taylor逼近特点。
解:
(1)建立命令文件
symsx
y=sin(x);
f1=taylor(y,3);f2=taylor(y,6);f3=taylor(y,15);
subplot(2,2,1),ezplot(y),axis([-66-1.51.5]),gtext('sin(x)')
subplot(2,2,2),ezplot(f1),axis([-66-1.51.5]),gtext('3阶泰勒展开')
subplot(2,2,3),ezplot(f2),axis([-66-1.51.5]),gtext('6阶泰勒展开')
subplot(2,2,4),ezplot(f3),axis([-66-1.51.5]),gtext('15阶泰勒展开')
(2)运行命令文件
图6.8函数y=sinx与它的不同阶泰勒展开式的图像
6.5.2多元函数的完全泰勒展开
指令:
mtaylor(f,v)f是待展开的函数表达式,v是变量名列表。
mtaylor(f,v,n)f是待展开的函数表达式,v是变量名列表,n是展开阶数。
由于mtaylor并不在Matlab符号运算工具箱中,它是Maple符号运算库中的命令。
因此在Matlab使用mtaylor的格式为:
maple(‘readlib(mtaylor)’)
maple(‘mtaylor(f,v,n)’)
例42:
在(1,0,0)处对函数
进行完全泰勒展开。
解:
Matlab命令:
maple('readlib(mtaylor)');↙
maple('mtaylor(sin(x^2+y^2/z),[x=1,y=0,z=0],3)')↙
ans=
sin
(1)+2*cos
(1)*(x-1)+cos
(1)*y^2/z+(-2*sin
(1)+cos
(1))*(x-1)^2-2*sin
(1)*y^2/z*(x-1)-1/2*sin
(1)*y^4/z^2
6.3求和、求积、级数求和
6.6.1求和
sum(x)求向量x的和或者是矩阵每一列向量的和
cumsum(x)x是向量,逐项求和并用行向量显示出来;x是矩阵,则对列向量进行操作。
例43:
a=1:
5;A=[123;234;789];↙
sum(a)↙
ans=
15
cumsum(a)↙
ans=
1361015
sum(A)↙
ans=
101316
cumsum(A)↙
ans=
123
357
101316
6.6.2求积
prod(x)求向量x的积或者是矩阵每一列向量的积
cumprod(x)x是向量,逐项求积并用行向量显示出来;x是矩阵,则对列向量进行操作。
例44:
a=1:
5;A=[123;234;789];↙
prod(a)↙
ans=
120
cumprod(a)↙
ans=
12624120
prod(A)↙
ans=
1448108
cumprod(A)↙
ans=
123
2612
1448108
6.6.3级数求和
●symsum(s)
s为求和的级数的通项表达式,对默认的变量如k求由0到k-1的有限项的和.
例45:
求
解:
Matlab命令:
symsn↙
f=n^3;↙
symsum(f)↙
ans=
1/4*n^4-1/2*n^3+1/4*n^2
●symsum(s,v)
s为求和的级数的通项表达式,对变量v求由0到v-1的有限项的和.
例46:
求
解:
Matlab命令:
symsabx↙
f=a*n^3+(a-1)*n^2+b*n+2;↙
collect(symsum(f,n))↙
ans=
1/4*a*n^4+(-1/3-1/6*a)*n^3+(1/2-1/4*a+1/2*b)*n^2+(-1/2*b+11/6+1/6*a)*n
●symsum(s,v,a,b)
s为求和的级数的通项表达式,对变量v求由a到b的有限项的和.
例47:
求
解:
Matlab命令:
symsabx↙
f=a*n^3+(a-1)*n^2+b*n+2;↙
collect(symsum(f,n,0,100))↙
ans=
25840850*a+5050*b-338148
6.4求函数的零点
●用fzeros求函数的零点
z=fzero(‘fun’,x0,tol,trace)
其中fun是被求零点的函数文件名,x0表示在的附近找零点,tol代表精度,可以缺省。
缺省时,tol=0.001.trace=1,迭代信息在运算中显示,trace=0,不显示迭代信息,默认值为0。
此命令不仅可以求零点,而且可以求函数等于任何常数值得点。
例48:
通过求
的零点,综合叙述相关指令的用法。
解:
(1)建立M函数命令文件
functiony=gg(x)
y=sin(x).^2.*exp(-0.1*x)-0.5*abs(x);
(2)建立M命令文件
clf
x=-10:
0.01:
10;
y=gg(x);
plot(x,y,'r');holdon,plot(t,zeros(size(t)),'k--');
xlabel('t');ylabel('y(t)'),holdoff
disp('通过图形取点')
[tt,yy]=ginput(3)
xzero1=fzero('gg',tt
(1));
xzero2=fzero('gg',tt
(2));
xzero3=fzero('gg',tt(3));
disp('零点的横坐标')
disp([xzero1xzero2xzero3])
holdon
plot(xzero1,gg(xzero1),'bp',xzero2,gg(xzero2),'bp',xzero3,gg(xzero3),'bp')
legend('gg(x)','y=0','零点')
(3)运行命令文件
通过图形取点
tt=
-2.0530
-0.5960
0.5960
yy=
-0.0251
0.0050
-0.0251
零点的横坐标
-2.0074-0.51980.5993
图6.9函数零点分布观察图
例49:
求
在x=2附近的零点,并画出函数的图像。
解:
(1)建立M函数命令文件
functiony=gg2(x)
y=3*2.^(5*x).*(x.^2+cos(x))-40;
(2)建立M命令文件
clf
x=-4:
.1:
5;
y=gg2(x);
xzero=fzero('gg2',-0.5)
plot(x,y,'b',xzero,gg2(xzero),'rp')
axis([-45-100300])
legend('f(x)','零点')
(3)运行命令文件
xzero=
0.6846
图6.10函数零点分布观察图
6.5求函数的极值点
●fminbnd
x=fminbnd(fun,x1,x2)%5.3版本及其以后的版本中使用
其中fun是被求零点的函数文件名,x1,x2表示在区间[x1,x2]内找极小值点。
例50:
求
在区间[-1,1]内的最小值,并画出函数的图像。
解:
(1)建立M函数命令文件
functiony=gg2(x)
y=3*2.^(5*x).*(x.^2+cos(x))-40;
(2)建立M命令文件
clf
x=-2:
.1:
2;
y=gg3(x);
xmin=fmin('gg3',-1,1)
plot(x,y,'b',xmin,gg3(xmin),'rp')
legend('f(x)','极小点')
(3)运行命令文件
xmin=
-2.7756e-017
图6.10函数极小点分布观察图
例51:
求函数y=3x4-5x2+x-1,在[-2,2]的极大值、极小值和最大值、最小值。
解:
先画出函数图形,再确定求极值的初值和命令。
Matlab命令为:
fplot('3*(x.^4)-5*(x.^2)+x-1',[-2,2]),gridon↙
图6.11函数y=3x4-5x2+x-1的图像
从图中看到函数在-1和1附近有两个极小值点,在0附近有一个极大值点.下面我们分别求之,并标在图形上。
(1)建立M函数命令文件
functiony=ff1(x)
y=3*x.^4-5*x.^2+x-1;
(2)建立M命令文件
clf,
x=-2:
.1:
2;y=ff1(x);
xmin1=fmin('ff1',-1,0)
xmin2=fmin('ff1',0,1.2)
xmaxs=fmin('-(3*(x.^4)-5*(x.^2)+x-1)',-1,1)
plot(x,y,'b',xmin1,ff1(xmin1),'rp',xmin2,ff1(xmin2),'rp')
holdon,plot(xmaxs,ff1(xmaxs),'rd')
legend('f(x)','极小点','极小点','极大点')
(3)运行命令文件
xmin1=
-0.9593
xmin2=
0.8580
xmaxs=
0.1012
图6.12函数y=3x4-5x2+x-1及其极值点的图像