第三节 珠算盘自唐中叶至宋元时期,人们不断改进筹算,创造了许多乘除捷算法和口诀(见下节)。这便产生了新的矛盾:嘴唸口诀很快,手摆算筹很慢,得心不能应手。创造新的计算工具成为迫切需要,珠算盘便应运而生。《数术记遗》中的珠算,算珠不穿档,且无口诀,实际上不如筹算方便。现在使用的珠算盘产生于何时,自清初以来学术界争论很多。有人认为有北宋算珠出土,《清明上河图》赵家药铺柜台上有一算盘。也有人认为算珠出土土层有问题,赵家柜台上是一钱板,而非算盘,坚持认为珠算盘产生于元末明初。我们认为,使用口诀并取代算筹为主要计算工具的珠算盘的产生应在元中叶以后。珠算盘至今在中国乃至东亚、东南亚各国人民的生产生活中发辉着巨大作用。第四节 ○与数码中国古代没有笔算,筹算中用空位表示○,空位是一种没有笔划的符号。宋元算书中多有详草。详草中的数码是借用筹式数字加一个表○的符号而成的。13世纪40年代被分裂在中国南北的秦九韶、李冶使用了大体一致的数码。北方李冶的数码是:【015】南方的数码则将[4条竖杠]([4条横杠])改作×,将【016】改作【017】,将[1条横杠下4条竖杠](1条竖杠下4条横杠)改作【018】(【019】),其余同上。印度阿拉伯数字用“0”表示零,中国用“○”,这个符号是中国人独创的。原来古籍中有用□表示脱文的习惯,书写的方便,逐渐变成“○”形,《金史》大明历有“四百○三”等数字。明代商业的发展,产生了暗码,与南宋符号基本相同,只是书写迅速,将【020】变成【021】,【022】变成【023】,这种暗码一直沿用到本世纪。第三章 算术运算现传算经都未讲到筹算的整数加减法则,大约是学习这些算经前必须通晓的。各种算经中涉及到的算术运算有乘除法,分数与小数的四则运算,各种比例算法及盈不足术。而率与齐同原理是各种运算的纲纪。第一节 九九表与乘除法则乘除法法则要用到九九表。《管子》与刘徽都谈到伏羲作九九之术。九九之术就是九九表,唐宋间又引申为数学的代称。古代的九九表从“九九八十一”起到“二二如四”止,故名。战国末《吕氏春秋》、汉初《韩诗外传》等典籍还记载了齐桓公设庭燎以九九招贤的故事,可见九九表是当时人们的常识。早在先秦人们已经谙熟乘除法则。据《孙子算经》记载,二数相乘,作三行布算。上、下为相乘数,中行为积。将下数向左移,使下数末位与上数首位相齐,以上数首位自左向右乘下行各数,相加后放入中行。去掉上行首位,下数右移一位,以上数次位自左向右乘下行各数,加入中行,如此类推,便得到乘积。除法是乘法的逆运算。被除数称为实,放在中行,除数称为法,在下行,除的过程称为“实如法而一”。“实”源于被分的实在的东西,法是法式、标准的意思,这句话的意义是:实中有等于法的数,便得一,因此,实中有几个法便得几。使法、实首位相齐(如实与法相齐部分小于法,则将法向右移一位),议得商数首位,放于上行,从左向右乘法的各数,随即减实。然后将法向右移一位,再议商的次位,重复上述步骤,一直进行到法、实个位相齐。如实不尽,便以余数为分子,法为分母命名一个分数。第二节 分数与小数刘徽说:“物之数量,不可悉全,必以分言之。”先秦典籍和《周髀》中已大量使用分数,而分数的完整理论则出现在《九章》方田章。首先是约分法则:分子、分母能同时被2整除,则先被2除。不能被2整除,则在旁边使分子、分母以少减多(即从多中减去少),辗转相减,求其最大公约数(称为等数),以此约之。这种方法与欧几里得求最大公约数的方法一致。如方田章第6题化简分数49/91:【024】7便是最大公约数,以7约分子、分母:【025】。分数加法称为合分,减法称为减分,其法则是:分子互乘分母,相加(减)作为实,分母相乘作为法,实如法而一。即【026】。这里用到通分,但未用最小公倍数作分母。分数乘法称为乘分,法则是:分母相乘为分母,分子相乘为分子。即【027】,与今无异。分数除法叫经分。《九章》将实与法通分,使分子相除: 【028】。刘徽提出了颠倒相乘法:【029】,与今相同。这是世界上最早的分数运算法则。分数算法大约在15世纪才在欧洲流行,认为这种算法源于印度。实际上印度7世纪婆罗门笈多才有分数运算法则,且都与中国相同。中国古算经中有若干分数应用题。如《孙子算经》、《张丘建算经》都有“河上荡杯”问:一妇女在河边洗杯盘,有人问她杯盘为什么这么多?她答道:家中有客人,不知其数。只知道2人合用一个菜盘,3人合用一个汤杯,4人合用一个饭碗,共用杯盘65个。问客人是多少?其算法是:【030】(人)。在数学史上,小数的产生比分数晚得多。刘徽在开方不尽时用十进分数(微数)逼近无理根的近似值,开十进小数之先河。古代用分、厘、毫、丝、秒、忽表示分以下的奇零部分。赝本《夏侯阳算经》常常以某个整单位表示,不再列出微数单位,如将绢1525匹3丈7尺5寸化为1525匹9375(1匹=4丈),实际上是一个十进小数。秦九韶、李冶都将1863.2寸表示成【031】,与今之记法基本相同。杨辉、朱世杰先后总结了民间化斤两为十进小数的歌诀。中国是世界上最先使用小数的国家。中亚的阿尔·卡西13世纪才掌握十进分数。西方斯台汶1585年才有十进小数概念,记法远不如唐宋时的中国,如上述小数记成【032】或1525(0)9①3②7③5④15259375。第三节 比例与比例分配比例问题早在先秦已见端倪。《九章》粟米章的今有术是完整的比例算法:已知所有数,所有率和所求率,则所求数为所求数=所有数×所求率÷所有率。这种方法传到印度和西方后叫三率法(rule ofthree)。刘徽认为,今有术是一种普遍方法。凡是九数中的问题,只要能找出其中的率关系,通过齐同变换,无不归于此术。如《九章》均输章的题目:一客人离开旅馆时忘记带衣服,过了1/3天,主人发现了,骑马追上客人还给他衣服,回家时天已3/4。客人的马一日行300里,问主人的马一日行多少?刘徽认为,3/4-1/3=5/12是主人追客来回用日率,5/24是主人追客用日率,5/24+1/3=13/24是客人被追上前用日率。而主人用日率即客人马行率,客人用日率即主人马行率,因此客马行率5,为所有率,主马行率13,为所求率,300里为所有数。主人马一日行=300里×13÷5=780里。比例分配方法古代叫衰分术,各部分的比例叫列衰。《九章》提出的方法是:设所分的数是A,列衰为【033】,列衰之和为法,某一列衰【034】(i=1,2……)乘所分的数A为实,实如法而一,便是某一部分【035】。刘徽认为它可以归结为今有术:所分的数A为所有数,列衰之和为所有率,列衰各为所求率,某一部分为所求数。如《九章》衰分章一题目:牛、马、羊吃了人家的青苗,苗主要求赔偿5斗谷子。羊主说:我的羊只吃了马的一半;马主说:我的马只吃了牛的一半。问各赔偿多少?依衰分术,列衰是4、2、1,那么【036】若各部分按【037】的比例分配,《九章》称为返衰术,其公式是:【038】。刘徽说这是“动者为不动者衰”。(《九章算术·衰分章注》)政府要征收赋税,赋税有的缴粮食,有的是徭役。各县户口不等,距离有远近,粮价有差异,如何分配才能使各户的负担公平合理呢?这就是均输问题,也是一种比例分配问题。只是各县的分配比例未预先给定,而是要根据各县条件计算出来。设n县共应缴谷物A斛,各县户数分别为【039】,距离为【040】,每斗谷物价【041】,一车载m斛,工价一里k钱,则i县运一斛的费用【042】,则【043】为i县的分配比例。刘徽指出,这可以使【042】户共出一斛,则每户均为一钱,负担公平。第四节 率与齐同原理比例和比例分配都要用到率。率的这种意义至今仍然使用。刘徽拓展了率的意义,提出“凡数相与者谓之率”。成率关系的数量同时扩大或缩小同样的倍数,其率关系不变。比如甲、乙、丙三物有关系:甲:乙=【044】,乙:丙=【045】,已知甲为A,问化成丙为多少?《九章》两次应用今有术,甲化成乙【046】,乙B化成丙【047】,叫重今有术。刘徽认为,可以先把两个率关系中乙的率变成相同的值【048】,为了保持率关系不变,则甲的率须变成【049】,丙的率须变成【050】,称为与乙相齐,即甲:乙:丙=【051】,对甲、丙直接应用今有术:【052】。刘徽把这种变换称为齐同原理。它源于分数通分,将a/b与c/d通分,化成相同分母:bd,然后使两者的分子与分母相齐,分别变成ad、bc,两分数变成ad/bd、bc/bd,这叫做齐其子,同其母。实际上,刘徽把分子、分母看作一组率的关系,与现代算术教科书关于分数的定义一致。齐同原理在运算中作用特别大,而齐同方式则是多样的。如《九章》均输章题目:野鸭从南海飞至北海需7天,大雁从北海飞至南海需9天,若两者从南、北海同时起飞,问几天相逢?刘徽提出了两种齐同方式:飞一个单程,野鸭7天,大雁9天。若使两者天数相同,都是63天,则野鸭飞9个单程,大雁飞7个单程,与63天相齐。野鸭与大雁同时起飞,则63天飞(9+7)个单程,因此63/9+7天飞一个单程,即相逢日。齐同原理也可这样应用:一天野鸭飞单程的1/7,大雁飞1/9。若将一个单程分成63份,则野鸭一天飞一个单程的9/63,大雁飞7/63,一天共飞一个单程的9+7/63份,因此共飞一个单程需1÷9+7/63两者殊途同归,都证明了《九章》解法的正确性。率与齐同原理,在其他运算中的应用,后面将陆续谈到。刘徽把它们看成运算的纲纪。第五节 筹算乘除捷算法筹算乘除法三行布算,很不方便。唐中叶之后适应商业发展的需要,人们着手简化筹算乘除法,一是化三行布算为一行布算,二是化乘除为加减,通常称为乘除捷算法。赝本《夏侯阳算经》中有许多化多位乘法为一位乘法的例子。如某地区共a丁,每丁应纳庸调布2.45端(一端=5丈),则共应纳布端数为a×2.45=a×7×7÷10÷2,把一个含有三位有效数字的小数乘法化成一位的两次乘,两次除,便可在一行内完成运算。一位乘法称为因,这种方法叫重因法。化乘除为加减的方法称为身外加减法,是乘(除)数首位为1的一种乘除捷算法。赝本《夏侯阳算经》卷下有题:今有绢2454匹,每匹值钱1.7贯,问值多少钱?其算法是2454×1.7=2454×17÷10=(24540+2454×7)÷10,其中2454×17的程序是:=[4条竖杠]【053】→=【054】[4条竖杠]68→=【055】918→=7718→41718。 可见其要领就是在被乘数本身的10倍外加上被乘数与乘数其他位之积,故称为身外加法。 自然,乘数的两有效数字间有○时,便用隔位加。身外减法与此相类似。杨辉在《乘除通变本末》中系统总结了唐宋时期化乘除为加减的方法,提出加法代乘五术,减法代除四术。对乘(除)数首位不是1的乘(除)法,可以用加倍、折半等方法将乘(除)数的首位变成1,再用加(减)法代乘(除),这种方法称为“求一”术。杨辉《乘除通变本末》中有“求一代乘除”歌诀。“求一乘”的歌诀是:“五、六、七、八、九,倍之数不走。二、三须当半,遇四两折纽。倍折本从法,实即反其有(自注:倍法必折实,倍实必折法)。用加以代乘,斯数足可守。”例如237×56=(237÷2)×(56×2)=118.5×112,用加二位完成乘法。14世纪归除歌诀简化后,这种方法便被淘汰。归除是在九归与减法基础上发展起来的。归指一位除法,从1到9的一位除法称为九归。经过杨辉、朱世杰等的总结发展,《算学启蒙》中的九归歌诀与现今珠算口诀形式基本一致:一归如一进,九一进成十。二一添作五,逢二进成十。三一三十一,三二六十二,逢三进成十。 四一二十二,四二添作五,四三七十二,逢四进成十。五归添一倍,逢五进成十。六一下加四,六二三十二,六三添作五,六四六十四,六五八十二,逢六进成十……九归随身下,逢九进成十。朱世杰已懂得归除,但无细草。何平子《详明算法》有归除细草,如48895÷385,为三归八五除,其细草是:列被除数[4条竖杠]【056】,见首位4,呼逢三进一十,成1【057】【058】,呼一八除八,成1○【059】【060】,呼一五除五,得1○【061】【062】;见余数首位为10,呼逢六进二十,成12【063】,呼二八除一十六,二五除一十,得12=T【064】【065】;余数首位是2,呼三二六十二,为126【066】【067】[1条竖杠下4条横杠],呼逢三进一十,成127 【068】[1条竖杠下4条横杠],呼八七除五十六,五七除三十五,适尽,得127。后来,人们又创造了撞归口诀,解决大除数如何确定商的问题。至此,筹算捷算法及其歌诀已发展到算筹与筹算无法容纳的地步,便产生了珠算盘和珠算术,筹算口诀变成了珠算口诀,即珠算的算法语言。第六节 盈不足术盈不足问题构成《九章》的第七章。它的典型问题是:今有共买物,人出a1,盈b1,人出a2,不足b2,问人数、物价各多少?《九章》的第一种方法是:“置所出率,盈、不足各居其下。令维乘所出率,并以为实,并盈、不足为法,实如法而一”。此即求出实【069】,法【070】,设所求人数为u,物价为v,那么【071】便是每人应出的不盈不亏的数。对共买物的问题,“置所出率,以少减多,余,以约法、实。实为物价,法为人数”,即【072】刘徽以齐同原理论证了它的正确性。此是先同盈、不足为【073】,所出率须与盈、不足相齐,变成【074】,问题成为b2次所出a1,共盈【048】,b1次所出a2,共不足【048】。 因此【070】次共出【069】,则不盈不亏,每次所出为【075】。而【070】是众人之差,它是由一人之差【076】积累而成的,因此【077】便是人数,这也证明了《九章》第二种方法的正确性。第二种方法给出公式【078】,【079】。《九章》还给出了两盈、两不足、盈适足与不足适足类问题的解法。任何一个算术问题,假设一个答案,代入原题验算,都必定会出现盈、不足、适足这三种情况之一,两次假设,便成为一个盈不足问题,公式(1)就是为这些问题提出的。以“油自和漆”问为例。已知漆3可以换油4,而油4可调和漆5。现有漆3斗,欲拿出一部分换油,使换得的油恰好能调和剩余的漆。问用于换油的漆,换得的油,要调和的漆各多少?其解法是:假令用于换油的漆9升,则换得油12升,可调和漆15升,30-(9+15)=6,不足6升;假令用于换油的漆12升,则换得油16升,可调和漆20升,(12+20)-30=2,有余2升。代入(1)式,用于换油的漆是【080】(升),换得油15升,调和的漆【081】升。中国数学发展的早期,对复杂的问题常用这种两次假设的方法化成盈不足问题解决。这种方法对线性问题可以得出准确的答案,而对非线性问题只能得出近似解,这是《九章》的作者没有认识到的。例如:有一堵墙厚5尺,两只老鼠对穿,第一天都穿1尺,从次日起,大鼠一天天加倍,小鼠一天天减半,问两鼠何日相逢?《九章》的解法是:假令2日,不足5寸,假令3日,有余3尺【082】寸,代入(1)式,得【083】日。但此题是非线性的,准确解应为【084】。然而,即使在高等数学中,对复杂的问题用盈不足术求解也不失为一种有效的方法,如求f(x)=0的根的假借法或弦位法,其原理便是盈不足术。盈不足术传入阿拉伯和西方之后,长期成为他们解决数学难题的主要方法。阿拉伯人把它称为契丹算法,又称作双设法。第四章 面积与体积中国古代的几何一般不讨论图形离开数量关系的性质,而要计算出长度、面积、体积。面积、体积问题主要集中在《九章算术》及其刘徽注中,其他算经中也有涉及。第一节 多边形面积长方形在古代叫方田,《九章》提出的面积公式是“广从步数相乘得积步”。古代“广”指东西的长度,“从[zong纵]”指南北的长度,则面积S=ab。刘徽对这一公式未证明,而是给出了面积定义:“凡广从相乘谓之幂。”幂的涵义与今天指乘方不同。三角形叫圭田,《九章》提出的面积算法是“半广以乘正从”,广即底,正从即高,公式为【085】。刘徽记载了以盈补虚的证明方法,将三角形拚补成长方形,如图1所示。以盈补虚,又称出入相补,是中国古代解决面积、体积、勾股等问题的主要方法之一。图1 圭田之出入相补直角梯形,《九章》称之为邪田,其面积的计算公式是【086】,其中a1、a2、h是上、下底及高,也是拚补成长方形以证明其面积,如图2所示。一般梯形叫箕田,它可分解成两个邪田,其面积公式同上。图2 邪田之出入相补秦九韶的三斜求积术是已知三角形三边求其面积的方法:今有一三角形田,小斜13里,中斜14里,大斜15里,其面积的求法是:“以小斜幂并大斜幂,减中斜幂,余半之,自乘于上。以小斜幂乘大斜幂,减上,余,四约之,为实。一为从隅,开平方得积。”(《数书九章》卷五)这段话用现代符号写出便是:【087】根号下的多项式分解因式便成为【088】。可见三斜求积公式与古希腊海伦公式是等价的。秦九韶还用三斜求积术解决了四不等田的面积。第二节 圆与曲边形、曲面形的面积《九章》提出了圆面积的4种算法:“半周半径相乘得积步”,即【089】;“周径相乘,四而一”,即【090】;“径自相乘,三之,四而一”,即【091】;“周自相乘,十二而一”,即【092】。其中S、l、r、d分别是圆面积、周长、半径、直径。前两个公式是等价的,并且在理论上是正确的,只是《九章》时代取周三径一之率,实际计算误差较大。后两个公式本身就不准确。刘徽用极限思想证明了第一个公式(见第11节),并利用这个公式求出了圆周率π=157/50,以此修正了后两个公式。弓形田古代叫弧田,《九章》给出的公式是【093】,c为弦,v为矢。刘徽认为此公式不准确,提出了用一串三角形逼近弧田的方法。圆环形的田叫环田,《九章》提出的算法是:面积【094】,其中L1、L2为中、外周长,d为中外周的距离。刘徽提出了新的公式【095】。刘徽在证明《九章》宛田(指球冠形的田地)面积公式不准确时,提出了圆锥侧面积公式:【096】,或【097】,L为下周长,l为母线长,d为下周径。第三节 多面体体积《九章》商功章提出了许多多面体体积的算法,并在实际中使用了长方体的体积公式V=abh,对此,刘徽把它看成不言自明而未试图证明。图3 堑之出入相补堤、沟、渠是水利设施,堑、城、垣是建筑或防御工事,其横截面都是相等的梯形。设上、下广是a、b,高(深)h,长l,《九章》提出的体积公式是【098】。刘徽采用出入相补,将其变成宽1/2(a+b),长l,高h的长方体证明之(图3)。图4 堑堵图5 阳马堑堵是将长方体沿相对两棱剖开所得的立体(图4),其体积显然为【099】。沿堑堵的一顶点与相对的棱剖开,一部分是底面为长方形,一棱垂直于底面的四棱锥,称为阳马(图5),《九章》给出其体积公式【100】;一部分为四面都是勾股形的四面体,叫鳖臑[nao闹](图6),其体积【101】。在a=b=h的情况下,人们用六个鳖臑或三个阳马可拚成一个正方体,上述两个公式是显然的,这是棊①[同“祺”]验法。而当a≠b≠h时,棊验法无能为力,必须用无穷小分割方法才能证明上述公式。这是刘徽的重大贡献,将在第十一节中介绍。图6 鳖臑方锥的体积与阳马相同(见图7)。今之方台,古代称为方亭。设上方边长a,下方边长b,高h(图8),《九章》给出的公式是【102】。刘徽又给出等价的公式【103】。刍童是草垛,盘池是挖的水池,冥谷是挖的大墓穴,都是上、下底面为长方形的棱台体(图9)。汉代帝王的陵墓都是刍童形。设上底为a1×b1,下底为a2×b2,高h,《九章》给出的体积公式是【104】。刘徽又提出两个等价的公式【105】和【106】。刍甍也是草垛,形状像屋脊(图10)。设底面为【107】,上长b1,高h,《九章》给出其体积公式【108】。刘徽又给出等价的公式【109】。羡[音yan,通埏]除是墓道,它是一种三面为等腰梯形(其中两面互相垂直)而两侧面为三角形的楔形体(图11)。设其三广为a、b、c,高h,长l。图7 方锥图8 方亭图9 刍童图10 刍甍图11 羡除《九章》给出其体积公式是【110】。对这些立体的特殊情形,刘徽之前都用棊验法,而对一般情形,棊验法亦无能为力。刘徽将它们分解成有限个长方体、堑堵、阳马、鳖臑,求其和而证明之。刘徽所补充的上述公式就是由此得出的。显然,复杂多面体体积的解决都要归结到阳马、鳖臑,正如刘徽所说:“不有鳖臑,无以审阳马之数,不有阳马,无以知锥亭之类,功实之主也。”(《九章算术·商功章注》)中国古代的多面体体积理论,由《九章》提出公式,刘徽完成证明,可以说基本完备。祖冲之父子可能将其推进到隋唐数学家看不懂的地步,由于《缀术》失传,其详情不得而知。就现有资料看唐宋无大的突破。唐初王孝通解决土木工程中更复杂的体积计算问题,都是《九章》已经讨论过的多面体或其组合。《九章》的堤上下两底平行,王孝通解决了一种上下底不平行的堤防,如图12,它可以分解成一个堤与一个羡除,那么,其体积就是两者体积之和。金元治河著作《河防通议》给出其体积公式【111】其中a为上底面广,l为长,h1、h2分别为两头之高,b1、b2分别为两头下广。图12 堤防注释:①“棊”是特制的立体模型。第四节 圆体体积这里的圆体主要指圆柱、圆锥、圆台、球等有关的立体。《九章》称圆柱体为圆堢壔[baodao堡倒],或圆囷,称圆台为圆亭。《九章》提出:圆柱体的体积公式为【112】,圆锥体的体积公式【113】,圆台的体积公式【114】,其中L为下周,L1、L2为上、下周,h是高。显然,这些公式都对应于圆面积公式【115】,因而是不准确的。刘徽用圆周率157/50将其系数1/12修正成25/314。球在《九章》中称作立圆,刘徽称之为丸。《九章》没有明确给出球体积公式,但少广章开立圆术由球体积V求直径d的公式是【116】,说明【117】。刘徽指出此公式不正确。他设计了牟合方盖,而祖暅之彻底解决了这个问题。曲池是一种平剖面为一段圆环的立体,形状如图13所示。《九章》将它归于刍童类,不过公式中的上长b1代之以【118】,下长b2代之为【119】,此L1、L2为曲池上底的中周、外周,l1、l2为下底的中周、外周,因此其公式应为【120】。图13 曲池第五章 勾股测望相传大禹治水时左手拿着准绳,右手拿着规矩。准绳、规矩都是测望山川高低远近的工具。人们对勾股定理的认识也很早,不过勾股知识的大发展是在西汉,而三国赵爽、刘徽方建立起理论基础。第一节 勾股定理勾股定理在《九章》中的表述是:“勾股术曰:勾股各自乘,并,而开方除之,即弦。”即【121】,又有【122】、【123】两种形式。刘徽只作了证明提示:“勾自乘为朱方,股自乘为青方,令出入相补,各从其类,因就其余不移动也。合成弦方之幂,开方除之,即弦也。”这段文字过于简括,后人推测很多,图14是常见的一种出入相补方式。图14 勾股定理的证明第二节 解勾股形《九章》勾股章提出了若干已知勾股形三边中二者的和差等因素,求其边长的例题。赵爽、刘徽、贾宪先后作了进一步的发展,提出了一般性的公式及其证明。国内外流行的印度莲花问题实际上是《九章》“引葭赴岸”题的改写。此题是:有一水池,方1丈,一株葭[jia佳,初生的芦苇]生在中央,高出水面1尺,引葭赴岸,恰恰与岸边相齐。问水深、葭长各多少?如图15,刘徽指出,水池边长的一半为勾a,水深为股b,葭长为弦c,葭高于水面者是弦股差c-b,这是已知勾与弦股差,求股、弦的问题:【124】图15 引葭赴岸图16 竹高折地1989年语文高考试卷有一古文今译题便采自《九章》勾股章“竹高折地”问:今有一株竹高1丈,被折断,末梢抵地,抵地处距竹根3尺,问剩余高多少?如图16,刘徽指出,抵地处至竹根距离是勾a,剩余的高是股b,折断部分是弦c,则竹高就是股弦和c+b,此是已知勾与股弦和,求股的问题:【125】这两类题目互相返覆,刘徽以出入相补原理证明之。有一门户,高比宽多6尺8寸,两角相距1丈。问此门户高、宽各多少?刘徽认为,将户宽作为勾a,高为股b,两角相距为弦c,那么这是一个已知弦c与股勾差b-a,求勾、股的问题。《九章》的解法经刘徽改写成【126】刘徽的出入相补证明方法是:以勾股和b+a为边长作正方形,称为大方,面积【127】;在其内部作一中方,其顶点在大方每边a、b的分点上,其边长自然为c,面积c2[c平方];在中方内部作四个以a、b、c为边长的勾股形,每一个面积为1/2ab,称为朱幂。中方除去四个勾股形,余一个以b-a为边长的正方形,称为黄方,面积为【128】,如图17,大方有八个朱幂,一个黄幂,中方有四个朱幂,一个黄幂,因此,中方减去半个黄幂等于半个大方:【129】,【130】,于是【131】,而由【132】,【133】证明了上述公式。图17 已知弦与股勾差求勾股的证明有一门户不知高、宽,有人持一竹竿,不知长短,横着出门,长了4尺,竖着出门,长了2尺,斜着恰好能出门。问门的高、宽、斜各多少?刘徽把门户的高、宽、斜分别作为勾、股、弦,此题是已知弦勾差c-a、弦股差c-b,求勾、股、弦的问题。《九章》给出的公式是:【134】图18 已知弦勾差弦股差求勾股弦的证明为了证明这些公式,刘徽首先指出了在弦幂中勾幂与股幂的相互位置,或矩于表,或方于里:若股幂为方形,则勾幂作为勾矩居于股方之表,如图18(1);反之亦然,如图18(2)。刘徽将其中一个图形旋转180°,与另一个重合,则成为图18(3)的情形。勾矩【135】与股矩【136】的面积之和应为弦幂c2。在图中,这两者在两角重合于两个以c-b为宽、c-a为长的长方形,其面积为2(c-a)(c-b)。而弦幂中却有一个以a+b-c为边长的小黄方未被勾矩与股矩填满。显然,小黄方的面积【137】应等于2(c-a)(c-b),开方由【138】a=(a+b-c)+(c-b),b=(a+b-c)+(c-a),c=(a+b-c)+(c-b)+(c-a)便证明了上述三式。北宋贾宪把《九章》解勾股形的四个类型的方法抽象成一般性公式。杨辉又进而总结出a、b、c、c±a、c±b、b±a、a+b±c、c±(b-a)13种关系及变成b-a、c-b、a+b-c的段数,称作“勾股生变十三名图”。这13种关系包括了勾股形中勾、股、弦及其和、差的全部可能的关系,对勾股理论起着提纲挈领的作用。第三节 勾股容方与容圆勾股容方与容圆是《九章》勾股章的两个题目。前者是:已知勾股形勾5步,股12步,问所容正方形边长多少?《九章》的公式是【139】。后者是:已知勾股形勾8步,股15步,问其中容圆之径多少?《九章》的公式是【140】。对这两个问题,刘徽都提出了两种方法证明之。以容圆为例。将勾股形从圆心分成朱、青、黄各部分,如图19(1),将四个这样的勾股形拚成以d为宽,以a+b+c为长的长方形,如图19(2),其面积为2ab,因此【140】。这是出入相补的方法。另一种方法是过圆心作一中弦平行于弦,中弦与勾、股及垂直于勾、股的半径形成两个小勾股形,如图19(3)。考虑其中一个,比如股上的小勾股形,设三边为a1、b1、c1,显然a1+b1+c1=b,而a1:b1:c1=a:b:c,因此可用衰分术:【141】。而【142】。刘徽还提出【143】等公式。图19 勾股容圆图20 圆城图式勾股容圆在宋元时代成为重要的研究课题。人们考虑了各种容圆问题。元李冶便在洞渊九容基础上演绎出《测圆海镜》,除《九章》的容圆外,还有(见图20):圆心在勾上且切于股、弦,称为勾上容圆,其直径【144】,同样,股上容圆【145】,弦上容圆【146】;圆心在勾股交点切于弦,叫勾股上容圆,【147】;切于勾及股、弦的延长线者称为勾外容圆【148】,同样,股外容圆【149】,弦外容圆【150】;圆心在股的延长线且切于勾、弦的延长线叫勾外容半圆,【151】 ,同样,股外容半圆【152】。以上共10种容圆关系,“洞渊九容”指哪9种,清代以来诸说不一。清李善兰又补充了勾弦上容圆【153】,股弦上容圆【154】,弦外容半圆【155】。这13种容圆直径的分母恰恰对应于杨辉的勾股生变13名图的各种关系,分子都是2ab。第四节 旁要旁要是先秦“九数”之一,西汉张苍、耿寿昌补充了解勾股形等内容后改称勾股,成为《九章》勾股章。根据贾宪、杨辉的提示,上述勾股容方、容圆及八个测望问题是旁要的内容。现在介绍这类测望问题。有一正方形城邑,不知大小,城门都在城墙正中。出北门20步有一株树。出南门14步拐向正西1775步,恰能看到此树。问城邑每边长多少?设城邑边长x,出北门a1,出南门k,折西b,如图21(1),考虑两个相似勾股形,小勾股形股【156】,大勾股形勾【157】。由于【158】,或【159】,故【160】。这是刘徽推导此公式的第一种方法。第二种方法是:如图21(2),宽为DF=x,长为BC=x+a1+k的长方形DEGF,其面积x(x+a1+k),再考虑宽BC=x+a1+k,长为AC=b的长方形BCAI,它被对角线平分,由于勾股形AA1J与AA1G相等,故BC1JI与BCGF面积相等。DEGF的面积是BCGF的两倍,即BC1JI的两倍,BC1JI的面积为a1b,故x(x+a1+k)=2a1b。图21 出邑南北门第二种方法的关键是长方形BC1JI与BCGF面积相等,它们有公共部分BC1A1F,则长方形FA1JI与C1CGA1面积相等。这是一个重要原理,后来贾宪、杨辉将其概括为:将一长方形斜解为二勾股形,两勾股形所容的以公共弦上任一点为公共点的两长方形的面积相等,见图22。这一原理在测望问题的出入相补中作用特别大。《九章》立四表望远、因木望山及测井径问题,都可以这样解决。如因木望山问是:有一树高9丈5尺,距山53里,人目高7尺。距树3里处望山,人目、树顶、山顶成一直线。问山高多少?如图23。由上述原理,阴影部分相等,故ab1=a1b,故【161】。图22 容横容直原理图23 因木望山第五节 重差重差方法是从测太阳高远发展起来的。西汉刘安《淮南子》便有这种方法的雏形。刘徽认为《九章》的测望对象都是端旁互见的没有超邈如太阳之类。他发展完善了重差术,在《九章算术注序》中指出“凡望极高,测绝深而兼知其远者必用重差、勾股,则必以重差为率”。概括出测日高、远的公式:在洛阳的平地南北方向上立两根表,高8尺。同一天中午测量两表的影子,“以景〔ying,同影〕差为法,表高乘表间为实,实如法而一。所得加表高,即日去地也。以南表之景乘表间为实,实如法而一,即为从南表至南戴日下也”。此即【162】其中【163】是两个差之比,故称为重差术,如图24。戴日下即太阳直射大地之点。这两个公式基于天圆地方、大地为平面的盖天说,不符合实际,但在数学理论上是正确的。《海岛算经》第一问为测望一海岛的高远,其方法、公式与上述日高术完全相同,即所谓重表法。此岛高4里55步,合今1792.14米(以魏尺23.8厘米入算),距大陆的测望点102里150步,合今43911米。图24 重表法中国沿海无这样的海岛,笔者认为,刘徽是以泰山(1536米)为原型,假托成海岛,以成为端旁不可互见的对象。刘徽曾说:圆穹的天都可以测望,“又况泰山之高与江海之广哉?”事实上,上述数据比历代史籍关于泰山高度的记载都精确得多,也比清代学者用重差术的测望结果准确得多。图25 连索法连索法是重差术的另一种主要方法。《海岛》第3问是南望方邑,竖立两表,与人同高,东西距6丈,以索连之,使东表与城邑的东南角、东北角成一直线。从东表向北走5步,望城邑的西北角,入索东端2丈2尺【164】寸,向北走13步2尺,恰恰与西表、城邑西北角成一直线,问邑方及表到城邑的距离是多少?如图25。刘徽先求【165】则【166】图26 累矩法累矩法是重差术的又一主要方法。第4问是测望一深谷,将矩放在深谷的岸上,矩之勾高6尺,从勾顶端望谷底,入下股9尺1寸,又将此矩向上移3丈,从勾顶望谷底,入矩之股(称为上股)8尺5寸,问谷深多少?如图26,刘徽给出公式:【167】刘徽提出:“度高者重表,测深者累矩,孤离者三望,离而又旁求者四望。”(《九章算术注·序》)传本《海岛算经》除上述三个问题要二次测望外,第2、5、6、8四题要三次测望,第7、9二题要四次测望。中国的重差术到刘徽可谓大备,后来秦九韶等在测望方法上有所改进,但从数学理论上说,在明末西方数学传入之前,没什么新的突破。这些测望公式是怎么证明的,由于刘徽自注及图已失,不得而知,后人颇多探讨。有人认为用相似勾股形对应边成比例的原理,有人认为用面积出入相补原理,从中国的数学传统和当时的数学水平看,两者都是可能的。而刘徽注对复杂的问题,则常常是两者并用。第六章 线性方程组解法方程是《九章》的第八章,此后成为中国数学研究的一个重要分支。中国古代的方程对应于现今之线性方程组(System of inear equations),而不是方程(equa-tion)。现今求方程正根的方法,中国古代统称为开方术。1859年,李善兰与伟烈亚力合译棣么甘的《代数学》,开始将equation译为方程,后来沿用下来。第一节 方程对古代的方程,人们往往望文生义,把“方”字理解成方形。实际上,“方”的本义是并,将两条船并起来,船头拴在一起,古代称为“方”;而“程”,是标准的意思,作为动词,便是求其标准。因此,把一组物品的一个个数量关系并列起来,求各物的数量标准,便是方程。刘徽说:“群物总杂,各列有数,总言其实。令每行为率,二物者再程,三物者三程,皆如物数程之,并列为行,故谓之方程。”(《九章算术·方程章注》)这是方程的明确定义。显然,有几个未知数,便得有几个等式。值得注意的是,刘徽提出的“令每行为率”的思想,是把方程的一行看成一个有序的即有方向性的数组,大体相当于现线性代数理论中行向量的概念。方程以分离系数法表示,每一行自上而下排列(与今横行竖列相反,古代通常是横列竖行),不必写出未知数名称,常数项放在最下。如《九章》方程章第1问:“今有上禾三秉,中禾二秉,下禾一秉,实三十九斗;上禾二秉,中禾三秉,下禾一秉,实三十四斗;上禾一秉,中禾二秉,下禾三秉,实二十六斗。问上、中、下禾实一秉各几何?”列出方程便是如(a)所示(第89页),相当于【168】第二节 方程术线性方程组解法,《九章》称为方程术,刘徽指出这是一种普遍方法,只是方法太复杂,才借助禾实来阐述。方程术的核心是通过直除法消元,逐步减少未知数的个数及方程的行数,最终消成一行一个未知数,然后再求第二、第三个未知数。所谓直除即直减:要消去乙行某未知数系数,便用甲行同一未知数的系数乘乙行所有的数,然后用甲行一次次对减乙行,直至乙行该系数为零。刘徽认为,用甲行某未知数系数乘乙行是齐,即使乙行所有项与欲消去的项相齐;用甲行对减乙行至该系数为零止是同,即使甲、乙两行的该未知数系数相同。就是说,直除法符合齐同原理。刘徽进而指出,“举率以相减,不害余数之课也。”(《九章算术·方程章注》)就是说,以方程的整行与另一行相减,不影响方程的解。这是方程消元法的理论基础。我们以《九章》方程章第1问为例说明之,并改用阿拉伯数字。以(1)式x的系数3乘(2)式各项,得6x+9y+3z=102(4)以(1)式两次减(4)式,得5y+z=24,(5)以(1)式x的系数3乘(3)式,得