😶

[ChatGPT]円周率を求めるプログラムをPythonで書いてもらう

2023/02/10に公開

はじめに

円周率を求める方法はいくつかありますが、それぞれ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