【課題】
モンテカルロ法を用いて円周率を求めよう。試行を繰り返す回数を
増やすことで円周率の近似値がどのように変化するかも調べてみよう。
増やすことで円周率の近似値がどのように変化するかも調べてみよう。
【考察】
数式モデル
[四分円の面積]:[正方形の面積]=π/4:1
多数の点を任意にとったとすると,左辺の比は,
それぞれの図形内の点の数の比に等しくなる。
[四分円内の点の数]:[正方形内の点の数]=π/4:1
∴ π=4×[四分円内の点の数]/[正方形内の点の数]
この関係からπの近似値を得ることができる。
多数の点を任意にとったとすると,左辺の比は,
それぞれの図形内の点の数の比に等しくなる。
[四分円内の点の数]:[正方形内の点の数]=π/4:1
∴ π=4×[四分円内の点の数]/[正方形内の点の数]
この関係からπの近似値を得ることができる。
変数一覧
正方形内の点の数
四分円内の点の数
点の座標
点の原点からの距離
円周率の近似値
四分円内の点の数
点の座標
点の原点からの距離
円周率の近似値
:point
:inside
:x,y
:distance
:pai
:inside
:x,y
:distance
:pai
[DNCLの演算子について]
・加減乗除の四則演算 「+」 「-」 「*」 「/」
・整数の乗除 商(整数)「÷」 余り「%」
・整数の乗除 商(整数)「÷」 余り「%」
例:
11÷4*4 → 8
12÷4*4 → 12
13÷4*4 → 12
12÷4*4 → 12
13÷4*4 → 12
14÷4*4 → 12
15÷4*4 → 12
16÷4*4 → 16
・べき乗 「**」 例:5**2(=52)
15÷4*4 → 12
16÷4*4 → 16
【DNCL】
inside = 0
point を 1 から 1000 まで 1 ずつ増やしながら繰り返す:
│ x = 乱数()point を 1 から 1000 まで 1 ずつ増やしながら繰り返す:
│ y = 乱数()
│ distance = x * x + y * y
│ もし distance <= 1 ならば: #点が四分円内にあるとき実行
│ ⎿ inside = inside + 1
│ もし point == point ÷ 100 * 100 ならば: #point の 100 とびに実行
│ │ pai = 4 * inside / point
⎿ ⎿ 表示する("点の総数",point,":円周率の近似値",pai)
│ ⎿ inside = inside + 1
│ もし point == point ÷ 100 * 100 ならば: #point の 100 とびに実行
│ │ pai = 4 * inside / point