280 likes | 408 Views
福州海峡职 业技术学院. 高 等 数 学. 第三节 Matlab数值计算功能与实验. 【教学目的】 1.了解Matlab如何借助可视化技术来解决数学中函数极限的概念引进与计算问题,并掌握相关的基本命令; 2.掌握用Matlab求一元函数的导数与微分和多元函数的偏导数与全微分的命令; 3.掌握用Matlab求一元函数常义积分与广义积分和多元函数二重积分的命令; *4.掌握用Matlab求微分方程的通解与特解的基本命令;. 第三节 Matlab数值计算功能与实验. 【实验要求】 熟练掌握如下常用命令:
E N D
福州海峡职 业技术学院 高 等 数 学
第三节 Matlab数值计算功能与实验 【教学目的】 1.了解Matlab如何借助可视化技术来解决数学中函数极限的概念引进与计算问题,并掌握相关的基本命令; 2.掌握用Matlab求一元函数的导数与微分和多元函数的偏导数与全微分的命令; 3.掌握用Matlab求一元函数常义积分与广义积分和多元函数二重积分的命令; *4.掌握用Matlab求微分方程的通解与特解的基本命令;
第三节 Matlab数值计算功能与实验 【实验要求】 熟练掌握如下常用命令: 1.求函数极限的命令: limit(f,x,x0)、limit(f,x,x0,‘left’)、limit(f,x,x0, ‘right’)、limit(f,x,inf)、limit(f,x,+inf)、limit(f,x,-inf)、limit(limit(f,x,x0),y,y0) 2.求函数导数的命令: diff(f,x)、 diff(f,x,n)、diff(diff(f,x,n),y,n)、 diff(diff(f,y,n),x,n) 3.求函数积分的命令:int(f)、int(f,x)、int(f,x,a,b)、int(f,a,inf)、quad(f,a,b,tol)、trapz(x,y)、int(int(f,x,a,b),y,c,d) 4.求解微分方程的命令:dsolve(‘方程’,’自变量’),dsolve(‘方程’,’初始条件’,’自变量’)
一、利用Matlab求函数极限的命令 1.limit(f,x,x0):求x→x0时f(x)的极限; 2.limit(f,x,x0,‘left’):求x→x0时f(x)的左极限; 3.limit(f,x,x0,‘right’):求x→x0时f(x)的右极限; 4.limit(f,x,inf):求x→∞时f(x)的极限; 5.limit(f,x,+inf):求x→+∞时f(x)的极限; 6.limit(f,x,-inf):求x→−∞时f(x)的极限. *7.limit(limit(f,x,x0),y,y0)或limit(limit(f,y,y0),x,x0):求x→x0,y→y0时f(x,y)的极限.
例1 绘制 的图像,研究当x→0,x→∞时的极限. 解:输入命令: x=linspace(-30,30,200); y=sin(x)./x; plot(x,y); grid on axis([-30,30,-2,2]) 显示图形: 从图上看,当x→0时,→1,当x→∞时, →0.
例2 求极限 解:输入命令: syms n %生成符号变量n f=(n^2+n)^(1/3)/(n+2); fn=limit(f,n,inf) 显示结果: fn =0 例3 求极限 解:输入命令: syms x %生成符号变量x f=(tan(x)-sin(x))/x^3; limit(f,x,0) 显示结果: ans =1/2
例4 研究极限 解:输入命令: syms x %生成符号变量x f=exp(1/x); limit(f,x,0) 显示结果:ans =NaN 事实上,当x→0时,函数 的极限不存在. 下面我们考察 的左、右极限. 输入命令: syms x f=exp(1/x); limit(f,x,0,'left') 显示结果:ans =0 输入命令: syms x f=exp(1/x); limit(f,x,0,'right') 显示结果:ans =inf 左、右极限分别为0,∞,从而看出当x→0时,函数极限不存在.
例5 求极限 . 解:输入命令: syms x f=x^(sin(x)); fx=limit(f,x,0) 显示结果: fx =1 例6 求极限 ,其中 为常数. 解:输入命令: syms a1 a2 a3 x %生成符号变量a1 a2 a3 x f=((a1^x+a2^x+a3^x)/3)^(1/x); fx=limit(f,x,0) 显示结果: fx =a1^(1/3)*a2^(1/3)*a3^(1/3)
例7 研究函数的连续性并作出函数的图形. 解:输入命令: fplot('(x^3+3*x^2-x-3)/(x^2+x-6)',[-5,4,-30,-30]) 显示图形: 由图可知:x=2是函数的无穷间断点;x趋于-3时,函数 的极限存在. 由函数在 x=−3无定义,可知x=−3是函数的可去间断点. 输入命令: limit((x^3+3*x^2-x-3)/(x^2+x-6),x,-3) 显示结果: ans =-8/5 输入命令: limit((x^3+3*x^2-x-3)/(x^2+x-6),x,2) 显示结果: ans =NaN
*例8 求极限 . 解:输入命令: syms x y f=sin(x^2+y^2)/(x^2+y^2); fx=limit(limit(f,x,0),y,0) 显示结果: fx =1
二、利用Matlab求导数和积分 1.利用Matlab求一元函数导数与微分和多元函数偏导数与全微分的命令 (1) diff(f,x) :求f(x)的一阶导数f´(x),微分后面只需加一个dx; (2) diff(f,x,n) : 求f(x)的n阶导数f(n)(x) (n是具体整数). *(3) diff(diff(f,x,n),y,n) 或diff(diff(f,y,n),x,n):表示求 . 例9 设f(x)=e2x,计算 f´(x). 解:输入命令: syms x f=exp(2*x); diff(f,x) 显示结果: ans = 2*exp(2*x)
例10 设,求 . 解:输入命令: syms x a b f=sin(a*x)*cos(b*x); y1=diff(f,x) y2=diff(f,x,2) 显示结果: y1 = cos(a*x)*a*cos(b*x)-sin(a*x)*sin(b*x)*b y2= -sin(a*x)*a^2*cos(b*x)-2*cos(a*x)*a*sin(b*x)*b-sin(a*x)*cos(b*x)*b^2
例11 求由 所确定的隐函数的导数. 解:输入命令: syms x y F=x*y-exp(x)+exp(y)+sin(x); y1=-diff(F,x)/diff(F,y) 显示结果: y1 =(-y+exp(x)-cos(x))/(x+exp(y)) 例12 求由参数方程所确定的隐函数的导数 . 解:输入命令: syms t x=t-sin(t); y=1-cos(t); y1=diff(y,t)/diff(x,t) 显示结果: y1 = sin(t)/(1-cos(t))
*例13 设,计算及 . 解:输入命令: syms x y z dx dy dz z=exp(x*y)*sin(x+y) zx=diff(z,x,1) 显示结果: zx =y*exp(x*y)*sin(x+y)+exp(x*y)*cos(x+y) zy=diff(z,y,1) 显示结果: zy=x*exp(x*y)*sin(x+y)+exp(x*y)*cos(x+y) zxx=diff(diff(z,x,1),x,1) 显示结果: zxx= y^2*exp(x*y)*sin(x+y)+2*y*exp(x*y)*cos(x+y)-exp(x*y)*sin(x+y) zyy=diff(diff(z,y,1),y,1)
显示结果: zyy = x^2*exp(x*y)*sin(x+y)+2*x*exp(x*y)*cos(x+y)-exp(x*y)*sin(x+y) zxy=diff(diff(z,x,1),y,1) 显示结果: y*x*exp(x*y)*sin(x+y)+y*exp(x*y)*cos(x+y)+x*exp(x*y)*cos(x+y) dz=zx*dx+zy*dy 显示结果: (y*exp(x*y)*sin(x+y)+exp(x*y)*cos(x+y))*dx+(x*exp(x*y)*sin(x+y)+exp(x*y)*cos(x+y))*dy *例14设 ,而 求. 解:输入命令: syms x z u v zu zv dux dvx z=u^2*v; zu=diff(z,u);zv=diff(z,v); u=log(x);v=sin(x); dux=diff(u,x);dvx=diff(v,x); dzx=zu*dux+zv*dvx 显示结果: dzx = 2*u*v/x+u^2*cos(x)
*例15设 ,确定二元函数 ,求 和 . 解:输入命令: syms x y z F F=z^2*y-x^2*z^3+x^4+y^3-6; Fx=diff(F,x);Fy=diff(F,y);Fz=diff(F,z); zx=-Fx/Fz;zy=-Fy/Fz; zx,zy 显示结果: zx = (2*x*z^3-4*x^3)/(2*z*y-3*x^2*z^2) zy = (-z^2-3*y^2)/(2*z*y-3*x^2*z^2)
2.利用Matlab求常义积分与广义积分和二重积分的命令2.利用Matlab求常义积分与广义积分和二重积分的命令 int(f):求函数f的不定积分,默认变量为t; int(f,x):求函数f的不定积分,变量为x; int(f,x,a,b):求上限为b,下限为a的函数f关于指定变量x的定积分的精确值; vpa(f,10):在上述命令执行的基础上,进一步求f关于指定变量x的定积分的近似值; int(f,x,a,inf):求上限为无穷大,下限为a的函数f关于指定变量x的广义积分; *quad(f,a,b,tol):抛物线积分法(simpson)返回积分值,f为被积函数,a,b为积分上下限; *trapz(x,y):梯形积分法返回积分值,x为积分区间离散化变量,y表示被积函数,是与x同维数的向量.
*int(int(f,y,y1,y2),x,a,b):求先y后x的二重积分; *int(int(f,x,x1,x2),y,c,d):求先x后y的二重积分;; *int(int(f,x,a,b),y,c,d)或int(int(f,y,c,d),x,a,b):求矩形区域 上的二重积分;
例16 计算不定积分. 解:输入命令: syms x; int(exp(x)*cos(x),x) 显示结果: ans = 1/2*exp(x)*cos(x)+1/2*exp(x)*sin(x) 例17 计算不定积分. 解:输入命令: syms x; int(1/(x^2*sqrt(1+x^2))) 显示结果: ans = -1/x*(1+x^2)^(1/2)
例18计算定积分. 解:输入命令: syms x; int(1/(3+7*sin(x)),x,0,2*pi) 显示结果: ans = 1/10*i*10^(1/2)*pi 例19 计算定积分 . syms a; int(sqrt(a^2+x^2),x,0,a) ans =1/2*a*2^(1/2)*(a^2)^(1/2)+1/2*a^2*log(a+2^(1/2)*(a^2)^(1/2))-1/4*a^2*log(a^2)
例20 计算广义积分 . 解:输入命令:syms x; int(1/(x^2+2*x+2),x,-inf,+inf) 显示结果:ans = pi *例21 分别用trapz、quad函数求定积分 的值. 解:输入命令: x=0:0.001:1; y= sin(x.^2)./(1 +x); format long; yl =trapz(x,y) 显示结果:yl =0.18078963138040 输入命令: syms x ; y='sin(x.^2)./( x +1)'; y2=quad(y,0,1) 显示结果:y2 =0.18078963147536
例22 求定积分 . 解:输入命令: syms x y=int(sin(x)/x,x,0,1) 显示结果: y= sinint(1) 上述积分表明该广义积分收敛于sinint(l),只是无法用初等函数表示,如果想得到它的一个10位有效数字的近似值即数值解,可以输入命令: vpa(y,10) 显示结果: ans = .9460830704
*例23 计算二重积分,其中D是由 x=1,x=2和y=0,y=1所围成的闭区域.(积分限为常数) 解:输入命令: plot([1 2 2 1 1],[0 0 1 1 0]) axis([0 3 0 3]) title('积分区域') 显示图形 syms x y int(int(x^2*y^3,x,1,2),y,0,1) 显示结果: 7/12
*例24 计算二重积分,其中D是由两条抛物线所围成的闭区域.(积分限为函数) 解:输入命令: %画出积分区域图形 x=0:0.001:1.3;y1=sqrt(x);y2=x.^2; plot(x,y1,x,y2) gtext('y=sqrt(x)') gtext('y=x^2') title('积分区域') %确定积分限 syms x y y1='y-sqrt(x)=0';y2='y-x^2=0'; [x,y]=solve(y1,y2) 得交点x=0,y=0:x=1,y=1. %求积分 syms x y f=x*sqrt(y);y1=sqrt(x);y2=x^2; int(int(f,y,y2,y1),x,0,1) 显示结果:6/55
*例25 用极坐标计算二重积分 ,其中D是由圆 所围成的闭区域. 解:输入命令: %画出积分区域图形 x=-1:0.01:1; y=sqrt(1-x.^2); plot(x,y) hold on y=-sqrt(1-x.^2); plot(x,y) axis square grid on %求积分 syms x y f=1-x^2-y^2; y1=-sqrt(1-x^2); y2=sqrt(1-x^2); int(int(f,y,y1,y2),x,-1,1) 显示结果:1/2*pi
*三、利用Matlab求微分方程的命令 dsolve(‘方程’,’自变量’),表示求常微分方程的通解; dsolve(‘方程’,’初始条件’,’自变量’),表示求常微分方程在给定初始条件下的特解; 在表达微分方程命令中,用字母D表示求微分,D2,D3表示求高阶微分,任何D后面所跟的字母为函数,自变量的标示符可以自行指定,若缺省,则表示由系统指定.
*例26 求可分离变量的微分方程的通解. 解:输入命令: y=dsolve('Dy=2*x*y','x') 显示结果: C1*exp(x^2) *例27 求一阶线性非齐次的微分方程的通解. 解:输入命令: y=dsolve('Dy-2*y/(x+1)=(x+1)^2','x') 显示结果: y = (x+C1)*(x+1)^2
*例28求高阶可降次的微分方程 的通解. 解:输入命令: y=dsolve('D2y=x*sin(x)','x') 显示结果:-2*cos(x)-x*sin(x)+C1*x+C2 *例29 求二阶常系数线性齐次的微分方程 的通解. 解:输入命令: y=dsolve('D2y-4*Dy+4*y=0','x') 显示结果:C1*exp(2*x)+C2*exp(2*x)*x *例30 求二阶常系数线性齐次的微分方程 满足条件的特解. 解:输入命令: y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x') 显示结果:3*exp(-2*x)*sin(5*x)