こんにちは〜小学生の頃円周率100桁暗記してた…ららぽてすらです!
今回は、円周率 (π) を求める方法について楽しく説明していきたいと思います🌟
円周率は円の円周と直径の比であることがわかっていますが、それをどのように計算するのでしょうか?
2つ方法を紹介し、その後に付録でPythonのソースコードも示していきます!一緒に楽しく計算しましょう♪🧮
【具体例】
(a) アルキメデスの方法
- 円に内接する正六角形と外接する正六角形を考えます。
- それぞれの正六角形の周長を求めます。
- 内接する正六角形の周長を円の直径で割り、外接する正六角形の周長を円の直径で割ります。
- これらの値の平均をとると、円周率の近似値が得られます。
(b) モンテカルロ法
- 半径1の円を考え、正方形の一辺の長さを2とします。
- ランダムに点をプロットし、その点が円の内部にあるかどうかを判断します。
- 点が円の内部にある割合を求め、それに4を掛けると、円周率の近似値が得られます。
それでは、上記の方法をPythonで実装してみましょう☺️
(a) アルキメデスの方法
import math
def archimedes_pi_approximation(sides):
inner_radius = 1
outer_radius = 1 / math.cos(math.pi / sides)
inner_polygon_perimeter = sides * (2 * inner_radius * math.sin(math.pi / sides))
outer_polygon_perimeter = sides * (2 * outer_radius * math.tan(math.pi / sides))
lower_bound = inner_polygon_perimeter / (2 * inner_radius)
upper_bound = outer_polygon_perimeter / (2 * outer_radius)
pi_approximation = (lower_bound + upper_bound) / 2
return pi_approximation
sides = 100000
print("円周率の近似値 (アルキメデス):", archimedes_pi_approximation(sides))
(b) モンテカルロ法
import random
def monte_carlo_pi_approximation(points):
inside_circle = 0
for _ in range(points):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
if x ** 2 + y ** 2 <= 1:
inside_circle += 1
pi_approximation = 4 * (inside_circle / points)
return pi_approximation
points = 1000000
print("円周率の近似値 (モンテカルロ法):", monte_carlo_pi_approximation(points))
【まとめ】
円周率を求めるためのPythonのソースコードを例にあげてみました♪
アルキメデスの方法では多角形の辺の数を増やすことで、モンテカルロ法では点の数を増やすことで、より精度の高い円周率を得ることができます。ぜひ、このコードを試して、楽しんで円周率を求めてみてください🌟
※コード利用は、自己責任でお願い致します🤲
【ヤーマン公式】塗った瞬間、ハリに満ちた目もとへ。抗シワ臨床試験済の目もと専用美容液 (YA-MAN) メディリフト アイセラム 価格:6,160円 |
《2000円クーポン配布中》 ヤ−マン アセチノ5Dデザイニングクリーム 35g ボディクリーム 美容クリーム スキンケア アセチノクリーム アセチノ美容クリーム 価格:3,980円 |