エクセルVBAを用いた積分の計算(シンプソン法)

資料請求番号:SH43

スポンサーリンク

Excel VBAマクロでシンプソン法を使い、積分計算を実行する。

シンプソン法は手軽に行えてかつ、精度の高い積分の計算アルゴリズムとして多くの工学系学生やエンジニアに支持されています。

本記事では、このシンプソン法をVBAマクロに実装し、積分計算を行いました。
その備忘録を、実際のソースコードと共に記します。

シンプソン法

シンプソン法は積分したい関数を二次関数の集合体と考え、二次関数の積分をm回行うことで、任意の関数の積分ができるようになる。
という思想のもと開発されました。

シママ

シンプソン法の詳細はこちら!
基本から詳しく説明しています!

資料請求番号:TS31 TS38数値計算による積分計算の基本~Simpson法~積分の計算は高校生までは紙とペンを使用し、様々な積分テクニック(置換積分・部分積分など)を駆使して行っていきます。大学の初年度に上がると重積分を学習しますが、これも紙とペンを使って問...
数値計算を使って積分の計算を行う~シンプソン法の解説~ - らい・ぶらり
シママ

今回は、ソースコードが主役なので、シンプソン法の理論に関する詳しい勉強は上のページでお願いします。

シンプソン法 例題

正規分布

ストーク
こないなオマエが説明してくれた、あのシンプソン法やけども、プログラム書いたことあるん?
シママ
もちろん!学生のころから、今も頻繁に使ってるよ!
ストーク
え?どんなん?
シママ
こんな感じのシートを使ってVBAプログラムを走らせるのよ。

ソースコード

シママ
初心者の方はこれを読みながら使ってみてね!
あと、Functionプロシージャが重要な役割を果たしているんで、それについての説明のリンクも貼っておきます!
資料請求番号:SH45Excelマクロの始め方 まとめ本記事では、まだ一度もExcelマクロに触れたことのない人向けに、Excelマクロの始め方とExcelマクロを使用する上での最低限の知識と文法を記したいと思います。マクロを始めようなぁ、シママ、最近・・・っーつか、研...
初めてのExcelマクロVBA - らい・ぶらり
資料請求番号:SH45VBAマクロで自分の関数を定義して自由に呼び出しできるようにするVBAプログラミングを行っていると、何度も同じ式を記述して計算する場面が出てきます。このとき、何度も同じ式を記述すると可読性が悪くなる(複雑な式であれば特に)ので、式の記...
【Excel マクロ VBA】Functionプロシージャの使い方を学んで関数を定義する - らい・ぶらり

/* —-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
/* —————————– */

ストーク
これは・・・正規分布やけんね。

シママ
そうそう!以前、ストークが偏差値の数学的理解について教えてくれたでしょ?得点分布が正規分布になるとして、
偏差値はσが1増えたら10増えるように規格化されているって話。
資料請求番号:TS35偏差値は統計に基づいた指標であるメリークリスマスでございます。世の中の人々が現を抜かしている中、受験生は勉強に勤しんでいるかと思います。センター試験も近づいてきましたね。今回は、偏差値のお話をしたいと思います。偏差値。それは受験...
偏差値の計算方法~統計学から見た偏差値の考え方~ - らい・ぶらり
ストーク
ああ。
シママ
あれを聞いて作ってみたの。
ストーク
ほう。正規分布はな~。身近にある積分計算やけど、手計算で解くとメッチャめんどくさか問題の代表例たいね。そしたら、これがちゃんと計算できるはずやけんな。

シママ
うん!もちろん!この状態で実行してみてよ!
ストーク
平均0、分散1、つまり(μ2)= (0,1)としたとき、μ-2σ~μ+2σの範囲、つまり-2~2の範囲で積分しよったら・・・

ストーク
お~!確かに0.955になった。凄か~!
シママ
えへへ~。
ストーク
お、しかも同時にグラフができるようになってん、しかも、計算式んとこをそのままFuctionプロシージャに貼りつけよったら、自由自在に好きな式ば計算できると。
あと、試行回数の表示がされてバグがあったとき、わかりやすかね。

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は「Alt+F11」で立ち上がるよ。
ストーク
ほー。便利。
シママ
やった!ストークの「便利。」いただきました!!
シママ
ところで、あの東大理Ⅲの学生はなんで即答できたのかな?やっぱ頭の中にグラフがあったのかなぁ?
ストーク
それな。俺もそれやと思う。おそらく思考回路としては

ストーク
とかやなくて

ストーク
これの面積は2。
ストーク
やと思うで。
シママ
やっぱ?
ストーク
まぁ、俺とオマエがそう思うとるだけやもしれんけどな。あるいは膨大な計算経験で記憶してしもうたか。
いずれにしろ、膨大な計算経験と積分の基礎基本がなってないとできんことやから、そこはさすが東大理Ⅲやと思うたいね。

おまけ② 友蔵の頭の体積


出典:はなおさん 「積分サークルの入部テストがヤバい。」

まとめ

今回はシンプソン法による積分の計算をVBAでやってみましたという内容の備忘録でした。

shimakei8364

Recent Posts

  • PC/プログラミング

ブログ飯について ~ブロガーは稼げるのか?~

資料請求番号:PH ブログで収入を得るこ…

3年 ago
  • 写真/旅行

花の撮り方(可愛く撮る5つのコツを紹介)

資料請求番号:PH15 花を撮るためのレ…

4年 ago
  • English ver.

【Windows10】How to change file extension?

Display the file ext…

5年 ago
  • 写真/旅行

【観光 買い物】おすすめの秋葉原電気街の歩き方マップ

資料請求番号:PH83 秋葉原迷子卒業!…

5年 ago
  • 化学/物理

【どうやってはかる?】富士山の体積の計算方法

資料請求番号:TS31 富士山の体積をは…

5年 ago
  • 化学/物理

数学を使った美しい曲線のグラフィック

資料請求番号:TS11 エクセルを使って…

5年 ago