トピックス プログラム、シミュレーション 数学

飛び回るダーツと円周率

投稿日:

モンテカルロ法円周率を求めるプログラムをscratchで作成します。モンテカル法については「円の内か外か? 円周率を求める」でも取り上げました。

資料はこちら → scratchその3

p.1 前回のブログの復習です。xy座標の正方形とそれに接する円を描きます。(円の面積)/(正方形の面積)比の4倍が円周率です。乱数で発生させた座標の数について、(円内にある数n)と(正方形内にある数N)の比をとると、回数が多いほど上述の面積比に漸近していきます。 そこで、乱数をダーツに置き換えて、赤い円正方形内当たったダーツの数を数えて比をとることにします。

p.2 ①scratchの右下の背景をクリック、②一番下に「xy-grid」を選択すると、ステージに座標が現れます。③スクリプトの筆を選択して、コスチュームを表示させます。④右下の拡大鏡で拡大、⑤色を黒にし、⑥筆で中央にチョンと印をつけます。

p.3 ⑦変数を選んで、「ダーツの合計本数」「現在の本数」「当たり」を入力して3つの変数を作成します。

p.4 左のようにブロックを繋げて作成ください。一番下のブロックは込み入っていますので、右側の上から組み合わせていってください。

p.5 「編集クリック→ターボモードにする」で実行すると、所要時間が4秒円周率3.2264が求まるのに対して、「編集クリック→ターボモードを解除する」で実行すると22分4秒の所要時間かかったものの、円周率は3.2261とターボモードとあまり変わらない精度となりました。 変数の前の□にレ点を入れると、ステージの左上に本数を表示します。

いかがでしたか? 算出精度は悪いですが、モンテカルロ法が実行中、黒い点があちこち飛び回る様子を見れるのは面白いと思います。

-トピックス, プログラム、シミュレーション, 数学

Copyright© 進化するガラクタ , 2021 All Rights Reserved Powered by STINGER.