根据印度数学家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/

10-13 09:28