我正在做一个练习,要求一个使用莱布尼茨公式逼近 pi 值的函数。这些是维基百科上的解释:
逻辑思维对我来说很容易,但我没有接受过多少正规的数学教育,所以我对第二个最左边的符号代表什么有点迷茫。我试图使代码 pi = ( (-1)**n/(2*n + 1) ) * 4,但返回了 1.9999990000005e-06 3.14159 ...,所以我改用了累加器模式(因为指南中提到的那一章也提到了它们)并且效果很好。但是,鉴于 Python 专注于简单性和使程序尽可能短,我不禁认为它有些做作,并且可能有更好的方法来做到这一点。这是完整的代码:
def myPi(n):
denominator = 1
addto = 1
for i in range(n):
denominator = denominator + 2
addto = addto - (1/denominator)
denominator = denominator + 2
addto = addto + (1/denominator)
pi = addto * 4
return(pi)
print(myPi(1000000))
有谁知道更好的功能吗?
请您参考如下方法:
莱布尼茨公式可以毫不费力地直接翻译成 Python:
>>> steps = 1000000
>>> sum((-1.0)**n / (2.0*n+1.0) for n in reversed(range(steps))) * 4
3.1415916535897934
