モンテカルロ法

1. シミュレーション(simulation)とは

 シミュレーションという言葉自体は,現在だれもが使う言葉となっている.

(注:「シュミレーション」 と間違えている人が時々いるが,とても恥ずかしい)

 もともとの英語では,「…の真似をする」という意味から,現在では軍事・経済・政治・
物理など様々な現象にたいしてモデルを構築し,コンピュータによる模擬実験を行い,
変化を予測することを指す言葉となった.

 通常は,理論式がわからない,あるいは理論式があっても複雑すぎて解くことができ
ないような自然現象一般に対して,その現象をどうしても解きたいときにシミュレーション
手法を用いる.例えば,ビル崩壊のメカニズムの解析など,複雑な物理現象がどのよう
に発生したかを推測するために用いたりする.

 シミュレーションといえども,対象とする現象を正しく真似できなければ,間違った答
を導いてしまう.シミュレーションを行う際には,シミュレーションに用いる入力が適切
か,その入力を処理するモデルが適切か,十分検討する必要がある.

1 入力→変換(モデル)→出力

2. モンテカルロ法とシステマティック法

 シミュレーション手法は,大きくモンテカルロシミュレーションとシステマティックシミュ
レーションに分けることができる.他にも数値シミュレーションか非数値シミュレーショ
ンかなどいくつか分類の切り口があり,また実際に用いられる手法はこれらを巧みに
組み合わせて使うことも多い.ある手法を単純に分類することはできない場合もある.

 シミュレーション手法の中でも特に有名なモンテカルロ法とは,シミュレーション対象の
現象に対して,その入力に大量の乱数を十分与えて出力値を観測することで,その現象
を確率的に解いてみる手法である.乱数を用いることから,賭け事の街として有名な
モナコの都市モンテカルロの名がつけられた.乱数は,シミュレーション対象の自然現象
への入力として最もふさわしい確率分布,例えば一様分布など,に従う必要がある.
 それに対してシステマティック法では,乱数は使わずに,決定的に(ただ一回の計算で)
解を求める.

例 円周率を求める

 モンテカルロシミュレーションの説明によく使われる例として,円周率の計算がある.

2 円と正方形の面積比

円の面積はπ×r×rである.その円に外接する正方形の面積は4×r×rである.ここで
正方形の面積を基準としてこの円との面積比をaとすると a = (π×r×r)/(4×r×r)となる.
 この式を変形すると,

π=4×a

のような式が得られる.つまり,なんとかしてaの値さえ推定できれば,この式から円周率を
推定できる.

モンテカルロ法を使ってaの推定を行う場合は,次のように考える.

 図2のランダム(でたらめ)な場所に点をたくさん打つとする.例えば全部でN個の点を
打ったとして,その中で円の中に打たれた点の数を数える.これをnとする.Nを十分大き
くしていけばnとNの比は,円と正方形の面積の比に近づくはずである.つまりあるNに対し
て実際にnの値を測定することで

a = n/N

としてaを推定することができる.

####################

余談

一方,システマティック法の場合は,次のように考える.モンテカルロ法と異なり,乱数を
用いない.この場合は,ランダムな位置に点を打つのではなく,正方形の中をきっちり格子
上にわけて,点を打つ.つまりN個の点を打つ場合は,1辺を√N個に分けて桝目を作る.
あとはモンテカルロ法の場合と同様に,円内の点の数を数え,面積比n/Nを計算する.

余談ここまで

#####################

3 モンテ カルロシミュレーションによる円と正方形の面積比の求め方

3. 演習課題

モンテカルロ法に従って,円周率を求めよ.中心の座標を(0,0)として半径1の円と
それに外接する1辺が2の大きさの正方形を考えた場合の手順を示す.これに従うこと.

(1) シート上に[-1,1]の範囲の乱数を2組10個づつ,計20個生成せよ.

  ヒント: 乱数を生成するExcelの関数がある.ヘルプを活用して関数を探すこと.
  ヒント: [-1,1]の範囲の乱数は,0から2の乱数を生成し,1を引けば作ることができる.

(2) 上記2組の乱数を(x,y)として10個の座標だと考える.
その10個の座標中に,中心(0,0),半径1の円の中の個数を数えよ.
この円の式は x×x + y×y = 1 である.

  ヒント: if関数を使って(x,y)が円の中かどうか判定し,TRUEかFALSEを値とせよ.
  ヒント: あるセル範囲の中の,特定の値(例えばTRUE)の数を数えるExcel関数がある.

(3) 円の面積と,円に外接する正方形の面積の比 a を求めよ.

  ヒント: 円内に入っている数と,全部の比を求める.上記の説明のところを参照.

(4) 円周率を求めよ.

  ヒント: 上記の説明のところにずばり求め方が書いてある.

(5) 乱数の数を50,100,500,1000,5000,10000と順次増やして,同様に円周率を求めよ.

(6) 乱数の数と,求めた円周率のグラフを作成せよ.

  ヒント: 徐々に3.141592…に近づく数をグラフにする場合,グラフの種類には何が
が適切か.

(7) 自分の考察に必要な,その他の計算.