ChatGPTo1第一个测试例子 计算Π小数点后20位

文摘   2024-09-15 07:55   云南  


4o代码

要自己计算π的值,可以使用一种数值方法来逼近,比如莱布尼茨级数(莱布尼茨级数)或者更高效的迭代算法之一,如贝利-波尔温-普劳夫公式(BBP)公式)。

这里使用莱布尼茨级数来近似计算π的小数点后20位

萊布尼茨公式

π4=113+1517+19\frac{\pi}{4} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \cdots

def calculate_pi(terms):
    pi_estimate = 0.0
    for k in range(terms):
        pi_estimate += ((-1) ** k) / (2 * k + 1)
    return pi_estimate * 4

# 设置计算的项数
terms = 1000000  # 项数越多,精度越高

# 计算π
pi_value = calculate_pi(terms)

# 输出π小数点后20位
print(f"{pi_value:.20f}")

结果:

3.14159165358977432447


o1代码

from decimal import Decimal, getcontext

def calculate_pi(n):
    getcontext().prec = n + 5  # Set precision higher to ensure accuracy
    pi = Decimal(0)
    k = 0
    while True:
        # Bailey–Borwein–Plouffe formula for Pi
        new_term = (Decimal(1) / (16 ** k)) * (
            Decimal(4) / (8 * k + 1) -
            Decimal(2) / (8 * k + 4) -
            Decimal(1) / (8 * k + 5) -
            Decimal(1) / (8 * k + 6)
        )
        pi += new_term
        if abs(new_term) < Decimal('1e-' + str(n)):
            break
        k += 1
    pi_str = str(+pi)
    return pi_str[:n + 2]  # Include '3.' plus n decimal places

# Calculate Pi to 20 decimal places
pi_20_digits = calculate_pi(20)
print(pi_20_digits)

计算结果:3.14159265358979323846

正确的答案




GISAI
ArcGIS培训和二次开发
 最新文章