编写一个函数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