9. 数値積分

はじめに

有限区間あるいは無限区間における定積分の近似計算法を数値積分法 (numerical intergation) という. または 求積法 (quadrature) ということもある.

実際に数値積分の計算を行う際には, 積分を計算する関数 (被積分関数) の利用可能な値が, とびとびの点 (等間隔の場合と不等間隔の場合がある) におけるデータとして与えらる場合と, 任意の点における関数値が計算できるサブルーチンとして与えられる場合がある. それぞれの場合で使用できる公式やプログラムが異なるが, ここでは基本的には後者を想定する. 前者については「6. 補間法」で説明予定のスプライン補間が参考になる.

次の積分を数値計算で求める.
\[
I = \int_{0.2}^1 e^x cos(x) dx = 1.1582
\] 最も簡単な方法は, 積分範囲の下端と上端を結ぶ直線で囲まれる台形の領域で近似する方法である. 計算式は次のとおりである.
\[
I = \frac{b – a}{2}(f(a) + f(b))
\] となり, 台形則とよばれる.

次に, もっと精度をよくするために a と b に加え中点 x1 = (a + b)/2 の 3 点を使って, 積分範囲の下端と上端を結び中点を通る放物線で囲まれる領域で近似する方法が考えられる. 式は次のとおりである.
\[
I = \frac{b – a}{6}(f(a) + 4f(x1) + f(b))
\] これはシンプソン則とよばれる.

詳細は後述するが, a と b の間の N 点を通るルジャンドル多項式で補間する高精度の方法があり, 計算式は次のとおりである.
\[
I_N = \frac{b – a}{2} \sum_{i=1}^N w_i f(\frac{a + b}{2} + \frac{b – a}{2} x_i)
\] これは (N 点) ガウス公式とよばれる.

以上を図で示すと次のようになる. ただし, ガウス公式は N = 2 の場合を示した.

積分区間を複数の小区間に分割し, その小区間ごとに公式を適用するものを複合公式という. 例えば, 積分区間を下図のように 4 分割しそれぞれに台形則を適用すれば単体の台形則より高精度が期待できそうである.

これを複合台形則というが, 台形則の場合には実用上複合公式を使うのが普通であるためこれを単に台形則ということが多い (シンプソン則も同様に複合シンプソン則を指すことがある). m 分割したときの複合台形則の計算式は次のようになる.
\[
I_m = h(\frac{f(x_0)}{2} + f(x_1) + f(x_2) + \dots + \frac{f(x_m)}{2}), \space h = \frac{b – a}{m}
\] h は小区間の幅である. ここでは h を一定としているが小区間ごとに可変にする方法も考えられる.

これらの公式を使って実際に最初にあげた例題を計算してみると次のようになった.

公式 計算値 S 誤差 計算量の目安
台形則 1.0663 -7.9% 2
シンプソン則 1.1575 -0.06% 3
ガウス公式 (N = 2) 1.15862 0.04% 2
複合台形則 (m = 4) 1.1523 -0.5% 5

計算量が 3 のシンプソン公式や計算量が 5 の複合台形則よりも, 計算量が 2 のガウス公式のほうが精度がよい.

一般的に, 数値積分においては積分区間 [a, b] を n 分割する適当な分点列 \(a = x_0 < x_1 < \dots < x_n = b\) をとり, 分点 (標本点ともいう) における関数値\(f(x_i)\) の重み付きの和を積分の近似値とする次式が使用される. \[ I = \int_a^b f(x)dx \simeq I_n = \sum_{i=0}^N w_i f(x_i) \] ここで \(w_i\) は \(x_i\) における重みである. なお, 両端点を含まず \(a < x_1 < x_2 < \dots < x_N < b \) となる N 個の分点を使用する公式もある. このように, 分点 \(x_i\) において関数値 \(f(x_i)\) をとる補完多項式を求めその積分という形で上の公式を作るものを補間型積分公式とよぶ. 上の台形則とシンプソン則は補間型積分公式の代表的な例である.

数値積分を効率よく行うために種々の技法とこれらの公式を組み合わせて使うことも多い. 例えば, 加速法と台形則を組み合わせるロンバーグ積分, 変数変換と台形則を組み合わせる変数変換型積分公式, 複合公式 (区間分割) と高次公式を組み合わせる適応自動積分などがある.

目次

9.1 数値積分の基本解法 (基本的な積分公式, ロンバーグ積分)
9.2 変数変換型積分公式, 適応自動積分
9.3 実用プログラムのベンチマーク


本章の参考文献

[1] Forsythe他「計算機のための数値計算法」科学技術出版社 (1978)
[2] 森正武「FORTRAN77数値計算プログラミング(増補版)」岩波書店 (1987)
[3] 森口繁一「数値計算工学」岩波書店 (1989)
[4] 杉原正顕、室田一雄「数値計算法の数理」岩波書店 (1994)
[5] 森正武「数値解析 (第2版)」(2002) 共立出版
[6] Piessens, de Doncker-Kapenga, Uberhuber, Kahaner, “QUADPACK: A subroutine package for automatic integration”, Springer-Verlag. (1983)
[7] Ooura and Mori, “The double exponential formula for oscillatory functions over the half infinite interval”, J. Comput. Appl. Math., 38 (1991), 353-360.
[8] D. P. Laurie, “Calculation of Gauss-Kronrod quadrature rules”, Mathematics of Computation, Vol.66 No.219 (1997).
[9] Ooura and Mori, “A robust double exponential formula for Fourier-type integrals”, J. Comput. Appl. Math., 112 (1999), 229-241.