根据印度数学家Srinivasa Ramanujan找到的公式,编写一个函数estimatePi()
估算并返回Pi的值。它应该使用while循环来计算求和项,直到最后一项小于1e-15。 Pi的估算公式如下:
根据拉马努贾姆的估计
(很抱歉,我无法上传图片)
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
我找不到我的错:(。有人可以帮我吗?
最佳答案
您的回答是正确的。浮点数具有problems with accuracy,特别是对于小数点后的大量数字;和计算非精确值时。
从您的答案中可以看到,它已经正确估计了小数点后5位的pi值。
关于python - pyschools主题5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11880131/