首页 理论教育 《张丘建算经》的创新与传承:甄鸾注释与李淳风补立

《张丘建算经》的创新与传承:甄鸾注释与李淳风补立

时间:2023-07-18 理论教育 版权反馈
【摘要】:甄鸾的生平和事迹在本章第一节中已作过介绍,但传本《张丘建算经》中,没有留下甄鸾的注释。作为“十部算经”之一,凡《张丘建算经》解题术文有过于简略之处,李淳风等依据《九章算术》为之补立术文。传本《张丘建算经》中共有九处注释标有“臣淳风谨按”字样。《张丘建算经》继承了《九章算术》的遗产,并且提供了很多推陈出新的创见。纪志刚经过对比研究后指出,《张丘建算经》广泛吸收了《九章算术》的数学成果。

《张丘建算经》的创新与传承:甄鸾注释与李淳风补立

《张丘建算经》(图3-5),《算经十书》之一,其后为孔子讳,改作《张邱建算经》。

图3-5 1890年刻《张邱建算经》内封、序

一、《张丘建算经》的成书年代及作者、注释者

关于《张丘建算经》的成书年代,数学史界多以钱宝琮的观点为是,即其撰写年代在466年至484年之间,依据是《魏书·食货志》的有关记载及《张丘建算经》卷中第13题的内容。《魏书·食货志》记载,北魏献文帝即位(466)后,“因民贫富为租输三等九品之制”,即颁行九品混通制的户调法[233]

先是天下以九品混通,户调帛二匹,絮二斤,粟二十石,又入帛一匹二丈,委之州库以供调外之费。至是(太和八),户增帛三匹,粟二石九斗,以为官司之禄。

太和九年(485),孝文帝“下诏均给天下民田”,即实行均田制。其后,废弃九品混通制的户调法。《张丘建算经》卷中第13题反映了北魏太和八年实施的九品混通制户调法的情况。该题曰:

今有率户出绢三匹,依贫富欲以九等出之,令户各差二丈。今有上上三十九户,上中二十四户……下下一十三户。问九等户,各应出绢几何?

据此,钱宝琮先生得出结论:“我们断定《张丘建算经》的编写年代是在公元466年到485年之间。阮元《畴人传》列张丘建于晋代是缺少依据的。”[234]

也有学者对钱宝琮先生的观点提出了异议。因为史料表明,“九品混通”的户调制并非始于北魏献文帝,而是沿袭晋代“九品相通”之制而来,在北魏初期就已实行。《魏书·世祖纪》记载[235],太延元年(435)十二月诏:“若有发调,县宰集乡邑三老计定货,衰多益寡,九品混通,不得从富督贫,避强侵弱。”由此,《张丘建算经》的“九等户出绢”一题只能表明该书撰成于466年之前。通过对书中具有时代特征的算题内容考证,冯立昇认为,《张丘建算经》成书于431年至450年之间,即该书是北魏早期的作品。[236]不过,无论哪种观点均认可《张丘建算经》是北魏时期的著作。

张丘建是著名数学家,但正史无传,生平事迹皆不可考。关于张丘建的籍贯,史籍中可以查到两条线索:其一,自序最后题款“清河张丘建”;其二,北宋大观三年(1109)祀封他为“信成男”[237]。北魏时,有两个清河郡:一为司州清河,汉高祖时就已置郡,郡址在今山东省临清县东北,其地与今日河北省境内的清河县隔运河相望;另一个为齐州清河,亦称东清河,郡址在今山东省淄博市西南。北宋末年的算学祀典,有案可稽的人物都按其郡望受封。例如张衡被封为“西鄂(今河南南召)伯”,祖冲之被封为“范阳子”。而信成正是汉代时清河郡的属县,地点与上述司州清河相近。因此可以确定张丘建是山东人士[238]

传本《张丘建算经》各卷第一页上均题有以下三行:

汉中郡守、前司隶臣曾鸾注经

唐朝议大夫、行太史令、上轻车都尉臣李淳风等奉敕注释

唐算学博士刘孝孙细草

以此推知,《张丘建算经》的主要注释人是甄鸾、刘孝孙和李淳风。甄鸾的生平和事迹在本章第一节中已作过介绍,但传本《张丘建算经》中,没有留下甄鸾的注释。

刘孝孙(?—594),广平(今河北省永年县)人,著名历算家。其事迹见《隋书·律历志》和《隋书·天文志》。早年,刘孝孙追随并接受了张子信的学说。对此,《隋书·律历志》曰[239]:“又有广平入刘孝孙、张孟宾二人,同知历事,孟宾受业于张子信,并弃旧事,更制新法”。刘孝孙初仕北齐,576年编撰《武平历》,未被采用。577年北齐灭亡,刘孝孙入北周。581年隋灭北周,刘孝孙仕隋,但长期受到压抑,“留直太史,累年不调,寓居观台”。590年前后,刘孝孙参与了当时的历法改革之争,情绪激昂,曾抱书扶棺上朝,面陈隋文帝杨坚。虽然隋文帝没有听从他对历法改革的意见,但刘孝孙却从此受到隋文帝的重视。刘孝孙精于历算,仕隋后,曾任算学博士,写出了《张丘建算经细草》。唐代,另有刘孝孙(?—632),荆州(今湖北江陵)人。此人是一文人,非算学博士。故传本所题“唐算学博士”应是“隋算学博士”的误文。

刘孝孙的细草表现出一些南北朝时期通行的算法。如《九章算术》开立方术,文简意赅。刘徽虽详加注释,但仍“言不尽意”。《孙子算经》不载开立术方术。《张丘建算经》开立方术的刘孝孙细草,是魏晋之后的开立方算法,比《九章算术》开立方术有了重要的改进,显得更加清晰明确。从而为考察古代算法的历史演变,留下一份珍贵的史料。

李淳风(602-670),唐代岐州雍(今陕西凤翔)人,《旧唐书·李淳风传》称其“幼俊爽,尤明天文、历算、阴阳之学”[240],是中国历史上重要的天文学家、历算家、阴阳家、仪器制造家。李淳风在数学方面的主要贡献,是和梁述、王真儒等受诏编定和注释“十部算经”,以作为国子监算学馆的教材。对此,《旧唐书·李淳风传》曰[241]

先是,太史监侯王思辩表称《五曹》《孙子》十部算经,理多踳驳。淳风复与国子监算学博士梁述、太学助教王真儒等受诏注《五曹》《孙子》十部算经。书成,高宗令国学行用。

作为“十部算经”之一,凡《张丘建算经》解题术文有过于简略之处,李淳风等依据《九章算术》为之补立术文。传本《张丘建算经》中共有九处注释标有“臣淳风谨按”字样。

二、《张丘建算经》对《九章算术》的继承和发展

传本《张丘建算经》[242]由序言、上中下三卷组成,卷中之尾,卷下之首残缺。全书采用《九章算术》编排体例,现存92问。《张丘建算经》继承了《九章算术》的遗产,并且提供了很多推陈出新的创见。对此,钱宝琮在《张丘建算经提要》一文中归纳为五方面:最大公约数与最小公倍数的应用、等差级数问题、盈不足问题的算术方法、开带从平方法(求二次方程的正根)及“百鸡问题”。

纪志刚认为[243],除以上五方面外,《张丘建算经》在分数约分的改进、开立方算法的程序化、勾股测量方法的设计等方面也重要意义。纪志刚经过对比研究后指出,《张丘建算经》广泛吸收了《九章算术》的数学成果。书中许多问题或是直接来源于《九章算术》或是在《九章算术》的问题上加以新的变化,见表3-2。

表3-2《张丘建算经》与《九章算术》相应问题对照表

当然,《张丘建算经》并未因循《九章算术》陈法,而是在解题方法上,更加注重算法设计的简洁与合理性。如取自《九章算术》“盈不足”章的第6题,仅卷下“雀燕称重”一问,以盈不足算法的固定模式求解,其余5问则代之以更为直接的算术分析方法。同时,指明“以盈不足为之,亦得”。“这种重视算术问题的具体分析,因而提高了解题的技术,这在数学发展过程中是进步的。”[244]

另外,《张丘建算经》也从《孙子算经》与《夏侯阳算经》中汲取了一些有趣的素材。如其《序言》所云:“夏侯阳之‘方仓’,孙子之‘荡杯’,此等之术皆未得其妙,故更造新术,推尽其理,附之于此。”今之传本《夏侯阳算经》已非原本,故其“方仓”之术不可详考。查《张丘建算经》卷下第37题,即是《孙子算经》卷下第16题——“荡杯”问题:

今有妇人于河上荡杯,津吏问曰:“杯何以多?”妇人答曰:“家有客。”津吏曰:“客几何?”妇人曰:“二人共饭,三人共羹,四人共肉,凡用杯六十五,不知客几何?”

答曰:“六十人。”

《孙子算经》术文曰:

术曰:“置六十五杯,以十二乘之得七百八十,以十三除之即得。”

《张丘建算经》术文曰:

术曰:“列置共杯人数于右方,又置共杯数于左方,以人数互乘杯数,并以为法。令人数相乘,以乘杯数为实。实如法得一。”

“荡杯”是我国古代数学中较早的通分题目之一。用现代数学来解此题:

设共有A个客人,则得

解题的关键在于求出1/2+1/3+1/4=13/12,这里涉及三个分数的通分问题。《孙子算经》术文没有指出,杯数65乘以12再被13除的原因,即没有给出通分的一般方法,“此等之术皆未得其妙”。《张丘建算经·序》曰:“夫学算者不患乘除之为难,而患通分之为难。”《张丘建算经》在“荡杯”问题中,主要指导用算筹进行分数通分运算,“更造新术,推尽其理”。显然《张丘建算经》术文更清楚地说明了算法的道理。

三、《张丘建算经》对中国古代数学的贡献

钱宝琮、纪志刚全面概括了《张丘建算经》对《九章算术》等前人成果的继承和发展,其中几项成就在中国古代数学发展中有较大的影响,这里再作一较详细的叙述。

(一)求分数的最小公倍数

在古代数学文献中,《九章算术》“方田”章中最早给出约分的方法:

可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。

术文把最大公约数称为“等数”,并给出“更相减损,求其等也”的计算方法。

对于最小公倍数,仅《九章算术》“少广”章求单位分数之和中附带出现,《孙子算经》卷下“三女归宁”问表露出求三数最小公倍数的端倪。而《张丘建算经》卷上第10、11两题,则把最小公倍数概念延展到分数领域。《张丘建算经》卷上第10题曰:

今有封山周栈三百二十五里,甲、乙、丙三人同绕周栈行。甲日行一百五十里,乙日行一百二十里,丙日行九十里。问周行几何日会?

答曰:十日、六分之五日。

术曰:置甲、乙、丙行里数,求等数为法。以周栈里数为实。实如法而得一。

用现代数学概念来分析:甲、乙、丙绕道一周所需时间分别是:325/150,325/120,325/90。故三人相会所需时间就是这三个分数的最小公倍数。按照术文,这个最小公倍数的分母(法)是甲、乙、丙速度的最大公约数(等数),分子(实)是栈道长。

以符号{}表示求最小公倍数,以()表示求最大公约数(等数),则

一般地,若a,b,c,d,e,f都是正整数,则

此即《张丘建算经》给出的最大公约数与最小公倍数之间的关系式,亦称作“张丘建法则”[245]。由本题可见,《张丘建算经》在最大公约数与最小公倍数方面超过了《九章算术》的水平,同时也显示出中国古代数学中最小公倍数的概念不仅限于整数,其求法也与整数的求法有所区别。

(二)等差数列问题(www.xing528.com)

等差级数列的记载最早见于《周髀算经》,但问题和算法均很简单,仅限于公差逐项累加。《九章算术》中共有八道题涉及等差数列,但无统一的解法。均输章第19题给出了推算公差的公式,其余问题或以“今有术”求解,或以“盈不足”推算。直到刘徽注《九章算术》,方进一步阐明等差数列的概念与算法,但不够全面。在《张丘建算经》中,虽然只有七道题涉及等差数列的问题,但其解法较《九章》完善、系统。如《张丘建算经》卷上23题曰:

今有女子不善织,日减功迟。初日织五尺,未日织一尺。今三十日织讫,问织几何?答曰:二匹一丈。

术曰:并初、未日织尺数半之余,以乘织讫日数,即得。

这是一个递减等差级数问题。记a1为首项,d为公差,n为项数,an为第n项,Sn为前n项之和,依照术文的意思列出公式

将数字代入上式得

卷上22题讨论了一个递增等差级数问题:

今有女善织,日益功疾,初日织五尺,今一月织九匹三丈,问日益几何?

题中要求的是级数的公差,术文中给出的公式(原文用文字给出)是:

这类纺织问题,张丘建应用了如下术语:级数的首项a1称为“初日织数”;末项an称为“末日织数”;项数n称为“织讫日数”;和Sn称为“织数”;公差d称为“日益”或“日减”等,这些公式是中国最早的算术级数公式。

此外,《张丘建算经》卷上18题、32题,卷中1题,卷下24题、36题、都属于等差数列问题,其术文给出了多种不同算法公式,可分别求解Sn,d,a1,an及n。这些问题和解法说明,至迟在5世纪,中国数学已经具备了系统的等差级数理论,为后来高阶等差级数研究的发展奠定了基础[246]

(三)开立方算法的改进

开立方术最早见于《九章算术》“少广”章第19至22问,例如第19问,术文如下:

今有积一百八十六万八百六十七尺。问为立方几何?

开立方术曰:置积为实。借一算,步之,超二等。议所得,以再乘所借一算为法,而除之。除已,三之为定法。复除,折而下。以三乘所得数,置中行。复借一算,置下行。步之,中超一,下超二等。复置议,以一乘中,再乘下,皆副以加定法。以定法除。除已,倍下,并中,从定法。复除,折下如前。开之不尽者,亦为不可开。

《九章算术》开立方术,文简意赅。刘徽虽详加注释,仍感其“言不尽意,解此要当以棋,乃得明耳。”《孙子算经》不载开立方术。而《张丘建算经》开立方术的刘孝孙细草,是魏晋之后的开立方算法,比《九章算术》开立方术有了重要的改进。现以该书中卷下第30问为例,说明魏晋之后的开立方算法:

今有立方九十六尺,欲立为圆,为径几何?

答曰:一百一十六尺、四万三百六十九分尺之一万一千九百六十八。

术曰:立方再自乘,又以十六乘之,九而一。所得,开立方除之,得丸径。

由《九章算经》所给的公式,本题应计算

为了便于比较,下面摘录开立方术的刘孝孙《细草》。

草曰:……借一算子于下,常超二位,步至百而止。商置一百置一百万于下法之上,名曰方法,以方法命上商一百,除实一百万。方法三因之,得三百万。

又置一百万于方法之下,名曰廉法,三因之。方法一退,廉法再退,下法三退。

又置一十于上商一百之下,又置一千于下法之上,名曰隅法。以方、廉、隅三法皆命上商一十,除实毕,又倍廉法,三因隅法,皆从方法。

又置一[万](百)一[千](十)于方法之下,三因之,名曰廉法。方法一退,廉法再退,[下](隅)法三退。

又置六于上商之下。又置六于下法之上,名曰隅法。乃自乘得三十六。又以六乘廉法,得一千九百八十。以方、廉、隅三法,皆命上商六除之。除实毕,倍廉法,皆从方法,得一百一十六尺、四万三百六十九分尺之一万一千九百六十八。

从上述刘孝孙细草中,可以看到南北朝之后的开立方算法比《九章算术》有了重要的改进,主要体现在以下两点:

1.定位明确

《九章算术》开立方之法是以借算定位,采用“超二等”之类用语,过于简略,可以有不同的解释,容易产生歧义。例如:白尚恕认为“超”应作退位解[247];李继闵认为是“下行借算左移两位”[248]。而刘孝孙细草中明确说明,“借算”定商“常超二位”,除实后,“方法一退,廉法再退,下法三退”。定位明确,算法程序规范。

2.简化算法

命商除实后,确定“方、廉、隅”各项系数的算法有了进一步的简化。

在中国数学发展史上,《九章算术》的开方术是开立方方法的历史源头,11世纪贾宪的“增乘开方法”,是中国代数学的伟大成就,而刘孝孙对开立方算法的改进则是二者之间的一个重要过渡。

(四)“百鸡问题”与不定方程组

《张丘建算经》卷下第38题曰:

今有鸡翁一,直钱五;鸡母一,直钱三;鸡雏三,直钱一。凡百钱,买鸡百只。问鸡翁、母、雏各几何?

答曰:鸡翁四,直钱三十;鸡母十八,直钱五十四;鸡雏七十八,直钱二十六。

又答:鸡翁八,直钱四十;鸡母十一,直钱三十三;鸡雏八十一,直钱二十七。

又答:鸡翁十二,直钱六十;鸡母四,直钱十二;鸡雏八十四,直钱二十八。

术曰:鸡翁每增四,鸡母每减七,鸡雏每益三,即得。

这便是世界上有名的“百鸡问题”,一问多答,是过去任何书中都没有的,百鸡题首开先例。不少论著对此进行过讨论,而且用现代数学方法求解这一问题:

公鸡为x只,母鸡y只,小鸡z只,则有

解得

这是一个不定方程组,为了得到正整数解,令x=4t,则

y=25-4t,z=75+3t,

当t=1,2,3时,即得到题中所说的3组解:

不少研究者认为,《张丘建算经》中的“百鸡问题”是世界上首次提出的三元一次不定方程组及其一种解法,这种说法值得商榷。当然,《张丘建算经》给出的3组答案是正确的。但其术文只有“鸡翁每增四,鸡母每减七,鸡雏每益三”15个字,缺少甄鸾、李淳风的注释,亦无刘孝孙的细草,很难使后人体会问题的正规解法。

不定方程问题最早见于《九章算术》“方程”章的“五家共井”题,但术文简略且隐含限制条件,没有一般解法。北周甄鸾《数术记遗》“计数”也收录了百鸡问题,但其数据与《张丘建算经》有所不同。该题应有两组答案,但也仅给出一组,并说明这类问题“不同算筹,宜以心计”,即采取试算的办法来解决。南宋杨辉《续古摘奇算法》(1275)卷下“三率分身”条下引述了《辩古根源》(已失传)的“百鸡问题”,该题应有四组答案,书中仅列出一种,也是不完全的。

宋元丰七年(1084),秘书省刻印《算经十书》时,为解答“百鸡问题”,“将算学教授并谢察微拟立术草创新添入”。谢察微,史书无传,约为五代末至北宋初人,著有《谢察微算经》三卷[249]。谢察微的术草虽然向前迈进了一步,但仍与正确解法失之交臂。直到19世纪,清代数学家才把这种类型的问题与求一术(一次同余组解法)联系起来,获得了比较完善的解法。

公元3世纪古希腊数学家丢番图,虽在时间上晚于《九章算术》,但他对不定方程问题进行了深入研究,取得了非常出色的成果。15世纪中亚数学家的“百禽问题”,与《张丘建算经》的“百鸡问题”非常类似,有可能受到中国数学的影响。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈