第四章 数值积分与数值微分 4.2 复合求积法§ 4.2 复合求积法§ 固定时而节点个数的长度较大当积分区间 1,],[ +nba 直接使用 Newton-Cotes公式的余项将会较大 增加时即而如果增加节点个数 1, +n 公式的舍入误差又很难得到控制 为了提高公式的精度 ,又使算法简单易行 ,往往使用复合方法 分成若干个子区间即将积分区间 ],[ ba 然后在每个小区间上使用低阶 Newton-Cotes公式 最后将每个小区间上的积分的近似值相加 一 、 复合求积公式 等份分割为的积分区间将定积分 nbadxxfb a ],[)(∫ nkkhaxk ,,1,0, L=+= n abh ?=各节点为 公式上使用在子区间 CotesNewtonnkxx kk ??=+ )1,,1,0](,[ 1 L 节点为步长为等份分割为将 ,,],[ 1 lhlxx kk + 1,, 2,, +=+++ kkkkk xl lhx l hx l hxx L 记为 121 ,,,, ++++ = k l lk lklk k xxxxx L )(1 )( k l x x Idxxfk k∫ + ≈ ∑ = + + ?= l i l ik l ikk xfCxx 0 )( 1 )()( 求积公式阶的上作在 CotesNewtonlxfxx kk ?+ )(],[ 1 ∑ = + = l i l ik l i xfCh 0 )( )( ∫ba dxxf )( ∑∫ ? = += 1 0 1 )( n k x x k k dxxf ∑? = ≈ 1 0 )( n k k lI 由积分的区间可加性 ,可得 ∑∑? = = + = 1 0 0 )( )( n k l i l ik l i xfCh复合求积公式 nI= 可得复合梯形求积公式时 ,1=l n b a Tdxxf ≈∫ )( ∑∑? = = += 1 0 1 0 )1( )( n k i iki xfCh ∑? = ++= 1 0 1 )]()([2 1n k kk xfxfh ])()(2)([2 1 1 ∑? = ++?= n k kn bfxfafn abT复合梯形公式 求积公式可得复合时 Simpsonl ,2= ∑∑? = = + = 1 0 2 0 2 )2( )( n k i iki xfChn b a Sdxxf ≈∫ )( 复合 Simpson公式 复合抛物线公式 n b a Sdxxf∫ ≈)( ∑ ? = ++ ++= 1 0 1 2 1 )]()(4)([6 1n k kkk xfxfxfh )]()(2)(4)([6 1 1 1 0 2 1 bfxfxfafn ab n k k n k k +++?= ∑∑ ? = ? = + 求积公式可得复合时 Cotesl ,4= ∑∑? = = + = 1 0 4 0 4 )4( )( n k i iki xfChn b a Cdxxf ≈∫ )( )](7)(32)(12)(32)(7[90 1 1 0 4 3 4 2 4 1 + ? = +++ ++++= ∑ k n k kkk k xfxfxfxfxf h )](7)(14)](32)(12)(32[)(7[90 1 1 1 0 4 3 4 2 4 1 bfxfxfxfxfafn ab n k k n k kkk +++++?= ∑∑ ? = ? = +++ 复合 Cotes公式 )]()([2 )( bfafabT +?= ],[ 10 xx )]()([2 1)0( xfafhT += ],[ 21 xx 2 )1( hT = )]()([ 21 xfxf + ],[ 32 xx 2 )2( hT = )]()([ 32 xfxf + ],[ 43 xx 2)3( hT = )]()([ 43 xfxf + ],[ 12 ?? nn xx 2)2( hT n =? )]()([ 12 ?? + nn xfxf ],[ 1 nn xx ? 2 )1( hT n =? )]()([ 1 bfxf n +? 2 hT n = +)([ af +)(2 1xf +)(2 2xf +L +? )(2 1nxf )](bf 复合梯形公式分解 )]()2(4)([6 bfbafafabS +++?= ],[ 10 xx 6)0( hS = )]()(4)([ 1 2 10 xfxfaf ++ + ],[ 21 xx 6)1( hS = )]()(4)([ 2 2 111 xfxfxf ++ + ],[ 1 nn xx ? 6)1( hS n =? )]()(4)([ 2 111 bfxfxf nn ++ +?? 6 hS n = +)([ af +∑ ? = + 1 0 2 1 )(4 n k k xf +∑ ? = 1 1 )(2 n k kxf )](bf 复合 Simpson公式分解 例 1. ∫= 10 sin dxx xI计算定积分使用各种复合求积公式 解 : 为简单起见 ,依次使用 8阶复合梯形公式 、 4阶 复合 Simpson公式和 2阶复合 Cotes公式 可得各节点的值如右表 0 1 0.125 0.99739787 0.25 0.98961584 0.375 0.97672674 0.5 0.95885108 0.625 0.93615564 0.75 0.90885168 0.875 0.87719257 1 0.84147098 )( ii xfx 8 7 6 5 4 3 2 1 0 x x x x x x x x x Trapz 4 2 13 3 2 12 2 2 11 1 2 10 0 . x x x x x x x x x Simp + + + + 2 4 31 2 11 4 11 1 4 30 2 10 4 10 0 x x x x x x x x x Cotes + + + + + + 复合求积 公式的程序 newtoncotes.m 函数程序 func.m 8T ])1()(2)0([16 1 7 1 ∑ = ++= k k fxff 分别由复合 Trapz、 Simpson、 Cotes公式有 94569086.0= 4S )]1()(2)(4)0([24 1 3 1 3 0 2 1 fxfxff k k k k +++= ∑∑ == + 94608331.0= 2C )]1(7)(14)](32)(12)(32[)0(7[1801 1 1 1 0 4 3 4 2 4 1 fxfxfxfxff k k k kkk +++++= ∑∑ == +++ 94608307.0= 8T 94569086.0= 4S 94608331.0= 2C 94608307.0= 原积分的精确值为 ∫= 1 0 sin dx x xI L671839460830703.0= 精度最高 精度次高 精度最低 比较三个 公式的结果 那么哪个复合求积公式的收敛最快呢 ? 二 、 复合求积公式的余项和收敛的阶 我们知道 ,三个求积公式的余项分别为 )(TR )(12 )( 3 hfab ′′??= )(SR )() 2(180 )4(4 hfabab ???= )(CR )() 4(945 )(2 )6(6 hfabab ???= 单纯的求积公式 复合求积公式的每个小区间 )(12 2 kfhh h′′???= )(2180 )4( 4 kf hh h? ? ?? ? ??= )(49452 )6( 6 kf hh h? ? ?? ? ??= ])(12[ 1 0 3∑? = ′′?= n k kf h h ],,[)(.1 2 baCxf ∈设被积函数 则复合梯形公式的余项为 nTI ? ∑ ? = ′′?= 1 0 3 )(12 n k kf h h )(max)()}({min 1 0 xfnfxf bxa n k k bxa ′′≤′′≤′′ ≤≤ ? =≤≤ ∑ h由于 使得由介值定理 ],,[, ba∈?h )()( 1 0 hh fnf n k k ′′=′′∑ ? = nTI ? ∑? = ′′?= 1 0 3 )( 12 n k k n fnh h )( 12 3 hfnh ′′?=即有 )( )(12 )( 2 nTR fhab = ′′??= h nTI ? 2h TI n? ∑? = ′′?= 1 0 3 )(12 n k kf h h又由 ∑? = ′′?= 1 0 )(121 n k k hf h ∑ ? = ?′′?= 1 0 )(121 n k kk xf h ∫ ′′?→ ba dxxf )(121 )]()([121 afbf ′?′?= ???????? ∞→→nh 0 复合梯形公式的余项为足够大时因此当 ,n nTI ? )]()([12 2 afbfh ′?′?≈ )]()([121 2 afbfh ′?′?= ∑? = ??? ? ??? ? ??= 1 0 )4( 4 5 )(2180 n k kf h h ],[)(.2 4 baCxf ∈若被积函数 nSI ? 公式的余项为复合足够大时则 Simpsonn , )(2180 )4( 4 hfhab ????????= )]()([2180 4 4 afbfh ′′′?′′′??≈ ∑? = ??? ? ??? ? ??= 1 0 )6( 6 7 )(49452 n k kf h h 公式的余项同样可得复合若 CotesbaCxf ],,[)(.3 6∈ nCI ? )(4945 )(2 )6(6 hfhab ? ? ?? ? ???= )]()([49452 )5()5(6 6 afbfh ???≈ )]()([49452 )5()5( 6 afbfh ????????= )]()([21801 4 afbfh ′′′?′′′???????= nTI ? )]()([12 1 2 afbfh ′?′?≈ nSI ? )]()([2180 1 4 afbfh ′′′?′′′? ? ?? ? ??≈ nCI ? )]()([4945 2 )5()5(6 afbfh ?? ? ?? ? ??≈ 比较三种复合公式的的余项 的速度依次更快趋于定积分即 ICST nnn ,, 阶无穷小量,,的分别是 642h 为此介绍收敛阶的概念 )( 2ho= )( 4ho= )( 6ho= 定义 1. 满足使其余项及若存在对于复合求积公式 nn IIcpI ?≠> ,00 ch II p n h =? →0 lim 阶收敛的是则称复合求积公式 pIn )( pn hII o=? 阶收敛的概念也等价于显然 p, 不难知道 ,复合梯形 、 Simpson、 Cotes公式的收敛阶分别为 2阶 、 4阶和 6阶 通常情况下 ,定积分的结果只要满足所要求的精度即可 精度越高越大分割的小区间数而积分区间 nInba ,],[ 运算量也很大太大但 ,n 但精度可能又达不到运算量虽较小太小 ,,n 取多大值合理呢 ?那么 n 三 、 复合求积公式步长的自动选取 复合梯形公式的余项为 nTI ? )]()([12 2 afbfh ′?′?≈ 个时小区间数量增加到即将步长缩小一倍 nhh 2,21, 1 = nTI 2? )]()([12 2 1 afbfh ′?′?≈ )]()([) 2(12 1 2 afbfh ′?′?= n n TI TI ? ? 2 4 1≈因此有 nn TITI ?≈? 244 )(31 22 nnn TTTI ?≈?即 为的近似值的截断误差约作为因此 IT n2 )(31 22 nnn TTTI ?=?≈? 为的近似值的截断误差约作为 IS n2 )(151 22 nnn SSSI ?=?≈? 为的近似值的截断误差约作为 IC n2 )(631 22 nnn CCCI ?=?≈? 依此类推 e若预先给定的误差限为 有因此对一般的复合积分 nI )(1 22 nnn IIpII ?=?≈? epII nn <?2只要 e<? nII 2就有 的近似值即为满足要求的 II n2 步长自动选取的步骤 : 11 ,1.1 Iabhn 计算,取 ?== 取不同的值 不同的方法 p ||1,212, 12212 IIpIhhn ?=?== 和计算,取步长折半 否则停止计算若 ,,, 2II =<? e ||1,214,.2 24424 IIpIhhn ?=?== 和计算,取步长折半 否则停止计算若 ,,, 4II =<? e 依此类推 kII 2,, =<? 停止计算直到 e 以上这种方法称为 自适应求积法 有时也去掉 精度会更高 nS )]()(2)(4)([6 1 1 1 0 2 1 bfxfxfafn ab n k k n k k +++?= ∑∑ ? = ? = + 以复合 Simpson求积公式的特点为例 具有以下特点 : 1)()( 的系数总是bfaf + 2)( 的和的系数总是kxf 4)( 2 1 的和的系数总是+kxf 旧节点 新节点 步长折半 =0s =2s =1s 01),()(0,/)(,1,1 =+=?=== sbfafsnabhkn 2 , 2 10 10 hax bxax += == + )()(0,/)(,2,2 bfafsnabhkn +=?=== ,23,2 , 2 11 2 10 2 101 hathat xhat +=+= =+= ++ + 0s→ )1(2s→ )1(211 sss +?→ )2(2s→ ))1(24120(6 ssshI ++= )]2(24120[6 ssshI ++= ,1, +?+? kknnn )()(0,/)(,3,4 bfafsnabhkn +=?=== 2 13 2 12 2 11 2 10 2 11312 2 101 ,,, ,, ++++ ++ === yyyy tytyty )2(211 sss +?→ )3(2s→ )]3(24120[6 ssshI ++= ,1, +?+? kknnn 四 、 复合自适应求积法的算法设计 规定步长的求积法的算法比较简单 ,这里只以自动选取步 长的复合 Simpson求积公式为例介绍自适应法的算法设计 (一 ) 算法名称 ∫= ba dxxfI )(求定积分 ),,,( EPSbafunnautosimpso (二 ) 存储方式 aa 存积分下限 bb 存积分上限 e存预先给定的误差限EPS )(1 afy 存函数值 )(2 bfy 存函数值 存前一次积分值1I 存后一次积分值2I 一维向量 , 存分段节点x 数值一维向量 , 存节点处函f 存旧节点处函数值之和1S 和存新增节点处函数值之2S (三 ) 自然语言 e误差限输入积分上下限 ,,.1 ba 01,01,1,1.2 ==== Iskn )(2),(1.3 bfyafy == 210.4 yys += nabh /)(.5 ?= 0)(2.6 =ks nj ,,2,1.7 L= 2)12().1(7 hjax ?+= )()(2)(2).2(7 xfksks += )1(211,1.8 ?+=> kssskif 6)](24120[2.9 hksssI ++= 15/)12(.10 IIabsd ?= EPSdif >.11 否则,5,,21,1 gotonnnIIkk +==+= hI ,2.12 输出 停机.13 (四 ) 程序实例 程序 名 : Autosimpson.m 命令 格式 : autosimpson('fun',a,b,eps) 例 2. 用自适应 Simpson公式计算下列定积分 ,并比较 ∫ ?= 10 2 dxeI x Li42.m 解 : m = n=8 trapz n=20 trapz n=50 trapz n=100 trapz n=4 simpson n=20 simpson n=4 cotes autosimp 1e-4 autosimp 1e-6 autosimp 1e-10 z = 0.745865614845695 0.746670836939873 0.746799607189351 0.74681800146797 0.746826120527467 0.746824136005348 0.746824133229615 0.746826120527467 0.746824140606985 0.74682413281433 t = 0 0 0 0.06 0 0 0 0.11 0.16 0.22 d = -9.6e-04 -1.5e-04 -2.5e-05 -6.1e-06 2.0e-06 3.2e-09 4.2e-10 2.0e-06 7.8e-09 1.9e-12 h =0.25 4 h =0.0625 16 h =0.0078125 128 z1= 0.746824132812427 区间数及方法 积分结果 运行时间 误差