第七章 数值积分、微分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章MATLAB数值积分与微分
7.1 数值积分
7.2 数值微分
7.1 数值积分
7.1.1 数值积分基本原理
求解定积分的数值方法多种多样,如简单的梯形法、辛普生 (Simpson)法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。
它们的基本思想都是将整个积分区间[a,b]分成n 个子区间[x i ,x i+1],i=1,2,…,n ,其中x 1=a ,x n+1=b 。这样求定积分问题就分解为求和问题。
7.1.2 数值积分的实现方法(Quadrature) 1.自适应辛普生法
基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:
[I,n]=quad(fun,a,b,tol,trace)
fun是被积函数名、句柄或内联函数对象;
a和b分别是定积分的下限和上限;
tol用来控制积分精度,缺省时取tol=10-6;
trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0
I即定积分值,n为被积函数的调用次数。
例7-1 求定积分。
(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
2.牛顿-柯特斯法
基于牛顿-柯特斯法,MATLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8(fun,a,b,tol,trace)
其中参数的含义和quad函数相似。 该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。
例7-2 求定积分。
(1) 被积函数文件fx.m。
f=inline('x.*sin(x)./(1+cos(x).*cos(x)) '); I=quad8(f,0,pi)
I =
2.4674
2.高阶方法
MATLAB给出了quadl函数来替代quad8求定积分[I,n]=quadl(fun,a,b,tol,trace)
其中参数的含义和quad函数相似。 该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。
例7-3 分别用quad函数、quad8和quadl函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。
调用函数quad求定积分:
format long;
fx=inline('exp(-x)');
[I,n]=quad(fx,1,2.5,1e-10)
I =
0.28579444254766 n =
65调用函数quadl求定积分:[I,n]=quadl(fx,1,2.5,1e-10)
I =
0.28579444254754
n =
33
调用函数quad8求定积分:[I,n]=quad8(fx,1,2.5,1e-10)
I =
0.28579444254754
n =
33
7.1.3 二重定积分的数值求解
二重积分可由单重积分函数来构建。
1、自己利用单重积分函数编程进行二重积分计算;
2、使用MATLAB提供的dblquad函数求二重定积分的数值解。
I=dblquad(f,a,b,c,d,tol,method)
该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。参数tol的用法与函数quad完全相同。method 用于指定用哪个数值积分函数,如
@quad8,@quadl或用户自己定义的积分函数
例7-5 计算二重定积分
(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
??
已知二自变量函数在矩形网格下采样点的值,如何计算其积分?
x=-1:0.1:1;
y=-2:0.1:2;
[X,Y]=meshgrid(x,y);
Z=sqrt(X.^2+Y.^2);
mesh(X,Y,Z)
I1=trapz(y,trapz(x,Z,2))
I2=trapz(x,trapz(y,Z),2)
7.1.4 三重定积分的数值求解
三重积分可由单重积分函数来构建。
1、自己利用单重和二重积分函数编程进行三重积分计算;
2、使用MATLAB提供的triplequad函数求三重定积分的数值解。
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)
e.g.
Q = triplequad(inline('y*sin(x)+z*cos(x)'),0,pi,0,1,-1,1)
或
Q = triplequad(@integrnd,0,pi,0,1,-1,1)
where integrnd.m is the M-file
function f = integrnd(x,y,z)
f = y*sin(x)+z*cos(x);
一重积分计算平面图形面积,二重积分计算体积,三重积分的物理意义是什么??如何使用triplequad计算一个非立方体的质量?