1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,8,章,MATLAB,数值积分与微分,8.1,数值积分,8.2,数值微分,8.1,数值积分,8.1.1,数值积分基本原理,求解定积分的数值方法多种多样,如简单的梯形法、辛普生,(Simpson),法、牛顿柯特斯,(Newton-Cotes),法等都是经常采用的方法。它们的基本思想都是将整个积分区间,a,b,分成,n,个子区间,x,i,x,i+1,,,i=1,2,n,,其中,x,1,=a,,,x,n+1,=b,。这样求定积分问题就分解为求和问题。,8.1.2,数值积分的实现方法,1,变步长辛普生法,(,自
2、适应,simpson,积分法,),基于变步长辛普生法,,MATLAB,给出了,quad,函数来求定积分。该函数的调用格式为:,I,n,=,quad(fname,a,b,tol,trace,),其中,fname,是被积函数名。,a,和,b,分别是定积分的下,限和上限。,tol,用来控制积分精度,缺省时取,tol,=10e,-,6,。,trace,控制是否展现积分过程,若取非,0,则展现积分过程,取,0,则不展现,缺省时取,trace=0,。返回参数,I,即定积分值,,n,为被积函数的调用次数。,例,1,求定积分,(1),建立被积函数文件,fesin.m,。,function f=,fesin(x
3、),f=exp(-0.5*x).*sin(x+pi/6);,(2),调用数值积分函数,quad,求定积分。,S,n,=quad(fesin,0,3*pi),S=,0.9008,n=,77,例题,2,求定积分,quad(inline(exp(-x.2),-1,1,0.5e-4),或者,quad(x)exp(-x.2),-1,1,0.5e-4),2,牛顿柯特斯法,基于牛顿柯特斯法,,MATLAB,给出了,quad8,函数来求定积分。该函数的调用格式为:,I,n,=quad8(fname,a,b,tol,trace),其中参数的含义和,quad,函数相似,只是,tol,的缺省值取,10-6,。该函
4、数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于,quad,函数,从而保证能以更高的效率求出所需的定积分值。,例,3,求定积分。,(1),被积函数文件,fx.m,。,function f=,fx(x,),f=x.*sin(x)./(1+cos(x).*,cos(x,);,(2),调用函数,quad8,求定积分。,I=quad8(fx,0,pi),I=,2.4674,例,4,分别用,quad,函数和,quad8,函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。,调用函数,quad,求定积分:,format long;,fx,=,inline(exp(-x,);,I
5、n,=quad(fx,1,2.5,1e-10),I=,0.28579444254766,n=,65,调用函数,quad8,求定积分:,format long;,fx,=,inline(exp(-x,);,I,n,=quad8(fx,1,2.5,1e-10),I=,0.28579444254754,n=,33,3,非函数表达式梯形积分(被积函数由一个表格定义),在,MATLAB,中,对由表格形式定义的函数关系的求定积分问题用,trapz(X,Y,),函数。其中向量,X,Y,定义函数关系,Y=,f,(X,),。,trapz(X,Y,),采用梯形法计算,Y,在,X,点上的积分。,例,5,用,tra
6、pz,函数计算定积分。,命令如下:,X=1:0.01:2.5;,Y=exp(,-,X);%,生成函数关系数据向量,trapz(X,Y,),例,6,x=-1:0.1:1;,y=exp(-x.2);,trapz(x,y,),4.,自适应,Lobatto,方法,quadl,命令适用于光滑函数,,quadl,调用被积函数的次数明显少于,quad,命令,而且精度比,quad,函数更高,其调用格式与,quad,一样,I,n,=,quad(fname,a,b,tol,trace,),5.quadgk,对振荡的被积函数最有效,支持无限区间积分,(高版本版才有此命令),8.1.3,重积分的数值求解,使用,MAT
7、LAB,提供的,dblquad,函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:,I=,dblquad(f,a,b,c,d,tol,trace,),该函数求,f(x,y,),在,a,bc,d,区域上的二重定积分。参数,tol,,,trace,的用法与函数,quad,完全相同。,例 计算二重积分,dblquad,(exp(-x.2/2).*sin(x.2+y),-2,2,-1,1),6.quad2d,平面区域二重积分,可以做变上下限积分,(高版本版才有此命令),7.triplequad,用于计算长方体区域上的三重积分,例 计算,f,un=(x,y,z)4*x.*z.*exp(-x.2-y.*z.2),S=triplequad(fun,0,pi,0,pi,0,1),8.int,符号函数积分,