数值微分与数值积分

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专题六数值微积分与方程求解6.1 数值微分与数值积分

☐数值微分

☐数值积分

1.数值微分

(1)数值差分与差商

微积分中,任意函数f(x)在x 0点的导数是通过极限定义的:

h

x f h x f x f h )()(lim

)('0

0-+=→h

h x f x f x f h )

()(lim

)('0

00

0--=→h

h x f h x f x f h )

2/()2/(lim

)('0

--+=→

)

()()(000

x f h x f x

f -+=∆)

()()(0

h x f x f x f --=∇)

2/()2/()(0

h x f h x f x f --+=δ如果去掉极限定义中h 趋向于0的极限过程,得到函数在x 0点处以h (h>0)为步长的向前差分、向后差分和中心差分公式: 向前差分: 向后差分: 中心差分:

函数f(x)在点x 0的微分接近于函数在该点的差分,而f 在点x 的导数接近于函数在该点的差商。

h

x f h x f x

f )

()(≈

)('0

00

-+h

h x f x f x f )

()(≈

)('0

00

--h

h x f h x f x f )

2/()2/(≈

)('0

--+向前差商: 向后差商: 中心差商:

当步长h 充分小时,得到函数在x 0点处以h (h>0)为步长的向前差商、

向后差商和中心差商公式:

(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,按行计算差分。

注意:diff函数计算的是向量元素间的差分,故差分向量元素的个数比原向量少了一个。同样,对于矩阵来说,差分后的矩阵比原矩阵少了一行或一列。

另外,计算差分之后,可以用f(x)在某点处的差商作为其导数的近似值。

例1 设f(x)=sin x,在[0,2π]范围内随机采样,计算f'(x)的近似值,并与理论值f'(x)=cos x进行比较。

>> x=[0,sort(2*pi*rand(1,5000)),2*pi];

>> y=sin(x);

>> f1=diff(y)./diff(x);

>> f2=cos(x(1:end-1));

>> plot(x(1:end-1),f1,x(1:end-1),f2);

>> d=norm(f1-f2)

d =

0.0433

2.数值积分

(1)数值积分基本原理

在有些情况下,应用牛顿—莱布尼兹公式有困难,例如,当被积函数的原函数无法用初等函数表示,或被积函数是用离散的表格形式给出的。这时就需要用数值解法来求定积分的近似值。

在高等数学中,计算定积分依靠微积分基本定理,只要找到被积函数f(x)的原函数大F(x),则可用牛顿—莱布尼兹(Newton-Leibniz )公式:

⎰-=b

a a F

b F x

x f

)

()(d )(

求定积分的数值方法多种多样,如梯形法、辛普森(Simpson )法、高斯求积公式等。它们的基本思想都是将积分区间[a ,b]分成n 个子区间[x i ,x i+1],i=1,2,…,n ,其中x 1=a ,x n+1=b ,这样求定积分问题就分解为下面的求和问题:

在每一个小的子区间上定积分的值可以近似求得,从而避免了牛顿—莱布尼兹公式需要寻求原函数的困难。

⎰∑⎰=+=

=

b

a n

i

x x i i

x

x f x

x f S

1

1

d )(d )(

(2)数值积分的实现

☐基于自适应辛普森方法

[I,n]=quad(filename,a,b,tol,trace)

☐基于自适应Gauss-Lobatto方法

[I,n]=quadl(filename,a,b,tol,trace)

其中,filename是被积函数名;a和b分别是定积分的下限和上限,积分限[a,b]必须是有限的,不能为无穷大(Inf);tol用来控制积分精度,默认时取

tol=10-6;trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0;返回参数I即定积分的值,n为被积函数的调用次数。

例2 分别用quad 函数和quadl 函数求定积分的近似值,并在相同的积分精度下,

比较被积函数的调用次数。

x d x

14

1

2

+>> format long

>> f=@(x) 4./(1+x.^2); >> [I,n]=quad(f,0,1,1e-8) I =

3.141592653733437 n = 61

>> [I,n]=quadl(f,0,1,1e-8) I =

3.141592653589806 n = 48

>> (atan(1)-atan(0))*4 ans =

3.141592653589793 >> format short

相关文档
最新文档