1
第一讲
数值积分及其应用
——
自适应数值积分误差分析
定理:设 I 是定积分精确值, Tn 是由梯形法计算出来的近 似值,若 f(x)C2[a, b] ,则存在 (a, b) ,使得
定理:设 I 是定积分精确值, Sn 是由抛物线法计算出来的 近似值,若 f(x)C4[a, b] ,则存在 (a, b) ,使得
注:抛物线法事实上使用了 2n+1 个节点
( )
2"( )
n
12
b a h
I T f
4
( )
(4)180 2 ( )
n
b a h
I S f
h b a n
h b a n
3
自适应数值积分
取等分点的缺点
当被积函数在部分区域变化较剧烈,而其他部分变化较平缓 时,采用等分点会增加工作量,效率低下。
自适应数值积分
变化剧烈的地方取较小步长,在变化平缓的地方取较大步长,
使得在满足计算精度的前提下工作量尽可能小。
作业:试给出梯形法的递推计算公式: Tk
( n=21, 22, 23, 24, ..., 2k, ... ,即对积分区间不断对分)
自适应梯形法
(1) 取当前积分区间 (x0 , x1)=(a, b) ;
(2) 用梯形公式计算函数在当前积分区间上的积分近似值;
(3) 判断近似值的误差,若满足要求,则该值即为该区间上的 计算结果,该区间的计算过程结束。
(4) 否则,将区间二等分:令 xc =(x0 + x1)/2 ,分别将子区间 (x0 , xc) 和 (xc , x1) 设为当前积分区间,重复步骤 (2)-(4) ,直 到它们的计算误差满足要求,然后将子区间 (x0 , xc) 和 (xc , x1) 上的计算结果之和作为区间 (x0 , x1) 上的计算结果;
算法:基于梯形法的自适应数值积分
梯形公式:
递归算法
( ) ( ) ( )
2
b a
f x dx b a f a f b
5
自适应梯形法
问题:如何判断近似值的误差是否满足要求?
设给定的误差限为
设当前计算区间为 (x0 , x1) ,梯形公式的计算误差:
当区间长度较小时, 可用中点 xc 代替
用二阶差商近似二阶导数值( Taylor 展开,板书),可得
“ 误差等分布原则”:小区间上的误差满足:
0 1 0 1
3
1 0
[ , ] [ , ]
( )
"( )
x x x x 12
x x
I T f
0 1
2
1 0
( ) 2 ( ) ( )
"( ) "( ) 4
( )
c c
f x f x f x
f f x
x x
i hi
b a
自适应梯形法
进一步改进 由于需要计算中点的函数值,因此我们可以 利用该函数值来给出更好的积分近似值
近似值满足要求的判断准则
误差:
新近似值的误差判断准则
0 1 0 1
1 0
[ , ] [ , ] [ , ]
( ) 2 ( )
0( )
14
c c
x x x x x x c
x x
T T T f x f x f x
0 1
( ) 2 ( )c ( ) 3
f x f x f x
b a
0 1 0 1 0 1 0 1
[ , ] [ , ] [ , ] [ , ]
1
x x x x
4
x x x xI T I T
0 1
( ) 2 ( )c ( ) 12
f x f x f x
b a
0 1 0 1
1 0
[ , ] [ , ]
3( )
x x x x
x x
T T
b a
7
自适应梯形法
function trap_adap(a,fa,b,fb,tol,F) if (a=b) return 0
xc=(a+b)/2; h=b-a; T0=h*(fa+fb)/2;
if (xc=a or xc=b) return T0
fc=F(xc); T1=(T0+fc*h)/2; err=|T1-T0|
if err>h*tol then
return trap_adap(a,fa,xc,fc,tol,F) +
+ trap_adap(xc,fc,b,fb,tol,F) else
return T1 end if
end function
算法:基于梯形法的自适应数值积分
tol 3
b a
自适应梯形法举例
例:用自适应梯形法计算下面积分的近似值
ex_trap_adap.m
1 0.2 2
1 d
I x
x9
自适应抛物线法
(1) 取当前积分区间 (x0 , x1)=(a, b) ;
(2) 用抛物线公式计算函数在当前积分区间上的积分近似值;
(3) 判断近似值的误差,若满足要求,则该值即为该区间上的 计算结果,该区间的计算过程结束。
(4) 否则,将区间二等分:令 xc =(x0 + x1)/2 ,分别将子区间 (x0 , xc) 和 (xc , x1) 设为当前积分区间,重复步骤 (2)-(4) ,直 到它们的计算误差满足要求,然后将子区间 (x0 , xc) 和 (xc , x1) 上的计算结果之和作为区间 (x0 , x1) 上的计算结果;
抛物线公式:
算法:基于抛物线法的自适应数值积分 递归算法
( ) ( ) 4 ( )
6 2
b a
b a a b
f x dx f a f f b
自适应抛物线法
问题:如何判断近似值的误差是否满足要求?
设给定的误差限为
设当前计算区间为 (x0 , x1) ,抛物线公式的计算误差:
将区间二等分后,在每个小区间上使用抛物线法,可得 新的近似值
0 1 0 1
5 1 0 (4)
[ , ] [ , ] 5
( )
90 2 ( )
x x x x
x x
I S f
0 1 0 1
[x x, ] [x x, c] [x xc, ]
S S S
0 1 0 1
5
(4) (4)
1 0
[ , ] [ , ] 5 5 1 2
( )
( ) ( )
90 2 2
x x x x
x x
I S f f
0 1 0 1
5 1 0 (4)
[ , ] [ , ] 9
( )
90 2 ( )
x x x x
x x
I S f
11
自适应抛物线法
当区间长度较小时,可假定
根据“误差等分布原则”, 是否满足精度要求的判别准则是
为保险起见,实际计算中可使用
(4)( ) (4)( ) f f
0 1 0 1
5 (4)
1 0
[ , ] [ , ] 5
( )
15 ( )
16 90 2
x x x x
x x
S S f
0 1 0 1 0 1 0 1
[ , ] [ , ] [ , ] [ , ]
1
x x x x 15 x x x x
I S S S
0 1 0 1
1 0
[ , ] [ , ]
1
15 x x x x
x x
S S
b a
0 1
[x x, ]
S
0 1 0 1
1 0
[ , ] [ , ]
1
10 x x x x
x x
S S
b a
自适应抛物线法
留作作业
算法:基于抛物线法的自适应数值积分