从出土竹简看中国早期委输算题及其社会背景,本文主要内容关键词为:竹简论文,背景论文,社会论文,算题论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
[中图分类号]K206.4 [文献标识码]A [文章编号]1008—1763(2010)04—0005—06
简帛学研究专辑
主持人语:
湖南省是全国出土、收藏简帛最多的省份,也应该是海内外简帛学的研究重镇。本专栏再次推出简帛学研究专辑,其内容也主要是研究湖南省出土、收藏的简帛。“岳麓书院藏秦简”正在紧张地整理,今年开始将陆续出版其整理研究成果。本辑论文中有四篇涉及到“岳麓简”的新材料,相信会引起学界的关注。
(朱汉民教授)
一 引言
2006年11月,湖北省云梦睡虎地77号墓中出土了大批竹简。据2008年《江汉考古》刊登的发掘简报,该墓葬年代在西汉文帝末年(公元前157年)至景帝(公元前157年—公元前141年在位)时期。墓中出土竹简总共超过2137支,其中有数学著作《算术》1卷216支简完整保存,其1号简背面题其书名“算术”,“从内容看,《算术》和已公布的张家山汉简《算数书》一样也是一部数学问题集,部分算题见于张家山汉简《算数书》,但是文字内容有一些差异”[1]。这是研究早期数学非常难得的史料。目前对《算术》还只有非常简单的介绍,未见整理材料发表。值得注意的是彩版一五给出了十支《算术》简的照片,为我们了解该书,并据以讨论早期数学的某些问题提供了依据。其中有两支简涉及用车输送物资,是委输问题,可以和传世文献《九章算术》、《张丘建算经》及张家山汉墓出土简牍法律《二年律令》相对照,探讨这类算题的特点及其社会背景。本文拟对此做一初步的讨论。
二 委输算题的算法分析
(一)三种文献中委输问题的异同
首先看彩版一五中《算术》部分从左往右数的第2和第3支简。我们给出的释文如下:
·重车日行五十里,空车日行七十里。今一日七反,问载、输所相去几(第2支)
何里?曰:四里六分里一·术曰:并空、重,以七反乘之,为法。空重相乘,为实。(第3支)
我们先稍加疏解。重车是载有物资的车,空车是没有载物的车。“反”通“返”,是指一个往返。“载、输所”是指装载物资的地方和物资运达的地方。第3支简的“何里”与第2支简的最后文字正好连成一个问句。之后的“曰”以下给出数字,正好是第2简所提问题的答案,它由随后“术曰”以下文字(其中“空”、“重”分别指空车日行里数和重车日行里数,“法”是除数,“实”指被除数)给出的方法求得。因此,这两支简构成了同一个问题,包括了题设、答案和解法,文字是完整的。
类似的问题见于《九章算术》均输章和《张丘建算经》卷中:
《九章》均输章第9题说:
今有程传委输,空车日行七十里,重车日行五十里。今载太仓粟输上林,五日三返。问太仓去上林几何?荅曰:四十八里一十八分里之十一。术曰:并空、重里数,以三返乘之,为法。令空、重相乘,又以五日乘之,为实。实如法得一里。[2]①
《张丘建算经》卷中第16题说:
今有车运麦输太仓,去三十七里十六分里之十一。重车日行四十五里。七日五返。问空车日行几何?荅曰:日行六十七里。术曰:置麦去太仓里数,以返数乘之。以重车日行里数而一,所得为重行日数。以减凡日数,余为空行日数,以为法。以返数乘麦去太仓里数,为实。实如法得一。[5]
这两个问题与上述《算术》中的问题各有异同。从数学形式上看,这三个问题都是涉及重车每日所行里数、空车每日所行里数、某段时间内往返的次数、路途远近这4个数据。《九章算术》与《算术》都是已知前3个求第4个,但前者则是5日往返3次,后者是1日往返7次,时间恰为一个单位(日)。相应的,在算法上,前者求被除数(“实”)时,要多一道手续“以五日乘之”,后者则没有乘日数这一步骤,实际上也相当于“以一日乘之”。《九章》与《张丘建》问题的时间都不是一日,与《算术》的问题不同。《张丘建》与《九章》、《算术》两者不同,它是已知第1、3、4个数据,求第2个数据。
三 算法的特征及造术之原
从解法的表述方式看,它们的术文都具有一般性,表明其作者都注意方法的普遍性。不过,这些术文也有不同的特点。《张丘建算经》描述计算方法时,说明了某些步骤所达到的目的,它实际给出了解法的依据。不仅如此,《张丘建算经》还有专门的“草”,交代演算的细节和每步计算的具体结果。《算术》比《九章》的术文少了“实如法得一里”这类句子,不如后者完整,但由于交代了如何计算出“实”和“法”,所以读者很自然会想到“实如法而一”这一步骤。不过,单从这两个问题的术文,读者不太容易理解为什么要用这样的方法计算。
刘徽在给《九章算术》均输章第9题做注释时,结合对该章第4题术文的注释,对此题术文做了解释。第4题已知甲、乙、丙、丁、戊、己六个县共要交纳赋税6万斛粟,每个县的算(成年劳动力人口税的单位)数、粟的价格、雇佣劳力价格,到赋税缴纳点甲县的距离,要根据均摊到每算的税相等这个原则,考虑各县的算数、距离、粟价、佣价等因素的影响,求出各县应交纳的粟的数量。这个问题很复杂,我们这里只注意与本文关系较密切的部分。题设中提到“六人共车,车载二十五斛,重车日行五十里,空车日行七十里,载输之间各一日”,相应的术文说“以车程行空、重相乘为法,并空、重以乘道里,各自为实,实如法得一日。”刘徽注说:“此术重往空还,一输再行道也。置空行一里用七十分日之一,重行一里用五十分日之一,齐而同之,空、重行一里之路,往返用一百七十五分日之六。完言之者,一百七十五里之路,往返用六日也。故并空、重者,齐其子也。空、重相乘者,同其母也。于今有术,至输所里为所有数,六为所求率,一百七十五为所有率,而今有之,即各得输所用日也。”[2](P241-242)刘徽在注《九章》均输第9题术文时说:“此亦如上术,率:一百七十五里之路,往返用六日也。于今有术,则五日为所有数,一百七十五里为所求率,六日为所有率,以此所得,则三返之路。今求一返,当以三约之,因令乘法而并除也。为术亦可各置空、重行一里用日之率,以为列衰。副并为法,以五日乘列衰为实,实如法,所得即各空、重行日数也。各以一日所行以乘,为凡日所行。三返约之,为上林去太仓之数”[2](P246)。
第9题刘徽注的“上术”指第4题的术。刘徽这里给出了两种方式,都是先求往返1里路所需的时间。前一种系针对术文而言的。他算出往返1里的时间是一个分数日,用分子6、分母175和往返3次所需的时间5日作比例项,算出整个路途的3倍,除以3得到两点的距离。这种计算当然没有问题,不过,是一个约简的分数,与术文并不严格对应。
我们根据刘徽的提示,可以推知《九章算术》作者的作法。先提醒读者注意是:空车每天走的里数、重车每天所走的里数,在《算术》的术文中分别简称为“空”、“重”;在《九章》中,第9题的术文一处与《算术》相同,一处作“空、重里数”;第4题的术文前面作“车程行空、重”,后面仍作“空”、“重”。刘徽注也用省称“空”、“重”,但此省称有时还指称“空车”和“重车”。这里,指称空车日行里数和重车日行里数的“空”、“重”并非词组中的中心词,因此这种省略表示法带有比较浓厚的符号意味,有了这种表达方式,古人不论是描述术文还是推导术文,在表达上都不会太费劲。
下面参考刘徽的思路推论术文的由来(为显眼起见,我们用“空”、“重”的粗体字分别表示空车、重车日行里数):首先空车、重车走一里的日数分别为空分之一日、重分之一日(据题设分别为70分之1日、50分之1日),那么它们相加便是往返一里的时间,根据合分术知其为空、重之积除空、重之和(并空、重为实,空、重相乘为法,实如法而一,即+日)。接下来可能有两种考虑方式。方式一:以3乘之,算出在一里距离上3次往返的时间为上述结果乘以3(并空、重,以三乘之,为实;空、重相乘为法,实如法而一。即日,具体数字为日),那么可以得到一日能往返3次的距离为上述结果除1,这个除法运算要转化为另一个除法,它将原来除法的除数与被除数互换,即以空、重相乘为实,并空、重,以三乘之为法,亦即1÷里(具体数字为里),整个的距离需要5日才能往返3次,所以乘以5便得到两地的距离,即里(具体数字里)。这只要让法保持不变,而以五乘实为新的实,作除法运算即可,也就是说,最后答案的计算法为:并空、重,以三返乘之,为法。空、重相乘,又以五日乘之,为实。实如法而一。这正是术文所描述的公式。方式二:由往返一里所需的时间日,可知往返距离里数为空、重相乘(70×50)时,所需日数为空、重相并(70+50)。那么在此距离上走三个往返时,所需日数为并空、重再以三乘之,它应该与在两地距离上走3个往返的时间(五日)成比例,故以五为所有数,两地距离为所求数,空、重相并再以三乘之为所有率,空、重相乘为所求率,用《九章算术》第二章的今有术,得到两地距离的算法仍为:并空、重,以三返乘之,为法。空、重相乘,又以五日乘之,为实。实如法而一。
刘徽注中后一种是他提出的新方法,与原术文差别较大。不过,我们可以经过改造得出一个与术文相吻合的复原方案:空车、重车日行里记为空、重,这也是其速度之比率(古人可以分别称为空行率、重行率),那么在同样的距离内往返的时间之比率(古人可以称为“用日率”)为其速度比率的互换,也就是说,空车用日率为重、重车用日率为空,它们是往返同样距离所需时间的比率(即所谓“列衰”:重、空分别为空、重车用日之衰)。题设五日三个往返,根据第3章的衰分术,3个往返中空车所用日数的算法为,以五乘重为实,空、重相并为法,实如法而一(即:日)。以之乘空车的速度(空行率空),得到3个往返中空车所行的里数,再除以3得到空车在一个往返中所走的距离,也就是两地之距离,所以,两地距离的算法为:并空、重,以三乘之,为法;空、重相乘,又以五乘之,为实;实如法而一。即里。同样,先计算重车所用的时间,再乘以重车速度,也是同样的结果。只要稍加变通,我们可以得到3个方案,复原《算术》委输问题之术文的逻辑过程:前两个都首先计算空、重车在1里上往返的时间日。接下来的两种方案,一种是以之乘以7,得到1里上往返7次的时间日,然后以之除往返7次所需的时间1天,得到1天能往返7次的距离为里,即所求的距离。这正是术文给出的计算方法。第二种是由空、重车在1里上往返的日数,得知一次往返(空×重)里所需日数为(空+重),那么7次往返(空×重)里的日数为(空+重)× 7。那么在1日内往返7次的距离里数为(空×重)÷[(空+重)×7],这也与术文描述的计算法完全对应。第三种复原方案是:空车、重车速度之比率空行率、重行率分别为重、空,那么它们在同样的距离内往返时间之比率空车用日率、重车用日率分别为重、空,题设1日7个往返,根据第3章的衰分术,7个往返中空车用日数为1×重÷(空+重),乘以空车每日所走的里数空,得到7个往返中空车所走的路程,然后除以7,得到两地的距离。也就是说,计算两地距离里数的方法为:并空、重,以七乘之,为法。以空、重相乘为实,实如法而一。同样由计算重车所用的时间入手,也会获得同样的结果。
上述复原方案,可以从岳麓书院所藏《数》和张家山汉简《算数书》找到数学思维上的根源。前书有一个算题说:
“有妇三人,长者一日织五十尺,中者二日织五十尺,少者三日织五十尺,今威有攻(功)五十尺,问各受几可(何)?曰:长者受廿七尺十一分尺三,中者受十三尺十一分尺七,少者受九尺十一分尺一。述(术)曰:各直(置)一日所织”[6]②。
这个问题的题设中,织同样多(五十尺)的布所需要的时间,长、中、少者不同,术文部分至少缺一简,但现存的部分“各直一日所织”,说明作者考虑单位时间(一日)内三人所织的多少,这与上述复原方案中考虑在单位路程(一里)上空车、重车所花的时间是一致的。当然,下面的步骤,由于文字缺失,就不宜再做推测了。
后书有同样的问题:
“妇织 有妇三人,长者一日织五十尺,中者二日织五十尺,少者三日织五十尺。今织有攻(功)五十尺,问各受几何尺。其得曰:长者受廿五尺,中者受十六尺有(又)十八分尺之十二,少者受八尺有(又)十八分尺之六。其术曰:直(置)一、直(置)二、直(置)三而各几以为法,有(又)十而五之以为实,如法而一尺。不盈尺者,以法命分。·三为长者实,二为中者,一为少者。”[8]
《算数书》的答案、方法和文字有误[9],而《数》都不误[6]。不过,《算数书》的术文,说明作者认为既然同是织50尺,长、中、少者三人花的时间依次增多,分别为1日、2日、3日,那么她们在同样时间内所织布的多少应该是依次减少,可惜的是作者没有深究,认为织布量的比率正好是把时间比率按顺序反过来,也就是说长、中、少者三人在相同时间内所织布的多少比率为3、2、1(正确的应该是,或者说是6、3、2)。《算数书》反映了我们上述关于委输问题的第3种复原方案的思想,由于上述问题只涉及空车和重车两项,同样路程上空车、重车所行时间之比(),等于(重∶空),这正好是把同样时间内所行路程之比(空∶重)反过来。所以上述委输问题的解法却没有错误。《算数书》这个妇织问题的术文接下来用衰分术来解,这正是委输问题第3种方案。只是委输问题只有两衰,更简单而已。
四 委输算题与其社会背景
《九章算术》均输章的第4题题设中提到“载输之间各一日”,将装车和卸货这两个重要环节所需的时间(各一天)考虑在内,而第9题及《算术》和《张丘建》的问题都没有考虑这种时间,说明前者具有更强的现实背景。后三个问题只计算在路途上往返的时间而忽视了装卸时间,使问题更简单易算,是数学文献中忽略某些不宜忽视的现实因素的一种类型。不过,我们不难发现,其中仍有很强的社会背景因素。
首先,《九章》均输第9题中有上林、太仓之名。太仓是京师的大仓,不同朝代都有。《史记·秦始皇本纪》说秦始初并天下的时候“分天下以为三十六郡,郡置守、尉、监。……诸庙及章台、上林皆在渭南。秦每破诸侯,写放其宫室,作之咸阳北阪上”[10]。以此推之,上林之名,大概在秦统一以前就有。公元前212年,秦始皇“以为咸阳人多,先王之宫廷小”,“乃营作朝宫渭南上林苑中”[10](P256)。汉初上林苑荒废,公元前195年许民入垦,武帝时收为宫苑,又加增扩[11]。这个问题反映了官府利用传这个交通系统从太仓向上林苑运送粮食的史实,它设置于秦代后期或汉武帝时代的可能性较大。但它不会是现实问题的直接移录。这不仅因为两地距离是已知的,不必去求,而且因为这个问题忽视了把粟装上车和卸下车都需要时间这两个基本环节。
除《张丘建算经》外,空车日行70里、重车日行50里是其余3个问题的公有数据,这似乎说明它们是一定条件下的常数。《九章》均输第4题的术文说“以车程行空、重相乘为法”中“车程行”三字标明,这两个数据是政府部门给这类车运送物资设置的标准速度(“程”是标准的意思,秦汉政府为某些部门和工作制定一定的数量标准,纳入法律的范围,亦称为程)。第9题的开头“今有程传委输,空车日行七十里,重车日行五十里”中的“程传委输”,标明这两个数据也是当时政府为用传车运输物资(主要是粮食)规定的速度标准。实际上,还有更直接的证据证明这一点。张家山汉墓竹简《二年律令·徭律》:“事委输,传送,重车重负日行五十里,空车七十里,徒行八十里”[8](P64),这里的规定中,用传车委输时空车和重车的速度标准与上述文献正好相同,该徭律甚至还规定了不驾车步行的标准速度为日行80里。可见《九章》和《算术》这几个问题虽经过一定的数学抽象,但仍反映了当时需要通过正确的数学计算来计划和保证政府部门组织的委输工作。《算术》和《九章》均输第9题不考虑装卸时间,也许是因为考虑的因素越多,求解就越困难。作为学习的材料,忽略部分因素而设立相对简单的问题,可以作为学习者今后学习处理复杂问题的阶梯。
睡虎地秦简《效律》说:“上节发委输,百姓或之县就及移输者,以律论之”。这里“节”通“即”,如果;“就”通“僦”,雇佣。秦律规定:如果官府征发劳役来从事物资的运送,要是有老百姓到县里花钱雇人或委托他人输送,就要受到法律的惩处[12]。汉简《二年律令》在徭律中提到“事委输,传送”,《九章》均输第9题提到“程传委输”。根据这些信息推测,大约战国时秦国至西汉,传虽是交通、邮政组织中的一种,除传递文书、信息、接待政府公职等外,它还运送物资。大概运送物资的传车颇具代表性,其速度与平常运粮的车相当,或者两者就是同一种车,所以《九章》均输第4题中运粮车的速度也取同样的数据。
据刘徽“九章算术注序”,现传本《九章算术》是在先秦遗文的基础上,中经张苍、最后在公元前1世纪中叶由耿寿昌编定的[13-16]。睡虎地汉简《算术》直接证明,这类委输问题出现的下限可以推到公元前157年前后,比《九章》的编定时代至少早一个世纪。《九章》和《算术》两个委输问题采用的程与《二年律令》相同,后者的下限在公元前186年,因此这一程的出现时代也就不会晚于这一年。由于这一程中的数据肯定是为着计算远近或时间服务的,因此,在公元前186年以前,肯定存在基于这一标准数据的算题。至于《算术》和《九章》的这两个算题,虽有也可能是晚些时候的,但属于早期的可能性也不小。两个算题算法的共性是:被除数中含空车、重车日行里数(简省为“空、重”或“空、重里数”。)相乘所得的积,除数含有它们相加所得的和。其算法的差异在于根据题设中几日几返的不同数字,把被除数和除数分别乘以日数和返数。两个算题的异同,说明在更早的时代有共同的算理存在于一些数学家心中甚至一些数学文献中,其形式也应以算题及其算法的形式存在,可以是同类的其他算题,也可能这两个算题或其中一个就是早先传下来的旧题。战国时秦国和秦代的法律非常苛烦。西汉初期曾对秦法有简省,但仍继承了秦律的很多内容,出土的汉简仍能反映汉代法律的细致程度。现存秦律中虽没有上述关于委输中空、重车的程,这并不能说明秦律没有这样的程。因为现存秦律只是原有秦律的很小一部分。汉代经过武帝时张汤、赵禹的修订,法律大量增加,之后又有少量增删[17]。但记录昭帝(公元前87—74年在位)时“盐铁之议”(公元前81年)的《盐铁论》,其“刑德”篇载贤良文学反对重用刑法时用秦法的施用效果作为论据,说“昔秦法繁于秋荼,而网密于凝脂”,但照样不能阻止“奸伪萌生”[18]。可见当汉法非常繁多复杂时,他们仍觉得秦法十分苛烦。汉初又以黄老无为之说为治国思想,规定车行速度标准在西汉初年并非急务,所以《二年律令·徭律》中对委输的空车、重车和不驾车步行的速度的规定,很可能属于汉承秦制,而非汉初所增益。因此,相应的算题和算法应该在秦代或战国时秦国出现过。
五 小结
综上所论,《九章》和汉简《算术》委输问题的算法具有普遍性,其中还用到非常简省的表达甚至是单个字来表示相关的指标,这为古人推导和获得算法提供了便利。这种具有普遍性的表述方式和近似符号的简省记录法,很值得学界重视,或许在《算术》中还有类似情况。这些算题是否从西汉初年或更早的时代流传下来,现在没法得出明确的答案。但先秦时期存在着与《九章算术》均输章前四个均输本术问题的方法在数学结构上相似的艰深算法口[19],因此委输类算题出现于先秦在算理上是不存在障碍的,相应的简省表示法也可能出现得比较早。岳麓秦简《数》和张家山汉简《算数书》衰分类算题包含有这类算题的算理基因,也提供了佐证。汉代算书中的委输问题具有与《二年律令·徭律》所规定的定额相等的常数,算书中的“程”字,表明这类算题与律令中的关于运输的程有密切的关系。这种程可能在秦代或战国时秦国就已经存在,当时可能也存在委输类问题。不过,《九章》和《算术》中现存的委输问题,忽视了不宜忽视的重要因素,与实际问题还存在一定的偏差,它们或许是为学习更复杂的数学方法打基础而设置的。
《张丘建算经》中空车日行67里,重车日行45里,与《九章》、《算术》接近而稍低。有意思的是,此题所求为空车日行里数,这与前面的算书视之为常数的作法迥然有异。大概秦汉法律在北魏编撰此书时已经散佚,[20](P223)当时这类交通运输的规程不似秦汉时细密,所以已经没有施用这样的程了。当然,由于同种车的速度在不同的时代总是相差不大,所以,在不同时代的同类问题中,这两个数据仍比较接近。
[收稿日期]2010—06—13
注释:
① 在[2]校勘记中,郭书春先生指出首句“程”字系据戴震辑录本,他认为杨辉《详解九章算法》作“乘”更好,但没有改动原文。之后郭先生在[3]中改“程”为“乘”,释为“乘坐”,把“乘传”释为“乘坐驿车”,把“今有乘传委输”译为“假设由驿乘运送货物”。但“乘坐”和“运输”连在一起,似语义不畅。又,《史记》、《汉书》等注中还提到一种叫“乘传”的传车。《汉书·高帝本纪下》“乘传诣雒阳”句的注释引如淳曰:“律:四马高足为置传,四马中足为驰传,四马下足为乘传,一马二马为轺传。急者乘一乘传”[4],说明“乘传”是一种供人乘坐的传车。出土文献中亦有“乘传”,有的不清楚,有的指传车。《九章》均输章第4题与第9题运粮车的标准速度一样,其载货标准量也应一致,推想第9题应和第4题一样,每车标准载货量都为25斛(本文后面有引文),故其中的车当非如淳注的乘传。又,第4题术文首句说明空、重车的日行里数是程中的规定,第9题“程传委输”后紧接空车、重车的日行里数与之相等,这恰与“程”字义合。故笔者认为第9题作“程”比作“乘”字更合理.
② “威”字在[6]中作“织”,陈伟先生据原照片正确地改释为“威”,认为是丈夫的母亲即今所谓婆婆。陈先生并认为张家山汉简《算数书》同一题中原释为“织”的字也当释为“威”[7].感谢肖灿君告知陈先生的论文.