第四章 数值积分与数值微分 4.3 Romberg算法§ 4.3 Romberg算 法§ 综合前几节的内容 ,我们知道 梯形公式 ,Simpson公式 ,Cotes公式的代数精度分别为 1次 ,3次和 5次 复合梯形 、 复合 Simpson、 复合 Cotes公式的收敛阶分别为 2阶 、 4阶和 6阶 无论从代数精度还是收敛速度 ,复合梯形公式都是较差的 有没有办法改善梯形公式呢 ? 一 、 复合梯形公式的递推化 等份分割为的积分区间将定积分 nbadxxfI b a ],[)(∫= njjhaxk ,,1,0, L=+= n abh ?=各节点为 ])()(2)([2 1 1 ∑? = ++?= n j jn bfxfafn abT 复合梯形 (Trapz)公式为 则不变等份 , 而分割为如果将 ,/)(2],[ nabhnba ?= )]()(2)(2)([4 1 0 2 1 1 1 2 bfxfxfafn abT n j j n j jn +++ ?= ∑∑ ? = + ? = --------(1) --------(2) )]()(2)(2)([4 1 0 2 1 1 1 2 bfxfxfafn abT n j j n j jn +++ ?= ∑∑ ? = + ? = hjahxx j j )21(21 2 1 ++=+=+其中 ∑∑ ? = + ? = ?+++?= 1 0 2 1 1 1 )(24)]()(2)([4 n j j n j j xfn abbfxfaf n ab ∑? = + ?+= 1 0 2 1 )(22 1 n j j n xfn abT ∑? = ++?+= 1 0 ))21((221 n j n hjafn abT --------(3)∑ ? = ?++?+= 1 0 )2)12((221 n j n n abjaf n abT abhn ?== 时 ,1 则由 (1)(2)(3)式 ,有 )]()([21 bfafabT +?= )21(221 12 hafabTT +?+= )0(0T= )1(0T= )1(0 ?= kTTn记12 ?= kn若 L,2,1=k jhaxj +=1 2 ? ?= k abh hxx j j 2 1 2 1 +=+ 12)2 1( ? ?++= k abja 12 ? ?+= k abja k abja 2)12( ?++= 因此 (1)(2)(3)式可化为如下递推公式 )]()([2 bfafab +?=)0(0T ∑? = ? ? ++?+?= 12 0 00 1 )2)12((2)1(21)( k j kk abjafabkTkT L,2,1=k ?? ???(4)------- 上式称为 递推的梯形公式 递推梯形公式加上一个控制精度 ,即 可成为自动选取步长的复合梯形公式 具体的方法请同学们完成 思考 二 、 外推加速公式 由复合梯形公式的余项公式 )(31 22 nnn TTTI ?≈? nn TTI 3 1 3 4 2 ?≈可得 n n j j n Txfn abTI 3 1))( 22 1( 3 4 1 0 2 1 ? ?+≈ ∑? = + 由 (3)式 ∑? = + ?+≈ 1 0 2 1 )(6 )(4 3 1 n j j n xfn abT 12 ?= kn设 )1( 3 1)( 3 4 00 ??= kTkT ∑∑ ? = + ? = ?+++?≈ 1 0 2 1 1 1 )(6 )(4])(2)()((2[31 n j j n j j xfn abxfbfaf n abI ])(4)(2)()((6 1 0 2 1 1 1 ∑∑ ? = + ? = +++?= n j j n j j xfxfbfafn ab nS= 复合 Simpson公式 nn TTI 3 1 3 4 2 ?≈ 令引入 ),1(1 ?kT )1(1 ?kT )1(31)(34 00 ??= kTkT nS= 12 ?= kS --------(5) --------(6) )(151 22 nnn SSSI ?≈? 因此由复合 Simpson公式的余项 可得 nn SSI 1511516 2 ?≈ )1(1 ?= kT12 ?= kS即 )1(151)(1516 11 ??= kTkT nS )(1 kT=nS2当然 )1(2 ?kT )1(151)(1516 11 ??= kTkT令 nC= 自己 证明 --------(6) nC= --------(7) )1(2 ?= kT12 ?= kCnC --------(8)即 )(2 kT=nC2当然 同样由复合 Cotes公式的余项 )(631 22 nnn CCCI ?≈? nn CCI 63 1 63 64 2 ?≈ )1(63 1)( 63 64 22 ??= kTkT得 )1(3 ?kT令 )1(631)(6364 22 ??= kTkT --------(9) )1(1 ?kT )1(31)(34 00 ??= kTkT )1(151)(1516 11 ??= kTkT)1(2 ?kT )1(3 ?kT )1(631)(6364 22 ??= kTkT )]()([2 bfafab +?=)0(0T ∑? = ? ? ++?+?= 12 0 00 1 )2)12((2)1(21)( k j kk abjafabkTkT L,2,1=k ? ? ? ? ? ? ? 外推 加速 公式 以上 整个过程称为 Romberg算法 将 上 述 结 果 综 合 后 )]1()(4[14 1)1( 11 ???=? ?? kTkTkT mmmmm 其中外推加速公式可简化为 --------(9) )0(0T )1(0T )0(1T )2(0T )1(1T )0(2T )3(0T )2(1T )1(2T )0(3T L,2,1=mm可以推广到并且 L,2,1=k Romberg算法的收敛 阶高达 m+1的两倍 Romberg算法求解步骤 Romberg算法的 代 数 精度为 m的两倍 romberg.m例 : ∫20 sin p xdx计算积分 前侧矩形公式 z1 = 0.99212545660563 z11 = 0.99212545660563 后侧矩形公式 z2 = 1.00783341987358 z22 = 1.00783341987358 梯形公式 z3 = 0.99997943823961 Simpson公式 z4 = 1.00000000201613 8阶 simpson公式 z5 =1.00000000000000 自选步长梯形公式 z6 = 0.99999921563419 自选步长 Simpson公式 z7 =1.00000051668471 Romberg公式 z8 = 0.99999999999802 Mote-Carlo算法 z9 = 0.99821071589516 -0.00787454339437 -0.00787454339437 0.00783341987358 0.00783341987358 -0.00002056176039 0.00000000201613 -0.00000000000000 -0.00000078436581 0.00000051668471 -0.00000000000198 -0.00178928410484 Jifenbijiao.m 积分法 积分值 绝对误差 如何构造 Romberg算法