正面教材分享 http://blog.sciencenet.cn/u/wdlang 70%的以色列人是无神论者,不过他们都相信上帝给了他们那块土地。这个世界经不起思考

博文

割圆之术------祖冲之是如何算圆周率的? 精选

已有 6978 次阅读 2017-10-20 10:07 |个人分类:物理学史|系统分类:教学心得

南北朝时期的数学家祖冲之把圆周率算到了7位有效数字,这是中国古代数学的一座高峰。

这个记录保持了数百年才被在撒马尔干工作的穆斯林数学家阿尔-卡西(al-kashi)打破,他获得了16位有效数字。

据说祖冲之采用的是刘徽发明的割圆术,就是用内接正N边形接近圆周,取正N边形的周长为圆周长之近似。这大概也是阿基米德的做法。用现代的观点看,他们考虑的是数列

很显然,这个数列单调增,并且以pi为极限。问题是如何从这个数列的前几项中提取出pi。对我们现代人来讲,标准做法就是Richardson变换。利用sine函数的级数展开公式,我们有


写成这样的渐进展开形式后,我们就可以作Richardson变换了。我们考虑子数列


其中m可以为任意值,不过一般取m=6,因为相应的a取值为3,非常简单。这个子数列恰恰也是祖冲之他们考虑的。他们这样做的理由是,从a_n到a_n+1很难,正n边形与正n+1边形关系不大,但是从正n边形到正2n边形就简单得多。数学上,他们需要做的问题等价于已知角度A的sine值,需要计算角度A/2的sine值。这在现在看来,只需要解一个一元二次方程即可,计算上的麻烦之处在于需要开两次平方根。

无论是求平方根还是解一元二次方程,这对祖冲之他们而言都不容易。

不过,即便他们能够解决这些问题,还有一个困难有待解决。从上面a_n的展开式可以看出,每次倍增边数时,误差减小大概4倍。按照这个收敛速率,得作12次迭代才能达到祖冲之获得的精度。这个计算量太大了。

祖冲之肯定有某种聪明的办法从极其有限的数据中提取尽量多的信息。

他的做法不详,不过很可能跟现代标准技术类似。

下面的程序采用现代的Richardson方法提取pi,只需要取前3项,就几乎可以得到祖冲之的精度。也就是只需要从正六边形开始,先扩到12边形,然后再扩到24边形,


结果如下(右上角的那个值的前7位都是对的 ):


这样看来,祖冲之在集合各种技术之后,是完全可能获得他的结果的。

注1:据说巴比伦人在公元前2000年就会算平方根,他们这样算根号二,x_{n+1} = (x_n+2/x_n)/2。这其实就是现代的牛顿法,收敛超快!我们日常计算机就应该是用这个算法。不确定祖冲之是否用的这个聪明算法。

注2:据说巴比伦人也会解一元二次方程。这可以作为一个文明发展的标志。曾经有个老师跟博主讲蒙古人如何以野蛮战胜文明,他就说成成吉思汗灭花剌子模(就是阿尔-卡西的国家)的时候,花剌子模都已经能够解一元二次方程了。其实不止能解一元二次方程,他们还把pi算到了16位有效数字。

注3:我从来没见过祖冲之的圆周率的原始出处,据说在隋书-律历志。有这本书的同志,希望能够拍个照分享下,谢谢!

注4:博友尤明庆老师也研究过同样的问题。不过,他只做一次变换,没有对变换所得数列再作变换,所以需要割到192边形。

注5:其实一个更大的迷是,祖冲之是如何找到pi的有理近似355/113的。



http://blog.sciencenet.cn/blog-100379-1081681.html

上一篇:传奇数学家Aitken及其方法
下一篇:一次课堂实验
收藏 分享 举报

16 杨波 尤明庆 黄永义 严夺魁 赵克勤 徐令予 王林平 张家峰 陈绥阳 杨正瓴 李颖业 王福昌 岳东晓 付雷 赵建民 刘全慧

该博文允许注册用户评论 请点击登录 评论 (14 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2017-11-19 11:12

Powered by ScienceNet.cn

Copyright © 2007-2017 中国科学报社

返回顶部