MATLAB课件第九篇微积分基础
- 格式:docx
- 大小:72.34 KB
- 文档页数:12
matlab 微积分基本运算§1 解方程和方程组解1. 线性方程组求解对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形:1)当n=m 且A 非奇异时,此方程为“恰定”方程组。
2)当 n > m 时,此方程为“超定”方程组。
3)当n<m 时,此方程为“欠定”方程组。
下面就三种情形的求解分别作一说明:(1) MATLAB 解恰定方程 A* X = B 的方法1)采用求逆运算解方程x=inv(A)*B2)采用左除运算解方程x=A\B例1 “求逆”法和“左除”法求下列方程组的解⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454343232121x x x x x xx x x x x x x在Matlab 编辑器中建立M 文件fanex1.m :A=[5 6 0 0 01 5 6 0 00 1 5 6 00 0 1 5 60 0 0 1 5];B=[1 0 0 0 1]';R_A=rank(A) %求秩X1=A\B %用"左除"法解恰定方程所得的解X2=inv(A)*B %用"求逆"法解恰定方程所得的解运行后结果如下R_A =5X1 =2.2662-1.72181.0571-0.59400.3188X2 =2.2662-1.72181.0571-0.59400.3188两种方法所求方程组的解相同。
(2)MATLAB 解超定方程AX=B 的方法对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。
然而在实际工程应用中,求得其最小二乘解也是有意义的。
基本解法有:1)采用求伪逆运算解方程x=pinv(A)*B说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A.2)采用左除运算解方程x=A\B例2 “求伪逆”法和“左除”法求下列方程组的解⎪⎩⎪⎨⎧=+=+=+12214212212121x x x x x x命令如下:>> a=[1 2;2 4;2 2];>> b=[1,1,1]';>> xc=a\b %用左除运算解方程运行得结果:xc =0.40000.1000>> xd=pinv(a)*b %用求伪逆运算解方程运行得结果:xd =0.40000.1000>> a*xc-b %xc 是否满足方程ax=b运行得结果:ans =-0.40000.20000.0000可见xc 并不是方程的精确解。
MATLAB的微积分基本运算第六章 MATLAB 的微积分基本运算学习⽬标:1、熟悉符号对象和表达式的创建;2、熟悉计算结果的类型与精度控制和转换3、掌握MATLAB 中符号微积分运算:极限、导数、积分的命令及格式。
第⼀节极限⼀、极限概念演⽰:数列极限是指当n ⽆限增⼤时,n u 与某常数⽆限接近或n u 趋向于某⼀定值,就图形⽽⾔,其点列以某⼀平⾏y 轴的直线为渐近线。
函数极限也是如此。
例1:观察数列?+1n n ,当∞→n 时的变化趋势。
输⼊程序:>> n=1:100;xn=n./(n+1); >> for i=1:100;plot(n(i),xn(i),'r') % plot 是⼆维图形作图命令。
hold onend % for ……..end 语句是循环语句,循环体内的语句被执⾏100次由图可看出,随n 的增⼤,点列与直线y=1⽆限接近,所以11lim=+∞→n nn 例2:观察函数 xx f 1sin)(=,当0→x 时的变化趋势。
输⼊程序:>> x=-1:0.01:1;y=sin(1./x);plot(x,y)从图可看到,当0→x 时,x1sin 在-1和1之间⽆限次振荡,极限不存在。
例3:观察函数 xxx f )11()(+=,当∞→x 时的变化趋势输⼊程序:>> x=-1:10:1000;y=(1+1./x).^x;plot(x,y)从图可看到,当∞→x 时,函数值与某常数⽆限接近,这个常数就是e 。
⼆、极限计算:如果符号表达式F中只有⼀个变量x,x可以省略,当a=0时0也可以省略。
例:阅读理解下列程序>> syms x n>> limit(x^2*exp(x))ans =>> limit(exp(-1/x),x,0,'left')ans =inf>> limit((1+2/n)^(3*n),n,inf)ans =exp(6)三、符号对象与表达式的建⽴微积分运算的对象为函数,MATLAB称为符号表达式, MATLAB进⾏微积分运算⾸先要建⽴符号表达式,然后才可以利⽤MATLAB符号数学⼯具箱提供的函数进⾏运算。
第九章微积分基础1函数的极限(符号解法)一元函数求极限函数 limit格式 limit(F,x,a) %计算符号表达式F=F(x) 当x→a时的极限值。
limit(F,a) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→a时的极限值。
limit(F) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→0时的极限值。
limit(F,x,a,'right')或limit(F,x,a,'left') %计算符号函数F的单侧极限:左极限x →a- 或右极限x→a+。
【例1】>>syms x a t h n;>>L1 = limit((cos(x)-1)/x)>>L2 = limit(1/x^2,x,0,'right')>>L3 = limit(1/x,x,0,'left')>>L4 = limit((log(x+h)-log(x))/h,h,0)>>v = [(1+a/x)^x, exp(-x)];>>L5 = limit(v,x,inf,'left')>>L6 = limit((1+2/n)^(3*n),n,inf)计算结果为:L1 =L2 =infL3 =-infL4 =1/xL5 = [ exp(a), 0] L6 = exp(6)注:在求解之前,应该先声明自变量x,再概念极限表达式fun,假设0x 为∞,那么能够用inf 直接表示。
若是需要求解左右极限问题,还需要给出左右选项。
【例2】 试别离求出tan 函数关于pi/2点处的左右极限。
>> syms t;f=tan(t);L1=limit(f,t,pi/2,'left'), L2=limit(f,t,pi/2,'right') L1 = Inf L2 = -Inf【例3】求以下极限1)312lim20+-→x x x 2)x x x t 3)21(lim +∞→解:编程如下:>>syms x t ;L1 = limit((2*x-1)/(x^2+3)) >>L2 = limit((1+2*t/x)^(3*x),x,inf)回车后可得: L1 = -1/3 L2 = exp(6*t) 多元函数求极限求多元函数的极限能够嵌套利用limit()函数,其挪用格式为:limit(limit(f,x,x0),y,y0)或limit(limit(f,y,y0),x,x0)【例4】求极限:x xy y x )sin(lim 30→→>> syms x y;f=sin(x*y)/x;limit(limit(f,x,0),y,3)ans = 3注:若是x0或y0不是确信的值,而是另一个变量的函数,如)(y g x →,那么上述的极限求取顺序不能互换。
【例5】求极限:xy xy y x 42lim 00+-→→解:编程如下:>>syms x y ;f=(2-sqrt(x*y+4))/(x*y);limit(limit(f,x,0),y,0) 回车后可得: ans = -1/42符号微分函数 diff (differential )格式 diff(S,'v')、diff(S,sym('v')) %对表达式S 中指定符号变量v 计算S 的1阶导数。
diff(S) %对表达式S 中的符号变量v 计算S 的1阶导数,其中v=findsym(S)。
diff(S,n) %对表达式S 中的符号变量v 计算S 的n 阶导数,其中v=findsym(S)。
diff(S,'v',n) %对表达式S 中指定的符号变量v 计算S 的n 阶导数。
【例6 】已知函数(1)x y tan =(2)xe y =,别离求关于x 的导数解:编程如下>>syms x ;D1=diff(tan(x)) >>D2=diff(exp(x)) 回车得:D1 =tan(x)^2 + 1 D2 = exp(x)【例7】 计算2222)sin (x x y ∂∂,⎪⎪⎭⎫ ⎝⎛∂∂∂∂2222sin x y x y ,)6(6)(t >>syms x y t>>D1 = diff(sin(x^2)*y^2,2) >>D2 = diff(D1,y) >>D3 = diff(t^6,6)计算结果为:D1 =-4*sin(x^2)*x^2*y^2+2*cos(x^2)*y^2 D2 =-8*sin(x^2)*x^2*y+4*cos(x^2)*y D3 = 720Matlab 的符号运算工具箱中并未提供求取偏导数的专门函数,这些偏导数任然能够通过diff()函数直接实现。
假设已知二元函数),(y x f ,假假想求)/(n m n m y x f ∂∂∂+,那么能够用下面的函数求出:f=diff(diff(f,x,m),y,n)或f=diff(diff(f,y,n),x,m)【例8】已知函数y x z 2sin 2=,求;2y x z ∂∂∂;2xy z∂∂∂解:编写程序如下;>>syms x y>>D1 = diff(diff(x^2*sin(2*y),x),y) >>D2 = diff(diff(x^2*sin(2*y),y),x)回车后得: D1 =4*x*cos(2*y) D2 =4*x*cos(2*y)【例9】xyyy xx Z Z y x y xy y x f ,,Z ,523),(22求设+-=解:编程如下:>>syms x y>>zxx = diff(3*x*y-2*y+5*x^2*y^2,x,2) >>zyy = diff(3*x*y-2*y+5*x^2*y^2,y,2) >>Dxy = diff(diff(3*x*y-2*y+5*x^2*y^2,x),y) 回车后得: zxx = 10*y^2 zyy = 10*x^2 Dxy = 20*x*y + 3 3符号积分利用Matlab 的符号计算功能,能够计算出许多积分的解析解和精准解,只是有些精准解显得冗长繁杂,这时能够用vpa 或eval 函数把它转换成位数有限的数字,有效数字的长度可按需选取。
符号法计算积分超级方便,常经常使用它取得的结果跟近似计算的结果进行比较。
定积分函数 int (integral)格式 R = int(S,v) %对符号表达式S 中指定的符号变量v 计算不定积分。
注意的是,表达式R 只是函数S 的一个原函数,后面没有带任意常数C 。
R = int(S) %对符号表达式S 中的符号变量v 计算不定积分,其中v=findsym(S)。
R = int(S,v,a,b) %对表达式s 中指定的符号变量v 计算从a 到b 的定积分 R = int(S,a,b) %对符号表达式s 中的符号变量v 计算从a 到b 的定积分,其中v =findsym(S)。
【例10】用函数int()别离计算⎰xdx x sin ,⎰xdx y sin ,⎰dx 4 解:在命令窗口输入: >>I1=int('x*sin(x)') >>I2=int('y*sin(x)',x) >>I3=int('4')回车取得:I1 =sin(x)-x*cos(x),I2 =-y*cos(x),I3 =4*x 【例11】 计算以下定积分和不定积分⎰1sin 2txdx ,⎰dt e t ,⎰dt e t α>>syms x t alpha>>INT1 = int(2*x, sin(t), 1) >>INT2 = int([exp(t),exp(alpha*t)]) 计算结果为: INT1 =1-sin(t)^2INT2 =[ exp(t), 1/alpha*exp(alpha*t)] 【例12】 计算定积分(1)dx x a a⎰-022(2)dx x x ⎰++4122解:在命令窗口输入: >>syms x a>>INT1 = int(sqrt(a^2-x^2), 0,a) >>INT2 = int((x+2)/sqrt(2*x+1), 0,4) 回车可得: INT1 = (pi*a^2)/4 INT2 = 22/3【例13】计算⎰+-101ln )(2dy eyy解:在命令窗口输入:I=int('exp(-y^2)+log(y)',1,10) 回车取得:I=-1/2*pi^(1/2)*erf(1)-9+1/2*pi^(1/2)*erf(10)+10*log(2)+10*log(5)从输出的结果能够看出,结果很复杂,下面是用两种方式进行转换的输出结果,试比较它们的不同。
输入:eval('-1/2*pi^(1/2)*erf(1)-9+1/2*pi^(1/2)*erf(10)+10*log(2)+10*log(5)') 结果:ans =输入:vpa(-1/2*pi^(1/2)*erf(1)-9+1/2*pi^(1/2)*erf(10)+10*log(2)+10*log(5)) 结果:ans = 多元函数的积分 【例14】求以下积分:1)⎰⎰10sin yyxdxdy x 2)⎰⎰-yy dx xe dy 0102在命令窗口输入: >>syms x y>>INT1 = int(int(x*sin(x),x,y,sqrt(y)),y,0,1) >>INT2 = int(int(x*exp(-y^2),x,0,sqrt(y)),y,0,1) 回车可得: INT1 =5*sin(1) - 4*cos(1) - 2 INT2 =1/4 - 1/(4*exp(1)) 另外,对⎰⎰-yy dx xedy 0102改变积分顺序后变成⎰⎰-1122xy dy xe dx ,按此积分顺序编程积分得:INT2 = int(int(x*exp(-y^2),y,x^2,1),x,0,1)回车可得: INT2 =1/4 - 1/(4*exp(1)) 可见结果相同。
【例15】计算dy dx y x y))((41222⎰⎰+在命令窗口输入: >>syms x y>>I=int(int('x^2+y^2',x,sqrt(y),2),y,1,4)>>vpa(I,6)回车后可得:I =1006/105 ,ans =【例16】计算单位圆域上的积分⎰⎰+-+=222)sin(22y x x dxdy y x eI解:先把二重积分转化为二次积分的形式:⎰⎰-----+=111122222)sin(yyx dx y x e dy I在命令窗口输入: >>syms x y>>I=int(int('exp(-x^2/2)*sin(x^2+y)',x,-sqrt(1-y^2),sqrt(1-y^2)),y,-1,1) >>vpa(I,6)回车后可得:ans =.536860+.562957e-8*i 【例17】计算积分⎰⎰--Dy x dxdy e22,其中D 为222a y x ≤+解:先把二重积分转化为二次积分极坐标的形式⎰⎰-πθ202ar rdr e d在命令窗口输入: >>syms theta r a>>I = int(int(exp(-r^2)*r,r,0,a),theta,0,2*pi) 回车可得: I =-pi*(1/exp(a^2) - 1) 【例18】 计算三重积分⎰⎰⎰Ωxdxdydz ,其中Ω为三个坐标面及平面12=++z y x 所围成的闭区域。