您当前的位置:首页 > 计算机 > 编程开发 > Python

从格雷果里到莱布尼兹到约翰梅钦的圆周率计算公式之Python实现

时间:01-07来源:作者:点击数:

1671年,英国天文学家詹姆斯·格雷果里(James Gregory)提出了一个反正切函数的幂级数展开式,即

图片

又已知,

图片

也就是

图片

把x=1带入格雷果里幂级数展开式得到

图片

这就是著名的用来计算圆周率近似值的莱布尼兹公式。

参考代码:

图片

上面的莱布尼兹公式收敛速度非常慢,用来计算圆周率近似值的效果并不是很好,需要计算很多很多很多项才能得到稍微满意的圆周率近似值。

后来有不少学者提出了改进算法,我国清朝数学家曾纪鸿(曾国藩次子)也对此做出过不小的贡献。

1706年英国天文学家约翰·梅钦(John Machin)提出了一个非常巧妙的公式可以精确计算圆周率的任意小数位,

图片

将其使用格雷果里幂级数展开,得

图片

参考代码:

图片

上面程序虽然利用了标准库decimal提供的高精度实数并且设置了很大的小数位数,但仍受到精度的限制,每次计算都存在舍入误差,计算结果仍差强人意。

改写上面的梅钦公式,等号两边同时乘以10的N次方,把实数运算变为整数运算,可以准确计算圆周率任意位小数。

参考代码:

图片
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门