Zu Chongzhi · 429–500

祖冲之

他把圆周率夹进两个七位小数之间,此后九百年没人再逼近一步

3.1415926<π<3.14159273.1415926 < \pi < 3.1415927
盈朒二限:世界上第一次给出圆周率的上下界 · 密率 355/113

祖冲之生在建康,祖籍范阳遒县,是随晋室南渡的北方士族。这一家的家学是天文历算:祖父祖昌做到刘宋的大匠卿,管的是土木工程。他本人也不是书斋里的人——造过指南车、千里船、水碓磨,注过《九章算术》(已佚),还写过《述异记》。大明六年(462),三十三岁的他把自己编的新历《大明历》上奏朝廷,附了一道表,开头说「古历疏舛,颇不精密」。

那道表引出了中国科学史上少见的一场辩论。孝武帝宠臣戴法兴出面驳斥,理由是古法不可改——「古人制章,立言垂法,虽复大圣,谁能革之」。祖冲之逐条回驳,写下《驳议》:要推翻我的历法,请拿出「显据」来——「愿闻显据,以核理实」;至于骂名,「浮词虚贬,窃非所惧」。他赢了道理却输了朝局,大明历终其一生没有施行;直到梁天监九年(510),他死后十年,才由儿子祖暅之三次上书争来颁行。父子俩合写的《缀术》,唐代还是国子监算学的课本,规定学四年——然后「学官莫能究其深奥,是故废而不理」,北宋之后失传。这是馆里唯一一本知道书名、知道有多难、却再也读不到的书。

祖冲之肖像
《上大明历表》首页,《钦定四库全书》本《宋书》卷十三第二十五叶 · 浙江大学 CADAL 藏本,Wikimedia Commons,公有领域。祖冲之没有画像传世,流传的塑像都是今人所造;他自己写的字,只剩这道奏表还抄在正史里——第五行起「大明六年,南徐州从事史祖冲之上表曰」。

生平

  1. 429
    生于建康

    祖籍范阳遒县,随晋室南渡的北方士族。祖父祖昌任刘宋大匠卿,掌土木工程,家学是天文历算。

  2. 461
    任南徐州从事史

    南徐州治京口。奏表上署的正是这个官衔。

  3. 462
    上《大明历》表

    时年三十三。表里提出两件新东西:把岁差正式写进历法,并把十九年七闰改成三百九十一年一百四十四闰。

  4. 462
    与戴法兴辩难

    孝武帝宠臣戴法兴以「古人制章,立言垂法,虽复大圣,谁能革之」相责,祖冲之作《驳议》逐条回驳:「愿闻显据,以核理实。」

  5. 约462后
    圆周率:盈朒二限

    以圆径一亿为一丈,算出 3.1415926 < π < 3.1415927,并给出密率 355/113、约率 22/7。《隋书·律历志》抄下了这段,《缀术》本身已佚。

  6. 5世纪
    接住刘徽留下的疑问

    牟合方盖的体积由他与儿子祖暅之算出,依据是「幂势既同,则积不容异」。刘徽两百年前写下「以俟能言者」,等的就是这个。

  7. 494–498
    任长水校尉

    作《安边论》,建议屯田垦殖。齐明帝本欲遣他巡行四方兴修水利,因连年战事未果。

  8. 500

    年七十二。大明历仍未施行。

  9. 504–510
    儿子把历法争了回来

    祖暅之三次上书,梁天监九年(510)正式颁行大明历——距他父亲上表已四十八年,距他父亲去世十年。

  10. 656
    「幂势既同,则积不容异」

    李淳风等注《九章算术》,在开立圆术下引「祖暅之开立圆术」。这条原理能保存下来,全靠这条注。

  11. 唐—北宋
    《缀术》失传

    唐代国子监算学列为课本,学制四年,居算经十书之首;《隋书·律历志》说「学官莫能究其深奥,是故废而不理」。北宋之后再无传本。

展品厅

绝大多数展品都可以亲手把玩——这是本馆的立馆之本;少数以叙述为主的,做成故事展签。

圆周率:盈朒二限

3.1415926 < π < 3.1415927——他不报一个数,报的是一个区间。

3.1415926<π<3.14159273.1415926 < \pi < 3.1415927

《隋书·律历志》记着这段:「以圆径一亿为一丈,圆周盈数三丈一尺四寸一分五厘九毫二秒七忽,朒数三丈一尺四寸一分五厘九毫二秒六忽,正数在盈朒二限之间。」翻成今天的话:取直径一亿,算出圆周的过剩近似 3.1415927、不足近似 3.1415926,真值就夹在这两个数之间。这是世界数学史上第一次有人用上下界把圆周率框住并写明位数——阿基米德给过 223/71 < π < 22/7(两位小数),刘徽给到 3.14 与 3927/1250,而这里是七位。怎么算的已不可考,《缀术》失传了;但沿刘徽的割圆术走下去,要把误差压到第七位小数,大约需要算到正 12288 边形与 24576 边形,每一步都要开方,而当时用的是算筹、十进小数还没有现代记法。这个精度此后九百年无人超越:直到 1424 年,撒马尔罕的阿尔·卡西算到小数点后十六位。

《隋书·律历志》记下的是一个区间:「圆周盈数三丈一尺四寸一分五厘九毫二秒七忽, 朒数……二秒六忽,正数在盈朒二限之间。」取直径一亿,过剩近似 3.1415927、 不足近似 3.1415926,真值就夹在这两个数中间。 一路放大,阿基米德那道两位小数的篱笆最先出界,接着是刘徽的 3.14 与 3927/1250; 放到第八位时,画面上只剩两条线还夹着 π。下一个能把这条缝再收窄的人, 是 1424 年撒马尔罕的阿尔·卡西——中间隔着九百年。

密率:355/113

分母小于一万六千的分数里,再没有比它更接近 π 的了。

355113=3.14159292\frac{355}{113} = 3.14159292\ldots

同一段记载还给了两个分数:约率 22/7,密率 355/113。约率是阿基米德就有的;密率是祖冲之的独创,而且它不是随手凑的好数——在所有分母小于 16604 的分数里,355/113 是与 π 最接近的一个。它的误差不到千万分之三,用它算一个地球那么大的圆,周长只差几米。这种「分母不大却特别准」的分数,今天由连分数理论解释:把 π 展开成连分数 [3; 7, 15, 1, 292, …],在 292 这个大数之前截断,得到的正是 355/113——后面跟着一个大数,意味着前面这个截断异常地好。欧洲要到 1573 年才由瓦伦丁·奥托重新得到它,1585 年安托尼松又独立得到一次,比这里晚了一千一百年。至于祖冲之是怎么找到的,没有人知道;一种推测是用何承天的「调日法」,即在两个分数之间反复取加成分数逐步逼近。

约率 22/7 是阿基米德就有的;密率 355/113 是祖冲之的独创,而且它不是随手凑的好数。 把分母上限一路推高,误差每隔一阵才落下一级——113 这一级踩到千万分之三,然后是一道极长的平台: 一直到分母 33102,才有分数能做得更好。用连分数看就明白了, π = [3; 7, 15, 1, 292, …],292 前面那一刀切得异常地好。 欧洲要到 1573 年才由奥托重新得到同一个分数,比这里晚了一千一百年。

镇馆之宝 · 亲手玩

祖暅原理:幂势既同,则积不容异

两个立体,每一层的截面积都相等,体积就必然相等——刘徽等的那个人来了。

V=23d3V=πd36V = \frac{2}{3} d^3 \quad V_{\text{球}} = \frac{\pi d^3}{6}

刘徽造出牟合方盖,证明了球体积等于它的 π/4,却算不出这个立体本身的体积,于是写下「敢不阙疑,以俟能言者」。两百年后祖冲之父子接住了。办法是:取正方体的八分之一,从中挖去牟合方盖的八分之一,剩下的那块「外三棋」在高 h 处的截面积恰好是 h²;而把三块这样的外三棋拼起来,每一层的截面积合计恒等于正方形的面积——于是它们合起来正是一个阳马(四棱锥),体积是立方体的三分之一。由此牟合方盖的体积是 2/3 d³,球体积随之定为 πd³/6。支撑整套推理的那句话保存在李淳风给《九章算术》开立圆术作的注里:「夫叠棋成立积,缘幂势既同,则积不容异。」——把立体想成一叠棋子,只要每一层的「幂」(截面积)与「势」(高度)都相同,堆出来的体积就不容许不同。欧洲的同一条原理叫卡瓦列里原理,1635 年才写出来,晚了一千一百年;今天它是用积分求体积的第一课。

拖动切片高度,看两个立体的截面积怎么始终锁在一起

刘徽把球体积归结到牟合方盖,却算不出这个立体本身。祖冲之父子的办法是拿它跟一个已知的立体逐层比对:取八分之一立方体挖去八分之一牟合方盖, 剩下的「外三棋」在高 h 处的截面积是 r² −(r²−h²) = h², 而一个倒立阳马在同一高度的截面恰好也是 h × h。拖动滑块,两个读数从头到尾锁在一起—— 「夫叠棋成立积,缘幂势既同,则积不容异」:把立体看成一叠棋子, 每一层的截面积都相同,堆出来的体积就不容许不同。阳马是立方体的三分之一, 牟合方盖于是定为 2d³/3,球随之是 πd³/6。欧洲的同一条原理叫卡瓦列里原理, 1635 年才写下来。

把岁差写进历法

冬至点每年悄悄挪一点,他是第一个把这件事算进历书的人。

1 恒星年1 回归年20 分1\ \text{恒星年} - 1\ \text{回归年} \approx 20\ \text{分}

太阳回到同一颗恒星旁边(恒星年)和回到冬至点(回归年)不是一回事,两者差约二十分钟,积累起来就是冬至点在星空里缓缓西移——这就是岁差。东晋虞喜在 330 年前后发现了它,算出「五十年退一度」,但历家都当它是天文奇谈,没人敢动历法。祖冲之是第一个把岁差写进历法的人:大明历取四十五年十一月差一度,从此回归年与恒星年在历书里被当成两个不同的量分别推算。这个数值其实并不好——按周天三百六十五度四分之一折算,它相当于每年退 77 角秒,而今测值是 50 角秒,偏大了一半;虞喜那个「五十年一度」(约 71 角秒)反倒更接近。所以这一步的分量不在数准,而在于承认天象本身会漂移:历法不再假装宇宙是一套固定不变的规矩。戴法兴反对的正是这一点:「古人制章,立言垂法,虽复大圣,谁能革之。」此后中国历法一直沿用岁差,隋唐以降愈算愈精。

太阳回到同一颗恒星旁边,和回到冬至点,不是一回事——两者每年差二十分钟, 积累起来就是冬至点在星空里往西挪。虞喜在 330 年前后发现了它,祖冲之是第一个把它算进历法的人。 他取的「四十五年十一月差一度」其实偏快:折成今天的单位是每年 77 角秒, 今测值只有 50,虞喜那个旧值反倒更接近。所以这一步的分量不在数准, 而在于承认天象本身会漂移——历法从此不再假装宇宙是一套固定不变的规矩。 戴法兴反对的正是这一点:「古人制章,立言垂法,虽复大圣,谁能革之。」

三百九十一年一百四十四闰

十九年七闰用了八百年,他把它换掉了——年长的误差小了七倍半。

391 年=4836 月1 年=365.2428 日391\ \text{年} = 4836\ \text{月} \quad 1\ \text{年} = 365.2428\ \text{日}

阴历月与阳历年配不齐,办法是置闰。战国以来通行的是十九年七闰(希腊叫默冬章),它假定 19 个回归年恰好等于 235 个朔望月——这个假定相当好,但不完美,每二百年左右就要差出一天。祖冲之在上表里把这条直接点名:「其一,以旧法一章十九岁有七闰,闰数为多,经二百年,辄差一日,节闰既移,则应改法。」他给出的新闰周是三百九十一年置一百四十四闰,也就是 391 个回归年合 4836 个朔望月。配上大明历取的回归年 365.2428 日,反推出的朔望月是 29.5305903 日——与今测的 29.530588 只差 0.2 秒。年长本身也从元嘉历的 365.2467 日改到 365.2428 日:前者比今测多出六分半钟,两百年差一天,正是他在表里点名的那个毛病;后者只多 52 秒,误差小了七倍半。代价是章法的年数从 19 跳到 391,推算变得繁琐,这也是当时反对者的理由之一。上表里那句「令却合周汉,则将来永用,无复差动」,说的就是这个新闰周能同时对得上周代与汉代的旧记录。

阴历月和阳历年配不齐,办法是置闰。十九年七闰用了八百年, 祖冲之在上表里把它直接点名:「经二百年,辄差一日,节闰既移,则应改法。」 他换成三百九十一年一百四十四闰——391 个回归年合 4836 个朔望月, 由此反推的朔望月是 29.5305903 日,与今测只差 0.2 秒。 拖动年数看两条线怎么分开:旧法两百年就顶到「差一日」那条线,新法要走六倍远。 代价是章法的年数从 19 跳到 391,推算繁琐得多,这也正是当年反对者的理由之一。

学官莫能究其深奥

唐代的算学课本,要学四年——然后没人读得懂,于是它失传了。

祖冲之父子的数学写在一本叫《缀术》的书里。它在唐代是国子监算学馆的课本,与《九章算术》《海岛算经》同列「算经十书」,而且是其中学制最长的一部:《唐六典》规定《缀术》学四年,《九章》连《海岛》一共才三年。可《隋书·律历志》在抄完他的圆周率之后写了一句:「所著之书,名为《缀术》,学官莫能究其深奥,是故废而不理。」——连算学馆的老师都讲不通,于是搁下不管。北宋之后再没有传本,日本、朝鲜也没有抄本留下。今天关于它的全部知识只有三条转引:《隋书》抄下的圆周率,李淳风注里引的开立圆术,以及「开差幂、开差立」这两个失传的算题名目——从名字看,很可能是解二次与三次方程的方法。这座馆里其他人留下的是书,祖冲之留下的是一个书名、一份课时表,和三段别人转述的话。

故事展签故事展签:一本难到没人读得懂的书,和一门因此断掉的学问。

传承

他的工作没有留在十八世纪——每条链的终点,都是你今天正在使用的东西。

刘徽割圆术盈朒二限与密率 355/113九百年后才被阿尔·卡西超越
刘徽的牟合方盖祖暅原理:幂势既同,则积不容异卡瓦列里原理与用积分求体积
虞喜发现岁差大明历第一次把岁差写进历法此后中国历法一直分算回归年与恒星年
十九年七闰三百九十一年一百四十四闰反推出的朔望月与今测只差 0.2 秒

语录

夫叠棋成立积,缘幂势既同,则积不容异。

—— 李淳风等《九章算术注释》卷四 开立圆术注引「祖暅之开立圆术」,656 · 卡瓦列里原理在中国的名字,早了一千一百年

愿闻显据,以核理实。

—— 《宋书·律历志下》祖冲之《驳议》,462 · 要推翻我的历法,请拿出证据来

臣生属圣辰,逮在昌运,敢率愚瞽,更创新历。

—— 《宋书·律历志下》《上大明历表》,大明六年(462)· 肖像位那一页的下一叶

所著之书,名为《缀术》,学官莫能究其深奥,是故废而不理。

—— 《隋书·律历志上》 · 一本难到没人讲得通的课本,就这样断了