让我们继续上一章的话题。圆周率是不是祖冲之发明的呢?显然不是。圆周率是一个数学常量,是世界存在以后就亘古不变的一个数字。在人类诞生以前,它就存在了,就一直静静的在那里等着聪明人去发现。所以,很多电视问答题的题目都是错的。那么祖冲之做了什么呢?他是世界上第一位把圆周率算到小数点后第七位的人,同时领先了西方1200多年!
祖冲之是一个小官二代。祖父是修土木的小官儿,自己一辈子最大也就混了个县令。然而却喜爱数学和工程,在和自己儿子的共同研究之下,研究了一辈子出了一本数学著作,名叫《缀术》。这本书写的是啥,也没人知道了,因为后世就失传了。我们看看唐朝人是怎么评价这本书的。当时唐朝将这本书列为数学教科书,给出的参考学习年数是4年。就是说一般学生要学4年才能把这本书看明白。还有更夸张的,唐朝的算学第一高人李淳风说,“这本书太难了,我们都看不懂!所以大家慢慢也就不去看了”。唐朝的另一个算历博士王孝通说,“有人说这本书很精妙,但是其实里面全都是错的!”。据说宋朝还有人拿着此书练书法。传说是在南宋年间失传的。真相到底如何呢?书已经失传,所以就不得而知了。
《缀术》虽然已经失传了,那我们从何而知祖冲之的圆周率的呢?这个描述来自于《隋书》的《律历志》。作者就是唐朝的算学大师李淳风。原文如下:
古之九数,圆周率三,圆径率一,其术疏舛。自刘歆、张衡、刘徽、王蕃、皮延宗之徒,各设新率,未臻折衷。宋末,南徐州从事史祖冲之,更开密法,以圆径一亿为一丈,圆周盈数三丈一尺四寸一分五厘九毫二秒七忽,朒数三丈一尺四寸一分五厘九毫二秒六忽,正数在盈朒二限之间。密率,圆径一百一十三,圆周三百五十五。约率,圆径七,周二十二。又设开差冪,开差立,兼以正圆参之。指要精密,算氏之最者也。所著之书,名为《缀术》,学官莫能究其深奥,是故废而不理。
翻译成白话文就是说,南朝的徐州从事史,祖冲之,非常厉害,把圆直径一丈分为一亿份,周长在三丈一尺四寸一分五厘九毫二秒六忽到七忽之间 (3.1415926 < π < 3.1415927),等等。
这里略让人产生疑惑的一点是,除了唐朝李淳风在《隋书》里提到这么一句之外,翻遍整个中国古籍,都找不到其它任何关于祖冲之圆周率的描述。甚至在祖冲之之后1000多年的所有古代数学家们,也都全部不知道祖冲之能有如此之高的圆周率精度。看下表:
年代 | 朝代 | 数学家 | 圆周率 | 精度 |
公元前100 | 战国 | 《周髀算经》 | 3 | 0 |
公元前50 | 汉 | 刘歆 | 3.1547 | 1 |
公元78 | 汉 | 张衡 | 730/232=3.1467 92/29=3.1724 sqrt(10)=3.162 | 1-2 |
公元133 | 汉 | 蔡邕 | 3.125 | 1 |
公元228 | 三国 | 王蕃 | 142/45=3.155 | 1 |
公元300 | 魏晋 | 刘徽 | 157/50=3.14 3927/1250=3.1416 | 2-3 |
公元370 | 晋 | 何承天 | 3.1429 3.1432 | 2 |
公元429 | 南朝 | 祖冲之 | 3.1415926~3.1415927 22/7 355/113 | 7 |
公元602 | 唐 | 李淳风 | 22/7=3.1429 | 2 |
公元1208 | 宋 | 秦九韶 | sqrt(10)=3.162 | 1 |
明 | 陈荩谟 | 3.1525 | 1 | |
公元1536 | 明 | 朱载堉 | sqrt(2)/0.45=3.1427 | 2 |
明 | 邢云路 | 3.1213 3.126 | 1 | |
公元1533 | 明 | 程大位 | 25/8=3.125 | 1 |
公元1611 | 明 | 方以智 | 52/17=3.0588 | 0 |
公元1714 | 清 | 王元启 | sqrt(10)=3.162 | 1 |
清 | 顾长发 | 3.125 | 1 | |
公元1728 | 清 | 钱大昕 | 3.16 | 1 |
祖冲之在中国古代2000多年的圆周率史上,如皓日当空那般耀眼,不仅仅是前无古人,而且当真做到了后无来者(西方数学家算出来的不算)。
为何唐朝人写的《隋书》中,明明写清楚了祖冲之的高精度的圆周率,但是后世1000多年,这些个算学大师们一个一个都闭口不提,而且反而用精度更差的圆周率呢?《梦溪笔谈》的作者沈括也因为使用了很差的圆周率,导致做出来的工具很快就坏了。可见后世人完全不知道祖冲之有了如此了不起的研究成果。
- 可能古代算学家根本不重视圆周率。算个大概就不管了。古人的成果也压根没有人去看过。古代的科学基本没有传承。只有现代中国人才从古老典籍里挖掘出一点点古人的辉煌聊以慰藉。如果是这样,真的是很可悲的事。
- 《隋书》可能是造假的。唐朝人写的隋书原本早就在历史的尘嚣中烟飞云散了。宋朝刻印的《隋书》留下的又不全,只有残破的几章。目前能找到的最早版本有记载祖冲之圆周率的《隋书》,是明末的毛氏汲古阁本。是不是后人改的?如果是的话,恐怕更加的可怕。
让我们继续推测,祖冲之是怎么计算圆周率的?这已经成为了一个千古之迷。很多人猜测也是和阿基米德一样的割圆法。是的,这是最合理的猜测了,因为在公元400年的古代,割圆法只需要开方根和勾股定理的知识就可以计算。
借助现代的计算机,我们很容易可以模拟当年的先辈是怎么用外接割圆和内接割圆计算圆周率的:
s = 0.5 for i in xrange(n): s = (s*s+(1-(1-s*s)**0.5)**2)**0.5/2 t = (s*2/3)**0.5 for i in xrange(n): t = (t**2-((t**2+1)**0.5-1)**2)/t/2 r = 6*2**n print r, s*r, t*r |
这段简单的小程序不另作说明了,通过计算内接和外接割圆边长,我们分分秒就能计算出每一次切割能达到的圆周率精度,和计算过程中所需要保证的小数点后的精度个数:
n边形 | 到达小数点后精度 | 过程需要保持精度 | 结果 |
6 | 0 | 2 | 3.0<pi<3.4 |
12 | 0 | 3 | 3.11<pi<3.22 |
24 | 1 | 4 | 3.132<pi<3.158 |
48 | 1 | 5 | 3.1392<pi<3.1462 |
96 | 2 | 6 | 3.14102<pi<3.14268 |
192 | 3 | 7 | 3.141454<pi<3.141873 |
384 | 3 | 8 | 3.1415576<pi<3.1416626 |
768 | 3 | 9 | 3.14158389<pi<3.14161021 |
1536 | 5 | 10 | 3.141590466<pi<3.141597034 |
3072 | 6 | 12 | 3.1415921056<pi<3.1415937485 |
6144 | 6 | 12 | 3.14159251670<pi<3.14159292743 |
12288 | 6 | 13 | 3.141592619364<pi<3.141592722051 |
24576 | 7 | 14 | 3.1415926450333<pi<3.1415926707020 |
可以看到,阿基米德在公元前250年,通过切割96边形,那么他需要在计算过程中保持6位的小数点后精度,才可以计算出 3.14102<pi<3.14268 的结果。祖冲之在公元400多年,如果需要保留小数点后7位精度的圆周率精度,需要切割到24576边形,同时计算过程中要保持14位的小数点后精度!
下面再具体列举一下我们的革命好同志祖冲之计算圆周率之艰辛:
- 进行12次迭代(也有猜测是从4边形开始隔,这样只要11次迭代),每次迭代都需要计算3次平方根,若干次乘法除法,另外计算过程要保证14位的小数点后精度。
- 没有阿拉伯数字。无论计算过程用的是一二三还是壹贰叁,都麻烦的不得了。
- 没有算盘可以打。用的是算筹。把很多小树枝放在地上,拨过来拨过去的,拨错一个就完蛋。
- 没法合作完成。算法不能并行操作,没法团队完成,必须一个人自己默默的算。
- 至少得验算2-3次吧?历史上算错圆周率贻笑大方的人很多。能一次性算对的很难很难。
- 用的是毛笔。没有铅笔钢笔圆珠笔。不管是记录中间计算过程还是结果,都得用掉成百上千纸张。
好同志祖冲之如果真的算到第7位,目测按照当时的条件,怎么也得算个三年五载的。为了一个在当时没什么太大意义的高精度圆周率,耗费如此多的光阴,让人觉得有点匪夷所思。
如果是后人伪造《隋书》编造的 3.1415926 ,那么为何要伪造呢?这里也有一些背景知识需要阐述。
明末清初的年代,一个很著名的学派,是西学东源学派。随着越来越多的西方传教士不远万里来到中国,为了传教学会了中文,然后把一些西方科学著作翻译成了中文,其中最著名的是西儒利玛窦,让当时的学者们认识到了中西的差距已经大到可怕了。西学把日历能推算到秒,可以算出地球是个球体,知道地球的大概半径,能够制造精确的钟表。工艺技术的差别,天文地理的差别,基础数理的差别,让当时的学者们无法面对。
但是总是需要去面对的。面对的方式不是说努力学习西文典籍迎头赶上,而是很猥琐的鸵鸟策略。西学东源的主要思想是,你们西学研究的那些东西,我们老祖宗典籍里全都有了,不足为奇!这些学者依靠各种牵强附会的考证,想要证明西算(数学)和西历(天文学)都是剽窃的我们的老祖宗!这些可耻和可悲的考证成果就不一一说了。这个学派一直到清朝继续发扬光大,清朝皇帝康熙一边焚书坑儒,编纂删改版的四库全书,一边组织文人搞西学东源运动,接见学派首脑,让这个学派继续发扬光大。恐怕直到北洋舰队被日本打的个落花流水,以及八国联军打进了北京城,才让当时的中国人真的觉醒,才让他们能够发现,中西方的差距已经实在是太大了,赶紧老老实实的“师夷长技以制夷”吧!(虽然最后也没能制得了夷)
在明末刻印的《隋书》版本,是不是有经过算家的修改,也不得而知了。真相早已掩埋在历史长河中。本文的目的也不是要考证祖冲之是不是算了圆周率,只是把一些证据陈列出来,信者自信疑者自疑吧。即使祖冲之确实算到了第7位,但是后世数学家们的表现也让人不禁感慨,古代对算学这些奇技淫巧的忽视。伟大的人物昙花一现,只有后世西学传入之后,才让人真正了解他们的伟大的地方。
随着电子计算机的诞生这几十年,圆周率的计算长度已经开始几百倍几千倍的增长了,每天都会有新纪录诞生。下一章我们回到正题,谈谈圆周率的常用算法。
我定期会更新博客在这里,有事儿没事儿可以来瞅瞅http://qianwenjie.net/