この記事の前半では、シンプソンの公式で数値積分する方法を解説します。後半では、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() を実行すると端点
エクセルや数学に関するコメントをお寄せください