【发布时间】:2020-11-20 22:51:06
【问题描述】:
当我学习数学时,我读到了名为 Leibniz Series for Pi 的系列:
所以我为它制作了一个程序,对这个系列的 n 项求和:
def leibniz(n):
pi = 0
for i in range(1,n+1):
if(i % 2 == 0):
pi -= 1 / (2*i - 1)
else:
pi += 1/(2*i - 1)
pi = 4 * pi
return pi
这段代码有效,但问题是它收敛到 Pi 非常缓慢。
- 所以我读到了不同的系列加速,基本上对我来说最好的是Euler Acceleration
- 收敛缓慢是因为我的版本是交替序列,即包含 (-1)^n。但我更困惑如何编程。
编辑:
我了解了香克斯变换并对其进行了编程
def accelrate(n,depth):
if depth == 1:
a = lebniez(n + 1)
b = lebniez(n)
c = lebniez(n-1)
return (a*c - b*b)/(a + c - 2*b)
a = accelrate(n + 1,depth - 1)
b = accelrate(n,depth - 1)
c = accelrate(n-1,depth - 1)
return (a*c - b*b)/(a + c - 2*b)
所以 htis 所做的是它递归地应用 Shanks 变换并继续加速系列。但现在的问题是,由于递归,它非常慢,如果增加深度,精度并没有提高。
这就是香克斯变换的低效吗
【问题讨论】:
-
查看这个比使用普通 Euler 更有趣、更快的方法:stackoverflow.com/questions/19550135/pi-calculation-in-python/…
-
就写吧。
**是电力运营商。 -
你好 Tim Peters 我很困惑你是怎么编码的,因为它有点令人困惑,因为我是编程新手
-
要正确归因,您没有“想出”Leibniz's approximation for pi,它是根据 14 世纪的作品在 17 世纪出版的。
-
谢谢 smci 我的英语很弱,但我不是那个意思
标签: python trigonometry pi approximation taylor-series