APP下载

秦九韶“历家虽用,用而不知”解

2011-02-08朱一文

自然科学史研究 2011年2期
关键词:约化方程分数

朱一文

(中国科学院 自然科学史研究所,北京 100190)

0 前言

宋淳祐七年(1247年),秦九韶在他的传世之作《数书九章》①《数书九章》原名《数术》或《数术大略》,《永乐大典》、《文渊阁书目》、《四库全书》作《数学九章》,《宜稼堂丛书》作《数书九章》,为今通用名。本文凡引《数书九章》均以赵钞本为底本,并与《宜稼堂丛书》本、《四库全书》本参互校雠。中提出的大衍总数术是一项世界级的数学成就[1—4]②李倍始(U.Libbrecht)认为秦九韶系统解决了一次同余方程式组解法,现代数学大师欧拉(Euler,1707—1783)、高斯(Gauss,1777—1855)才达到或超过他的水平。见参考文献[1]。。遗憾的是,因为史料的缺失,我们无法确切知道秦九韶之前大衍总数术的发展情况。以现今的数学眼光看,《孙子筭经》之“物不知数”题是有文献记载的最早的一次同余方程式组问题。元代之前中国历法中上元积年的推算,也相当于求解一次同余方程式组。因此,钱宝琮认为:“《孙子算经》里‘物不知数’问题解法不是作者的向壁虚造而很可能是依据当代天文学家的上元积年算法写出来的。”[5]李文林、袁向东进而认为:“我国古代关于一次同余论的研究,肇源于汉代历算家关于上元积年的计算,是在汉代历算家探讨的基础上发展起来的。”[6]这些看法基本成为了学术界的共识。

然而,必须注意到的一点是:《孙子筭经》“物不知数”题,缺少了求乘率的关键算法。这个算法即是秦九韶的大衍求一术,是大衍总数术的关键一步。李继闵通过对《数书九章》“古历会积”、“治历演纪”题的分析,指出:对于上元积年的推算很可能用的是“演纪术”(即相当于代入法求解一次同余方程式组)而非“大衍总数术”(即相当于孙子剩余定理)[7]。以上事实提醒我们意识到历史的复杂性①笔者认为这实际上是在暗示:“物不知数”问题和“上元积年”问题在古人看来可能并不是同一类的问题,因此两者有各自、不同之发展脉络。尽管以现今数学眼光看,它们都属于一次同余方程式组问题。。

秦九韶在《数书九章》自序中提到他曾“访习于太史”,说明他曾向历家学习。又云:“独大衍法不载《九章》,未有能推之者。历家演法颇用之,以为方程者,误也”,又云:“历家虽用,用而不知”([4],序2a—3a)。很明显,秦九韶认为历家误把“大衍法”当作“方程”。严敦杰首先注意到,这里的“方程”只是“借名”,而不是《九章算术》的“方程”,他指出“大概是布算时列出等式多行,‘乘除消减’,‘约而齐之’,与《九章算术》内解一次联立方程组相类,故借名为‘方程’”[8]。近年来,王翼勋给出了这种“方程”的一种推测,具有试算的性质[9],后来他又将它改进[10]。王荣彬、徐泽林也给出了历家所用“方程”的一种推测[11]。这两种方程都不是《九章筭术》的方程②王翼勋给出方程之形式为王荣彬、徐泽林给出方程之形式为按中国传统数学或《九章筭术》之方程,其必是N×(N+1)或2×3之形式。因此上两方程都不是传统数学之方程。。总之,学者们普遍认为历家方程有“方程”之名,而无“方程”之实。

亦有学者认为大衍求一术来源于更相减损术[12]。这种看法确能解释大衍求一术之两数“递互除之”,但是却无法解释“所得商数随即递互累乘归左行上下”([4],卷1,3b)。笔者认为历家之方程事关重大,有进一步讨论之必要。在前人研究之基础上,本文认为历家之方程即中国传统数学或《九章筭术》之方程,只是运算目的不同。

1 历家之方程

《数书九章》卷三“治历演纪”题中的一段话是讨论历家方程之关键。秦九韶说:

今人相乘演积年,其术如调日法,求朔余、朔率。立斗分、岁余,求气骨、朔骨、闰骨,及衍等数、约率、因率、蔀率,求入元岁、岁闰、入闰、元率、元闰,已上皆同此术。但其所以求朔积年之术,乃以闰骨减入闰,余谓之闰赢,却与闰缩、元闰③“却与闰缩、元闰、朔率”,赵钞本、《四库全书》本、《宜稼堂丛书》本均作“却与闰缩、朔率”。从秦九韶筭图可见,元闰乃求元数之必须。依筭图补正。、朔率,列号甲乙丙丁四位,除乘消减,谓之方程。乃求得元数,以乘元率,所得谓之朔积年,加入元岁,共为演纪岁积年。所谓方程,正是大衍术今人少知。非特置筭繁多①“置筭繁多”,赵钞本作“置筭繁名”,《四库全书》本作“置筭繁多”,《宜稼堂丛书》本作“置算繁名”。“算”应作“筭”,意为“筭筹”。依《四库全书》本改正。,初无定法可传,甚是惑悮后学,易失古人之术意。……([4],卷3,6b-7a)

这段话各家多有引用,仍有进一步推敲的必要。此处秦九韶两次用到了大衍术,也两次对大衍术和历家之方程进行了比较。首先是用大衍术求等数、因率、蔀率,秦九韶说“已上皆同此术”,即他的做法和历家一样,此处历家之方程基本等于大衍术。而后,为了求得元数,历家的方法是:闰赢、闰缩、元闰、朔率“列号甲乙丙丁四位”,用方程求解;秦九韶则是用大衍术求解。显然,此处历家之方程和大衍术有较大的区别。历家的方程“非特置筭繁多,初无定法可传”,即没有一个普遍的确定的方法。

为了作进一步的分析,先依据《数书九章》的算草,给出秦九韶两处大衍术的算法②秦九韶是用筭图运筭,而传统历算家是用筭筹运算,两者差别甚大。此处为了节省篇幅,在不影响讨论的情况下,把秦氏之筭图转化成今图。并且用“0”表零,不失秦氏之本意(秦氏筭图用“○”表零,筹筭布筭则须用空位表零)。。首先是用斗定分(4108)与日法(16900)求等数、因率、蔀率:

由此得等数52、因率144、蔀率325③按之前算法,算草最后一步应得。秦九韶违反之前的规律,这样做是因为解题必须用到因率和蔀率,体现了他对大衍术的理解和认识。。

其次,给出用元闰(377873)与朔率(499067)求等数、因率、蔀率:

用现今数学语言来说,如果设x为元数,y为朔数,且有闰缩(188578)、闰赢(310489),这是在求解:377873x-499067y=188578或377873x-499067(y+1)=-310489[9—10]。秦九韶接着用等数1约闰缩188578得188578,与因率457999相乘得86368535422,满蔀率499067去之,得402为元数①实际上相当于秦九韶在求解 ax- by=c或 ax≡c(mod b),当 a、b、c有等数 d,即 a=a0 d、b=b0 d、c=c0 d 时,利用大衍术求得因率k,和蔀率b0,则 ak≡d(mod b)或 a0 k≡1(mod b0)。又有 a0 x≡c0(mod b0),于是 x≡c0 k(mod b0),即相当于:以等数约闰缩与因率相乘,满蔀率去之,不满在限下为可用元数。。显而易见,这里秦九韶之大衍术既非大衍总数术,也非大衍求一术。合理的名称应该是“大衍求等术”。这种“大衍求等术”和历家之方程关系密切。历家之方程“列号甲乙丙丁四位”,在秦九韶看来“非特置筭繁多”,即动用筭筹太多;“初无定法可传”是讲历家忽视了用元数约化的问题。

前文提到王翼勋、王荣彬、徐泽林复原之方程,并非《九章筭术》之方程。王翼勋之复原,其算法与方程相去甚远。王荣彬、徐泽林主要基于两点:其一,与秦氏大衍求一术相似;其二,列号甲乙丙丁四位,故列成两行两列。故其方程形式为实是似是而非。因为我们知道在筹筭体系下,是用空置一位来表达零的。换言之,王、徐二位之复原,若以筹筭御之,则只是列号a、b、c三位②此段之疑问由严格认真的匿名审稿专家提出,在此感谢。在筹筭体系下,王、徐二位之复原,有一空位用以表示零,故只可列号三位,反而欲求列号四位而不得了。王翼勋之复原,虽列号四位,但算法及其形式与方程相去更远。。

其实,尽管我们看不到历家之方程算法的精确史料,却可以看到许多描述性史料。陈元靓《事林广记》儒教类引九数释文引方程条说:

方程。以御错糅正负。今作历者用此法。谓如筭钱,逐件除下零细底,绝长补短,凑得齐整,便好筭。如一年十二月有月大者小者,日子不齐,便将闰月来补凑,每月作三十日。又如日月星辰之行不同,却要筭个行之会,都相合[13]。

“以御错糅正负”出自《九章筭术》刘徽注。无疑,此处谈到之方程即是《九章筭术》之方程。却又明确说“作历者用此法”,这就是说历家之方程等于传统数学之方程。北宋高承《事物纪原》卷一九章条亦说:“八方程,如筭钱,逐渐除下零细的,绝长补短,凑得齐整,便好筭。[14]③两处“筭”,点校本均作“算”,今改正。”《宋史·律历志》载周琮明天历(1065—1067年施行)说:“以方程约而齐之。今须积岁七十一万一千七百六十一。[15]”开禧历作者鲍澣之,批评杨忠辅统天历(1199年施行):“无复强弱之法,尽废方程之旧。([15],1945页)”

根据以上这些描述性史料判断,笔者认为历家之方程就是传统数学之方程。不太可能同样都是叫做方程,历算家和数学家的意义会不一样,更何况历算家往往就是数学家。秦九韶认为数学分为内算和外算。天象历度、太乙壬甲,皆曰内筭。《九章筭术》所载,皆曰外筭。内外相通,不可歧二,而唯独内筭之大衍术不载《九章》④原文如下:“今数术之书尚三十余家。天象、历度谓之缀术,太乙、壬、甲谓之三式,皆曰内筭。言其秘也。《九章》所载即周官九数,系于方圆者为叀术,皆曰外筭。对内而言也。其用相通不可岐二。独大衍法不载《九章》,未有能推之者。历家演法颇用之,以为方程者,误也。”([4],序,2a-2b)。。秦九韶的看法来源于跟随太史和隐君子学习的经历。同时,因为不满意王翼勋、王荣彬、徐泽林的复原,所以笔者提出一种新的复原,其形式与算法都和《九章筭术》方程一致(只是目的不同),并且既可符合上述史料的描述,在算法上亦可以达到大衍求一(或求等)术的效果。这种方程布筭具有下述形式:

2×3规格布筭,其中a、b、c、d即所谓“列号甲乙丙丁四位”。其算法、意义则与《九章筭术》方程一致。现以此方程说明以上两例。与秦九韶运用筭图不同的是,历家用筭筹解决问题。在不影响讨论的前提下,用现今数码代替古代筭筹,用空位表零,不失筹筭本意。

其一,用斗定分(4108)与日法(16900)求等数、因率、蔀率:

于是等数52,因率144,蔀率325。这里历家之方程与秦九韶大衍术基本一致。其二,用闰赢、闰缩、元闰、朔率列号甲乙丙丁,求元闰:

然后用86388535422满蔀率499067去之,得元数402。这里历家之方程比秦九韶大衍术麻烦得多。

上述运算每一步都用《九章筭术》方程之直除法,只是其算法目的不同。其算理从方程角度来看则意义明了。下行更相减损之后,最下行必得等数。而左中行必得乘率。以现代数学证明之,即是说相当于,经运算最后得相当于即于是等数52,因率144,蔀率325。又相当于,经运算最后得,便是。亦即是:

86368535422×377873-345778×499067×188578=188578。于是得等数1,用86388535422满蔀率499067去之,得元数402。但如果等数与188578没有公约数时,则无解。

上述方程亦能符合史料中描述性语言。“方程约而齐之”是指:方程两“下实”更相减损即不断相约最后得到等数;“如筭钱逐件除下零细底,绝长补短,凑得齐整,便好筭”,则是指:方程运算中“下实”逐渐减小,“上法”逐渐增大,如“绝长补短”;最后求得等数如“凑得齐整”。如果笔者推测不误,那么由此方程不仅可见大衍术之演进,而且可以看出秦九韶之贡献。

《九章筭术》之方程术,其法用直除法。刘徽认识到方程每一行是率,即“令每行为率”[16],那么方程通过直除运算便可以得到一系列的率①此即刘徽的方程新术。又,秦九韶大衍求一术的“乘率”之名,应该由此而来。。另一方面,因为上元积年的推算使得在汉代就有求解一个一次不定方程或一个一次同余方程的需求[6]。《九章筭术》有更相减损术,用以求两术的最大公约数。如果将更相减损术,运用于方程术,以求解此类问题,这便是历家之方程。

李继闵证明:“无论就可行性、简便性、适应性来讲,总数术都远不如演纪术。古人用算必择善者而从之。剩余定理是一个精致的构造,用它来编制的数学游戏——秦王暗点兵也是饶有兴趣的。但是,对于应用来说,它是华而不实的。”([7],30页)笔者进而认为,历算家用筭筹解决历法计算,必须考虑用筭的实用性、经济性。刘徽即说过筭家应追求“虽布筭不多,然足以算多”([16],367页)的做法。因此,从这个角度看,虽然演纪法在算法的优美程度上不及大衍总数术,但在实用性上却更胜一筹。历算家采用动用筭筹更少、算法更简洁的演纪法求解上元积年是势在必行。而其中求乘率之关键程序,则用方程解决②尽管历家已经采用了较为优化的演纪术,然而,在运用筭图的秦九韶看来,仍然是“置筭繁多”。。

2 秦九韶之大衍

秦九韶之大衍总数术是其最高之数学成就,历来备受称赞。大衍总数术,主要分成三部分:其一是元数约化法则(即化不互素之元数为互素),其二,大衍求一术(求解关键之乘率),其三,程序性之算法求答数(即相当于《孙子筭经》物不知数之程序)。笔者再详论之。

历家之方程从传统之方程演变而来,其算理相同,只是目的不同。对比上文历家之方程和秦九韶的草图,容易发现:历家之方程最后旨在得到乘率和蔀率,这也就是说方程三横行布筭最上面一行的计算是多余的,如果把最上面一横行删去,用辗转相除替代直除(两者相通)③此处辗转相除和直除之变化,系匿名审稿专家指出,在此感谢。实际上,用辗转相除替代直除,就是用互乘相消替代直除。虽然从算理上看两者相通,但是在实际筹筭过程中,离不开筭图的帮助。见笔者对秦九韶筭图与方程互动之详尽分析。,把左下角和右上角两数位置调换,并把运算之负数全改为正数(这不影响结果),那么它就是秦九韶《数书九章》治历演纪题中记载的大衍求等术。而如果再把两数做约化处理,那么它的形式和算法就和秦九韶的大衍求一术完全一样。秦九韶跟太史和隐君子学过数学,他对历家之方程作了优化处理,提出大衍总数术算法之关键程序——大衍求一术。

秦九韶大衍求一术的算理并不显而易见,但用历家方程观之,则其理显然。假设(a,b)=1,a < b,则即相当于x=a,y=b),通过a、b两数递互除之,所得商数递互累乘随加,最后得到,即相当于kx-jy=1或kx≡1(mody),则有ka≡1(modb),如此k便为乘率。至此,我们方可以理解秦九韶“历家虽用,用而不知”的真意。

同时,秦九韶亦着手处理元数两两不互素的问题。他提出了著名的元数约化法则。诸家多有所论,而对其核心算法“约奇弗约偶”的解读上争议颇多,众说纷纭。钱宝琮认为此奇偶不是单双之意,各家都从之,几成定论[17]。侯刚博士学位论文,详考各家说法。分为三类,其一“约奇弗约偶”只是一种原则,未给实质分析,包括李俨、钱宝琮、李文林、袁向东诸家;其二认为奇偶是指定数或等数之单双,包括四库馆臣、梅荣照、钱克仁、王翼勋、沈康身、王守义、王渝生诸家;其三认为奇偶指奇位、偶位,有李继闵、莫绍揆、李兆华、沈康身、孔国平诸家。侯刚自己则认为奇偶指等数个数的单双,而非指元数之单双[18]。但是,《数书九章》行文多次出现“奇”、“偶”,他处都是指数之单双,为何仅此处意义独特?这似乎很难理解。从原始文献入手,秦九韶把问数分为四类:元数、收数、通数、复数。每类有不同算法:

元数者。先以两两连环求等,约奇弗约偶或约得五而彼有十,乃约偶而弗约奇。或元数俱偶,约毕可存一位见偶。或皆约而犹有类数存,姑置之,俟与其他约徧而后乃与姑置者求等约之。或诸数①“诸数”,赵钞本作“请数”,依《四库全书》本、《宜稼堂丛书》本改正。皆不可尽类,则以诸元数命曰复数,以复数格入之。

收数者。乃命尾位分厘作单零以进所问之数。定位讫,用元数格入之或如意立数为母收进分厘以从所问,用通数格入之。

通数者。置问数通分内子互乘之,皆曰通数。求总等,不约一位约众位得各元法数②本段两处“元法数”,《四库全书》本均作“原法数”,赵钞本、《宜稼堂丛书》本作“元法数”,从之。。用元数格入之。或诸母数繁,就分从省通之者,皆不用元各母。仍求总等存一位约众位亦各得元法数,亦用元法数格入之。

复数者。问数尾位见十以上者。以诸数求总等存一位约众位,始得元数。两两连环求等,约奇弗约偶,复乘偶。或约偶或约奇,复乘奇。或彼此可约而犹有类数存者,又相减以求续等。以续等约彼,则必复乘此,乃得定数。所有元数、收数、通数三格,皆有复乘求定之理悉可入之。([4],卷1,2b-3a)

术文云:收数用通数格入之,通数用元数格入之。因此秦九韶求定数的核心算法就是元数格和复数格。钱宝琮在谈到这个问题时,引复数格术文,继而加以讨论([17],70—71页)。不知为何而忽略了元数格术文。元数格术文云:“或诸数皆不可尽类,则以诸元数命曰复数,以复数格入之”,即先用元数格,当“诸数皆不可尽类”,方用复数格。而复数格术文又云:“以诸数求总等存一位约众位,始得元数”,即此后用元数格入之。或言秦九韶求定数方法,先判断“诸数是否可尽类”,若否则“以诸数求总等存一位约众位,始得元数”,继用元数格入之;若是则直接用元数格入之。钱宝琮引复数格术文,而不引元数格,遗漏颇为重要的元数俱偶情况。或是造成后人误解之滥觞。

根据元数格术文,可知秦九韶将求定数方法分为四种情况。其一:两两连环求等,约奇弗约偶(或约得五而彼有十乃约偶而弗约奇);其二:或元数俱偶,约毕可存一位见偶;其三:或皆约而犹有类数存,姑置之,俟与其他约徧而后乃与姑置者求等约之;其四:或诸数皆不可尽类,则以诸元数命曰复数,以复数格入之。

把上述算法作为整体来理解,则“约奇弗约偶”之奇偶,当指元数之单双无疑。这也就是说,秦九韶求定数的方法是分情况讨论。当两个元数中有奇,用“约奇弗约偶”,目的是使得两数互素,否则反约,即“或约得五而彼有十,乃约偶而弗约奇”。当两个元数皆为偶数,则“约毕可存一位见偶”,使得约化后只留一个偶数,也是要两数互素。当以上约化完毕之后“犹有类数存”,“则姑置之,俟与其他约徧而后乃与姑置者求等约之”。当“诸数皆不可尽类”,“则以诸元数命曰复数,以复数格入之”。

下面每种情况各举数例说明①笔者已验证《数书九章》所有题目均与以上说明符合。这里举几个例子说明。。卷一“蓍草发微”题。有2、4相约。此乃元数俱偶,当约毕可存一位见偶。则只可约2为1。若约4为2,则约毕仍然两数俱偶,不符合术文。卷一“推计土功”题。有24、54相约。24、54等数为6。此乃元数俱偶,当约毕可存一位见偶。则只可约54为9。若约24为4,则4、54两数俱偶,不符合术文。卷二“积尺寻源”题。有40、15相约。40、15等数为5。此乃两数一奇一偶,用约奇弗约偶。将15约为3,且40、3互素。卷一“推计土功”题。又有25、120相约。25、120等数为5。此乃两数一奇一偶,用约奇弗约偶。将25约为5。然5与120仍有等数,故“或约得五而彼有十乃约偶而弗约奇”。即约120为24。则25、24互素。“推计土功”又有3、9相约。此两数中有奇,故可约任意一数,而务必使约后两数无等。则约3为1。

总之,“约奇弗约偶”之奇偶就是指两元数之单双。当两元数中有奇则用“约奇弗约偶”,务必使约化后两数无等。当两元数俱偶,则“约毕可存一位见偶”,即约化后只可存一位偶数。如以上约化之后,“犹有类数存”,则“姑置之,俟与其他约徧而后乃与姑置者求等约之”。这样解释既符合《数书九章》原文,又不必篡改奇偶之本意。而且不必如前人一样在某些情况下生硬地把偶数称作“奇”②如“蓍草发微”题2、4相约,必约2,则学术界所有之解释都称此“2”为奇。。前人之误解和争论,殆由于忽视“或元数俱偶,约毕可存一位见偶”一句所致。

《孙子筭经》“物不知数”题,已有了大衍总数术的初步程序,但是其元数两两互素,并且缺了求乘率之大衍求一术。从秦九韶对历家的评价:“非特置筭繁多,初无定法可传,甚是惑悮后学,易失古人之术意”,可以推知历家不知约化。因此提出元数约化法则应是秦九韶之贡献。利用筭图是秦九韶能完成大衍总数术之关键。出于筹筭之实用性、经济性考虑,历家往往采用演纪法求解上元积年。秦九韶说“立术具草,简以图发之。”筭图运用之后,此桎梏大为消解。利用筭图,使得秦九韶可以顺利地运用方程之互乘相消法,即使得他可以用辗转相除替代直除,优化方程。与秦九韶有过直接交流的陈振孙说:“秦博学多能,尤邃历法,凡近世诸历,皆传于秦,所言得失亦悉着其语云。[19]”总而言之,秦九韶向太史和瘾君子学习数学,提出约化定数的方法,又利用筭图优化历家之方程,提出大衍求一术,结合《孙子筭经》已有之算法程序,给出了大衍总数术。

3 再论“通其率”

李继闵曾撰文认为大衍求一术来源于通其率算法[20,21],所谓“通其率”与本文论述之方程术算理是相通的。通其率的出处,在《汉书·律历志》:

木,晨始见,去日半次。顺,日行十一分度二,百二十一日,始留,二十五日而旋。逆,日行七分度一,八十四日,复留,二十四日三分而旋。复顺,日行十一分度二,百一十一日有百八十二万八千三百六十二分而伏。凡见三百六十五日有百八十二万八千三百六十五分,除逆,定行星三十度百六十六万一千二百八十六分。凡见一岁,行一次而后伏,日行不盈十一分度一,伏三十三日三百三十三万四千七百三十七分,行星三度百六十七万三千四百五十三分。一见,三百九十八日五百一十六万三千一百二分,行星三十三度三百三十三万四千七百三十七分。通其率,故曰:日行千七百二十八分度之百四十五。

土,晨始见,去日半次。顺,日行十五分度一,八十七日,始留,三十四日而旋。逆,日行八十一分度五,百一日,复留,三十三日八十六万二千四百五十五分而旋。复顺,日行十五分度一,八十五日而伏。凡见三百四十日八十六万二千四百五十五分,除逆,定行星五度四百四十七万三千九百三十分。伏,日行不盈十五分度三,百三十七日千七百一十七万一百七十分,行星七度八百七十三万六千五百七十分。一见,三百七十七日千八百三万二千百六十二五分,行星十二度千三百二十一万五百分。通其率,故曰:日行四千三百二十分度之百四十五。

火,晨始见,去日半次。顺,日行九十二分度五十三,二百七十六日,始留,十日而旋。逆,日行六十二分度十七,六十二日,复留,十日而旋。复顺,日行九十二分度五十三,二百七十六日而伏。凡见六百三十四日,除逆,定行星三百一度。伏,日行不盈九十二分度七十三分,伏百四十六日千五百六十八万九千七百分,行星百一十四度八百二十一万八千五分。一见,七百八十日千五百六十八万九千七百分,凡行星四百一十五度八百二十一万千五分。通其率,故曰:日行万三千八百二十四分度之七千三百五十五。[22]

此处之“通其率”是何种算法?吕子方认为通其率就是连分数,此处之计算都是分数的近似计算[23]。李继闵质疑吕子方看法[20]。他以对土星、木星、火星日行度的验算表明:在《三统历》中按“五步”所载数据计算都是精确的。并认为“吕子方由于采用十进小数并保留小数点后六位数字,因而导致了近似计算”。

李继闵自问“通其率术——是约分还是分数近似法?”。他的自答是:两者皆是[24]。他认为“从词语结构看,‘通其率’与‘通分’同类,‘通’是动词,‘其率’是名词(作宾语)”([20],28页)。笔者亦撰文指出:对于“通分术”,学术界存在着不恰当的理解。因为筹筭实用性、经济性的原因,通分是化分数为整数的算法,通分算法往往运用于分数除法。笔者认为“通其率”既非约分,亦非渐近分数算法,而是《晋书·律历志》和《宋书·律历志》中的“通分相约,终而率之”[25,26]。简单地说,“通其率”等于《后汉书·律历志》中的“通率”[27]。学术界一般认为《九章筭术》“其率术”中的“其”有推测、揣测之意。笔者认为:“通其率”中之“其”,在此处作代词用,指木星、火星、土星。对于中国古代数学“率”的研究,已有不少专论[28,29]。总而言之,“率”指一组数,这些数有正比例关系。最简单的是两个数的正比例关系①如果a:b=常数,则a、b分为二率。最明显的例子是圆周率和圆径率。有圆周率:圆径率 =π。值得注意的是:一组率数往往要求是既约的:即若a、b为率,则a、b最大公约数(a,b)等于1。同理,若a、b、c为率,则要求(a,b,c)=1。。

在以上对“通”、“其”、“率”理解的基础上,就可以解释《汉书》之“通其率”。“通其率”旨在计算:。由于星行率、日行率都是分数,计算分数除法自然要用到通分,以便化除数、被除数为整数。但为何不称为“通分”?因为通分之后,两数并不互素;为了化两数为互素,得到既约之率,故称为“通其率”。具体算法见表1。

表1 三统历之通其率

可见,三统历的“通其率”只是简单的通分术运用于“率”上的结果。

王荣彬、徐泽林的文章认为中国数学史上是否有“通其率术”之名,值得考证[11]。其实,“通其率”不是某种算法的专用术语。刘徽为《九章筭术》作注,多次用到‘通某某之率“的句式,亦有直接用到“通其率”。

卷六均输卷中人持金出关题注:

按:此术置十二斤,以一乘之,十而一,得一斤五分斤之一,即所当税者也。减二斤,余即关取盈金,以盈除所偿钱,即金直也。今术既以十二斤为所税,则是以十为母,故以十乘二斤及所偿钱,通其率。于今有术,五千钱为所有数,十为所求率,八为所有率,而今有之,即得也。([16],250页)此处“通其率”是要计算,通其率,是通分术在率上的简单应用。

卷六金棰题注:

按:此术五尺有四间者,有四差也。今本末相减,余即四差之凡数也。以四约之,即得每尺之差,以差数减本重,余即次尺之重也。为术所置,如是而已。今此率以四为母,故令母乘本为衰,通其率也。亦可置末重,以四间乘之,为上第一衰。以差重率加之,为次下衰也。([16],251—252页)

此处通其率指:差数=(本重-末重)/4,列衰为:本重、(本重-差数)、(本重-2差数)、(本重-3差数)、(本重-4差数),由于差数为分数,以4为母,所以必须用4乘本重,则差数可以化分数为整数。亦是通分术在“率”上的简单应用。

唐代李淳风为《九章筭术》作注,也有直接用到“通其率”。卷三衰分“牛、马、羊食人苗”题注:

臣淳风等谨按:此术问意,羊食半马,马食半牛,是谓四羊当一牛,二羊当一马。今术置羊一、马二、牛四者,通其率以为列衰。([16],106—107页)

此处“通其率”为“通达其率”之意。因为4羊=1牛,2羊=1马,则羊∶马∶牛=1∶2∶4。由此可知,至少在刘徽和李淳风心目中,“通其率”并非专用术语,它只是一个简单的通分算法,这种理解和“通率”、“通分相约、终而率之”是一致的。

4 祖冲之圆周率和渐近分数算法

中国古代有无渐近分数算法,是中国数学史上的一个疑案。因为大量的渐近分数出现在中国历史上,却没有明确记载这些数据来源的文献。各家基本持肯定的观点,但具体看法又有不同。吕子方认为是连分数[23],李继闵认为是通其率[20],曲安京则认为有一种闰周算法[30],这三种算法在算理上是等价的。另外也有调日法的说法。其实,通其率只是通分(率之)。连分数之说和闰周算法之说都具有现代数学的形式,是它们的缺陷。对于古算来说,计算结果固然重要,更重要的是要符合筹筭之运算过程。笔者认为:在中国历史上,渐进分数算法是存在的,但和《汉书》的通其率没有关系,不是其求星日行度的方法。

实际上,历家方程的一个妙用,就是它的计算过程中可以自然地得到一系列的渐近分数。而这种算法既符合筹筭之形式,又根本无须用到比《九章筭术》更高深的数学知识,因此笔者认为利用方程求得一系列渐进分数,可能更能符合古人的原意。

《隋书·律历志》载:

古之九数,圆周率三,圆径率一,其术疏舛。自刘歆、张衡、刘徽、王蕃、皮延宗之徒各设新率,未臻折衷。宋末,南徐州从事史祖冲之,更开密法。以圆径一亿为一丈,圆周盈数三丈一尺四寸一分五厘九毫二秒七忽,朒数三丈一尺四寸一分五厘九毫二秒六忽,正数在盈朒二限之间。密率,圆径一百一十三,圆周三百五十五。约率,圆径七,周二十二。[31]

由于密率355/113是π的一个渐近分数,这里实是一个求渐近分数的问题。祖冲之如何得到约密二率,诸说纷纭。有连分数说[32],大衍术说[33],调日法说([5],87—88页),通其率说[20],闰周算法说[30]。下面用方程说明祖冲之如何得到他的约密二率①当然下述过程这也可以同样解释历史上出现的其他渐近分数,例如调日法之强弱二率和,闰周、朔望月余数、近月点余数、平气余数、交食周期之强、弱二率。。祖冲之先用刘徽割圆术中求圆周率的办法得到圆周盈朒二限。假如祖冲之舍弃余分取周3141592、径1000000,用方程术便可求得约率和密率(用现今数码代替筭筹,空位表零,不失筹筭本意):

如此便得:约率22/7和密率355/113。笔者推测,这种方程运算对祖冲之来说应是再自然不过。

5 结论

综上所述,本文结论如下:

其一,历家之方程即《九章筭术》之方程。如果把此方程三横行布筭的最上面一横行删去,用辗转相除替代直除,把左下角和右上角两数位置调换,并把运算之负数全改为正数,那么它就是《数书九章》所载之大衍求等术。如果再把两数做约化处理,那么它的形式与算法就和大衍求一术完全一样。

其二,“约奇弗约偶”之奇偶即指两元数之单双。秦九韶对不同情况采用不同约化元数的方法。当两元数中有奇则用“约奇弗约偶”,务必使约化后两数无等。当两元数俱偶,则“约毕可存一位见偶”,即约化后只可存一位偶数。如以上约化之后,“犹有类数存”,则“姑置之,俟与其他约徧而后乃与姑置者求等约之”。

其三,历家之方程不知约化,用筭繁多。在此基础上,秦九韶提出了约化定数的方法,利用筭图,对方程进行优化,提出大衍求一术,结合《孙子筭经》已有之算法程序,给出了相当于求解一次同余方程式组的系统算法——大衍总数术。

其四,《汉书》之通其率并非专门术语,亦非渐进分数算法,它只是对率通分,即“通率”、“通分相约、终而率之”。

其五,在历家方程之运算过程中可以自然得到一系列渐近分数。这样就可以自然地解释中国历史上出现的大量渐近分数——既可符合筹筭之过程,又无需用到比《九章筭术》更高深的数学知识①笔者认为古书中之相关记载,往往对应着一个筹筭过程。这即是说如果今人对于历筭、数学之解释,是不可用筭筹是操作的,那么往往是错误的。。

秦九韶之大衍求一算理晦涩,然而以方程观之,则其理自现。“立天元一”之一,是借一筭之意;“奇一而止”之一,则是等数一。即秦九韶所谓:“历家虽用,用而不知”、“独大衍法不载《九章》,未有能推之者。历家演法颇用之,以为方程者,误也”。至此,大致勾勒出秦九韶之前大衍求一术的发展情况:由更相减损术和方程术到历家之方程,再到大衍求等术,最后到大衍求一术。利用筭图,再提出约化元数的方法,秦九韶完成了大衍总数术。

1 (比利时)U.Libbrecht(李倍始),Chinese Mathematiques in the Thirteeth Century,The Shu-shu-chiu-chang of Chin Chiushao[M].Cambridge,Massachustts and London,England:M.I.T.press,1973.

2 (南宋)秦九韶.数书九章(宜稼堂丛书本)[A].郭书春主编.中国科学技术典籍通汇·数学卷[Z].第1册.郑州:河南教育出版社,1993.

3 (南宋)秦九韶.数学九章[M].景印文渊阁四库全书[Z].第797册.台北:商务印书馆,1985.

4 (南宋)秦九韶.数书九章[M].北京中国国家图书馆藏明万历四十四年赵琦美钞本.

5 钱宝琮.中国数学史[M].北京:科学出版社,1964.78—79.

6 李文林,袁向东.论汉代上元积年的计算[A].科技史文集·第2辑[M].上海:上海科学技术出版社,1980.70—76.

7 李继闵.秦九韶关于上元积年推算的论述[A].吴文俊.中国数学史论文集(四)[C].济南:山东教育出版社,1996.22—36.

8 严敦杰.宋金元历法中的数学知识[A].钱宝琮.宋元数学史论文集[C].北京:科学出版社,1966.210—224.

9 王翼勋.秦九韶演纪积年法初探[J].自然科学史研究,1997,16(1):10—20.

10 王翼勋.开禧历上元积年的计算[J].天文学报,1997,48(1):94—105.

11 王荣彬,徐泽林.关于“大衍术”源流的算例分析[J].自然科学史研究,1998,17(1):47—54.

12 沈康身.更相减损术源流[A].吴文俊.《九章算术》与刘徽[C].北京:北京师范大学出版社,1987.210—227.

13 (南宋)陈元靓.事林广记[M].北京:中华书局,1999.91.

14 (北宋)高承撰,(明)李果订,金圆、许沛藻点校.事物纪原[A].北京:中华书局,1989.15.

15 (元)脱脱.宋史·律历志七[A].北京:中华书局,1977.1689.

16 (西汉)张苍、耿寿昌编定,(魏)刘徽注,(唐)李淳风等注释,郭书春汇校.《汇校九章筭术》增补版[M].沈阳:辽宁教育出版社,台北:台湾九章出版社,2004.353.

17 钱宝琮.秦九韶《数书九章》研究[A].吴文俊.秦九韶与《数书九章》[C].北京:北京师范大学出版社,1987.71.

18 侯钢.两宋易数及其与数学之关系初论[J].北京:中国科学院自然科学史研究所博士学位论文,2006.75—80.

19 (南宋)陈振孙撰.直斋书录解题[A],徐小蛮,顾美华点校.上海:上海古籍出版社,1987.368—369.

20 李继闵.“通其率”考释[A].吴文俊.中国数学史论文集(一)[C].济南:山东教育出版社,1985.

21 李继闵.“大衍求一术”溯源[A].吴文俊.秦九韶与《数书九章》[C].北京:北京师范大学出版社,1987.138—158.

22 (东汉)班固.汉书·律历志下[A].北京:中华书局,1964.998—1000.

23 吕子方.中国科学技术史论文集·上册[M].成都:四川人民出版社,1983.86—96.

24 李继闵.中算家的分数近似法探究——兼论数学史研究的方法问题[A].吴文俊.中国数学史论文集(三)[C].济南:山东教育出版社,1987.31—33.

25 (唐)李淳风.晋书·律历志下[A].北京:中华书局,1974.553.

26 (梁)沈约.宋书·律历志中[A].北京:中华书局,1974.248.

27 (晋)司马彪.后汉书·律历志下[A].北京:中华书局,1965.3070—3073.

28 郭书春.《九章算术》和刘徽注中之率概念及其应用试析[A].科学文集刊编辑委员会.科学史集刊(十一)[C].北京:地质出版社,1984.21—36.

29 李继闵.《九章算术》中的比率理论[A].吴文俊.《九章算术》与刘徽[C].北京:北京师范大学出版社,1982.229—245.

30 曲安京.祖冲之是如何得到圆周率π=355/113的?[J].自然辩证法通讯,2002,139(3):72—77.

31 (唐)李淳风.隋书·律历志上[A].北京:中华书局,1973.387—388.

32 华罗庚.从祖冲之圆周率谈起[M].北京:人民教育出版社,1964.12—14.

33 钱宝琮.古算考源[M].上海:商务印书馆,1930.47.

猜你喜欢

约化方程分数
方程的再认识
约化的(3+1)维Hirota方程的呼吸波解、lump解和半有理解
方程(组)的由来
分数的由来
无限循环小数化为分数的反思
圆的方程
可怕的分数
算分数
M-强对称环
(3+1)-维广义Kadomtsev-Petviashvili方程的对称约化与精确解