如何计算Pi?python

时间:2024-10-10 11:47:48
def calculate_pi(iterations):
    pi = 0
    for i in range(iterations):
        term = (-1) ** i / (2 * i + 1)
        pi += term
    pi *= 4
    return pi
# 设置迭代次数
iterations = 1000000
estimated_pi = calculate_pi(iterations)
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
def power(x, n):
    if n == 0:
        return 1
    else:
        return x * power(x, n - 1)
def sin(x):
    # 使用泰勒级数展开计算sin(x),这里只计算到第5项
    x = x % (2 * estimated_pi)  # 将x限制在[0, 2π]范围内
    sum_sin = 0
    for i in range(5):
        term = power(-1, i) * power(x, 2 * i + 1) / factorial(2 * i + 1)
        sum_sin += term
    return sum_sin
def polygon_approximation(n):
    # 计算正n边形的边长
    side_length = 2 * sin(estimated_pi / n)  # 使用π的近似值
    return side_length
def estimate_pi(precision=0.000001):
    n = 10000  # 初始多边形边数,可以选择其他正多边形
    while True:
        current_side_length = polygon_approximation(n)
        next_side_length = polygon_approximation(n + 1)
        if abs(next_side_length - current_side_length) < precision:
            break
        n += 1
    return n * current_side_length / 2
print("Pi:", round(estimate_pi(),5))