Python 莱布尼茨数列的脚本
Python script for Leibniz number row
我正在尝试在 Python 2.7 中编写简单的脚本来计算 Pi。我对莱布尼茨公式感兴趣:
π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - ( 4/15) ...
所以我将“(4/1) - (4/3)”视为 X,将 1-3-5 视为 y,y+2,y+4....
我写了这个脚本:
def pi():
p = 0.0
y = 1.0
x = 4.0/y - 4.0/(y+2.0)
for i in range(10000):
p = p + x
y += 4.0
print p
pi()
它没有按预期工作;你能解释一下为什么吗?
这个有效:
def pi():
p = 0.0
y = 3.0
x = 4.0 - 4/y
for i in range(5000):
y += 2
x = x + 4/y
y += 2
x = x - 4/y
print x
pi()
如果您想使用 x
和 y
方法,@Ukimiku 的答案有效。
这是使用实际公式的替代方法:
def pi():
p = 0.0
for i in range(10000):
p += 4 * ((-1)**i) / float(2 * i + 1)
print p
对于 range(10000)
这将打印
3.14149265359
我正在尝试在 Python 2.7 中编写简单的脚本来计算 Pi。我对莱布尼茨公式感兴趣:
π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - ( 4/15) ...
所以我将“(4/1) - (4/3)”视为 X,将 1-3-5 视为 y,y+2,y+4....
我写了这个脚本:
def pi():
p = 0.0
y = 1.0
x = 4.0/y - 4.0/(y+2.0)
for i in range(10000):
p = p + x
y += 4.0
print p
pi()
它没有按预期工作;你能解释一下为什么吗?
这个有效:
def pi():
p = 0.0
y = 3.0
x = 4.0 - 4/y
for i in range(5000):
y += 2
x = x + 4/y
y += 2
x = x - 4/y
print x
pi()
x
和 y
方法,@Ukimiku 的答案有效。
这是使用实际公式的替代方法:
def pi():
p = 0.0
for i in range(10000):
p += 4 * ((-1)**i) / float(2 * i + 1)
print p
对于 range(10000)
这将打印
3.14149265359