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

Case 1 : $\dps{\int_{-1}^1 f\,dx}$ の近似式

 最初は区間 $[\,-1,1\,]$ での公式を作ります。その方針は
  1. ( 用いるルジャンドル多項式の ) 次数 $m$ を設定する。
  2. $P_m$ の $m$ 個の実数根を小さい順に
    $t_1 \lt t_2 \lt \cdots \lt t_m$
    とする。
  3. $\{\,t_k\,\}_{k=1,2,\cdots,m}$ に関する $f(x)$ の $m-1$ 次ラグランジュ補間多項式を $p(x)$ とする。
  4. $\dps{\int_{-1}^{1} p(x)dx}$ を $\dps{\int_{-1}^{1} f(x)dx}$ の近似値とする。
 前回と同じく、$p(x)$ を具体的に求める必要はなくて
公式 $\dps{\int_{-1}^{1} f(x)dx}$ ≒ $\dps{\sum_{k=1}^mc_k\times y_k}$
ただし
  • $y_k=f(t_k)$
  • $c_k$, $t_k$ は表 ( 今日の配布プリントや、教科書 p.179 など ) から拾って使う。

Case 2 : $\dps{\int_{\alpha}^{\beta} f\,dx}$ の近似式

 積分区間 $[\,-1,1\,]$ が $[\,\alpha,\beta\,]$ に写るように、一次式
$\dps{x=\left(\frac{\alpha+\beta}{2}\right)+\left(\frac{\beta-\alpha}{2}\right)t}$
で置換することにより、上述の公式から $\dps{\int_{\alpha}^{\beta} f\,dx}$ の近似式が作れます。
公式 (8.21) $\dps{\int_{\alpha}^{\beta} f(x)dx}$ ≒ $\dps{\frac{\beta-\alpha}{2}\sum_{k=1}^mc_k\times y_k}$
ただし
  • $\dps{y_k=f\left(\left(\frac{\alpha+\beta}{2}\right)+\left(\frac{\beta-\alpha}{2}\right)t_k\right)}$
  • $c_k$, $t_k$ は上と同じ。
 くどいようですが、全体を $N$ 等分した小区間 $[\,\alpha,\beta\,]$ にこの公式を使います。

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

 例えば $\dps{\int_1^2 f(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) を適用します。 このうち $[\alpha,\, \beta]=[1.2,\, 1.4]$ に対しては
$(\alpha+\beta)/2 = 1.3$,   $(\beta-\alpha)/2 = 0.1$
ですから、表から拾った数を使って \begin{align} y_1 &= f(1.3 + 0.1 \times t_1) = f(1.3 + 0.1\times(-0.774596669241483)) \\ y_2 &= f(1.3 + 0.1 \times t_2) = f(1.3 + 0.1\times 0) \\ y_3 &= f(1.3 + 0.1 \times t_3) = f(1.3 + 0.1\times(0.774596669241483)) \\ \int_{1.2}^{1.4} f(x)\,dx &\mbox{ ≒ } 0.1 \times \big\{ c_1 \times y_1 + c_2 \times y_2 + c_3 \times y_3 \big\} \\ &= 0.1 \times \Big\{ (0.555555555555556)\times y_1 \\ &\qquad\quad + (0.888888888888889)\times y_2 + (0.555555555555556)\times y_3 \Big\}\\ \end{align} のように近似します。5 つの区間に対してこのように計算した近似値を足し合わせた値が $\dps{\int_1^2 f(x)\,dx}$ の近似値になります。

$\dps{\int_0^1 xe^{-x^2}dx}$  $\Big($ 真の値 $\dps{=\frac{1-e^{-1}}{2}= 0.316060279414\cdots}$ $\Big)$
の近似値を比較します。 小区間数は全体区間の分割数 $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
 ガウスの積分公式が少ない分点数でも精度よく計算していることが見て取れます。

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

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