微積分 · 数値積分

数値積分

数値積分は、fの少数の値から∫ fを近似します。各小区間でfをそれらの値を通る簡単な曲線に置き換え、その下の符号付き面積を足し合わせます。シンプソン則では放物線を使います。滑らかな関数では、小区間の幅を半分にするたび、やがて誤差が約1/16ずつ減るようになります。

この図で見る数値積分

原始関数を使って計算できない積分はたくさんあります。e−x2e^{-x^2}の原始関数は存在しますが初等関数では表せず、測定データにはそもそも式がありません。数値積分はfの値だけから∫abf(x) dx\int_a^b f(x)\,dxを近似します。[a, b]を幅Δx=(b−a)/n\Delta x = (b - a)/nのn個の小区間に分け、各区間でfをいくつかの値を通る簡単な曲線pに置き換え、その下の符号付き面積を足します。

n個の小区間でのシンプソン則(mᵢは小区間iの中点)
Sn=Δx6∑i=0n−1[f(xi)+4f(mi)+f(xi+1)]S_n = \frac{\Delta x}{6} \sum_{i=0}^{n-1} \big[f(x_i) + 4f(m_i) + f(x_{i+1})\big]

中点則Mはf(mi)f(m_i)を通る水平線、台形則Tは両端を結ぶ弦、シンプソン則Sは両端と中点を通る放物線を使います。したがってSが使うfの値は2n + 1個です。図のpは黄色です。下の細い図は差p(x)−f(x)p(x) - f(x)を拡大したもので、その符号付き面積が誤差、つまり近似和から積分値を引いた値です。教科書ではこれを「2n個の小区間でのシンプソン則」と呼ぶこともありますが、同じ和を計算しています。

幅hの小区間で、fを中点のまわりに展開します。中点則の誤差は約−h3f′′/24-h^3 f''/24、台形則は約+h3f′′/12+h^3 f''/12なので、小区間が十分小さければ前者は後者の約−½です。sin x、n = 4では+0.0523と−0.1039になります。2 : 1で重み付けするとこの主要項が消え、実際にS=(2M+T)/3S = (2M + T)/3が厳密に成り立ちます。残る誤差は、小区間ごとにh5f(4)/2880h^5 f^{(4)}/2880の項から始まります。下の図でも、このページのどの関数でも台形の差は同じ符号を保つ一方、シンプソン則の正と負の部分はほぼ打ち消し合っています。

シンプソン則は二次関数だけでなく三次関数にも厳密です。中点を基準にすると(x−m)3(x - m)^3は奇関数なので、小区間上の積分は0です。重み1, 4, 1が対称なため、シンプソン則の和も0になります。[0, 2]上のx³を一つの小区間で扱うと、放物線は3x2−2x3x^2 - 2xで、明らかにx³とは違います。それでも差の二つの部分の面積は−1/4と+1/4なので、S1=4S_1 = 4となり積分値に厳密に一致します。(x−m)4(x - m)^4の項は偶関数で打ち消し合いません。x⁴では一つの放物線による値が32/5ではなく20/3となり、4/15ずれます。

小区間を足し合わせた誤差は、1/nのべきに比例して減ります。fが滑らかで主要な誤差項が0でなければ、nを2倍にしたとき中点則と台形則の誤差はやがて約1/4(誤差 ∝ 1/n²)、シンプソン則では約1/16(∝ 1/n⁴)になります。eˣではn = 1, 2, 4に対してシンプソン則の誤差は5.8 × 10⁻⁴、3.7 × 10⁻⁵、2.3 × 10⁻⁶です。この展開にはfの滑らかさが必要です。√xは0から垂直に立ち上がり、その無限大の傾きを放物線では再現できません。分割数を2倍にしても誤差は約21.5≈2.832^{1.5} \approx 2.83分の1にしかならず、ほとんどが最初の小区間から生じます。

注目する点

  • 表示される積分値は原始関数から求めた値(2, e − 1, ln 2, 2/3, 4, 32/5)です。したがって誤差も推定ではなく真の誤差です。
  • 同じ9個のsin xの値を使う場合、∫₀^π sin x dxに対する誤差は、四つの小区間でのシンプソン則が0.00027、八つの小区間での台形則が0.026です。

操作

  • nを回したり公式を切り替えたりして、差の変化を見てください。下の図はそのつど縮尺が変わるので、左の目盛りを確認します。
  • n → ∞を押すと、nを64まで2倍ずつ増やします。各行には誤差と、前の行に比べて何分の1になったかが記録されます。

関連項目