我国古代关于圆周率最初的知识是“径一周三”,后人称之为古率
[1]。古率是先民对长期生产实践活动进行归纳的经验产物,具有一定的局限性。依据《隋书·律历志》中记载的“古之九数,圆周率三,圆径率一,其术疏舛。自刘歆、张衡、刘徽、王蕃、皮延宗之徒,各设新率,未臻折衷”
[2],中国圆周率发展史上第一位尝试突破古率的学者是刘歆(约公元前50年—23年)。王莽以复古改制为名,命刘歆改革秦、西汉的度量衡制,于是刘歆设计并制造出了一种标准量器,现在学界通常将该量器称为新莽嘉量。嘉量设计巧妙,刻铭详尽,记有五种量径、深、底面积的尺寸和容积
[3]。根据嘉量斛铭文中的“方尺而圆其外,庣旁九厘五毫,冥百六十二寸”,可以推算出刘歆为王莽制造铜斛时,实际上使用的圆周率近似值相当于
[4],该数值相较于古率已经有所进步,但是刘歆并未给出该值的计算方法。之后张衡(78—139)、王蕃(228—266)等学者也各自尝试创设新率,但是所使用的方法和获得的结果都欠精进。直到刘徽注解《九章算术》方田章中的“圆田术”时,才首次给出中国数学史上计算圆周率的完整程序。刘徽之后,祖冲之(429—500)推算出
,该近似值达到了中国数学史上的巅峰。祖冲之相关计算过程早已遗失,一般认为他受刘徽影响。
1 《九章算术注》中割圆术求圆周率算法
《九章算术》方田章中记载了“圆田术”,给出了四种圆面积计算方法,第一种为“半周半径相乘得积步”
[5],相当于
,其中
为圆周长,
为圆的直径。在已知正确的圆直径与圆周长时,此公式是正确的。割圆术是刘徽圆田术注的核心内容,其主旨在于证明《九章算术》中的上述圆面积公式,求圆周率是割圆术极限思想在近似计算中的应用
[6]。以下是割圆术的证明过程。
首先,刘徽从圆内接正6边形开始割圆,依次得到圆内接正,,…边形。设圆内接正边形的面积为,圆的面积为。则有。随着分割次数越来越多,越来越小,到不可再割时,与重合,即。
其次,圆内接正边形的每边和圆周之间有一段距离,称为余径。将正边形的每边乘余径,其总和是。将其加到上,则有,类似地,当无限大时,可以将正边形与圆周视为重合,即,此时则有,这样从理论上保证了圆面积存在且可求。
最后,刘徽将与圆周合体的正多边形分割成无穷多个以圆心为顶点,分别以每条边为底的小等腰三角形。用圆的半径乘以这个多边形的边长等于每个小等腰三角形面积的2倍,同时这些小等腰三角形的底边之和等于圆周长;另外这些小等腰三角形面积的总和就是圆的面积,所以圆半径乘以圆周长等于圆面积的2倍。这也就证明了上述圆田术的第一种方法。
刘徽接着指出:“此以周、径,谓至然之数,非周三径一之率也。”同时他批评道:“然世传此法,莫肯精核;学者踵古,习其谬失。”刘徽随即创造了求“周径至然之数”,本质上是利用上述“割圆”的思想求解圆周率,每次割圆相当于由圆内接正边形的边长,求出圆内接正边形的边长。以由圆内接正6边形边长求圆内接正12边形边长为例,将其算法用现代数学语言描述。
刘徽割圆术如
图1所示,在直径为2尺的单位圆
中,弧
AB的中点
C。圆内接正6边形的边长
AB为1尺,求圆内接正12边形的边长
AC。在较大直角三角形
中,
,利用勾股定理
11 本文在描述割圆术算法过程中关于线段的名称采用《九章算术注》中的方式。例如此处第一次割圆的过程中,较大直角三角形AOG中从小到大的三条边分别称为勾(AG)、股(OG)、弦(AO);较小直角三角形ACG中从小到大的三条边分别称为小勾(CG)、小股(AG)、小弦(AC)。下同。
得
随后,得到余径,即较小直角三角形中的小勾=。最后,再次利用勾股定理得
这样就完成了一次割圆。以此类推,不断倍增圆内接正多边形的边数以逼近圆周,进而求出圆面积。刘徽从正6边形开始割圆,先后得到正12、24、48、96边形边长,进而得到,。因此有,即,刘徽取上下限分数的整数部分作为圆面积的近似值。然后反求圆周长,得到圆周率的近似值为()。
上述《九章算术注》中的内容一般认为是刘徽所写,接下来注文中关于圆周率的计算还有一小段文字,按内容可以分为三部分。首先描写了晋武库中西汉王莽制作铜斛的尺寸;随后描写了一种不同于割圆术的加速求解圆周率的方法——“以率消息”,得到更为精确的值
(=3.141 6);注文最后一句为:“当求一千五百三十六觚之一面,得三千七十二觚之幂,而裁其微分,数亦宜然,重其验耳。”意思是如果用前面割圆术的方法继续计算,当割圆至圆内接正1 536边形时,利用其边长可以得出正3 072边形面积,进而得到圆周率近似值
,这样上述“以率消息”结果被再一次验证。由于这段文字内容简短、算法精妙,20世纪许多数学史家们都参与这段文字内容的解读和讨论。这些讨论主要集中在两个问题,第一个问题是“以率消息”究竟是如何进行加速计算的?朱一文
[7]对三上一夫、沈康身、李继闵、郭书春等的解读进行分析,并给出了自己的解读。第二个问题是圆周率
这一数值是谁的成果?青年学者张美霞
[8]曾撰文对20世纪众多学者就此问题讨论的脉络进行梳理,其中三上义夫、钱宝琮等认为这是刘徽的成果,孙炽甫、李迪等认为这是祖冲之的成果。本文无意对这两个问题做进一步的讨论。
《九章算术注》中利用割圆术求解圆周率的内容共1 800余字,可分为两个部分。第一部分从圆内接正6边形割圆至正96边形,得到圆周率值3.14,其过程是完整的,这部分出自刘徽;第二部分继续割圆至正1 536边形,得到圆周率值,但没有过程。从内容上看,二者是同一种算法;从逻辑上看,二者具有前后关联性。无论第二部分是刘徽的成果,还是出自祖冲之,他必定熟悉割圆术和前后两部分的计算过程。以往学界对第二部分的计算过程鲜有研究,本文拟利用第一部分计算的方法和数据对第二部分缺失的过程进行复原,以探究其中隐藏的信息。这项工作对进一步理解利用割圆术求解圆周率有积极意义。
2 缺失的割圆术
《九章算术注》原文中利用割圆术求解圆周率第一部分给出的主要数据见
表1[5]。由
表1数据,可将每次利用勾股定理时涉及的平方、开方近似计算过程补充完整。
(1)正6边形边长,求正12边形边长。
在较大直角三角形中,,,。
在较小直角三角形中,
,
其中,末尾的16舍掉,。
(2)由求。
在较大直角三角形中,
,
其中,
,末尾的25舍掉,
。
22 在《九章算术注》割圆术的计算中十进制长度单位由大到小分别为:尺、寸、分、厘、毫、秒、忽。
在较小直角三角形中,
,,
,
其中,刘徽所有的近似运算并不是按照今天四舍五入,而是将精确位以下的数字舍去,因此忽后的64直接舍掉。
(3)由求。
在较大直角三角形中,
,
其中,,末尾的5舍掉,
。
在较小直角三角形中,
,,
,
其中,末尾的04舍掉。
得到。
(4)由求。
在较大直角三角形中,
,
其中,,末尾的25舍掉,
。
在较小直角三角形中,
,,
,
其中,末尾的21舍掉。
得到。
至此,《九章算术注》割圆术第一部分计算过程结束,接下来按照上面的算法与数据继续割圆,来验证是否能割圆至正1 536边形,并得到圆周率的近似值3.141 6。
(5)由求。
在较大直角三角形中,
,
。
在较小直角三角形中,
,,
,
其中,末尾的25舍掉。
(6)由求。
在较大直角三角形中,
,
其中,,末尾的75舍掉,
。
在较小直角三角形中,
,,
,
其中,末尾的21舍掉。
(7)由求。
在较大直角三角形中,
,
。
在较小直角三角形中,
,,
,
其中,末尾的25舍掉。
此时忽恰好为忽的一半,正384边形割圆过程结束,正768边形不存在,后面的正1 536边形和正3 072边形自然也不存在。下文分析两个问题:第一,为什么会出现不可再割的情况?第二,按照割圆术第一部分的数据是无法得出割圆术第二部分的结果,那么第二部分的作者又是如何实现继续割圆的?
3 “割之又割,以至于不可割”新释
上述割圆过程无法继续的原因是每次割圆时得到的两个直角三角形大小的迅速缩小。在由正384边形求正768边形时的较小直角三角形中,,,求出小弦精确到忽位的结果也是8 181忽。虽然小弦可以继续开方计算下去近似得到8181忽209 140(真实值8 181忽208 052),但由于小勾与小股的精度为忽,所以继续开方也不能保证忽以下单位的准确性。此时,小股(81 81忽)与小弦(8 181忽)在精确到忽位取整后的结果相同,导致割圆过程结束。
本研究认为对于上述96边形到768边形的割圆过程,刘徽可能进行过计算。因为刘徽要求出 圆周率尽可能精确的结果,他已经进行了四次割圆,割圆术难度和运算量都不大,再继续进行下去求出更精确的圆周率结果是很自然的。此外,上述完整的割圆过程与割圆术开始时的术文是相对应的。例如刘徽由正6边形割圆至96边形的过程是连续的,这一过程对应术文“割之弥细,所失弥少……觚面之外,犹有余径,以面乘余径,则幂出弧表”。到了正384边形无法继续得到正768边形,则对应术文“割之又割,以至于不可割,则与圆周合体而无所失矣……若夫觚之细者,与圆合体,则表无余径。表无余径,则幂不外出矣”。这里的“表无余径”并不是指余径真的消失,而是当割圆结束后,余径可以忽略。此时,,相当于。
在《九章算术注》中没有记载上述完整的割圆过程,这可能是由于李淳风编纂《九章算术》时,刘徽的注文已经残缺;也有可能是刘徽认为割圆术原理与运算步骤的论述已经十分详尽,没有必要再继续写下去。虽然刘徽在割圆术第一部分得到的圆周率近似值3.14,不如计算到不可再割的正384边形得到圆周率近似值3.141 504精确,但在实际应用中已经足够了,同时3.14对应的分数值更具备实用性。
4 隐藏的精度估算
割圆过程中,初始计算精度决定了割圆可进行的次数,当然也直接影响圆周率的精度。在一定精度限制下,必然会出现不可再割的情形。例如在《九章算术注》中,初始长度精度设为忽位,则最多割至圆内接正384边形,要继续割圆,只能提高开方精度。如果割圆术第二部分的作者只是试探性地继续将长度精度提高一位至“忽下一位
33 在《九章算术注》中最小的十进制长度单位是“忽”,此处为了方便表述,笔者将比“忽”更小的邻近十进制单位称为“忽下一位”,类似地依次为“忽下二位”“忽下三位”等。下同。
”,割圆至正768边形仍会割无可割,无法达到割圆至正1 536边形的需求,仍需要将精度再次提升并按步骤从头进行割圆计算,需要的运算量非常大。因此,尝试性地一位一位提升精度,并计算是否达到割圆要求的做法显然不符合逻辑,割圆术第二部分的作者极可能在割圆计算之前进行了精度估算。
对于中国古代数学家是否在求解圆周率的过程中进行了精度估算,或许继刘徽1200年之后的波斯数学家阿尔·卡西(al⁃Kāshī,约1380—1429)在《论圆周》(1424)中的工作可以得到一些启示。卡西沿用了古希腊数学家阿基米德(Archimedes,公元前287年-公元前212年)的算法,从半径为1的单位圆的内接和外切正6边形入手,将其边数逐步加倍并逼近圆周,最终得到用十进制小数表示的拥有十六位准确数字的二倍圆周率——6.283 185 307 179 586 5,首次打破了祖冲之保持千年的记录
[9]。卡西的算术几何方法与刘徽割圆术本质上相同,没有借助任何加速算法。《论圆周》内容保存完整,对于复原《九章算术注》中第二部分割圆算法有三点启示。第一,卡西在开篇就明确所要求圆周率的精度。他首先假想有一个直径是地球60万倍的天球,用所求圆周率计算天球大圆周长与真实值之间的误差小于一根马鬃的粗细,这样圆周率的精度应达到六十进制分数值的第9位,即
。刘徽虽然没有明确这一点,但是在计算时,正多边形边长精度达到最小长度单位忽,其思想与卡西类似。换句话说,刘徽、卡西若要继续将圆周率的精度推算下去,并不存在理论和技术上的困难。第二,卡西随后指出推算圆周率的关键是计算圆内接正
边形的边长
。在计算之前首先进行精度估算,为了使圆周率的精度达到
,每次开方的方根需要精确到
,且要割圆至正
边形。即卡西首先计算
精确到
;然后将结果加上2,继续开方至
,重复28次这样的迭代运算。卡西指出若达不到该计算量,就求不出满足精度要求的圆周率;如果超过了上述计算量,又会造成浪费。多边形边长精度、可割多边形边数以及圆周率精度之间存在对应关系,在计算之前根据所需圆周率的精度精准确定整体的运算量是十分必要的。第三,面对如此庞大的计算量,卡西借助30余张精巧的算表完成了全部计算,同时在算表中融入了多种检验算法以保证运算的准确性。如果没见过原文,很难想象卡西是如何完成如此巨量的运算的,他的计算方式体现了古人的智慧。
利用卡西《论圆周》中的精度估算思想,对《九章算术注》割圆术中的数据进行简要分析,具体见
表2。
表2由最右列数字生成,展示了割圆时,计算精确度与最高割圆次数之间的关系。最右列前四个数字是《九章算术注》中给出的圆内接正多边形边长,后面三个数字是本文继续运算得到的结果,到正384边形结束。从上到下,随着割圆的进行,圆内接正多边形边数不断增加,所得圆周率越来越精确。
表2左侧第二列到第四列是最右列数字在不同精度单位取整的结果,很明显从左到右精度单位每提升一位,割圆所得正多边形边数就增加一倍,圆周率的精度也相应提升。按照这种规律,如果要达到《九章算术注》割圆术第二部分的要求——由正1 536边形求出正3 072边形,此时精度单位应至少精确到忽下三位。
按照上述推断,对每次割圆的数据进行重新计算,首先求得,进而求得,,(不可再割),得到,。这样验证了“以率消息”的结果,符合题意。
5 结语
《九章算术注》割圆术内容可分为两部分,第一部分刘徽从正6边形开始割至正96边形,过程完整;第二部分指出可以利用割圆术继续割圆至正1 536边形,没有过程。这两部分割圆算法是同一种算法,按照第一部分的方法和数据继续割圆,运算至正384边形不可再割。本研究认为利用割圆术计算圆周率,在一定的精度限制下必然会出现“割之又割,以至于不可割”的情形。此处割圆术第一部分线段精度为“忽”,就会导致割至正384边形不可再割。若要继续运算,需要提高运算中每一步的开方和平方精度。若要达到割圆术第二部分的结果,即割圆至正1 536边形,仅在割圆术第一部分精度的基础上试探性地提高一位精度——至“忽下一位”,是无法实现的。割圆术第二部分的作者可能在计算之前进行了精度估算,以提前精准确定所需的运算量。例如此处至少要精确到“忽下三位”,才能实现预期的割圆效果。割圆术第二部分的作者是在第一部分割圆运算的理论基础上完成了第二次割圆运算,这是两次不同的运算过程,他对于割圆术的认识达到了更高的理论层面。
国家社会科学基金冷门绝学研究专项学术团队资助项目“中国珠算典籍与算法体系研究”(22VJXT002)