第七章 数值积分、微分

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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计算一个非立方体的质量?

相关文档
最新文档