😶
[ChatGPT]円周率を求めるプログラムをPythonで書いてもらう
はじめに
円周率を求める方法はいくつかありますが、それぞれCharGPTにPythonで書いてもらうことにします。
ChatGPTは以下を提案してくれました。以下はChatGPTの回答です。
1.math モジュールを使用する方法
Python の標準ライブラリには、円周率 (math.pi) の定義が含まれています。これを使用することで簡単に円周率を求めることができます。
pi1.py
import math
print(math.pi)
2.数列法を使用する方法
数列法を使用して円周率を求めることもできます。
pi2.py
def pi_sequence(n):
pi = 0
for i in range(n):
pi += (-1)**i * 4 / (2*i + 1)
return pi
print(pi_sequence(10000))
3.アルキメデスの方法を使用する方法
円に内接する正多角形と円に外接する正多角形の周の長さを計算するアルキメデスの方法を用いて、円周率を求めることができます。以下にPythonで実装する例を示します。
(ChatPGTの回答から、一部変数を変えています。(実行時にエラーが出たため。))
pi3.py
import math
def polygon_perimeter(num_sides, side_length):
return num_sides * side_length
def calc_pi(num_sides, side_length):
polygon_perimeter2 = polygon_perimeter(num_sides, side_length)
return polygon_perimeter2 / 2
def approx_pi(num_sides, precision):
side_length = 2 * math.sin(math.pi / num_sides)
pi = calc_pi(num_sides, side_length)
while abs(pi - math.pi) > precision:
num_sides *= 2
side_length = 2 * math.sin(math.pi / num_sides)
pi = calc_pi(num_sides, side_length)
return pi
print("Estimated value of Pi:", approx_pi(16, 0.001))
print("Actual value of Pi:", math.pi)
このコードでは、初めに正多角形の一辺の長さを求めます。その後、正多角形の周の長さを求めます。この周の長さを使って、円周率を近似します。多角形の辺数を増やすと正確な値に近づくようになります。
4.Monte Carlo シミュレーションを使用する方法
Monte Carlo シミュレーションを使用することで円周率を求めることもできます。
pi4.py
import random
import math
def monte_carlo_pi(points):
inside = 0
for _ in range(points):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
if math.sqrt(x**2 + y**2) <= 1:
inside += 1
return 4 * inside / points
print(monte_carlo_pi(100000))
作成したプログラムは検証が必要ですが、
標準的なプログラムであればChatGPTに聞けば十分な気がしてきました。。。
Discussion