この記事の前半では、シンプソンの公式で数値積分する方法を解説します。後半では、VBA で同原理に基づくプログラム Simpson_Integral() を実装し、具体的な計算を行なってみます。
シンプソンの公式(Simpson’s rule)
ある曲線上の 3 点
を通る放物線と
放物線を
となるので、式を整理すると
となります。放物線は
を通るので、
が成り立ちます。そこで
となっていることがわかります。よって面積は
と計算できます。今度は下図のように曲線の区間
1 区分の幅は
で与えられます。そして帯を 2 個ずつまとめて
という弧をもつ
とおいて、それぞれの帯の面積に先ほどの放物線近似を適用すると
となります。これがシンプソンの公式とよばれる積分近似式です。
シンプソンの公式を使って、有名なガウス積分
を計算するプロシージャを載せておきます。
'[VBA]シンプソンの公式によるガウス積分の近似計算 Sub Simpson_Integral() Dim a As Double, b As Double Dim h As Double, s As Double Dim m As Integer, k As Integer '区間[a,b]の入力を促します a = Application.InputBox("左端を入力してください", Type:=1) b = Application.InputBox("右端を入力してください", Type:=1) If a > b Then MsgBox "数値が正しくありません" Exit Sub Else 'mを指定 m = 10 '1 区分の長さ h = (b - a) / (2 * m) '帯を足し合わせる For k = 0 To m - 1 s = s + exp(-(a + 2 * k * h) ^ 2) _ + 4 * exp(-(a + (2 * k + 1) * h) ^ 2) _ + exp(-(a + (2 * k + 2) * h) ^ 2) Next k s = s * h / 3 MsgBox s End If End Sub
Simpson_Integral() を実行すると端点
エクセルや数学に関するコメントをお寄せください