张家山汉简《算数书》与“睘材”相关的共有“睘材”、“以睘材方”、“以方材睘”三个算题。“睘材”算题因为出土原简字迹难辨之处太多,造成原释文中有许多缺文,至今没有令人满意的释读,而“以睘材方”及“以方材睘”二题,则因为题中的公式与单纯的数学公式不一致,导致学者们意见纷纭、莫衷一是。本文首先将“睘材”原简字迹难辨处加以处理,从中得到关键线索,并考证出正确的释读。对“以睘材方”及“以方材睘”两个算题,我们则根据上古数学水平、算题的应用实际性质以及《算数书》中的例证展开论证,从而得到正确的释读。
一“睘材”张家山汉简《算数书》的“睘材”题共含、号两支简,张家山二四七号汉墓竹简整理小组的释文为:
睘(圜)材有圜材一(?),断之囗囗市囗囗囗囗囗囗囗大几何?曰:七(?)十(?)六(?)囗囗四寸半寸。述(术)曰:囗自乘,以()
入二寸益之,即大数已。()
由于很多文字无法释读,本题诸家均无法读通。笔者对原简图版进行一定程度的技术处理,使一些关键字得以读出,部分图版处理结果如下:
从图1可知,“圜材”之后还有余地,幷有墨迹,因此,原释文“一”字可取。从图2可以看到,原释文“断之囗囗市”是成问题的,对比“斷”字的隶书写法可以发现,此段竹简的第一个字左上有二小“口”字形,其形比“斷”之小“口”明显要大,而其下既没有“斷”字那么多笔划的墨迹,最左侧幷无“斷”字之“∟”形之残墨,空间也不足以容纳“斷”字的左下部。因此这个字不是“断”字,而应该是“斲”字。综合字迹及图2其他简文可以发现此字确为“斲”字,而此段简文为“斲之入二寸”。
“斲”与“断”一字之差,关系到全题的理解与释读。岳麓书院藏秦简《数》书以及《九章算术?勾股》都有“斲圜材”的算题,其文援引如下:
[今]有圆材薶[埋]地,不智[知]小大,斫之,入材一寸而得平一尺,问材周大几(可)[何]?即曰:半平得五寸,令相乘也,以深一寸为法,如法得一寸。有[又]以深益之,即材径也。
今有圆材,埋在壁中,不知大小。以锯锯之,深一寸,锯道长一尺。问径几何?答曰:材径二尺六寸。术曰:半锯道自乘,如深寸而一,以深寸增之,即材径。
张家山汉简《算数书》本算题所论是“圜材”,简文有“斲之入二寸”句,并且“而得”、“问囗大几何”、“寸自乘”、以及“入二寸益之”都可以明确释读,在简文中又都处于合适的位置。因此,对比以引岳麓秦简《数》及《九章算术》中的算题,本题毫无疑问是一个同类的“斲圜材”算题。因此,算题中无法确认的文字可以借助这两则算题的行文方式来做判断。
图所示竹简片段第一字无法辨认,第二字的位置依上下文及墨迹形状应是“尺”字,第三字据文义是一个数字,依墨迹形状判断应为“六”或者“四”字,而最后一字依文义及残墨则可以肯定为“寸”字。此段竹简之前有“而得”二字,其中“而”字可辨,“得”字依上下文可以断定。对照岳麓书院藏秦简《数》书相应内容,可以判断此四字为“平尺四寸”或“平尺六寸”。
图4、图5两部分,原释文为“曰七(?)十(?)六(?)”及“囗囗四寸半寸”。据图5,“寸半寸”可辨,而前一字依残墨判断,或者如原释文是“四”字,或者是“六”字。图4除“曰”字外均不可辨,但依上下文知其为“曰大囗尺囗”。考虑图5简文是“囗寸半寸”,而“尺”后面的字残墨之迹与“有”近似,故依行文此字应为“有[又]”字。至此,据计算可知,此答数为“二尺有六寸半寸”,而图则为“平尺四寸”。
对照上引岳麓秦简“术”的行文,可知号简脱漏“为法,又以入二寸”七个字。因为“入二寸”在我们复原的简文中出现两次,所以这一脱误的原因是明显的:它是因为简文上下有两处“入二寸”,抄写者不慎相涉而产生脱误。至此,我们得到复原的简文如下:
睘材有圜〖材〗一,斫之入二寸,而得〖平尺四〗寸,问〖材〗大几何?曰:大〖二尺有六〗寸半寸。述[术]曰:〖七〗寸自乘,以()
入二寸益之,即大数已。()
此处,简中的“大”即问题中的“材大”,“大数”即为圆材直径之尺寸数。《九章算术》将此类算题归入“勾股”章,其计算公式由勾股定理推导而得,其推导过程如下:
如上图,(半径-深)、半平、半径构成直角三角形,据勾股定理得:
(半径-深)×(半径-深)+半平×半平=半径×半径
展开、化简,得:
2深×半径=半平×半平+深×深
因此,
直径=半平×半平/深+深
本题、上引岳麓秦简、《九章算术》三者算法的叙述方式相互均有所不同,但它们都是以上这个公式。按照这个公式,本题的计算如下:
圜材的直径=。
二“以睘材方”张家山汉简《算数书》“以睘材方”及“以方材睘”两个算题,由于其“术”提供的公式不同于从数学出发而推得的所谓正确的公式,因而历来研究者要么认为其公式有误,要么认为其数据有误。然而事实并非如此,我们将证明:这两个算题中的公式不是纯数学公式,它们是根据生产实际,测算以圆形木材制造的方形材大小的应用公式。本小节先讨论“以睘材方”算题,其简文如下:
以睘材方以圜材为方材,曰:大四韦[围]二寸廿五分寸十四,为方材几何?曰:方七寸五分寸三。术曰:因而五之为实,令七而一,四(15)
一即成。()
原释文“以睘材方”只有15号简,此算法,即“术”文显然是不完整的,苏意雯等、段耀勇及邹大海、以及日本张家山《算数书》研究会诸专家认为应补以“而一”二字。这种校补句法通顺而又与答数相符,文义完整而合理。然而据图版可知,本题竹简即15号简,其简文至“四”字已抵竹简下端编线,可见此处“术”不是缺文,而是缺少后续的一支竹简。15号简出土编号为H10,而号简的出土编号为H,二简出土编号既相连,而出土位置也确实相邻。由于号简的全部简文为“一即成”,内容与15号简内容相接。而如上节所论,号简不属于“睘材”题,因此我们确定号简是15号的续简,两简简文之间误脱一个“而”字。所以,我们将号简列于此简之后,并以脱误例校补“”字。
简文中“韦”借为“围”,古以“径尺为围”,这里的“围”实际上等于“尺”。因此“大四围二寸廿五分寸十四”的意思是“圜材”周长为寸。据“术”文计算,“方材”的边长为:,正与答案相符。因此,我们认为本题算法与答案的简文都没有问题。上引诸家中彭浩、郭世荣、郭书春认为本题有误,并各以已意解读、校改,我们与段耀勇、邹大海一样,认为他们都不正确。
本题之前《算数书》的所有60个算题中,虽然存在一定数量的脱文、衍文以及传抄错误,但是由于错误的“术”而产生错误答案的仅有“妇织”一个算题,而“妇织”问题性质上属于“趣味数学”而非“实用数学”。也就是说,《算数书》中的实用算题的算法都是正确的。因此,从统计的角度看,本题的“术”也就很不可能是错误的。而本题的“术”文算法与答案相符,而且对应于本题的“四而一”,后文所论“以方材睘”题中的算法中也相应地是“因而四之”。可见,本题的“术”文及答案肯定都没有问题。
古人“圆用规,方用矩”,因此圆内接正方形与圆的关系古人显然是清楚的,上引“睘材”则证明勾股定理在秦代也是人所熟知的知识,而从张家山汉简《算数书》的“方田”题及《九章算术》可知:古人在对形如=的自然数开平方时,常用为近似公式。
据这个公式计算,则,因此,边长为5的正方形之斜边边长略大于7,可见《孙子算经》所谓“见邪求方,五之,七而一”是古已有之的近似公式。此外,从张家山汉简《算数书》中的“囷盖”、“睘亭”、“井材”等算题可知,“径一周三”,即圆周率约等于三也是当时众所周知之事。邹大海先生在深入研究传世文献及秦简之后,得出的结论说:“《九章》的主体算法在先秦已经用到”,“先秦必然用到了汉《九章》所达到的那种高水平的数学知识”,这些结论也从宏观上支持我们的看法。因此,我们可以肯定:以及π在秦代是一件广为人知的事实。所以,如果应用“见邪求方,五之,七而一”,则“以圜材为方材”的公式应是:
圜材周长×5÷7÷圆周率。
若再以“径一周三”替换以上公式中的圆周率,则公式变成:
圜材周长。也就是说,本题“术”文的最后一句似乎应该是“三而一”而不是“四而一”。然而,我们前面已论证本题的算法与算题所给的答数相符,因而是不可能出错的,因此,“术”文的“四而一”不是源于错误的数学知识,而是另有原因。
事实上圆周率是略大于三的,很多迹象都表明古人知道这一事实。如果算法是“三而一”,那么除数小了,算出来的内接正方形的边长就会比实际可能的尺寸大,加上“五之,七而一”的近似,由可知,依“径一周三”计算出的答案比实际数字会大出6%,可见,实际应用中不能以“五之,七而一”以及“三而一”来计算从“圜材”可能得到的“方材”的边长,也就是说于实际问题而言,“三而一”是不可行的。另一方面,本题是一个实用问题,实际的“圜材”可能不那么圆,其尾部直径也必须略小,甚至木材表层可能质地不堪使用,因而计算可得到的“方材”直径时,留有余量的估算是现实问题的需要。本算题简文明确说“以圜材为方材”,这是极其值得重视的!这句简文说明“以圜为方”的简端题名只是本问题名称的略称,本算题所讨论的是“圜材”及“方材”,而不是“圜”和“方”,也就是说,本算题是实际应用题而不是纯数学问题。如上所论,以“三而一”来计算方材边长是脱离实际的,可见采用“四而一”的计算公式正是留有余量的边长估算法,而不是数学错误。此前诸专家未见及此,不恰当地将这个算题等同于“已知圆周长,求其内接正方形的边长”这样单纯的数学问题,这正是他们认为本算题有错误的原因。
总而言之,古人既已知圆周率大约为,算题中却使用“四而一”进行计算,而计算公式与答数又完全相符,可见其中的“四而一”是因其为“以圜材为方材”的应用算题而给出的留有余量的估算式。日本张家山《算数书》研究会诸专家虽然没有详细论证,但同样认定“四而一”是实际操作留出余量的计算方法。此外,从各种出土秦简可以发现,秦人在基层实行严密而高度数量化的管理,因此我们进一步认为,“以圜材为方材”问题中“四而一”的计算方式并非是随意的,应有相当于“程”的官方规定为依据。
三“以方材睘”关于“以睘材方”算题的校释中,专家主要是认为计算公式有失误或抄误,或者认为算题中的数据有误,总之被认为的错误在一定程度上还不算严重。“以方材睘”算题则不同,很多专家认为这个算题的算法是从根本上就错了。这些专家认为本题的算法把“以方材睘”作为“以睘材方”的逆问题是一个根本性错误,事实上却是他们错误理解了这个算题。我们先来看看这个算题的简文:
以方材睘以方为圜,曰:材方七寸五分寸三,为圜材几何?曰:四韦[围]二寸廿五分十四。?术曰:方材之一面即()
圜材之径也,因而四之,以为实,令五而成一。()
简文中的“曰材”二字,段耀勇、邹大海校改为“材曰”,并以“材”属上句,构成“圜材”一词。我们认为与下文对照,可知此处“材”字即是“方材”,因其后有“方”字而将“方材”省称为“材”,故保留原简文为妥。此外,本题“术”文中“方材之一面即圜材之径也”一句看似难以读通。然而“径”通“经”,“横度之名也”,这种意义虽与“径”的原意相近,但依上下文应理解为“横截面”。因此,我们认为此句即是解释“方材之一面”与“圜材”截面的关系。
对比问题的已知条件中的数据、答案以及“术”即算法的行文,本题确实是把“以方材睘”作为“以睘材方”问题的逆问题,依“以睘材方”题的算法,可知原简误脱“七之”二字,故校补如上。依校补后的算法,本题具体计算为:圜材之径=由已知条件中的数据根据算法计算的结果与算题中的答案完全相符。
如上所说,本题从算法来看是“以睘材方”题的逆问题。我们在上节已经论证,“以睘材方”是“以圜材为方材”的实用算题而不是单纯的数学问题,其中“四而一”的算法源于为实际可操作性而设的加工余量。也就是说,“以睘材方”问题是“已知圆材周长,求由其所割削而得的方材的边长”这样一个应用问题。本题既是“以睘材方”的逆问题,则是一个“已知所得方材的边长,求所需圆材的周长”的实用算题。
然而,国内各专家既认为“以睘材方”题是“已知圆周长,求其内接正方形的边长”的纯数学算题,本题就被相应地理解为“已知正方形的边长,求其内切圆的周长”的问题。由于这样的问题不是“以睘材方”的逆问题,因而彭浩、郭世荣、郭书春、段耀勇及邹大海等专家都认为这个问题的算法是错的,并给出了各自不同的校改方案。
我们认为,以为《算数书》会在这样一个实际应用问题上有算法错误是一种脱离实际的想当然。从整部《算数书》看,它是秦、汉低层官吏在实际管理中遭遇数学问题时的参考书,其问题基本上全部都是现实生活中的问题。就“以睘材方”题而言,其在计算由圆材割取方材时留有余量的做法,显然是实际算题的需要。因此,倘若本题算法错误,它早应由实践得到更正。再者,“材”之本义及最常用词义都是“木材”,以木材而论,将“圜材”加工成“方材”是现实生活中常有之事,反之上古原木于官方极为易得,又有多少官吏需要将“方材”加工成“圜材”呢?所以,作为实用算题,本题只能是官吏在其现实管理中需要的应用题:某工程需要某种大小的方材,那么官方应该发给工匠什么规格的圆材?
既然本题是“以睘材方”问题的逆问题,那么问题所求应该是“(留有余量的前提下)正方形外接圆的周长”,国内诸专家认定此题讲的是“内切圆”而不是“外接圆”,除了不理解“以睘材方”题中“四而一”是留有余量的做法之外,还因为他们对本题“为圜材几何”这一问句中的“为”字的理解。单凭文句理解,“以方材为圜材”句中的“为”字似乎应训“作”,因而文句自然以“从方材获取内切圆材”的解释为妥。然而,这种理解缺乏对本题、本句作结合实际的综合分析,与我们以上的论证相抵触,因而并不可靠。“为”字自古多义,此处亦未必训“作”。
事实上,古文中的“为”字除训“作”之外,尚可训“用”、训“谓”、训“曰”、训“于”、训“如”等等,因此,综合考虑我们以上的讨论,本题“为圜材几何”问句中的“为”字不必训为“作”,其意思或应近于“用”、“需要”。对“为”字作近似于此的训解,在张家山汉简《算数书》中就可以找到例子。《算数书》“程禾”题说“禾黍一石为粟十六斗泰半斗,舂之为粝米一石”,而“米求粟”题说“今有米七分升六,当为粟几何”,这两段文字虽然说的都是“粟”、“米”的换算,但其中“为”字的意思和用法却不相同。“程禾”题说“为粝米一石”时明确说“舂之”,所以其“为”字与“以睘材方”题“以圜材为方材”一句中的“为”字用法相同。然而“粟”可以舂为“米”,“米”却不能做成“粟”,因此“米求粟”算题的题名及其“当为粟几何”句中,“为”字的意思近于“需要”,实则可以简单地解释为“换算”。“为”字在“当为粟几何”句中的这种用法,与“为圜材几何”句正可相比拟。可见,“以方材睘”正是“以睘材方”算题的逆问题,两个算题中的“为”字可以有不同解释,情形正与“粟”、“米”换算问题相似。事实上,秦、汉间“粟”与“米”间的算题全部可以看成按比率换算,相似地,“以睘材方”与“以方材睘”二题也正可看成是“圜材”、“方材”间的“换算”问题。
总之,综合我们在“以睘材方”及“以方材睘”题中的论证,结论是很清楚的:“以方材睘”算题是根据目标“方材”的大小计算所需“圜材”大小的实际问题,它正是“以睘材方”算题的逆算题,本题除了误脱“七之”二字外,其问题、算法及答案都没有错误。“以睘材方”及“以方材睘”两个算题的算法都是正确的,它们是根据留有余量规定而建立的实际应用公式。