モンテカルロ法
一辺が2の正方形の面積を「m」とする。 内接する円は、直径が2なので、r=1、πr^2=πとなる。 これをnとする。 正方形が2x2=4なので、m=4,n=π。 m:n=4:πなので、4*π/4=π、 x2+y2<=1で円の内側か外側かで円周率が近似できる。 ■結果の平均を取ってしまうと、期待している精度を、「結果」ではなく、「式の中」に 入れてしまうことになるので、乱数の回数を10倍づつ増やす。 ▼Cの場合、以下のソースを「test.c」にコピペ。 「gcc -O3 test.c」で出来た「a.out」を実行。 「みその計算物理学」さん、ありがとう。
http://www.geocities.jp/supermisosan/montecarlo.html
初期値は、1千万。比較のため、7千万、7億、70億にすると、 (1千万) : 3.141130 7千万 : 3.141485 7億 : 3.141585 70億 : 3.141591(15分位かかった) ▼C++版の場合、以下のソースを「test.cc」にコピペ。 「system("PAUSE");」はエラーが出るので削除。 「g++ -O3 test.cc -o b.out」で出来た「b.out」を実行 「YuAoki」さん、ありがとう。
http://slashdot.jp/~YuAoki/journal/196582
初期値は70万。 70万 : 3.14116 700万 : 3.14149 7000万 : 3.14159 7億 : int のままでは「overflow」で実行出来ませんでした。 ▼Wikipedia 円周率から引用 π = 3.14159 26535 89793 23846 26433 83279 50288 … http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87 ●使う言語や、アルゴリズム、宣言の型によりますが、 「精度」の意味では、3位までは有効だと考えて良いのではないでしょうか。 ■「C、C++」以外にも様々な言語で簡単に実装できます。 今回は精度を確認することが目的ですので、自分ではプログラムを書きませんでした。 「C、C++」が使えない場合は、以下も参考に。 ▼EXCEL 用 「中野正勝」さん。
http://aero.kouku-k.ac.jp/nakano/IT3/pi_MC.htm
▼web用 「宍戸 輝光」さん。
http://www.sm.rim.or.jp/~shishido/pie.html
一辺が2の正方形の面積を「m」とする。 内接する円は、直径が2なので、r=1、πr^2=πとなる。 これをnとする。 正方形が2x2=4なので、m=4,n=π。 m:n=4:πなので、4*π/4=π、 x2+y2<=1で円の内側か外側かで円周率が近似できる。 ■結果の平均を取ってしまうと、期待している精度を、「結果」ではなく、「式の中」に 入れてしまうことになるので、乱数の回数を10倍づつ増やす。 ▼Cの場合、以下のソースを「test.c」にコピペ。 「gcc -O3 test.c」で出来た「a.out」を実行。 「みその計算物理学」さん、ありがとう。
http://www.geocities.jp/supermisosan/montecarlo.html
初期値は、1千万。比較のため、7千万、7億、70億にすると、 (1千万) : 3.141130 7千万 : 3.141485 7億 : 3.141585 70億 : 3.141591(15分位かかった) ▼C++版の場合、以下のソースを「test.cc」にコピペ。 「system("PAUSE");」はエラーが出るので削除。 「g++ -O3 test.cc -o b.out」で出来た「b.out」を実行 「YuAoki」さん、ありがとう。
http://slashdot.jp/~YuAoki/journal/196582
初期値は70万。 70万 : 3.14116 700万 : 3.14149 7000万 : 3.14159 7億 : int のままでは「overflow」で実行出来ませんでした。 ▼Wikipedia 円周率から引用 π = 3.14159 26535 89793 23846 26433 83279 50288 … http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87 ●使う言語や、アルゴリズム、宣言の型によりますが、 「精度」の意味では、3位までは有効だと考えて良いのではないでしょうか。 ■「C、C++」以外にも様々な言語で簡単に実装できます。 今回は精度を確認することが目的ですので、自分ではプログラムを書きませんでした。 「C、C++」が使えない場合は、以下も参考に。 ▼EXCEL 用 「中野正勝」さん。
http://aero.kouku-k.ac.jp/nakano/IT3/pi_MC.htm
▼web用 「宍戸 輝光」さん。