第7章MATLAB数值积分与数值微分.ppt
第7章MATLAB数值积分与数值微分7.1 数值积分数值积分7.1.1 数值积分基本原理数值积分基本原理求解定积分的数值方法多种多样,如简单方法:梯形法、辛普生梯形法、辛普生(Simpson)法、牛顿柯特斯法、牛顿柯特斯(Newton-Cotes)法等方法。它们的基本思想都是将整个积分区间a,b分成n个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b。求定积分问题就分解为求和问题。例7-2分别用quad函数和quadl函数求的近似值,并在相同的积分精度下,比较函数的调用次数。调用函数quad求定积分:formatlongfx=inline(exp(-x);I,n=quad(fx,1,2.5,1e-10)I=0.285794442547663n=65调用函数quadl求定积分:formatlongfx=inline(exp(-x);I,n=quadl(fx,1,2.5,1e-10)I=0.285794442548811n=18formatshort2高斯-克朗罗德法MATLAB提供了基于自适应高斯-克朗罗德法的quadgk函数来求振荡函数的定积分。该函数的调用格式为I,err=quadgk(fname,a,b)其中,err返回近似误差范围,其他参数的含义和用法与quad函数相同。积分上下限可以是Inf或Inf,也可以是复数。如果积分上下限是复数,则quadgk在复平面上求积分。例7-3求定积分。(1)被积函数文件fx.m。functionf=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x);(2)调用函数quadgk求定积分。I=quadgk(fx,0,pi)I=2.46743梯形积分法在科学实验和工程应用中,函数关系往往是不知道的,只有实验测定的一组样本点和样本值,这时,人们就无法使用quad等函数计算其定积分。在MATLAB中,对由表格形式定义的函数关系的求定积分问题用梯形积分函数trapz。该函数调用格式如下:I=trapz(X,Y)其中,向量向量X,Y定义函数关系Y=f(X)。例7-4用trapz函数计算定积分。命令如下:X=1:0.01:2.5;Y=exp(-X);%生成函数关系数据向量trapz(X,Y)ans=0.2858 7.1.3 多重定积分的数值求解多重定积分的数值求解MATLAB提供的dblquad函数用于求二重积分的数值解,triplequad函数用于求三重积分的数值解。函数的调用格式为dblquad(fun,a,b,c,d,tol)triplequad(fun,a,b,c,d,e,f,tol)其中,fun为被积函数,a,b为x的积分区域,c,d为y的积分区域,e,f为z的积分区域,参数tol的用法与函数quad完全相同。例7-5计算二重定积分(1)建立一个函数文件fxy.m:functionf=fxy(x,y)f=exp(-x.2/2).*sin(x.2+y);(2)调用dblquad函数求解。I=dblquad(fxy,-2,2,-1,1)I=1.5745如果使用inline函数,则命令如下:f=inline(exp(-x.2/2).*sin(x.2+y),x,y);I=dblquad(f,-2,2,-1,1)I=1.5745例7-6计算三重定积分命令如下:fxyz=inline(4*x.*z.*exp(-z.*z.*y-x.*x),x,y,z);triplequad(fxyz,0,pi,0,pi,0,1,1e-7)ans=1.73287.2 数值微分数值微分7.2.1 数值差分与差商数值差分与差商7.2.2 数值微分的实现数值微分的实现在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,按行计算差分。例7-8用不同的方法求函数f(x)的数值导数,并在同一个坐标系中做出f(x)的图像。程序如下:f=inline(sqrt(x.3+2*x.2-x+12)+(x+5).(1/6)+5*x+2);g=inline(3*x.2+4*x-1)./sqrt(x.3+2*x.2-x+12)/2+1/6./(x+5).(5/6)+5);x=-3:0.01:3;p=polyfit(x,f(x),5);%用5次多项式p拟合f(x)dp=polyder(p);%对拟合多项式p求导数dpdpx=polyval(dp,x);%求dp在假设点的函数值dx=diff(f(x,3.01)/0.01;%直接对f(x)求数值导数gx=g(x);%求函数f的导函数g在假设点的导数plot(x,dpx,x,dx,.,x,gx,-);%作图此此课件下件下载可自行可自行编辑修改,修改,仅供参考!供参考!感感谢您的支持,我您的支持,我们努力做得更好!努力做得更好!谢谢!