資料請求番号:SH43
シンプソン法は手軽に行えてかつ、精度の高い積分の計算アルゴリズムとして多くの工学系学生やエンジニアに支持されています。
本記事では、このシンプソン法をVBAマクロに実装し、積分計算を行いました。
その備忘録を、実際のソースコードと共に記します。
シンプソン法は積分したい関数を二次関数の集合体と考え、二次関数の積分をm回行うことで、任意の関数の積分ができるようになる。
という思想のもと開発されました。
シンプソン法の詳細はこちら!
基本から詳しく説明しています!
今回は、ソースコードが主役なので、シンプソン法の理論に関する詳しい勉強は上のページでお願いします。
/* —-Simpson Method———- */
Public mu, sigma, pi As Double
Sub simpson()
Dim a, b As Double
Dim m As Double
Dim h As Double
Dim S As Double
Dim k As Integer
‘Calculation properties
a = Cells(1, 3)
b = Cells(2, 3)
m = Cells(3, 3)
h = (b – a) / (2 * m)
Cells(4, 3) = h
‘Constants
mu = Cells(5, 3)
sigma = Cells(6, 3)
pi = Cells(7, 3)
‘ZeroSet
S = 0
Cells(2, 5) = a
Cells(2, 6) = F1(a)
Cells(2, 7) = S * h / 3
‘*********roop*********
For k = 1 To m
‘Simpson roop
S = S + F1(a + (2 * k – 2) * h) _
+ 4 * F1(a + (2 * k – 1) * h) _
+ F1(a + 2 * k * h)
‘Graphic roop
Cells(k + 2, 5) = a + 2 * k * h
Cells(k + 2, 6) = F1(a + 2 * k * h)
Cells(k + 2, 7) = S * h / 3
‘Calculation Condition
Cells(11, 2) = k
Cells(11, 4) = m
‘Result
Cells(13, 3) = S * h / 3
Next k
‘*********roop end*********
End Sub
Function F1(ByVal x As Double) As Double
F1 = (2 * pi * sigma) ^ (-0.5) * Exp(-(x – mu) ^ 2 / (2 * sigma))
End Function
/* —————————– */
Function F1(ByVal x As Double) As Double
F1 = (2 * pi * sigma) ^ (-0.5) * Exp(-(x – mu) ^ 2 / (2 * sigma))
End Function
いやぁ~。これは助かるよ!ありがとう!
いえいえ~!!
このVBAのソースコードを使って、関数の積分が解けると思うから、ぜひコピペして色々試してみてね!
なぁなぁ。この動画知りよるん?
出典:はなおさん 「東大生の店員に理系風に注文したら、賢すぎて返り討ちにされました。東大理三恐るべし、、、」
積分サークル主催のイベントについて。3:45あたりから。
出典:はなおさん 「YouTubeバレて阪大に呼び出されました。。。」
当たり前じゃない!このワタシがちょっと関数形変わっただけで使えなくなるプログラム書くと思う?
出典:はなおさん 「積分サークルの入部テストがヤバい。」
今回はシンプソン法による積分の計算をVBAでやってみましたという内容の備忘録でした。