理系の若者が思ったことを書くブログです。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
例えば、図のように1辺が1の正方形の中に半径1、
中心角90°の扇形が接している状況を考えます。
この扇形の面積と正方形の面積の比は、いうまでもなく
1×1×π×90/360 : 1×1 = π/4 : 1になるはずです。
そこで、図の黒い点のように正方形内部に任意の座標(x,y)をとることを考えます。
この任意の座標(x,y)が円の中に存在する確率はどうなると思いますか?
実は、(x,y)が完全にランダムであれば、π/4の確率で円内部に存在するでしょう。
そこで、任意の点(x,y)を統計的にたくさんとり、
円内部の点の数を数えれば、π/4を計算することが可能です。
このような方法をモンテカルロ法といいます。
実際のモンテカルロ法のプログラムを下記に記します。
Sub main()
Dim X, Y, D As Single
Dim i, counter As Long
Dim ob1 As Object
Set ob1 = Application.ThisWorkbook.Worksheets("Sheet1")
Randomize
counter = 0
For i = 1 To 10000000
X = Rnd
Y = Rnd
D = X ^ 2 + Y ^ 2
If D < 1 Then
counter = counter + 1
End If
Next i
ob1.Cells(1, 1).Value = "円周率"
ob1.Cells(1, 2).Value = counter / i * 4
End Sub
計算結果⇒3.14132568586743
10000000点レベルで非常に長い時間計算してもこんな精度ですが、
モンテカルロ法は円の面積以外にも応用できますので、
積分の方法として知っておくには有意義でしょう。
PR
Comment