編寫一個函數estimatePi()
來根據印度數學家Srinivasa Ramanujan找到的公式來估計和返回Pi的值。它應該使用while循環來計算總和的項,直到最後一項小於1e-15。估計皮下面的公式給出: 按Ramanujam的估計pyschools主題5
(對不起,我無法上傳圖片)
def estimatePi():
import math
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
k=0
final=0
pi=0
while pi<1e-15:
a=factorial(4*k)
b=(1103+26390*k)
c=factorial(k)
d=c**4
e=396**(4*k)
f=2*math.sqrt(2)/9801
final+=(a*b*f)/(d*e)
k+=1
pi=1/final
return pi
和,我的問題是這樣的: 預期的答案是= 3.14159265359 我的答案是= 3.14159273001
我無法找到我的錯:(。任何人都可以在這方面幫助我嗎?
有一個'math.factorial()'函數可以使用。另外,我建議你使用整數進行計算,並儘可能延遲轉換爲浮點 - Python對於這些任務的大整數沒有問題。另一方面,浮點是...浮點 - 廢話精確和數學計算。 – hochl 2012-08-09 09:18:43
謝謝,但我又得到了同樣的答案:( – Fasna 2012-08-09 09:33:01