![](/img/trans.png)
[英]why does mpmath throw an error when i trying to plug in the Chudnovsky algorithm?
[英]Why does my program for the Chudnovsky algorithm give the wrong result?
我正在嘗試在 python 中編寫 Chudnovsky 算法。 但是,當我運行我的代碼時,它給了我一個非常小的數字(-5.051212624421025e-55),它不是 pi。 我在中學,我不知道任何人可以幫助我。 我究竟做錯了什么?
這是 Chudnovsky 公式的鏈接: https ://levelup.gitconnected.com/generating-the-value-of-pi-to-a-known-number-of-decimals-places-in-python-e93986bb474d
這是我的代碼:
import math
def fact(exi):
memory = exi
for i in range(1, exi):
memory *= i
return memory
k = 10
s = 0
for i in range(0, k):
a = -1^k
b = fact(6*k)
c = (545140134*k) + 13591409
d = fact(3*k)
e = (fact(k))^3
f = (3 * k) + 3/2
g = math.pow(640320, f)
numerator = (a*b*c)
denominator = (d*e*f)
s += (numerator / denominator)
s *= 12
print(1 / s)
這是我更新的代碼:
import math
def fact(exi):
memory = exi
for i in range(1, exi):
memory *= i
return memory
k = 17
s = 0
for i in range(1, k):
a = (-1)**i
b = fact(6*i)
c = (545140134*i) + 13591409
d = fact(3*i)
e = (fact(i))**3
f = (3 * i) + 3/2
g = math.pow(640320, f)
num = (a*b*c)
den = (d*e*g)
s += (num / den)
s *= 12
print(1 / s)
我看到兩個錯誤:
與Wikipedia上顯示的公式進行比較時,看起來您應該使用迭代變量i
(在公式中命名為q ),其中您當前在循環中使用k
。 在您的代碼中, k
是i
的上限。
Python 中的冪運算符是**
,而不是^
(按位異或)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.