《MATLAB程序设计教程(第二版)》第7章--MATLAB数值积分与数值微分PPT格式课件下载.ppt
《《MATLAB程序设计教程(第二版)》第7章--MATLAB数值积分与数值微分PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《《MATLAB程序设计教程(第二版)》第7章--MATLAB数值积分与数值微分PPT格式课件下载.ppt(19页珍藏版)》请在冰豆网上搜索。
tol用来控制积分精度,默认时取tol=10-6。
trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0。
返回参数I即定积分值,n为被积函数的调用次数。
例7-1求定积分。
(1)建立被积函数文件fesin.m。
functionf=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);
(2)调用数值积分函数quad求定积分。
S,n=quad(fesin,0,3*pi)S=0.9008n=77,也可不建立关于被积函数的函数文件,而使用语句函数(内联函数)求解,命令如下:
g=inline(exp(-0.5*x).*sin(x+pi/6);
%定义一个语句函数S,n=quad(g,0,3*pi)%注意函数名不加号S=0.9008n=77,例7-2分别用quad函数和quadl函数求的近似值,并在相同的积分精度下,比较函数的调用次数。
调用函数quad求定积分:
formatlongfx=inline(exp(-x);
I,n=quad(fx,1,2.5,1e-10)I=0.285794442547663n=65,调用函数quadl求定积分:
I,n=quadl(fx,1,2.5,1e-10)I=0.285794442548811n=18formatshort,2高斯-克朗罗德法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)调用函数quad8求定积分。
I=quad8(fx,0,pi)I=2.4674,3梯形积分法在科学实验和工程应用中,函数关系往往是不知道的,只有实验测定的一组样本点和样本值,这时,人们就无法使用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)globalki;
ki=ki+1;
%ki用于统计被积函数的调用次数f=exp(-x.2/2).*sin(x.2+y);
(2)调用dblquad函数求解。
globalki;
ki=0;
I=dblquad(fxy,-2,2,-1,1)kiI=1.5745ki=1038,如果使用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.7328,7.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-7生成以向量V=1,2,3,4,5,6为基础的范得蒙矩阵,按列进行差分运算。
V=vander(1:
6)DV=diff(V)%计算V的一阶差分,例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:
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,-);
%作图,