モンテカルロ法とは、ランダムな数値を用いて、数値計算を行う手法のことです。
モンテカルロ法は、確率的に求めることが困難な問題や、数式的に解くことが困難な複雑な問題に対して、数値的な解法を提供することができます。
例えば、円周率(π)を求める問題を考えてみましょう。
以下のような図形を用意します。
・1辺が「2r」の正方形
・半径が「r」の円
それぞれの面積は以下のようにあらわすことができます。
※円の面積は便宜上「π」を使っていますが、この時点では値が分かっていないものとしています。
上記の面積より、πは以下のようにあらわすことができます。
πは円の面積と正方形の面積が分かれば求めることが出来そうです。
しかし、今の時点では「円の面積はπを用いない」と求めることができません。
そこで「モンテカルロ法」を用いることとします。
1)正方形の中にランダムに大量の点を落とします。
2)正方形を埋め尽くすほどの点を落としたとき、
【円内に落ちた点の数≒円の面積】
とみなすことができます。
3)つまり、以下のような式が成り立ちます。
4)点の数が多いほど、πの値の精度が高まります。
以上がモンテカルロ法を用いた、πの推定方法となります。
では、実際にPythonでシミュレーションしてみましょう!
このページに添付されてるテキストがコードです。
以下が結果です。
点の数を100~100,000まで増やしてシミュレーションしています。
このように、モンテカルロ法は、ランダムな数値を用いて、問題を解決する方法です。