“以长补短,以多助少”

——谈中国古代的“盈不足术”

我们的祖先在长期对大自然争斗求生存,为了治水平土,为了春耕冬收,很早就会“通古今之变”,对大自然的认识相当深刻,这里要介绍一项我们的祖先在数学上有着重要的工作“盈不足术”。

“盈不足术”

在《九章算经》第七章的章名叫《盈不足》是讨论这样的问题:有一些物品给一些人来分摊,如果我们不知道物品及人的数目,我们做两次试分:每人平均少分摊一些,比方说x1个,物品多余y1个;如果多分摊一些,比方说x2个,物数不足y2个。

我们是否能由这两次试分所得的数据:x1 y1x2y2来推算物数和人数?

我们先看《九章算术·盈不足章》第一题:“今有(人)共买物,人出八(x1),盈三(y1);人出七(x2),不足四(y2)。问人数,物价各几何?”答曰:七人,物价五十三。

原书解释计算的方法:“盈不足相与同,共买物者置所出率,盈不足各居其下。令维乘所出率,并以为实;并盈不足为法。有分者通之。付置所出率以少减多,余,以约法实。实为物价,法为人数。”这段双假设方法说明实际上包含着三个公式。若以x0表示每人应出的钱数(即“所出率”);p表示人数;q表示物价,则有公式:

以前人们用线性方程组的解法导出以上的公式。根据题意我们有

qx1p-y1                                                                     4

q = x2py2                                                                  5

y2×(4),以 y1×(5),相加得

y1y2q=x1y2+x2y1p

因此

又(4-5)得:

0=(x1-x2p-y1-y2

因此

x1x2p=y1y2

所以

6)×(7)我们得

中算史家李继闵先生(19381993),他在生前根据刘徽的注,认为古人是以比率的方法找到以上的公式。

刘徽的注是这样:“按盈者,谓之脁(有余,多余的意思);不足者,谓之朒(不足的意思)。所出率谓之假令。盈朒维乘两设者,欲为齐同之意。”

“据共买物,人出八,盈三;人出七,不足四,齐其假令,同其盈朒!盈朒俱十二。通计齐则不盈不朒之正数!故可并以为实。并盈不足为法。齐之三十二者,是四假令,有盈十二。齐之二十一者,是三假令,亦朒十二。并七假令合为一实,故并三,四为法。”

这个注的文字太过简略,后人要了解不容易。李继闵先生认为,如果2000年前的人要考虑这样的问题:每人出钱x1,买物1,盈钱y1;每人出钱x2,买物1,不足钱y2”,他们一定是用算筹在板上排成下面的算式:

这些筹算式中的每行构成一组“率”,因此可以乘上对应的数变成下面的算式:

即“人出钱x1y2,买物y2,盈钱y1y2;人出钱x2y1,买物y1,不足钱x2y1”。如果把这两行对应相加(即“通计”),这时盈朒的数相同而抵消。我们得:“人出钱x2y1x1y2,买物y1+y2,不盈不朒。”

 

也就是

上面方式的计算过程可以下面的算式表示:

《九章算术·盈不足章》第58题讨论了“两盈”,“两不足”,“盈适足”,“不足、适足”四种问题:

[5]“今有共买金,人出四百,盈三千四百;人出三百,盈一百。问人数,金价各几何?”答数:33人,金价980

[ 6]“今有共买羊,人出五,不足四十五;人出七,不足三。问人数,羊价各几何?”答数:21人,羊价 150

[7]“今有共买豕,人出一百,盈一百;人出九十,适足。问人数,豕价各几何?”答数:10人,豕价 90

[8]“今有共买犬,人出五,不足九十;人出五十,适。问人数,犬各几何?”答数:2人,犬价100

对这四种问题,前两种问题对应公式(1),(2),(3)变为:

后两种问题对应公式(1),(2),(3)变为:

这里x1x2y1y2都是正数;由于当时的人还没有引进负数,在减法中规定“以少减多”,避免出现负数,并且分作四种情况,区别对待。

如果引进正负数及零表示盈朒及适足,则以上的盈朒问题可以由以下的统一公式给出:

“万能”的方法

现在让我们借想像的翅膀飞到1100多年前的年代,假想我们乘“时光机器”飞到那位于富庶肥沃的关中平原,那《诗经》上所说:“泾以渭蜀”的泾水,渭水流域上的古城长安。

长安是唐朝都城,在公元855年左右拥有一百万人口。杜甫写诗这样描绘当时的情形:“渔阳豪侠地,击鼓吹笙竿,云帆转辽海,粳稻来东吴,越罗兴楚练,照耀与台驱。”

我们走到长安的西市,见到有各种各样的外国商贾,西域、印度来的僧人以及由海外来的日本留学生。这里一片繁华欢腾,就像李白《少年行》所写的:“五陵少年金市东,银鞍白马渡春风。落花踏尽游何处,笑入胡姬酒肆中。”

我们现在来到城东,经过富丽堂皇的佛寺,看到了一座被描绘为“塔势如涌出,孤高攀天宫”的大雁塔,这塔藏有玄奘法师(唐三藏)从印度带回来的经像舍利。我们走到大雁塔附近一位大官杨损的府衙。

今天杨损是在考虑和选拔行政官史。有两个办事官员,在政府里工作的时间一样长,而且职位相同,现在只能提升一个。他看呈上的对他们工作的评语都是一样的好,怎样提拔呢?

“对了!他们都曾在国子监和算学博士学过《九章算术》。一个办事员最大的优点之一是要算得快。现在就让这两个候补人员都听我出题,哪一个先得出正确答案,我就提升他。”

于是杨损在大厅上对两位办事员说:“有一个人在林中散步,无意间听到几个贼在商量怎样分偷来的布匹。他们说若每人分6匹,就会剩5匹。若每人分7匹,就会差8匹。试问这里共有几个盗贼?布匹总数又是多少?”

两位官员在大厅的一个小几上用竹筹计算,过了不久,有一位官员得出了正确答案,他被提升,大家对这个决定也表示心服。你能不能用前面的方法算出呢?

这个故事是记载在《唐阙史》卷二。

《九章算术·盈不足章》共有20题,除了8个是“盈亏题”问题外,后面的9题至20题不属于“盈亏题”的问题,在古代都是算术难题,但是它们都可以用“盈不足术”来解决。

我们现在来举一些例子来说明:

[第9题」“今有米十斗桶中,不知其数。满中添粟而椿之,得米七斗。问故米几何?”答曰:二斗五升。

术曰:“以盈不足术求之,假令故米二斗,不足二升。令之三斗,有余二升。”

我们现在用双假设方法来考虑:

假令故米         添粟化粝                                得米相课(盈朒)

20               100-20)×35=48             2048-70=-2(朒)

30               100-30)×35=42             3042-702(盈)

用盈不足术计算:

即得桶内原有米二斗五升。

[13]:“今有醇(浓)酒一斗值钱五十;行(淡)酒一斗值钱一十。今将钱三十,得酒二斗。问醇、行酒各得几何?”答曰:醇酒 2.5升,行酒17.5升。

《九章算术》是这样解:“假令醇酒5升,行酒1斗,5升有余一十。令之醇酒2升,行酒18升,不足2

刘徽注:“以盈不足术求之。”

这里x1=5y=10x2=2y2=2

所求醇酒升数是:

于是容易算出行酒数是20-2.517.5

[第 14题」“今有大器五小器一容三斛,大器一小器五容二斛,问大小器各容几何?”答曰:大器二十四分斛之十三,小器二十四分斛之七。

这题的意思是:有大小两种盛米的桶,已知五个大桶和一个小桶可以盛米3斛。1个大桶和5个小桶可以盛米2斛。问一个大桶和一个小桶各可以盛米多少?

用双假设法来考虑:

假令大器容      小器容                      大器一,小器五所容     课于两斛

50                    300-50×550          50+50×5300              300-200100

55                    300-55×525          5525×5180            180-200-20

按盈不足术

[第15题]“今有漆三得油四,油四和漆五。今有漆三斗,欲令分以易油,还自和余漆。问出漆、得油和漆各几何?”

把题译成白话:已知三份漆可以换得四份油,四份油可以调和五份漆(均按体积算)。现有30升漆,如果用一部分去换油,换来的油又去调和余下来的漆。若刚好把漆用完,问用去换油的漆有多少?换得了多少油?这些油又调和了多少漆?

《九章算术》中就用了一种别开生面的解法:“术曰,假令出漆九升,不足六升。令之出漆一斗两升,有余二升。”

术文可以这样解释:先假定两个近似答案,按题意求出盈与不足之数,再用“盈不足数”来求真值。具体说,假设取出9升漆,去换得12升油,12升油可调和15升漆。9升和15升相加仅有24升漆,比原来有的30升,不足6升。又假设取出12升漆,去换得 16升油,则可调和20升漆。12升加 20升得 32升,比30升多余2升。这就变成了盈不足问题。

编写《盈不足章》的数学家,把盈不足术看成是一种万能的算法,以为一切算术问题不管它属于哪一个类型,都可以用盈不足术来解决。

“盈不足术”的理论根据

“盈不足术”是和求方程的根有关系。

我们如果给一个方程f(x)=0,解这个方程就得到x所代表的数值。

可是古代的人都不知道列这个方程。但是对于任意的一个x值,f(x)的对应值是会核算的。

这样通过两次假设,算出f(x)y1f(x2)=-y2

于是用“盈不足术”得到:

f(x)湖果是一次函数,这个方法是正确的,可是如果f(x)不是一次函数,我们只是得到近似值。

根据德国数学史家M.康托(Cantor)研究1世纪的亚历山大理亚的希腊数学家海伦(Heron)求平方根的近似法就是这样:

例如,要求 A的平方根 x,先假设x=x1,求得x12-A=b1 是盈数。又计算x=x2,求得x22-A=b2是不足数。

这里f(x)=x2-A

我们现在考虑更一般的方程f(x)。假设V=f(x)是一个在区间[x1x2]上单调连续的函数。已知f(x1)=y1f(x2)=-y2,正负相反,那么,方程f(x)=0[x1x2]之间有一个根x,当区间[x1x2] 很短时,曲线 y=f(x)的弧AB可以近似地用弦AB来取代。

于是弦ABOX的轴的交点的横坐标x0

位法”。

秦九韶对“盈不足术”的发展

盈不足术,刘徽称它为“脁朒术”。“脁朒”这两个字都是出自月球的运动,第一个字意指残月的最后一次出现,第二个字则指新月的首次出现。

《孙子算经》有讨论类似的问题,如:

[第 29题]:“今有百鹿入城,家取一鹿不尽。又三家共一鹿适尽。问城中家几何?”答数:75家。

[第 31题]:“今有鸡兔同笼,上有三十五头,下有九十四足。问鸡兔各几何?”答数:鸡23只,兔12只。

术文:“上置三十五头,下置九十四足,半其足得四十七。以少减多,再命之,上三除下四上五除下七。下有一除上三,下有二除上五,即得。”

在成书于公元484年后的《张邱建算经》,里面也有关于用盈不足术解的算术问题,例如它的上卷第一章24题:

“今有绢一匹买紫草三十斤,染绢二丈五尺。今有绢七匹,欲减买紫草,还自染余绢。问减绢,买紫草各几何?”答曰:减绢412413尺,买草1293913两。

南宋时杨辉在1261年写的《详解九章算法》将《九章算术》246问题中的80题进行详解,对盈不足术还添上别种算法。

明代的数学家程大位在1592年写的《算法统宗》是一部当时较好的启蒙数学书,全书有595个问题,其中的“测井问题”:“用绳子量井深,把绳子三折来量,井外余绳四尺;把绳四折来量,井外余绳一尺。求井深和绳长各是多少?”就是用盈不足术解。

南宋秦九韶写的《数书九章》卷十六第6题“计造军衣”是盈,两盈,一朒一足三个问题并列构成。

“问库有布、棉、絮三色,计料欲制军衣。其布:六人八匹少一百六十匹。七十九匹剩五百六十尺。其棉:八人一百五十两,剩一万六千五百两,九人一百七十两,剩一万四千四百两。其絮:四人一十三斤,少六千八百四十斤,五人一十四斤,适足。欲知军士及布、棉、絮各几何?”

秦九韶给出下列五步计算:

秦九韶考虑的问题一般形式是:“a1人出x1y1a2人出x2不足y2,问人,物各几何。”如果定人数为p,物数为q,则相当于求解方程组:

秦九韶的方法相当于给出方程组的解:

《九章算经》的盈朒问题相当于a1=a2=1这一特殊形式。后世数学家称秦九韶这类问题为“双套盈朒”的问题。

1424年刘仕隆的《九章通明算法》, 1450年吴信民的《九章比类算法》都有考虑“双套盈朒”的问题。1593年程大位写的《算法统宗》也考虑“双套盈朒”的问题。

中国的这种算法随着丝绸之路而传到中亚、两亚的伊斯兰教国家。阿拉伯人称为“震旦算法”。前面我说过fx)是一次函数时,代数上“弦位法”就是“震旦算法”。

读者若想知道更多关于中国数学怎样西传到中亚、西亚的经过,请肴《数学和数学家的故事》第三集里的《中国和中亚、西亚的数学交流》一文。