圆周率公式(有哪些计算圆周率的神奇公式?)
说起圆周率π,很多人就想到祖冲之老爷子的割圆术。
说实话,祖大人也挺无奈的,从我们小学就开始割圆,一直割到大学还在割。
但割圆术只适合手算,如何用电脑算π呢?
泰勒展开
泰勒展开在科学计算中简直有着匪夷所思的变态威力。
之前我有一篇文章泰勒为何要展开? 泰勒公式有什么神奇作用?介绍了什么是泰勒展开,它可以把复杂函数转换成加减乘除,比如sinx:
之所以要展开,是因为通用计算机本质上只能计算加减乘除。
用泰勒展开计算π
首先想到的思路就是,反三角函数,根据定义有:
那么,接下来的问题就是,
如何计算arctan(1)
有人说,直接调用C语言库函数atan(double,double)不就行了。
确实,这可以完成计算,然而,这是一种令人不齿的开挂行为,就好像我问怎么跑完马拉松,你说你开车一溜烟就跑完了一样。
库函数是别人写好的,我们现在是思索如何实现计算,而不是考虑如何调用。
至此,我们只好请出祖传配方,把arctan(x)进行泰勒展开:
然后,令x = 1,得到:
格雷戈里-莱布尼茨公式
它被称为莱布尼茨级数,也被称为格雷戈里-莱布尼茨级数,用以纪念莱布尼茨同时代的天文学家兼数学家詹姆斯·格雷戈里。
看起来很吊是不是······
但是啊但是,还不够吊,因为问题还没完:
这个级数收敛极慢。
比如,算到+4/9,也就是前五项,结果仅为3.3396,误差有0.2之多。
它要到算500000项之后,才会精确到小数点后五位:
就算电脑也算得太累了。
何况莱布尼兹(1646年7月1日-1716年11月14日)当年是没有电脑的!
加快收敛
于是,人们尝试改进,希望能快点计算。
英国数学家梅钦在1706年用上面的级数,发掘了一个可以快速收敛的公式:
配合上面arctan(x)泰勒展开,梅钦依据此公式(没有电脑),把圆周率计算到小数点后一百多位。
英国数学家威廉·谢克斯花15年的时间以此计算到小数点后707位,不过在第528位时出错,因此后面的都不正确了。
微微杯具就是了。
神奇公式
现代有了电脑,我们希望更快的收敛速度,因此科学家在寻找新的级数。
历史总是留给吊人的,也总是会生产一些吊人的。
比如:
拉马努金公式
这玩意被称为拉马努金公式,是印度科学家拉马努金发明的。
第一位用拉马努金公式计算π并取得进展的是比尔·高斯珀,他在1985年计算了小数点后一千七百万位。
收敛再快一点?还有楚德诺夫斯基公式:
楚德诺夫斯基公式
楚德诺夫斯基兄弟于1989年算得π小数点后10亿(10?)位,法布里斯·贝拉于2009年算得2.7千亿(2.7×1012)位,亚历山大·易和近藤滋在2011年算得一万亿(1013)位。