周述学测望知识初探
2021-10-13曲兆华
曲兆华
(中国科学院 自然科学史研究所,北京 100190;中国科学院大学,北京 100049)
测望是中国古代关于测量和计算物体高、深、广、远的数学门类。通过巧妙的设计,利用简单的工具获得近距离的数据,就可以算出远距离的数据,所以测望在中国古代被视为高深的学问。明代一般被认为是中国数学的衰落期,但也不乏努力钻研数学的学者,周述学(活动于16世纪中后期(1)关于周述学的生卒年,将另文探讨,此处不做展开。)就是其中之一。周述学在测望方面的工作,虽然不能与刘徽(活动于4世纪)等相比,但他对测望原理的理解,以及将测望知识进行系统化等方面取得的成就,超越了明代其他数学家,值得学术界关注。
周述学,字继志,号云渊,浙江山阴县(今属浙江绍兴)人,明代中后期著名学者。明代首辅徐阶(1503—1583)、明末清初的大学问家黄宗羲(1610—1695)曾为之作传。[1,2]《明史》亦有其简传,说他“读书好深湛之思,尤邃于历学”。[3]他一生著述甚丰,共有1 000余卷,总称《神道大编》,涉及易学、天文历法、数学、地理、航海、兵法、音律、医术、占卜、堪與等。可惜由于种种原因这些著作已经亡佚甚多,除《历宗算会》[4](1558)外,目前我们能够看到的还有《历宗通议》[5](具体成书时间不详)、《象宗华天五星》[6](1582)和《云渊先生文选》[7](1592)等数种。
《历宗算会》是在欧洲传教士传入西方数学以前,周述学在整理中国传统数学知识的基础上辑撰的一部综合性数学著作。全书15卷,测望见于卷3“勾股”。此卷还包括已知勾、股、弦及其和、较、积等要素中的两者求勾、股、弦问题(广义上称为“勾股和较”问题[8](2)为了行文方便,下文论及此类问题时,皆采取此种说法。),勾股容圆容方问题,以及利用勾股形一边及勾率、股率与勾弦和率求另外两边的问题(杨琼茹称为“勾、股、弦三率”问题[9](3)此说法并不准确,因为已知条件是“勾弦和率”,而非“弦率”。但为了行文方便,下文论及此类问题时,皆使用“勾股弦三率”来指代,去掉杨琼茹说法中的顿号“、”。)等。其中有的内容前人已有较多研究,而对测望问题则极少涉及(4)目前已知的相关研究仅有杨琼茹的硕士论文《明代历算学家周述学及其算学研究》对其中部分基本算法用图和数学表达式进行的简要说明。([9],52- 54页)。书中测望部分不像勾股和较类问题,“仅罗列术文与算题,而缺乏对术文的有效证明”[8],而是有关于一次测望和二次测望原理的说明及附图,体现了周述学在测望知识上有关注理据和系统性的倾向。本文将通过与刘徽、杨辉(活动于13世纪)、王文素(活动于16世纪上半叶)、顾应祥(1483—1565)、唐顺之(1507—1560)等有关测望的文献做对比,分析周述学的测望知识与前人的关系,特别关注其推理思路和归类思想,这可以为探索周述学的学术思想和明代数学的特点提供某些依据。
1 周述学之前测望问题的形态和理解
作为测量和计算物体高、深、广、远的学问,测望通常会用到勾股知识。在《九章算术》中,测望被置于“勾股”之下。刘徽为《九章算术》做注时,把二次及以上测望问题独立出来并加以发展,写成《重差》一卷,附于《九章算术》之后。《重差》后单独成书,以《海岛算经》之名行世,现存版本包括9个测望问题。刘徽关注了四类测望问题:《九章算术》中的立四表望远、因木望山(5)《九章算术》有测望8问:方邑5问与立四表望远、因木望山、测井深3问[10],但由于《历宗算会》将方邑问题与立四表望远问题归类为勾股容方问题,因此不在本文讨论范围之内,其余因木望山问与测井深问均为一次测望问题。,《海岛算经》中的重表、累矩,三望和四望等问题。[11]
在刘徽之后的数学著作中,测望与勾股有分有合。杨辉《续古摘奇算法》(1275)就将测望独立于勾股之外,讨论了《九章算术》中的因木望山和《海岛算经》中的望海岛问(问题情境改望海岛为隔水测竿,测望条件由人目高为0变为人目高不为0(6)本文出现的“人目高为0”和“人目高不为0”是我们给出的具有现代意义的统一说法。对应到文献原文当中的说法,前者为“人目着地”、“人目薄地”等,后者则为“人目四尺”、“人目高四尺”、“目高五尺”等不同情形。为了行文方便,当涉及有关分类讨论时,本文一律使用这种说法。),并结合图示给出了算法的推导思路。[12]杨辉的工作对明代数学家有较大影响。
吴敬(活动于15世纪中期)《九章算法比类大全》(1450)将测望置于卷9“勾股”中,收录了《九章算术》的测井深、因木望山2问,《海岛算经》中的望深谷、东南望波口、登山临邑、望海岛、望松5问,以及杨辉算书中的隔水测竿问及其变式(当人目高为0时,实同望海岛问)2问,但没有任何证明。[13]
王文素《算学宝鉴》(1524)将勾股及其和较互求、勾股容方容圆、测望问题都置于“申本”,但三类问题分属于不同的卷。测望部分虽有新证例题,但其测量和算法都在杨辉和吴敬的算书之内。[14]
唐顺之的《勾股测望论》(7)此文被收录于《荆川先生文集》[15],《历宗算会》引作“勾股重差论”([4],611- 612页)。二者某些语句的表述不完全一致,且收入《荆川先生文集》中的版本有少部分内容缺失,因此本文主要参考的是《历宗算会》中的版本。(具体撰写时间不详)将勾股、测望并论。此文论述了基本的勾股之法、立表之法和重表之法,并指出了各法适合解决的问题类型。勾股之法适用于已知勾、股、弦三者中任意两个求第三个的情形,立表之法适用于已知勾、股、弦三者中一个求另两个的情形,重表之法适用于勾、股、弦三者均不可知的情形。他阐述了立表之法的原理:“以小勾股求大勾股也。小勾股每一寸之勾为股长几何,则大勾股每一尺之勾,其长几何可知矣。此以人目与表、与所望之高,三相直而知之也。人目至表,小勾弦(8)“小勾弦”应理解为小勾所对应的弦,抑或此处“勾”字为衍字,因为《荆川先生文集》中的没有此字。也;人目至所望之高,大勾弦(9)“大勾弦”应理解为大勾所对应的弦,抑或此处“勾”字为衍字,因为《荆川先生文集》中的没有此字。也。”([4],611- 612页) 显然,其中蕴含着相似勾股形的对应边成比例的理论。他还认为勾股、立表与重表三法之间是相通的,“立表者,所以通勾股之穷也;重表者,所以通一表之穷也”,指出重表之法可以化为一表之法,一表之法又可以化为勾股之法,“其实重表一表也,一表勾股也,无二法也”。([4],612页)
与唐顺之同时且有着密切学术交流的顾应祥,在《勾股算术》(1533)中也将测望问题置于“勾股”论题之下([16],986- 991页)。此书分为卷上和卷下两部分,卷上包括勾股和较与最基本的勾股容方容圆问题,卷下是较复杂的容方(即《九章算术》中的方邑问题)、测望和勾股弦三率问题。顾应祥在序文中说:
九数之中,惟勾股一法幽深玄远,近世习算之士得其肯綮者绝少。应祥自幼性好数学,然无师传,每得诸家算书,辄中夜思索至于不寐。久之若有神告之者,遂尽得其术。既而又得《周髀》及《四元玉鉴》诸书,于是所谓勾股弦和较、黄中之说,开合折变,悉得古人立法之旨,求之于心,无不吻合,盖有不假于思索者。恐其久而忘也,政务之暇,手录其详节,各为问答一二章附之,名曰“勾股算术”。([16],975页)
这里顾应祥明言此书是根据他看到的“诸家算书”加以融会贯通,“手录其详节”,“各为问答”而成。其内容涉及“勾股弦和较、黄中之说”,不过这里并未明确论及测望问题,至于勾股弦三率问题是否在其所说内容之列,也不能确定。之后,顾应祥又有《勾股论说》(10)此文亦收入《历宗算会》卷3,名为“勾股论”([4],609- 610页)。一文,论述勾股弦及其和较的含义,以及勾股和较问题与勾股容方容圆等问题,但没有论及测望问题和勾股弦三率问题。([16],976页) 可见,顾应祥应该是将测望在内的后两类问题看作是前两类问题的延伸或进一步应用。这种潜在认识大概是受上述唐顺之有关测望问题可归结为勾股问题的看法的影响。《勾股算术》中收录的测望问题,虽然大多能在《九章算术》和刘徽《海岛算经》二书中找到原型甚至原题,但数目有所增加,共计有16问,涵盖的测望类型从一次至四次都有,而且顾应祥又重新进行了分类(详见下文)。不过,该书所有问题均只罗列了题目和算法,没有任何解释或图示。
需要说明的是,周述学的测望知识,特别是算题和相应算法,遵循的是从《九章算术》、刘徽、杨辉到吴敬、顾应祥的传统。杨辉之前的秦九韶(1208—约1261)有《数书九章》(1247)一书,其卷7、8是“测望类”:卷7有3问(“望山高远”、“临台测水”和“陡岸测水”),卷8有6问(“表望方城”、“遥度圆城”、“望敌圆营”、“望敌远近”、“古池推元”和“表望浮图”),共9问。[17]其中,“古池推元”不属于一般认为的测望问题,“望山高远”的模型是刘徽的望海岛(人目高不为0),其余7问的模型均是一次测望。但秦九韶的题目与《九章算术》和《海岛算经》中的有很大差异,与上述传统不同:首先,其问题情境更真实,“是实践中常常可以遇到的问题”[18];其次,其测望模型不固定,虽然其算题中有7问的模型都是一次测望,但多为一次测望模型的重复使用,且“遥度圆城”与“望敌圆营”2问的已知条件和所求对象与一般认为的一次测望问题不同;再次,其算法更复杂,有的是开高次方。
2 《历宗算会》中测望问题的形态及周述学的理解
前面提到,在周述学《历宗算会》中,测望被置于卷3“勾股”之内,全卷由勾股和较、勾股容圆容方、测望和勾股弦三率问题构成。这与顾应祥《勾股算术》中问题类型的整体结构是一致的。周述学与唐顺之、顾应祥都有较密切的学术交往,他的著作中对唐、顾二人论述勾股、测望的文章多有收录,因此,形成这种一致性容易理解。不同于顾应祥的是,周述学的《勾股论》(11)《历宗算会》除去卷15“歌诀”外,每一卷卷首(有的在卷中)均有概述性的论述,以解释该卷所论主题的含义、特点及功用等,并分条论述算法。李俨先生将这些论述称为“提要”[19]。实际上,这些论述大多数被收录在《云渊先生文选》卷4中,各自作为一篇独立的文章,标题就是“名数论”、“总法论”、“子母分法论”、“勾股论”,等等。它们在《历宗算会》中,则要么有标题,但一般情况下都不带“论”字(如“名数”、“总法”等);要么没有单独的标题,而直接置于其所在卷的卷名(如“子母分法”、“勾股”等)或所在主题的主题名(如“开方”、“截方”等)之下。([7],卷4:1a- 50b页) 本文提到这些文章时,为便于与书区分开来,采用《云渊先生文选》中的题名。一文不仅论述了勾股和较与勾股容圆容方问题的算法,还论述了测望与勾股弦三率问题的算法,各类算法与文后所列具体题目类型在顺序上大致是相对应的。他也没有像唐顺之那样,简单地将测望问题归结为勾股弦三者之间的互求问题。其《勾股论》结尾总结说:“参伍错综,变化无方,穷高极广,钩深致远,其术微哉。”([4],608页) 其中,“穷高极广,钩深致远”二句正是对测望功能的正确概括。
《历宗算会》共收录了16道测望算题([4],621- 629页),其中14道在顾书中也有记载,甚至13道的题设叙述形式和已知条件数据均与顾书一致。但相比后者只罗列题目和算法的做法,周述学在一次测望和二次测望的相应例题之后,同时给出了源自杨辉算书的有关算法推理说明及附图。另外,《历宗算会》的问题归类与后者并不完全一致,所给的类型名称也有自己的特点。需要说明的是,虽然杨辉算书中的说明和附图也为王文素所采纳,但它们于周、王二人的意义却不相同。在王文素那里,杨辉的例题及其图和说明是作为古题(或旧题)提出的,王文素要做的是对这些古题及其算法予以新的阐释和证明。而在周述学这里,杨辉的证明,更确切地说是证明的依据——基于出入相补原理的容横容直原理,却是作为他理解有关测望一系列算法的依据。这从他对题目的分类和每一类别内题目的排序、总结的概述性算法、为所收录算题补充的题解,以及所给算题的算法形式上可窥知一二。并且,周述学对测望问题独特的分类方式,应该也与他认可和持有的对于测望算法的推理思路有关。下文拟从周述学对已有测望算法的理解与归类两个方面进行分析。
2.1 周述学对原有测望算法的分类及理解
周述学在《勾股论》一文中按照单表测望、重表再望、重矩测深、三望、四望分别论述了一种最基本的测望算法,在其后具体的题目分类中又将他收录的16道测望算题归为6类(对应勾股卷的题目类型40—45(12)周述学《历宗算会》勾股卷共收录了题目类型50种,这里用数字标示其序号。下同。)。这些题目及分类与《勾股论》中的五大类算法的对应情况,如表1所示。对于这6类算法,本文根据相应的问题情境,又细分为12种(表1)。其中,第3种(类型41“单表小勾股求大勾股”的算法)与第8种(类型43“两表横矩小勾股求广”的第一个算法)实质为同一种算法,去重后共计11种。下文按照周述学在《勾股论》中的分类方式,列举例题并画图进行分析。
表1 《历宗算会》中的测望问题归类情况
这里做两点说明:其一,为方便阅读和理解,本文采用现代通行方式用字母在图中标记,并在引用原文时括注出重要用语在图中对应的线段。为便于对照,在同一或相近问题的不同附图中,尽量保持标记同一对象(针对勾股形而言)的字母位置一致。其二,关于中国古代较早的测望算法特别是《海岛算经》中测望算法的证明,由于刘徽自注及图已经失传,后人无法论定。([10],169页) 以《海岛算经》中的9个算题为考察对象,钱宝琮先生和吴文俊先生分别提出了复原古人算法的不同思路:钱先生主要通过作辅助平行线构造相似三角形,依据相似三角形对应边成比例的理论进行证明;吴先生主要依据出入相补原理(13)出入相补原理的命名由吴文俊先生给出。[20] 邹大海先生指出,作为一种不言自明的原理,出入相补原理早在先秦时代就已经被认识和应用,现传本《九章算术》、《周髀算经》和《算数书》等著作中的部分数学方法,包括测望方法,应该是用出入相补原理获得的。[21] 关于此原理的相关含义,本文不再赘述。进行证明,有的虽然也会借助平行线构造相似勾股形(如第3题的望邑公式),但证明基础仍是出入相补原理;他们所作的平行线及形成的交点的位置并不相同,构造的相似勾股形也就不相同。[22,23]实际上,在吴先生的证明过程中,反复用到了容横容直这一由出入相补原理导出的原理。对于二位先生提出的两种不同证明思路,郭书春先生认为都有道理。([10],169页) 本文的考察表明,周述学对测望算法的理解源于杨辉著作中的证明和附图,而后者的依据恰是基于出入相补原理的容横容直原理。吴先生的复原方案在周述学著作中得到了一定程度的印证和支持。因此,在下面的分析中,对周述学未给出证明的算法,本文将采用容横容直原理,并有选择地借鉴吴先生的有关证明思路,概括出最可能符合周述学推理思路的说明。
2.1.1 单表测望
单表测望对应类型40“单表小勾股求大股”和41“单表小勾股求大勾股”。
(1)单表小勾股求大股
1)当人目高不为0时
举例第64题(图1a(14)此图按照周述学书中的“单表测高图”绘制([4],622页),图的命名采用周述学的命名方式。下同。):
有竿(A′B)不知其高。从竿脚(A′)量远(A′E′=AC)二十五尺,立一丈表(E′E),表后退行(E′D′=CD)五尺,用窥穴(D)望表(端E),与竿(端B)齐平,其人目窥穴,高(DD′=E′C)四尺。求竿高几何?得竿高四十尺。
以表高(EE′)退人目,余(E′E-D′D,等于CE)乘表去竿远(AC),以退行(CD)除之,并表高,共得竿高(A′B)。(15)需要说明的是,由于本文关注的主要是算法,故而这里将具体题目算法中运算用到的数及其单位省去。下同。([4],621页)
术文给出的求竿高算法相当于公式:
(1)
图1 单表测高测远图
此题后有关于算法原理的说明(图1(16)为了更加清楚,我们又单独绘制了人目高为0的情形,如图1b。):
直田(□BD)之长(AB,JD)名股,其阔(AD,JB)名勾,于两隅角(B,D)斜界一线(BD),其名曰弦。弦之内外分二勾股(ABD,JDB),其一勾中容横(□EA),其一股中容直(□EJ),二积之数皆同(□EJ=□EA)。以余勾(CD)除横积(□EA)得积外之股(NB);以余股(PD=CE)除直积(□EJ)得积外之勾(BI=AC)。二者法虽异,而实相通也。([4],621- 622页)
可以看出,其中只考虑了上述竿高公式去掉人目高后的部分,实际上相当于人目高为0的情形,对应公式为
也即
(2)
并给出了表去竿远的算法公式为
(3)
推理思路为:□EJ=□EA,即NB·CD=AC·CE,通过变形,即可得到上述(2)和(3)式。这里,需要特别说明其中所用术语“勾”、“股”、“余勾”、“余股”、“积外之勾”和“积外之股”的含义。“勾”、“股”对应于由直田□BD所分成的两个勾股形ABD和JDB的两个直角边:在勾股形ABD中,AD边为勾,AB边为股;在勾股形JDB中,JB边为勾,JD边为股。“余勾”和“积外之股”是相对于勾股形ABD中所容横积□EA的横边AC和从边AN而言的:“余勾”是指勾股形ABD的勾AD中去掉AC后所余的部分CD;“积外之股”是指股AB中去掉AN后所余的部分NB。相应地,“余股”和“积外之勾”是相对于勾股形JDB中所容直积□EJ的从边JP和横边JI而言的:“余股”是指勾股形JDB的股JD中去掉JP后余下的部分PD,与表高CE等长;“积外之勾”是指勾JB去掉JI后余下的部分BI,与表去竿远AC等长。两个小长方形□EA和□EJ分别是大长方形□BD分成的两个全等勾股形DBA和BDJ的内容长方形,它们有一个共同顶点E在对角线BD上。前一个小长方形的宽大于高,称为横,后一个小长方形的高大于宽,称为直。这里明确提到所容横与所容直面积相等,并由此推出用于计算高度和距离的算法。可见周述学是把这两个长方形相等作为原理来使用的。这个思想来源于贾宪《黄帝九章算经细草》,被数学史家称为容横容直原理;此原理又是由出入相补原理得出的[24]。
另外,其书中题图下方还有小字注释:
竿(AB)高名股,竿至人目(D)谓之通勾(AD),所立之表(CE)乃勾中容横(□EA)之界限,限外至人目即是余勾(CD)也。以余勾除所容之横积,乃得积外之大股(NB)矣。([4],622页)
原本所测之竿、所立之表应分别为A′B、EE′,但从这段图注来看,在推理时,是将AB看作竿高,因为竿至人目AD为通勾,所对应的股是AB而非A′B;相应地,将CE看作表高。图注与上述利用容横容直原理所做的解释是相一致的。此题和相应的原理解释、附图及注应是来自杨辉《续古摘奇算法》([12],1114- 1115页),对应部分仅有个别字的差异,而且周述学保留了该书所使用的术语(比如,余勾、余股、积外之勾和积外之股等),显示周述学继承了前人的思路,将上述求竿高及表去竿远的算法公式建立在基于出入相补原理的容横容直原理的基础之上,而非基于相似勾股形对应边成比例的理论。不止于此,下面我们会看到这种依据出入相补原理的思路实际上贯穿于周述学对于全部测望算法的理解之中。
2)当人目高为0时
周述学《勾股论》“单表测望”术文与此情形相对应。下面先给出原术文(图1b):
单表测望:以表高(CE)为小股,乘表外大勾(NE=AC),以余勾(CD)除之得大股(NB);以小勾(CD)乘大股,以小股除之得大勾;若以小勾除大勾,以所得数乘小股为大股;又以小勾除小股,所得为勾股差,以差乘大勾亦得为大股。([4],607页)
对照这段术文与上述应用容横容直原理的解释文字可知,从计算的角度来说,此处的“小(余)勾”、“小股”分别与上述“余勾”、“余股”相对应,“(表外)大勾”、“大股”(18)需要特别注意的是,根据上下文语义可知,这段术文中所使用的术语“大股”与“表外大勾”相对应,因此,尽管“大股”前面均没有加“表外”二字,但可以肯定“大股”即“表外大股”之简称。另外,这里只有第一次提及“表外大勾”时前面加了“表外”二字,其余也只以“大勾”简称。也就是说,周述学所谓的“大勾”、“大股”分别是“表外大勾”、“表外大股”的简称。分别与上述“积外之勾”、“积外之股”相对应,则大股公式即(2)式,大勾公式即(3)式。求大股还可以用公式
(2′)
或
(2″)
唐顺之《勾股重差论》所述“立表之法”求大股也有相当的三种形式,但其依据是在“人目(D)与表(E)、与所望之高(B)三相直”的情况下,“以所测之高(AB)为大股,以大股地下之影(AD)为大勾,以表(CE)为小股,以表地下之影(CD)为小勾”([4],611页)(其中标记字母参见图1b)。可见,二人所说的“大股”、“大勾”的含义并不一致。不过,在周述学收录的算题中,仍然有唐顺之所说的类型。比如,第66题(图1b):
塔(AB)不知高。从塔底中心(A)量至影末(D),长(AD)四丈。别立一表(CE),高二尺五寸,量影长(CD)八寸。求塔高几何?得一十二丈五尺。
塔影(AD)如大勾,表高如小股,表影(CD)如小勾,求塔高如大股。
以小股乘大勾为实(AD·CE),以小勾为法除之。([4],622页)
求塔高算法对应的公式为
(4)
当然,此题也可以按照周述学的理解,将NB看作是塔高,亦即(表外)大股,相应地,将NE(长度等于AC)看作是塔影,亦即(表外)大勾,也就是说对塔的标记做特殊处理:将原本处于同一水平位置的塔与表看作处于不同水平位置。相应地,求塔高用到的即上述(2)式。如此,则用到的证明根据明显更符合容横容直原理,而不是相似勾股形对应边成比例的理论。虽然这种处理是将所测之高减去表高看作大股,符合周述学的理解倾向,但是由于他收录的唐顺之的论文和部分算题都是将所测之高看作大股,难免又对他造成一种影响,使得他会混淆大股、大勾等术语所表示的距离。在周述学为算题补充的题解当中,可以看出这种混淆的痕迹。例如,第65题(此为人目高不为0的情形,参见图1a):
山(A′B)不知高。东五十三里(A′E′=AC)有木(EE′),长九十五尺,人立木东三里(E′D′=CD),目高(DD′)五尺,望木末(E)与峰(B)斜平。求山高几何?得(一百五十九丈四尺)[一百六十八丈五尺](20)即使按原算法,结果也不正确,零数应为“五尺”,非“四尺”。今按改正后的算法,将结果改正为“一百六十八丈五尺”。。
山东至木(AC)如大勾,(木长)[以人目减木长(E′E-D′D)](21)若以“人立木东”为小勾(余勾),则题解此处以“木长”为小股不正确,具体算法“以人目减木长为小股”正确,故改正。如小股,人立木东如小勾,(求山高)[以木长减山高(A′B-EE′,即NB)](22)若以“山东至木”为大勾,则须“以木长减山高”为大股,故改正。如大股。
以山东至木为勾,以人目减木长为小股,相乘得容方积为实,以余勾人立木东为法除之,加(目高)[木长](23)按此法求得的是大股(NB),故求山高(A′B)当加“木”长(EE′)非“目”高(DD′)。此题原型见于《九章算术》,最后加的是“人目之高”,刘徽注改正为加“木之高”。([11],201页) 吴敬《九章算法比类大全》采纳了刘徽的正确算法,最后也是加“木高”。([13],275页) 顾应祥《勾股算术》最后加的却又是“目”高非“木”高,且给出的答案符合其算法。([16],986页) 虽然周述学对题目的描述与顾书一致,但二者给出的答案却不一致。可见,对于此题,周述学并未参考吴敬的书,很可能也并未参考顾应祥的书,较有可能的是二人的题目出自同一本书。或者是周述学发觉此问有误,给出了他认为正确的答案而未说明。即得。([4],622页)
其中,第一段为题设,最后一段是术文(或法),中间一段即周述学补充的题解(24)顾应祥《勾股算术》亦载有此题([16],986页),但没有题解。。术文中的“容方积”表示相乘得到的长方形□AE的面积,可知此算法依据的不是相似勾股形对应边成比例理论,而是容横容直原理。但题解中的大勾“山东至木”与大股“山高”,小勾“人立木东”与小股“木长”,显然不相对应。可见,周述学在使用这些术语时并没有坚持统一的标准,这其实也反映了他理解前人已有的知识并将它们纳入自己的知识体系的一个过程。
(2)单表小勾股求大勾股
此条目下有“荆川”二字([4],623页),说明对应例题第69题及其后的解释应该是直接采自唐顺之的著述,但在其传世著作中并未见到有关内容。现引该题如下(图2(25)其中图2a按照周书中的图([4],623页)绘制而成,展示的是一种特殊位置:后多勾(后晷景)HF恰好与前晷景 CD相接。因此,为了便于理解古人的观测,本文重新绘制表示一般情况的图2b,并在分析时按照图2b中的标注进行说明。):
立表(CC′)测竿(AB)。表高三丈,却行(CF)六丈,望之参合。又记表高(CE)二丈,却行(CD)二丈,望之亦相参合。求(表)[竿](26)此处“竿”误作“表”,今校正。高几何?得(表)[竿](27)此处“竿”误作“表”,今校正。高四丈。
以大、小二股相减,余(CC′-CE)以退行前小勾(CD)相乘为广实;以小股与大勾乘(CE·CF),以大股(CC′)除之为后多勾(HF);又以前小勾减之,余为景差勾(HM),为法,除实,加表,共广四丈。此求高与求广同法也。([4],623页)
图2 勾股一表以御广远图
并有附图(图2a)解释:
以小股减大股,以小勾乘之为勾实,以起广数(AB);以小股乘大勾,以大股除之得后多勾,又为后晷景,以前晷景小勾减之为景差,为法,大勾减后晷景数(CF-HF)为股间,小勾乘股间为股实,以起远数(AC)。([4],623页)
根据术文和解释,可以得到后多勾(后晷景)
景差为HF-CD,竿高公式
(5)
竿去表公式
(6)
此题的测量方法实为《海岛算经》“南望方邑”问的测量方法,术文后的注解“此求高与求广同法”也表明了二者的一致性。《历宗算会》同时记载了与后者题型一致的第75题,并把它归为重表测望,因此,这里先不讨论算法的证明思路,将于下文一并讨论。
2.1.2 重表再望
重表再望对应题目类型42“重表小勾股求大股大勾”和43“两表横矩小勾股求广”中的“正测广”。
(1)重表小勾股求大股大勾
该类型包含两种情况。下面先看第一种,又可分为人目高为0和不为0两种情况。
1)当人目高为0时(图3a(28)与周述学的“重表测高测远法图”([4],624页)一致。)
举例第71题:
海岛(AB)不知高远。立二表(CE,HG),各高三丈,前后各参直,相去(CH)一千二百步。从前表退行(CD)一百四十七步三尺,人目着地(D),望岛峰(B)与前表端(E)齐平。又从后表退行(HF)一百五十二步二尺,人目着地(F),望岛峰(B),亦与后表端(G)齐平。求岛高及去前表(AC)各几?得岛高四里六十六步,前表去岛一百二里一百八十步。
置表高,以乘表间相去为股实(CH·CE);又置前表退行,乘表间为勾实(CH·CD);以前表退行减后表退行,余(HF-CD)为法,以法除股实,加表高,以里法约之,得岛高;以法除勾实,以里法约之,得前表去岛远。([4],624- 625页)
图3 重表测高测远图(一)
此题原型即《海岛算经》“望海岛”问([25],218页),两者算法一致:岛高公式为
(7)
前表去岛公式为
(8)
周述学《勾股论》中的术文即对应此种情形,原文如下:
重表再望:以表高(CE)为小股,乘表间(CH)为股实;以前表却行(CD)为小勾,乘表间为勾实;以二表却行相减,余(HF-CD)为法,以法除股实得大股(NB),以法除勾实得大勾(NE=AC)。([4],607页)
对照第71题的术文可知,此总括性术文应该是对前者进行概括并加以一定的抽象(如,将岛高减去表高抽象为大股,将前表去岛远抽象为大勾)得到的。
2)当人目高不为0时(图3b(29)此图根据周述学书中的“重表测高测远图”([4],624页)绘制。杨辉书中有相当的图([12],1116页)。)
第70题原文如下:
有竿(A′B)不知高远。立二表(EE′,GG′),各高一丈,前后相去(E′G′=CH)一十五尺,从前表退行(E′D′=CD)五尺,人目高(DD′)四尺,于窥穴内望表(E),与竿(B)齐平。又从后表退行(G′F′=HF)八尺,亦窥穴望表(G),与竿(B)齐平。求竿高及去前表远(A′E′=AC)各几何?得竿高四十尺,前表去竿二十五尺。
置表高,减人目,余(EE′-DD′)以乘表间(CH)为股实;又置前表退行,乘表间为勾实(CH·CD);以二表退行相减,余(HF-CD)为法。以法除股实,加表高,得竿高;以法除勾实,得前表去竿。
又术:以二表退行尺数相减,余(HF-CD)以除表间为实,以表高减人目,余(EE′-DD′)为法乘之,并表长,得高;又以相多(HF-CD)除表间为实,以前表退行数(CD)为法乘之,亦得远(AC)。([4],623页)
这个题目应该出自杨辉《续古摘奇算法》([12],1115页),周述学补充“又术”。根据题目及术文可知,表高减人目为CE=EE′-CE′=EE′-DD′,竿高算法对应的公式为
(9)
前表去竿算法对应的公式同(8)式。另外,求竿高、前表去竿还可以用公式
(9′)
(8′)
周述学说明了术文是如何得来的:
前表(CE)(30)这段证明中的“前表”、“后表”分别指CE、HG,相应地,所测之“木”(即“竿”)高是指AB。去木(AB)近,为小股;后表(HG)去木远,为大股。前表(CE)乃小股容积(□EA,□EJ)之界限,其去木(AC)即小股中之容积一段也。后表(HG)乃大股容积(□GA,□GK)之界限,其去木(AH)即大股中之容积一段也。以小股容积减大股容积(□GK-□EJ=□GA-□EA),其余减不尽者,正在前后表两界之中,名表间积(□GC),故以表高(CE)乘表间(CH)为实,以前表小余股(CD)减后表大余股(HF),以余除表间积,得弦外之高(NB)。本是小容积减大容积(□GK-□EJ),余为实,小余股减大余股(HF-CD),余为法,以法除实,求弦界外之高。加表高,增人目高(DD′),得为木之通长(A′B)也。([4],623- 624页)
其中,“界限”、“容积”、“表间积”等用语明显与容横容直原理联系在一起。从中可以看出(9)式的推理思路(31)结合图3b可知,推理过程中将AB、CE分别看作所测之竿A′B、所立之表EE′,与单表测望的处理方式一致。:在长方形□BD中,由BD和E,得
□EJ=□EA
(1.1)
在长方形□BF中,由BF和G,得
□GK=□GA
(1.2)
式(1.2)-式(1.1),得□GK-□EJ=□GA-□EA=□GC,即NB·(HF-CD)=CH·CE,其中CH·CE为表间积,则
(1.3)
又A′B=NB+CE+DD′,即A′B=NB+EE′,将(1.3)式代入,故得(9)式。这是人目高不为0时的情况。同理,当人目高为0(即DD′=0)时,有AB=NB+CE,将(1.3)式代入,故得(7)式。这段解释应该源自杨辉算书([12],1116页),其中一些用语明显与前述有关容横容直原理的解释不一致(比如,“余股”、“弦(界)外之高”,分别相当于前述“余勾”、“积外之股”),但均保留了下来。这段解释未涉及(8)式的推导,但由(1.1)和(1.3)式容易推得。
接着看第二种情况,又可分为人目高为0和不为0两种情况。
1)当人目高为0时
例第73题(图4a):
松(OB)生山(AO)上,不知高下。立两表(CE,HG),各高二丈,前后相去(CH)六十步,令后表(HG)与前表(CE)相参直。从前表却行(CD)九步一尺,人自薄地(D),遥望松末(B),与表端(E)参合;望松本(O),入表(EP)二尺八寸。从后表却行(HF)十步三尺,人目薄地(F),遥望松末(B),亦与表端(G)参合。求松高及山去表(AC)各几?得松高一十二丈二尺八寸,山去表一百九十七丈一尺七分尺之三。
求松高:置表间,乘入表为实(EP·CH),以二表却行相减,余(HF-CD)为法除之,加入表,共为松之高。 求山去表:以表间与前表却行乘之为实(CH·CD),以法除之,余实,以法命之。 求山高:以表高减入表,余(CE-EP)以乘表间,以法除之,[加表高、减入表](32)原文缺少“加表高、减入表”([4],625页),今据算理补之。。 求松与山共高(AB):以表高乘表间(CH·CE),以法除之,加表高即得。([4],625页)
图4 重表测高测远图(二)
此题原型即《海岛算经》“望松”问([25],218- 219页),二者算法一致:松高公式为
(10)
前表去山公式同(8)式。另外,此题还补充了求山高、松与山共高的算法:山高公式为
(11)
松与山共高公式为
(12)
其中求山高算法不准确,按改正后的术文,(11)式应为
2)当人目高不为0时
例第74题(图4b):
城(A′O)上有戍楼(OB),不知高远。立两表(EE′,GG′),俱高一丈五尺,表间相去(E′G′=CH)八十步,前后参直,人目高(DD′)四尺。从前表退行(E′D′=CD)三十步,望楼岑(B),与前表末(E)参合;望楼足(O),入表(EP)五尺六寸。又从后表退行(G′F′=HF)五十步,遥望楼岑(B),与后表(G)参合。求城与戍楼各高几何?得楼高二丈八尺,城高三丈一尺。
以表间乘入表为城楼高之实(EP·CH),以表高减人目及入表,余(EE′-DD′-EP)以乘表间(CH)为城高之实,以两表退行相减,余(HF-CD)为法,以法除城高[之实](33)抄本漏掉“之实”二字,今补之。,(加入表)[加表高、减入表](34)原文为“加入表”([4],626页),今据算理改为“加表高、减入表”。为城之高;法除楼高[之实](35)抄本漏掉“之实”二字,今补之。,(加表高、减入表)[加入表](36)原文为“加表高、减入表”([4],626页),今据算理改为“加入表”。得楼高,以表减人目,余(EE′-DD′)乘表间,以法除之,加表高,得城与楼共高(A′B)。([4],625- 626页)
根据题目及术文可知,楼高算法对应的公式为
(13)
城高算法对应的公式为
(14)
城与楼共高算法对应的公式为
(15)
其中,求楼高、城高的算法并不准确。今按改正后的术文,(13)式应为
(14)式应为
另外,还可得到前表去城算法,对应公式同(8)式。需要说明的是,虽然术文中关于楼高、城高的算法不准确,但是所给答案却与利用改正后的算法求出的答案相符合。这说明术文之误可能是抄写错误,将求楼高、城高最后所加的零数颠倒了。
周述学虽未给出相关公式的推导,但却将此类问题与望海岛问题归为一类,并且按望海岛、望松的顺序先后排列,这显示他对(10)和(13)式的理解应该分别以(7)和(9)式的推导为基础,是基于容横容直原理的。以(10)式的推导为例,对比图4a与图3a可知,前者表示松与山共高的AB与后者表示岛高的AB相当,据图4a,在长方形□BD中,由BD和E,得
□EJ=□EA
(2.1)
在长方形□OD中,由OD和P,得
□PS=□PA
(2.2)
式(2.1)-式(2.2),得□IS-□ET=□PN,即(OB-EP)·CD=AC·EP,整理得
(*)
(吴文俊先生称为“松高辅助公式”[23]),将(8)式代入,即得。
(2)两表横矩小勾股求广——正测广
例第75题(图5(37)周述学书中有附图([4],626页),与此图中实线部分相当。):
图5 横矩两表测广图
方城(ABQR)不知大小。立两表(C,C′),东西相去(CC′)二百一十六尺,齐人目处,以索连之,令东表(C)与城东南隅(R)、东北隅(A)参直,从东表退北行去表(CD)七十四尺,遥望城西北隅(B)入索东端(CE)五十尺。若从东表退北行去表(CF)三百二十四尺,遥望城西北隅,适与西表(C′)相参合。求城方(AB)及去表(AC)各几何?得城方一万二千五百尺,去表一万八千四百三十六尺。
城方为勾,城去表为股。
以表间减入索,余(CC′-CE)以东表退行(CD)相乘为勾实,以[后](38)此处据下文说法补“后”字以示区别。北行去表乘入索(CE·CF),以表间除之为景差(HF);又以后北行去表减景差,余(CF-HF)以东表退行乘之为股实,却以东表退行减景差,余(HF-CD)为法,以法除勾实,加入表间(CC′),得城方;以法除股实,得城去表。([4],626- 627页)
(16)
这种不一致在一定程度上说明了后人对测望问题的推进,也反映了当时人们对该算法的一种不同的推理思路。
吴文俊先生通过对照《海岛算经》中望邑与望海岛公式的各项,认为邑方、邑去表公式分别对应于岛高、表去岛公式,言外之意二者证明完全一致。[23]而对于这个新的求城方(竿高)的算法,我们可以据图2,借助容横容直原理给出最可能是原作者的推理思路:
在长方形□BD中,由BD和E,得
□EJ=□EA
(3.1)
同理,在长方形□BF中,由BF和G,得
□GK=□GA
(3.2)
式(3.2)-式(3.1),得
□GK-□EJ=□GC
(3.3)
又在长方形□C′F中,由C′F和G,得
□GC=□GL
(3.4)
周述学记载的这个算法,唐顺之了解,顾应祥(39)顾应祥收录的相当题目所给的城方算法也是这个。([16],989- 990页)也知道。可见,对于《海岛算经》测望方邑方法,当时的数学家,至少是周述学周围的人,并不是直接通过类比将它与测望海岛方法联系起来,而是把它看作一种新的测量方法并进行重新推理,从而得到了新的算法公式。因而,周述学将它与测望海岛方法分为不同的类别,也有一定道理。
2.1.3 三望
三望对应题目类型43“两表横矩小勾股求广”中的“斜测广”。例第76题(图6(40)周述学书中有附图([4],627页),与此图中实线部分基本相当。):
图5 横矩两表测广图
东南望波口(OB)。立两表(C,C′),南北相去(CC′)九丈,以索薄地连之。当北表之西却行去表(CD)六丈,薄地遥望一望波口南岸(B),入索北端(CE)四丈二寸;以望二望北岸(O),入前所望表里(EP)一丈二尺。又西却行去北表(CF)一十三丈五尺,薄地遥望三望波口南岸(B),与南表(C′)参合。求波口广几何?斜测广
得一里二百四十步。
以北表之西后却行乘先望南岸入索(CE·CF),以两表相去除之为景差(HF),内减北表之西先却行,余(HF-CD)为法,又以去北表前、后却行相减,余(CF-CD)乘望北岸入索表里为实,以法除之为波口阔数,以里法、步法约之。([4],627页)
此即《海岛算经》“东南望波口”问([25],220- 221页)。根据题目及术文可知,求波口广算法对应的公式为
(17)
吴文俊先生通过对照《海岛算经》中此题与望松算法公式的各项,认为波口广公式对应于松高公式。[23]实际上,对比图6与图4a可知,两图中各点及线段,虽然代表的实际含义不同,但对应的图形含义却也是一致的,因此,若将波口广公式中的CF拆分成CH+HF,则整理后可得(10)式。虽然周述学未就此题再说明一遍推理思路,但他将上述求城方的题目与此求波口广的题目先后排列,并分别释以“正测广”和“斜测广”之义,而这两种测量方法又正好分别与望海岛和望松的测量方法对应,结合前述相关分析可知,他对于波口广算法的理解应该是按照这种方式来的。
2.1.4 重矩测深
重矩测深对应题目类型44“重矩小勾股求深”,分为望一处和望两处两种情况。
(1)当望一处时
例第77题(图7a):
图7 重矩测深图
俯望深谷(AC=BI)。偃矩(ECD)岸上,令勾高(CD)六尺,从勾端(D)望谷底(B),入下股(CE)九尺一寸。重设矩(VHU)于上,其矩间相去(CH=DU)三丈,更从勾端(U)望谷底(B),入上股(HV)八尺五寸。求谷深几何?得四十一丈九尺。
以矩间相去乘入上股为实(HV·CH),以入上股减入下股,余(CE-HV)为法除之,内减勾高,余得谷深。
又以矩间相去乘入下股为实(CE·CH),以入上、下股相减,余为法除之,内减勾及矩间,余得谷深,乃下矩至谷底之数(AC)。如求谷底阔(AB),以勾乘矩间(CH·CD),以法除之为得谷底阔。([4],627- 628页)
此即《海岛算经》“望深谷”问([25],220页)。根据题目及术文可知,谷深(下矩至谷底之距离)算法对应的公式为
(18)
后人又补充了一个算法,相应谷深公式为
(19)
谷底阔公式为
(20)
此测望方法与望海岛方法相似。吴文俊先生有对《海岛算经》算法的证明[23],据其思路,(18)式的推导如下:在长方形□BU中,由BU和V,得
□VW=□VA
(4.1)
在长方形□BD中,由BD和E,得
□EJ=□EA
(4.2)
式(4.1)-式(4.2),得□VC-□EY=□VX,即CH·HV-(CE-HV)·AC=(CE-HV)·CD,整理即得(18)式。虽然周述学未再说明一遍有关推理思路,但从他对测望海岛算法的理解思路,可以想见他对此算法的推理应该与之一致。
(4.3)
又由(18)式知
(4.4)
(2)当望两处时
例第78题(图7b):
登山(AC)临邑,不知门高(BB1)。偃矩(ECD)山上,勾高(CD)三尺,从勾端(D)下望门额(B1),入下股(CE1)四尺八寸;望门阃(B),入下股(CE)二尺八寸八分。又立重矩(VHU)于上,相去(CH=DU)五尺,从勾端(U)望门额,入上股(HV1)三尺六寸;又望门阃,入上股(HV)二尺四寸。求城门高几何?得门高一丈。
以两矩相距乘门额入上股(HV1·CH),以门额入上股与下股相减,余(CE1-HV1)为法除之,得门额去矩之数(41)据算理,这里“门额去矩之数”是指门额与下表勾端所在水平直线间的距离,同样,下文“门阃去矩之数”是指门阃与下表勾端所在水平直线间的距离。。乃以两矩相距乘门阃入上股(HV·CH),以门阃入上股与入下股相减,余(CE-HV)为法除之,得门阃去矩之数。二数相减,余为门高。([4],628页)
根据题目及术文可知,门高公式为
(21)
这个题目的原型即《海岛算经》“望清渊”题。对照两个题目,可知前者的门额、门阃分别相当于后者的水岸、白石。后者术文如下:
术曰:置望水上、下股,相减,余(CE1-HV1)以乘望石上股(HV)为上率。又以望石上、下股相减,余(CE-HV)以乘望水上股(HV1)为下率。两率相减,余以乘矩间为实。以二差相乘为法。实如法而一得水深。([25],221页)
若按此术文,则前者求门高的算法应为
(22)
其中,HV(CE1-HV1)为上率,HV1(CE-HV)为下率。显然,单从形式上来看,这两个公式是不一样的。
吴文俊先生有对《海岛算经》中相关算法〔相当于(22)式〕的证明。[23]此处使用求门高的术语说明其思路:通过对比,可知望门高相当于测望了两处深谷,则求门高相当于使用了两次望深谷算法,故而依据(18)式,可得下矩至门阃之数为
(5.1)
下矩至门额之数为
(5.2)
式(5.1)-式(5.2),得
(5.3)
整理即得(22)式。不难看出,推导过程中间的(5.3)式就是周述学记载的求门高算法对应的公式,即(21)式。从这个算法本身来看,周述学的理解思路应该与此相一致。
2.1.5 四望
图8 偃矩测广从图
四望对应题目类型45“累矩立勾股与横勾求广从”。例第79题(图8(42)周述学书中有“偃矩测广从图”([4],629页),是从俯视城的角度绘制的。在当时还没有透视画法的条件下,估计是为了直观,他将原本与城平面垂直的两立矩均画成了与之平行的样子。虽然不准确,但从帮助读者理解算法的角度来说,是值得肯定的。):
登山(AC)临邑(OO1B1B),邑在山南,不知广(OO1)、从(OB)。偃矩(ECD)山上,勾高(CD)三尺五寸,勾端(D)与邑东南隅(B)及东北隅(O)参相直,从勾端遥望东北隅,入下股(CP)一丈二尺。又横勾(PZ)于入股之处随于入股去处横设一勾,从勾端望西北隅(O1),入横勾(PZ)五尺;东南隅,入下股(CE)一丈八尺。又设重矩(VHU)于上,矩间相去(CH=DU)四丈,更从立勾端(U)望东南隅,入上股(HV)一丈七尺五寸。求邑广、从几何?得东西广一里四十步,南北从一里一百二十步。
以勾高乘东南隅入下股(CE·CD),以入上股(HV)除之,内减勾高,余为法。求从:以东南隅入下股,内减东北隅入下股,余(CE-CP)以乘矩间相去为实,以法除之得二万四千寸。
求广:以西北隅入横勾乘矩间相去为实(CH·PZ),以法除之得二万寸。各以里法一万八千寸、步法五十寸约之得广及从。([4],628页)
此即《海岛算经》“登山临邑”问([25],222页)。根据术文及题目可知,邑南北从公式为
(23)
邑东西广公式为
(24)
吴文俊先生有对《海岛算经》中相关算法的证明。[23]据其思路,(23)式的推导以望松和望深谷算法为基础:对比图8与图4a可知,前者有关下矩测望部分与后者的前表测望部分完全一致。其中,邑南北从、东南隅入下股、东南隅入下股与东北隅入下股之差、勾高分别相当于松高、表高、入表、前表却行,因此,根据上述松高辅助公式,可得邑南北从为
(6.1)
(6.2)
将式(6.2)代入式(6.1),整理即得(23)式。(24)式的推导需借助相似勾股形对应边成比例的理论:根据相似勾股形DO1O与DZP,可知邑东西广
(6.3)
又根据相似勾股形DOA与DPC,可知
(6.4)
总之,周述学虽然只在最开始两处给出了推理说明,但却足以体现出他对容横容直原理在算法推导中的认同和重视。实际上,之后的算法推导基本上是通过类比这两处尤其后一处推理展开的。从这点看来,最开始的推理说明足以看作所有算法推导的理论基础。
2.2 周述学对原有测望问题的归类与顾应祥的归类比较
前文已经提到,周述学《历宗算会》中16道测望题目中有14道题目在顾应祥《勾股算术》中也有记载(43)周书的第64题和第69题(来自唐顺之)未见于顾书。,其中13道题设的叙述形式和已知条件数据均与后者相同,但二者对同一题目的归类往往相异。周书中的算法及题目分类情况已经列成表1,现在将顾书中的例题分类情况列为表2。
表2 《勾股算术》中的测望问题归类情况
对比表1和表2可以看出:对于第65—68题,周述学归为一类“单表小勾股求大股”,顾应祥分为两类:第65、68题属于“容方与余勾求余股”,第66、67题属于“小勾股与勾求股测望”。对于第70—74题,周述学归为一类“重表小勾股求大股大勾”,顾应祥分为两类:第70—72题属于“两余勾小股求大勾股测望”,第73、74题属于“两余勾求两勾股测望”。对于第75、76题,周述学归为一类“两表横矩小勾股求广”,顾应祥分为两类:第75题属于“两余勾横测望”,第76题属于“横勾股测望”。对于第77、78题,周述学归为一类“重矩小勾股求深”,顾应祥分为两类:第77题与70—72题同属一类,第78题与73、74题同属一类。对于第79题,周述学归为“累矩立勾股与横勾求广从”,顾应祥则归于“直勾股横勾股测望”之下。
总的来说,顾应祥的题型名目有的是以算法中用到的条件命名的,比如“两余勾小股求大勾股测望”、“两余勾求两勾股测望”,有的是以实际测量方式命名的,比如“横勾股测望”、“直勾股横勾股测望”,有的则综合了这两者,比如“两余勾横测望”,可见其命名方式并不统一。周述学的命名方式则比较统一,均是以测量工具(从中可以看出测量方式)加上算法中用到的条件来命名。这一分类方式显然比顾应祥的要合理。另一方面,在顾应祥的分类下,上述我们按照周述学每一分类所收录的算题的问题情境的特点,进一步概括出的当人目高为0时和当人目高不为0时、正测广和斜测广,以及测望一处和测望两处等细的分类方式就不成立了,这也反映了周述学与顾应祥的不同分类思想。而从这些更细的分类中,我们可以推知周述学理解测望算法的可能思路。结合周述学与顾应详的学术交往和了解顾氏的工作这一事实看,周述学应该是认识到了顾应祥对测望算法的理解有不足之处,进而对测望算法的原理有更深的理解,才提出新的分类方式的。另外,被周述学归入单表测望的第65、68题,在顾应祥看来却并不是测望问题,而是容方问题。这也说明了相比于顾应祥,周述学在测望问题的来源和继承性上有更清晰的认识。
3 结 语
测望问题特别是除一次测望以外的测望问题是中国传统数学中较难的一种数学问题。刘徽《重差》(《海岛算经》)的自注及图失传之后,后世数学家尤觉这种算法难以理解。杨辉《乘除通变本末》(1274)曾说:“但《海岛》题法隐奥,莫得其秘。李淳风虽注,只云下法,亦不曾说其源。”([26],1049页) 其《续古摘奇算法》称他置“先贤作法之万一”的“海岛小图于座右”,并“将《孙子》度影量竿题问引用详解,以验小图”,通过对《孙子》度影量竿题详细解释,对当时流传的一种前人关于刘徽望海岛题算法的图证加以验证。([12],1114页)
明代一般被认为是中国数学的衰落期,这一时期能够理解测望算法的数学家寥寥无几。吴敬只罗列了题目而没有说明算法的推导思路。王文素曾说:“解曰:战国魏刘徽撰《海岛》,(著)[注]‘勾股’(44)作《九章算术注》、撰《海岛算经》(初名《重差》)的刘徽是三国时期的魏国人,王文素却误认为他是战国时期的魏国人。王文素在北方,而南方的周述学在“算会圣贤姓氏”中也将刘徽的时代误写为“战国魏”。估计这种错误在明代比较普遍。大概由于当时绝大多数人所看到的刘徽《九章算术》注本大多非原本,即使是原本也没有题记作注的年代(现在知道刘徽作《九章算术注》在三国时“魏景元四年”,依据的是《晋书·律历志》和《隋书·律历志》),就想当然地以为此“魏”指战国时代的魏国。,其为术也,上可以测高,下可以知深,平可以求远。唐李淳风虽续算草,未闻解曰。至宋杨辉,乃立锁积小图,图最为简易,学者由此识彼可也。愚不能推广其妙,特如此终之而已。”([14],789页) 表明他对于测望的理解也只限于杨辉算书中的海岛小图及其解释。顾应祥收录了更多的测望算题,但不知何故,只列出了题目和解法,而没有任何图证和解释。
尽管如此,但也存在努力钻研数学的学者,周述学可算一个代表。相比于明代其他数学家,周述学将杨辉算书中有关一次测望和二次测望的证明,更确切地说是证明的依据——出入相补原理,特别是基于这一原理的容横容直原理——作为他理解一系列测望算法的依据,按照单表测望、重表再望、重矩测深、三望、四望等大的类别对算题进行重新分类,并统一以测量工具(从中可以看出测量方式)加上算法中用到的条件来命名,每种分类方式下又按照当人目高为0时和当人目高不为0时、正测广和斜测广,以及测望一处和测望两处等细的类别对相关算题进行重新组织编排,使其更加合理。他还总结出以容横容直原理为根据的概述性算法,为所收录的算题补充题解。这些工作显示出他对于测望问题及其原理更深刻的思考和理解。反过来说,正是由于理解更加深刻,他才能够对测望问题做出更加合理的分类和组织。
周述学在测望方面的工作,从原创性上说虽然不能与刘徽等中国古代顶尖数学家相比,但也反映出他在理解测望原理、将测望知识进行系统化等方面的成就,超越了明代其他数学家。他对测望算法的推导思路和归类思想是值得关注的,相关的分析也可以为继续探索周述学的学术思想和明代数学的特点提供某些依据。
致 谢感谢我的导师邹大海老师、两位匿名评审专家,他们提出的宝贵意见和建议,对于本文的完善和提高起到了很大的帮助作用。