Loading [MathJax]/jax/output/CommonHTML/jax.js

数値解析 第7回 (4) ガウスの積分公式

Case 1 : 11fdx の近似式

 最初は区間 [1,1] での公式を作ります。その方針は
  1. ( 用いるルジャンドル多項式の ) 次数 m を設定する。
  2. Pmm 個の実数根を小さい順に
    t1<t2<<tm
    とする。
  3. {tk}k=1,2,,m に関する f(x)m1 次ラグランジュ補間多項式を p(x) とする。
  4. 11p(x)dx11f(x)dx の近似値とする。
 前回と同じく、p(x) を具体的に求める必要はなくて
公式 11f(x)dxmk=1ck×yk
ただし
  • yk=f(tk)
  • ck, tk は表 ( 今日の配布プリントや、教科書 p.179 など ) から拾って使う。

Case 2 : βαfdx の近似式

 積分区間 [1,1][α,β] に写るように、一次式
x=(α+β2)+(βα2)t
で置換することにより、上述の公式から βαfdx の近似式が作れます。
公式 (8.21) βαf(x)dxβα2mk=1ck×yk
ただし
  • yk=f((α+β2)+(βα2)tk)
  • ck, tk は上と同じ。
 くどいようですが、全体を N 等分した小区間 [α,β] にこの公式を使います。

ガウスの積分公式の使い方

 例えば 21f(x)dx の近似値を
  • 全体の分割数 N=5,
  • ルジャンドル多項式の次数 m=3
の設定で求めるときは、5 つの小区間
[1,1.2],   [1.2,1.4],   [1.4,1.6],   [1.6,1.8],   [1.8,2]
それぞれに対して m=3 で公式 (8.21) を適用します。 このうち [α,β]=[1.2,1.4] に対しては
(α+β)/2=1.3,   (βα)/2=0.1
ですから、表から拾った数を使って y1=f(1.3+0.1×t1)=f(1.3+0.1×(0.774596669241483))y2=f(1.3+0.1×t2)=f(1.3+0.1×0)y3=f(1.3+0.1×t3)=f(1.3+0.1×(0.774596669241483))1.41.2f(x)dx ≒ 0.1×{c1×y1+c2×y2+c3×y3}=0.1×{(0.555555555555556)×y1+(0.888888888888889)×y2+(0.555555555555556)×y3} のように近似します。5 つの区間に対してこのように計算した近似値を足し合わせた値が 21f(x)dx の近似値になります。

10xex2dx( 真の値 =1e12=0.316060279414 )
の近似値を比較します。 小区間数は全体区間の分割数 N のこと、分点数は全ての小区間についての観測点の総数です。
台形公式
小区間数 =     4, 分点数 =      5, 近似値 = 0.308882624093, 誤差 = 0.007177655321
小区間数 =     8, 分点数 =      9, 近似値 = 0.314275892571, 誤差 = 0.001784386844
小区間数 =    16, 分点数 =     17, 近似値 = 0.315614800853, 誤差 = 0.000445478561
小区間数 =    32, 分点数 =     33, 近似値 = 0.315948948277, 誤差 = 0.000111331137
小区間数 =    64, 分点数 =     65, 近似値 = 0.316032449035, 誤差 = 0.000027830380
小区間数 =   128, 分点数 =    129, 近似値 = 0.316053321970, 誤差 = 0.000006957445
小区間数 =   256, 分点数 =    257, 近似値 = 0.316058540062, 誤差 = 0.000001739352
小区間数 =   512, 分点数 =    513, 近似値 = 0.316059844577, 誤差 = 0.000000434837
小区間数 =  1024, 分点数 =   1025, 近似値 = 0.316060170705, 誤差 = 0.000000108709
小区間数 =  2048, 分点数 =   2049, 近似値 = 0.316060252237, 誤差 = 0.000000027177
小区間数 =  4096, 分点数 =   4097, 近似値 = 0.316060272620, 誤差 = 0.000000006794
小区間数 =  8192, 分点数 =   8193, 近似値 = 0.316060277716, 誤差 = 0.000000001699
小区間数 = 16384, 分点数 =  16385, 近似値 = 0.316060278990, 誤差 = 0.000000000425
小区間数 = 32768, 分点数 =  32769, 近似値 = 0.316060279308, 誤差 = 0.000000000106
小区間数 = 65536, 分点数 =  65537, 近似値 = 0.316060279388, 誤差 = 0.000000000027

シンプソンの公式
小区間数 =     4, 分点数 =      9, 近似値 = 0.316073648730, 誤差 = 0.000013369316
小区間数 =     8, 分点数 =     17, 近似値 = 0.316061103614, 誤差 = 0.000000824200
小区間数 =    16, 分点数 =     33, 近似値 = 0.316060330752, 誤差 = 0.000000051338
小区間数 =    32, 分点数 =     65, 近似値 = 0.316060282620, 誤差 = 0.000000003206
小区間数 =    64, 分点数 =    129, 近似値 = 0.316060279615, 誤差 = 0.000000000200
小区間数 =   128, 分点数 =    257, 近似値 = 0.316060279427, 誤差 = 0.000000000013
小区間数 =   256, 分点数 =    513, 近似値 = 0.316060279415, 誤差 = 0.000000000001
小区間数 =   512, 分点数 =   1025, 近似値 = 0.316060279414, 誤差 = 0.000000000000

シンプソンの 3/8 公式
小区間数 =     4, 分点数 =     13, 近似値 = 0.316066209330, 誤差 = 0.000005929915
小区間数 =     8, 分点数 =     25, 近似値 = 0.316060645541, 誤差 = 0.000000366127
小区間数 =    16, 分点数 =     49, 近似値 = 0.316060302228, 誤差 = 0.000000022814
小区間数 =    32, 分点数 =     97, 近似値 = 0.316060280839, 誤差 = 0.000000001425
小区間数 =    64, 分点数 =    193, 近似値 = 0.316060279503, 誤差 = 0.000000000089
小区間数 =   128, 分点数 =    385, 近似値 = 0.316060279420, 誤差 = 0.000000000006
小区間数 =   256, 分点数 =    769, 近似値 = 0.316060279415, 誤差 = 0.000000000000

3次のガウス
小区間数 =     4, 分点数 =     12, 近似値 = 0.316060291081, 誤差 = 0.000000011667
小区間数 =     8, 分点数 =     24, 近似値 = 0.316060279593, 誤差 = 0.000000000179
小区間数 =    16, 分点数 =     48, 近似値 = 0.316060279417, 誤差 = 0.000000000003
小区間数 =    32, 分点数 =     96, 近似値 = 0.316060279414, 誤差 = 0.000000000000

4次のガウス
小区間数 =     4, 分点数 =     16, 近似値 = 0.316060279404, 誤差 = 0.000000000010
小区間数 =     8, 分点数 =     32, 近似値 = 0.316060279414, 誤差 = 0.000000000000

5次のガウス
小区間数 =     4, 分点数 =     20, 近似値 = 0.316060279414, 誤差 = 0.000000000000
小区間数 =     8, 分点数 =     40, 近似値 = 0.316060279414, 誤差 = 0.000000000000
 ガウスの積分公式が少ない分点数でも精度よく計算していることが見て取れます。

ガウスの積分公式が使えない場合

 観測点が自由に選べない状況ではガウスの積分公式は使えません。 例えば一定の時間間隔で観測されるデータから数値積分をしなければならないときには、シンプソンの公式などを使います。