资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/12/19,#,2024/11/12,1,3.7 MATLAB,数值积分与微分,3.7.1,差分和偏导数,1.,差分,在,MATLAB,中,,,没有直接提供求数值导数的函数,只有计算向前差分的函数,diff,,,其调用格式为,:,DX=diff(X),:计算向量,X,的向前差分,,DX(i)=X(i+1)-X(i),,,i=1,2,n-1,。,DX=diff(X,n),:计算,X,的,n,阶向前差分,。例如,,diff(X,2)=diff(diff(X),。,DX=diff(A,n,dim),:,计算矩阵,A,的,n,阶差分,,dim=1,时,(,缺省状态,),,按列计算差分;,dim=2,,按行计算差分,。,2024/11/12,2,例,1,差分运算示例,命令如下:,A=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;,%,生成,1,维矩阵,A1=reshape(A,6,3),%,转换为,36,维矩阵,A1=,1 2 3 4 5 6,7 8 9 10 11 12,13 14 15 16 17 18,B1=diff(A1),%,求,1,维,1,阶差分,B1=,6 6 6 6 6 6,6 6 6 6 6 6,B2=diff(A1,1,2),%,求,2,维,1,阶差分,B2=,1 1 1 1 1,1 1 1 1 1,1 1 1 1 1,B3=diff(A1,2),%,求,1,维,2,阶差分,B3=,0 0 0 0 0 0,2024/11/12,3,2.,梯度和偏导数,二元及多元函数,F(x,y,,,),的求导,FX=gradient(F),FX,FY=gradient(F),=gradient(F,h),2024/11/12,4,例,2,求二元函数的偏导数,%,生成二元函数,v=-2:0.2:2;,x,y=meshgrid(v);,z=x.*exp(-x.2-y.2);,%,绘制曲面,如图,3-4,所示,figure(1),mesh(x,y,z);,px,py=gradient(z,.2,.2);,%,求偏导数,figure(2),contour(v,v,z),%,绘制等高线,如图,3-5,所示,hold on,quiver(v,v,px,py),%,绘制矢量场图,,小箭头表示梯度,hold off,2024/11/12,5,数值积分,数值积分基本原理,求解定积分的数值方法多种多样,如简单的,梯形法、辛普生,(Simpson),法、牛顿柯特斯,(Newton-Cotes),法等都是经常采用的方法。,它们的基本思想,都是将整个积分区间,a,b,分成,n,个子区间,x,i,x,i+1,,,i=1,2,n,,其中,x,1,=a,,,x,n+1,=b,。这样求定积分问题就分解为求和问题。,2024/11/12,6,3.7.2,一元函数的数值积分,数值积分的实现方法,1,变步长辛普生(,Simpson,)法,(精度较高,较常使用),基于变步长辛普生法,,MATLAB,给出了,quad,函数来求定积分。该函数的调用格式为:,I,n=quad(fname,a,b,tol,trace),其中,fname,是被积函数名。,a,和,b,分别是定积分的下限和上限。,tol,用来控制积分精度,缺省时取,tol=0.001,。,trace,控制是否展现积分过程,若取非,0,则展现积分过程,取,0,则不展现,缺省时取,trace=0,。,返回参数,I,即定积分值,,n,为被积函数的调用次数,。,2024/11/12,7,函数部分,function f=quad1(x),f=1./(x.3-2*x-5);,%,编制函数,m,文件,调用命令,Q=quad(quad1,0,2),%,在同一目录下,计算积分值,Q=,-0.4605,2024/11/12,8,求定积分。,(1),建立被积函数文件,fesin.m,。,function f=fesin(x),f=exp(-0.5*x).*sin(x+pi/6);,(2),调用数值积分函数,quad,求定积分。,S,n=quad(fesin,0,3*pi),S=,0.9008,n=,77,2024/11/12,9,2.,自适应,Lobatto,法,(,精度较高,最常使用,),q=quadl(fun,a,b),q=quadl(fun,a,b,tol),%,采用,内联函数形式,,第二个参数为变量,例,3-25,求,Q=sin2x+cosx,从,2*pi,到,0,的定积分,f=inline(sin(2*x)+cos(x).2,x);,Q=quadl(f,0,2*pi),%,求取积分值,Q=,3.1416,训练任务:请采用编制,m,函数求该函数积分,2024/11/12,10,3.7.3,多重数值积分,使用,MATLAB,提供的,dblquad,函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:,I=dblquad(f,a,b,c,d,tol,trace),该函数求,f(x,y),在,a,bc,d,区域上的二重定积分,。参数,tol,,,trace,的用法与函数,quad,完全相同。,2024/11/12,11,计算二重定积分,(1),建立一个函数文件,fxy.m,:,function f=fxy(x,y),global ki;,ki=ki+1;%ki,用于统计被积函数的调用次数,f=exp(-x.2/2).*sin(x.2+y);,(2),调用,dblquad,函数求解。,global ki;ki=0;,I=dblquad(fxy,-2,2,-1,1),ki,I=,1.57449318974494,ki=,1038,(,3,)匿名函数方法,f=(x,y)y*sin(x)+x*cos(y);,%,编写匿名函数,将句柄赋给,f,S=dblquad(f,pi,2*pi,0,pi),%,计算二重积分,2024/11/12,12,3.8,多项式,3.8.1,多项式的构造,使用行向量表示多项式的系数,,行向量中各元素按多项式次数从高到低排列。,即多项式,P(x)=a,n,x,n,+a,n-1,x,n-1,+a,1,x+a,0,的系数向量,P,为,a,n,a,n-1,a,1,a,0,。,P=poly(A):,通过,n,阶方阵,A,生成特征多项式,p,A,为特征多项式的根,满足,P(A)=a,n,A,n,+a,n-1,A,n-1,+a,1,A+a,0,P=poly(r):,通过向量,r=r,1,r,2,r,n,方阵,A,生成多项式,向量元素为多项式的根,即满足,(x-r,1,)(x-r,2,)(x-r,n,)=a,n,x,n,+a,n-1,x,n-1,+a,1,x+a,0,S=poly2str(P,s):,将多项式系数行向量表达形式,P,转换成变量为,s,的标准多项式形式,S,。,2024/11/12,13,例,3-29,求多项式,r=1 2 3;,%,生成向量,r,P1=poly(r),%,计算根为,r,的多项式,P1=,1 -6 11 -6,S1=poly2str(P1,x),%,转换成变量为,x,的标准形式,S1=,x3-6 x2+11 x-6,A=magic(3),%,创建,3,阶魔方矩阵,P2=poly(A),%,计算方阵的特征多项式,P2=,1.0000 -15.0000 -24.0000 360.0000,S2=poly2str(P2,s),%,转换成变量为,s,的标准形式,S2=,s3-15 s2-24 s+360,2024/11/12,14,3.8.2,多项式的运算,1.,多项式的根,R=roots(P),:求多项式向量,P,的根,p=1-6-72-27;,%,多项式向量,p,r=roots(p),%,求多项式的根,2024/11/12,15,2.,多项式的值,y=polyval(p,x),:计算多项式向量为,p,变量为,x,时的数值,y,,,x,可以是向量也可以是矩阵,例,3-31,计算多项式的值,p=3 2 1;,%,创建一个多项式向量,x=5,7,9;,%,变量为向量形式,yx=polyval(p,x),%,计算多项式的值,yx=,86 162 262,A=pascal(4),%,变量为矩阵形式,A=,1 1 1 1,1 2 3 4,1 3 6 10,1 4 10 20,ya=polyval(p,A),%,计算多项式的值,ya=,6 6 6 6,6 17 34 57,6 34 121 321,6 57 321 1241,2024/11/12,16,3.,多项式的乘法,c=conv(u,v),:求向量为,u,的多项式与向量为,v,的多项式的乘积,c,。,例,3-32,求(,x,2,+2x+6,),(x,3,+2),的乘积,a=1 2 6;,b=1 0 0 2;,%,生成多项式向量,c=conv(a,b),%,计算乘积,s=poly2str(c,x),%,标准形式表示,c=,1 2 6 2 4 12,s=,x5+2 x4+6 x3+2 x2+4 x+12,训练任务,:,(,x,4,+2x+6,),(x,3,+2x+6),2024/11/12,17,3.,conv,convs,多项式乘运算,例,:a(x)=x,2,+2x+3;b(x)=4x,2,+5x+6;,c=(x,2,+2x+3)(4x,2,+5x+6),a=1 2 3;b=4 5 6;,c=conv(a,b),or=conv(1 2 3,4 5 6),c=4.00 13.00 28.00 27.00 18.00,p=poly2str(c,x),p=4 x4+13 x3+28 x2+27 x+18,2024/11/12,18,4.,多项式的除法,c=deconv(v,u),:,v,为被除数,,u,为除数,,q,返回商,余数为,r,。,例,3-33,求(,2x,3,+4x,2,+8x+3,),(x,2,+2x+3),v=2 4 8 3;,u=1 2 3;,%,生成多项式向量,c=conv(v,u),%,计算多项式乘积,c=,2 8 22 31 30 9,q1,r1=deconv(c,v),%,求商,整除,r1,为,0,,商多项式与,u,相同,q1=,1 2 3,r1=,0 0 0 0 0 0,q2,r2=deconv(v,u),%,多项式求商,带余数,2024/11/12,19,4.deconv,多项式除运算,a=1 2 3;,c=4.00 13.00 28.00 27.00 18.00,d=deconv(c,a),d=4.00 5.00 6.00,d,r=deconv(c,a),余数,c,除,a,后的整数,2024/11/12,20,5.,多项式微分,matlab,提供了,polyder,函数多项式的微分。,命令格式:,polyder(p):,求,p,的微分,polyder(a,b):,求多项式,a,b,乘积的微分,p,q=polyder(a,b):,求多项式,a,b,商的微分,例:,a=1 2 3 4 5;poly2str(a,x),ans=x4+2 x3+3 x2+4 x+5,b=polyder(a),b=4 6 6 4,poly2str(b,x),ans=4 x3+6 x2+6 x+4,2024/11/12,21,5.,多项式微分,polyder(p):,求,p,的微分,polyder(a,b):,求多项式,a,b,乘积的微分,p,q=polyder(a,b):,求多项式,a,b,商的微分,例:,a(x)=x,2,+2x+3;b(x)=4x,2,+5x+6;,c=(x,2,+2x+3)(4x,2,+5x+6),a=1 2 3;b=4 5 6;,c=conv(a,b),X1=polyder(a,b),X2=polyder(c),
展开阅读全文