曲兆華
(中國(guó)科學(xué)院 自然科學(xué)史研究所,北京 100190;中國(guó)科學(xué)院大學(xué),北京 100049)
測(cè)望是中國(guó)古代關(guān)于測(cè)量和計(jì)算物體高、深、廣、遠(yuǎn)的數(shù)學(xué)門類。通過(guò)巧妙的設(shè)計(jì),利用簡(jiǎn)單的工具獲得近距離的數(shù)據(jù),就可以算出遠(yuǎn)距離的數(shù)據(jù),所以測(cè)望在中國(guó)古代被視為高深的學(xué)問(wèn)。明代一般被認(rèn)為是中國(guó)數(shù)學(xué)的衰落期,但也不乏努力鉆研數(shù)學(xué)的學(xué)者,周述學(xué)(活動(dòng)于16世紀(jì)中后期(1)關(guān)于周述學(xué)的生卒年,將另文探討,此處不做展開。)就是其中之一。周述學(xué)在測(cè)望方面的工作,雖然不能與劉徽(活動(dòng)于4世紀(jì))等相比,但他對(duì)測(cè)望原理的理解,以及將測(cè)望知識(shí)進(jìn)行系統(tǒng)化等方面取得的成就,超越了明代其他數(shù)學(xué)家,值得學(xué)術(shù)界關(guān)注。
周述學(xué),字繼志,號(hào)云淵,浙江山陰縣(今屬浙江紹興)人,明代中后期著名學(xué)者。明代首輔徐階(1503—1583)、明末清初的大學(xué)問(wèn)家黃宗羲(1610—1695)曾為之作傳。[1,2]《明史》亦有其簡(jiǎn)傳,說(shuō)他“讀書好深湛之思,尤邃于歷學(xué)”。[3]他一生著述甚豐,共有1 000余卷,總稱《神道大編》,涉及易學(xué)、天文歷法、數(shù)學(xué)、地理、航海、兵法、音律、醫(yī)術(shù)、占卜、堪與等。可惜由于種種原因這些著作已經(jīng)亡佚甚多,除《歷宗算會(huì)》[4](1558)外,目前我們能夠看到的還有《歷宗通議》[5](具體成書時(shí)間不詳)、《象宗華天五星》[6](1582)和《云淵先生文選》[7](1592)等數(shù)種。
《歷宗算會(huì)》是在歐洲傳教士傳入西方數(shù)學(xué)以前,周述學(xué)在整理中國(guó)傳統(tǒng)數(shù)學(xué)知識(shí)的基礎(chǔ)上輯撰的一部綜合性數(shù)學(xué)著作。全書15卷,測(cè)望見于卷3“勾股”。此卷還包括已知勾、股、弦及其和、較、積等要素中的兩者求勾、股、弦問(wèn)題(廣義上稱為“勾股和較”問(wèn)題[8](2)為了行文方便,下文論及此類問(wèn)題時(shí),皆采取此種說(shuō)法。),勾股容圓容方問(wèn)題,以及利用勾股形一邊及勾率、股率與勾弦和率求另外兩邊的問(wèn)題(楊瓊?cè)惴Q為“勾、股、弦三率”問(wèn)題[9](3)此說(shuō)法并不準(zhǔn)確,因?yàn)橐阎獥l件是“勾弦和率”,而非“弦率”。但為了行文方便,下文論及此類問(wèn)題時(shí),皆使用“勾股弦三率”來(lái)指代,去掉楊瓊?cè)阏f(shuō)法中的頓號(hào)“、”。)等。其中有的內(nèi)容前人已有較多研究,而對(duì)測(cè)望問(wèn)題則極少涉及(4)目前已知的相關(guān)研究?jī)H有楊瓊?cè)愕拇T士論文《明代歷算學(xué)家周述學(xué)及其算學(xué)研究》對(duì)其中部分基本算法用圖和數(shù)學(xué)表達(dá)式進(jìn)行的簡(jiǎn)要說(shuō)明。([9],52- 54頁(yè))。書中測(cè)望部分不像勾股和較類問(wèn)題,“僅羅列術(shù)文與算題,而缺乏對(duì)術(shù)文的有效證明”[8],而是有關(guān)于一次測(cè)望和二次測(cè)望原理的說(shuō)明及附圖,體現(xiàn)了周述學(xué)在測(cè)望知識(shí)上有關(guān)注理?yè)?jù)和系統(tǒng)性的傾向。本文將通過(guò)與劉徽、楊輝(活動(dòng)于13世紀(jì))、王文素(活動(dòng)于16世紀(jì)上半葉)、顧應(yīng)祥(1483—1565)、唐順之(1507—1560)等有關(guān)測(cè)望的文獻(xiàn)做對(duì)比,分析周述學(xué)的測(cè)望知識(shí)與前人的關(guān)系,特別關(guān)注其推理思路和歸類思想,這可以為探索周述學(xué)的學(xué)術(shù)思想和明代數(shù)學(xué)的特點(diǎn)提供某些依據(jù)。
作為測(cè)量和計(jì)算物體高、深、廣、遠(yuǎn)的學(xué)問(wèn),測(cè)望通常會(huì)用到勾股知識(shí)。在《九章算術(shù)》中,測(cè)望被置于“勾股”之下。劉徽為《九章算術(shù)》做注時(shí),把二次及以上測(cè)望問(wèn)題獨(dú)立出來(lái)并加以發(fā)展,寫成《重差》一卷,附于《九章算術(shù)》之后?!吨夭睢泛髥为?dú)成書,以《海島算經(jīng)》之名行世,現(xiàn)存版本包括9個(gè)測(cè)望問(wèn)題。劉徽關(guān)注了四類測(cè)望問(wèn)題:《九章算術(shù)》中的立四表望遠(yuǎn)、因木望山(5)《九章算術(shù)》有測(cè)望8問(wèn):方邑5問(wèn)與立四表望遠(yuǎn)、因木望山、測(cè)井深3問(wèn)[10],但由于《歷宗算會(huì)》將方邑問(wèn)題與立四表望遠(yuǎn)問(wèn)題歸類為勾股容方問(wèn)題,因此不在本文討論范圍之內(nèi),其余因木望山問(wèn)與測(cè)井深問(wèn)均為一次測(cè)望問(wèn)題。,《海島算經(jīng)》中的重表、累矩,三望和四望等問(wèn)題。[11]
在劉徽之后的數(shù)學(xué)著作中,測(cè)望與勾股有分有合。楊輝《續(xù)古摘奇算法》(1275)就將測(cè)望獨(dú)立于勾股之外,討論了《九章算術(shù)》中的因木望山和《海島算經(jīng)》中的望海島問(wèn)(問(wèn)題情境改望海島為隔水測(cè)竿,測(cè)望條件由人目高為0變?yōu)槿四扛卟粸?(6)本文出現(xiàn)的“人目高為0”和“人目高不為0”是我們給出的具有現(xiàn)代意義的統(tǒng)一說(shuō)法。對(duì)應(yīng)到文獻(xiàn)原文當(dāng)中的說(shuō)法,前者為“人目著地”、“人目薄地”等,后者則為“人目四尺”、“人目高四尺”、“目高五尺”等不同情形。為了行文方便,當(dāng)涉及有關(guān)分類討論時(shí),本文一律使用這種說(shuō)法。),并結(jié)合圖示給出了算法的推導(dǎo)思路。[12]楊輝的工作對(duì)明代數(shù)學(xué)家有較大影響。
吳敬(活動(dòng)于15世紀(jì)中期)《九章算法比類大全》(1450)將測(cè)望置于卷9“勾股”中,收錄了《九章算術(shù)》的測(cè)井深、因木望山2問(wèn),《海島算經(jīng)》中的望深谷、東南望波口、登山臨邑、望海島、望松5問(wèn),以及楊輝算書中的隔水測(cè)竿問(wèn)及其變式(當(dāng)人目高為0時(shí),實(shí)同望海島問(wèn))2問(wèn),但沒(méi)有任何證明。[13]
王文素《算學(xué)寶鑒》(1524)將勾股及其和較互求、勾股容方容圓、測(cè)望問(wèn)題都置于“申本”,但三類問(wèn)題分屬于不同的卷。測(cè)望部分雖有新證例題,但其測(cè)量和算法都在楊輝和吳敬的算書之內(nèi)。[14]
唐順之的《勾股測(cè)望論》(7)此文被收錄于《荊川先生文集》[15],《歷宗算會(huì)》引作“勾股重差論”([4],611- 612頁(yè))。二者某些語(yǔ)句的表述不完全一致,且收入《荊川先生文集》中的版本有少部分內(nèi)容缺失,因此本文主要參考的是《歷宗算會(huì)》中的版本。(具體撰寫時(shí)間不詳)將勾股、測(cè)望并論。此文論述了基本的勾股之法、立表之法和重表之法,并指出了各法適合解決的問(wèn)題類型。勾股之法適用于已知勾、股、弦三者中任意兩個(gè)求第三個(gè)的情形,立表之法適用于已知勾、股、弦三者中一個(gè)求另兩個(gè)的情形,重表之法適用于勾、股、弦三者均不可知的情形。他闡述了立表之法的原理:“以小勾股求大勾股也。小勾股每一寸之勾為股長(zhǎng)幾何,則大勾股每一尺之勾,其長(zhǎng)幾何可知矣。此以人目與表、與所望之高,三相直而知之也。人目至表,小勾弦(8)“小勾弦”應(yīng)理解為小勾所對(duì)應(yīng)的弦,抑或此處“勾”字為衍字,因?yàn)椤肚G川先生文集》中的沒(méi)有此字。也;人目至所望之高,大勾弦(9)“大勾弦”應(yīng)理解為大勾所對(duì)應(yīng)的弦,抑或此處“勾”字為衍字,因?yàn)椤肚G川先生文集》中的沒(méi)有此字。也。”([4],611- 612頁(yè)) 顯然,其中蘊(yùn)含著相似勾股形的對(duì)應(yīng)邊成比例的理論。他還認(rèn)為勾股、立表與重表三法之間是相通的,“立表者,所以通勾股之窮也;重表者,所以通一表之窮也”,指出重表之法可以化為一表之法,一表之法又可以化為勾股之法,“其實(shí)重表一表也,一表勾股也,無(wú)二法也”。([4],612頁(yè))
與唐順之同時(shí)且有著密切學(xué)術(shù)交流的顧應(yīng)祥,在《勾股算術(shù)》(1533)中也將測(cè)望問(wèn)題置于“勾股”論題之下([16],986- 991頁(yè))。此書分為卷上和卷下兩部分,卷上包括勾股和較與最基本的勾股容方容圓問(wèn)題,卷下是較復(fù)雜的容方(即《九章算術(shù)》中的方邑問(wèn)題)、測(cè)望和勾股弦三率問(wèn)題。顧應(yīng)祥在序文中說(shuō):
九數(shù)之中,惟勾股一法幽深玄遠(yuǎn),近世習(xí)算之士得其肯綮者絕少。應(yīng)祥自幼性好數(shù)學(xué),然無(wú)師傳,每得諸家算書,輒中夜思索至于不寐。久之若有神告之者,遂盡得其術(shù)。既而又得《周髀》及《四元玉鑒》諸書,于是所謂勾股弦和較、黃中之說(shuō),開合折變,悉得古人立法之旨,求之于心,無(wú)不吻合,蓋有不假于思索者??制渚枚?,政務(wù)之暇,手錄其詳節(jié),各為問(wèn)答一二章附之,名曰“勾股算術(shù)”。([16],975頁(yè))
這里顧應(yīng)祥明言此書是根據(jù)他看到的“諸家算書”加以融會(huì)貫通,“手錄其詳節(jié)”,“各為問(wèn)答”而成。其內(nèi)容涉及“勾股弦和較、黃中之說(shuō)”,不過(guò)這里并未明確論及測(cè)望問(wèn)題,至于勾股弦三率問(wèn)題是否在其所說(shuō)內(nèi)容之列,也不能確定。之后,顧應(yīng)祥又有《勾股論說(shuō)》(10)此文亦收入《歷宗算會(huì)》卷3,名為“勾股論”([4],609- 610頁(yè))。一文,論述勾股弦及其和較的含義,以及勾股和較問(wèn)題與勾股容方容圓等問(wèn)題,但沒(méi)有論及測(cè)望問(wèn)題和勾股弦三率問(wèn)題。([16],976頁(yè)) 可見,顧應(yīng)祥應(yīng)該是將測(cè)望在內(nèi)的后兩類問(wèn)題看作是前兩類問(wèn)題的延伸或進(jìn)一步應(yīng)用。這種潛在認(rèn)識(shí)大概是受上述唐順之有關(guān)測(cè)望問(wèn)題可歸結(jié)為勾股問(wèn)題的看法的影響?!豆垂伤阈g(shù)》中收錄的測(cè)望問(wèn)題,雖然大多能在《九章算術(shù)》和劉徽《海島算經(jīng)》二書中找到原型甚至原題,但數(shù)目有所增加,共計(jì)有16問(wèn),涵蓋的測(cè)望類型從一次至四次都有,而且顧應(yīng)祥又重新進(jìn)行了分類(詳見下文)。不過(guò),該書所有問(wèn)題均只羅列了題目和算法,沒(méi)有任何解釋或圖示。
需要說(shuō)明的是,周述學(xué)的測(cè)望知識(shí),特別是算題和相應(yīng)算法,遵循的是從《九章算術(shù)》、劉徽、楊輝到吳敬、顧應(yīng)祥的傳統(tǒng)。楊輝之前的秦九韶(1208—約1261)有《數(shù)書九章》(1247)一書,其卷7、8是“測(cè)望類”:卷7有3問(wèn)(“望山高遠(yuǎn)”、“臨臺(tái)測(cè)水”和“陡岸測(cè)水”),卷8有6問(wèn)(“表望方城”、“遙度圓城”、“望敵圓營(yíng)”、“望敵遠(yuǎn)近”、“古池推元”和“表望浮圖”),共9問(wèn)。[17]其中,“古池推元”不屬于一般認(rèn)為的測(cè)望問(wèn)題,“望山高遠(yuǎn)”的模型是劉徽的望海島(人目高不為0),其余7問(wèn)的模型均是一次測(cè)望。但秦九韶的題目與《九章算術(shù)》和《海島算經(jīng)》中的有很大差異,與上述傳統(tǒng)不同:首先,其問(wèn)題情境更真實(shí),“是實(shí)踐中常??梢杂龅降膯?wèn)題”[18];其次,其測(cè)望模型不固定,雖然其算題中有7問(wèn)的模型都是一次測(cè)望,但多為一次測(cè)望模型的重復(fù)使用,且“遙度圓城”與“望敵圓營(yíng)”2問(wèn)的已知條件和所求對(duì)象與一般認(rèn)為的一次測(cè)望問(wèn)題不同;再次,其算法更復(fù)雜,有的是開高次方。
前面提到,在周述學(xué)《歷宗算會(huì)》中,測(cè)望被置于卷3“勾股”之內(nèi),全卷由勾股和較、勾股容圓容方、測(cè)望和勾股弦三率問(wèn)題構(gòu)成。這與顧應(yīng)祥《勾股算術(shù)》中問(wèn)題類型的整體結(jié)構(gòu)是一致的。周述學(xué)與唐順之、顧應(yīng)祥都有較密切的學(xué)術(shù)交往,他的著作中對(duì)唐、顧二人論述勾股、測(cè)望的文章多有收錄,因此,形成這種一致性容易理解。不同于顧應(yīng)祥的是,周述學(xué)的《勾股論》(11)《歷宗算會(huì)》除去卷15“歌訣”外,每一卷卷首(有的在卷中)均有概述性的論述,以解釋該卷所論主題的含義、特點(diǎn)及功用等,并分條論述算法。李儼先生將這些論述稱為“提要”[19]。實(shí)際上,這些論述大多數(shù)被收錄在《云淵先生文選》卷4中,各自作為一篇獨(dú)立的文章,標(biāo)題就是“名數(shù)論”、“總法論”、“子母分法論”、“勾股論”,等等。它們?cè)凇稓v宗算會(huì)》中,則要么有標(biāo)題,但一般情況下都不帶“論”字(如“名數(shù)”、“總法”等);要么沒(méi)有單獨(dú)的標(biāo)題,而直接置于其所在卷的卷名(如“子母分法”、“勾股”等)或所在主題的主題名(如“開方”、“截方”等)之下。([7],卷4:1a- 50b頁(yè)) 本文提到這些文章時(shí),為便于與書區(qū)分開來(lái),采用《云淵先生文選》中的題名。一文不僅論述了勾股和較與勾股容圓容方問(wèn)題的算法,還論述了測(cè)望與勾股弦三率問(wèn)題的算法,各類算法與文后所列具體題目類型在順序上大致是相對(duì)應(yīng)的。他也沒(méi)有像唐順之那樣,簡(jiǎn)單地將測(cè)望問(wèn)題歸結(jié)為勾股弦三者之間的互求問(wèn)題。其《勾股論》結(jié)尾總結(jié)說(shuō):“參伍錯(cuò)綜,變化無(wú)方,窮高極廣,鉤深致遠(yuǎn),其術(shù)微哉?!?[4],608頁(yè)) 其中,“窮高極廣,鉤深致遠(yuǎn)”二句正是對(duì)測(cè)望功能的正確概括。
《歷宗算會(huì)》共收錄了16道測(cè)望算題([4],621- 629頁(yè)),其中14道在顧書中也有記載,甚至13道的題設(shè)敘述形式和已知條件數(shù)據(jù)均與顧書一致。但相比后者只羅列題目和算法的做法,周述學(xué)在一次測(cè)望和二次測(cè)望的相應(yīng)例題之后,同時(shí)給出了源自楊輝算書的有關(guān)算法推理說(shuō)明及附圖。另外,《歷宗算會(huì)》的問(wèn)題歸類與后者并不完全一致,所給的類型名稱也有自己的特點(diǎn)。需要說(shuō)明的是,雖然楊輝算書中的說(shuō)明和附圖也為王文素所采納,但它們于周、王二人的意義卻不相同。在王文素那里,楊輝的例題及其圖和說(shuō)明是作為古題(或舊題)提出的,王文素要做的是對(duì)這些古題及其算法予以新的闡釋和證明。而在周述學(xué)這里,楊輝的證明,更確切地說(shuō)是證明的依據(jù)——基于出入相補(bǔ)原理的容橫容直原理,卻是作為他理解有關(guān)測(cè)望一系列算法的依據(jù)。這從他對(duì)題目的分類和每一類別內(nèi)題目的排序、總結(jié)的概述性算法、為所收錄算題補(bǔ)充的題解,以及所給算題的算法形式上可窺知一二。并且,周述學(xué)對(duì)測(cè)望問(wèn)題獨(dú)特的分類方式,應(yīng)該也與他認(rèn)可和持有的對(duì)于測(cè)望算法的推理思路有關(guān)。下文擬從周述學(xué)對(duì)已有測(cè)望算法的理解與歸類兩個(gè)方面進(jìn)行分析。
周述學(xué)在《勾股論》一文中按照單表測(cè)望、重表再望、重矩測(cè)深、三望、四望分別論述了一種最基本的測(cè)望算法,在其后具體的題目分類中又將他收錄的16道測(cè)望算題歸為6類(對(duì)應(yīng)勾股卷的題目類型40—45(12)周述學(xué)《歷宗算會(huì)》勾股卷共收錄了題目類型50種,這里用數(shù)字標(biāo)示其序號(hào)。下同。)。這些題目及分類與《勾股論》中的五大類算法的對(duì)應(yīng)情況,如表1所示。對(duì)于這6類算法,本文根據(jù)相應(yīng)的問(wèn)題情境,又細(xì)分為12種(表1)。其中,第3種(類型41“單表小勾股求大勾股”的算法)與第8種(類型43“兩表橫矩小勾股求廣”的第一個(gè)算法)實(shí)質(zhì)為同一種算法,去重后共計(jì)11種。下文按照周述學(xué)在《勾股論》中的分類方式,列舉例題并畫圖進(jìn)行分析。
表1 《歷宗算會(huì)》中的測(cè)望問(wèn)題歸類情況
這里做兩點(diǎn)說(shuō)明:其一,為方便閱讀和理解,本文采用現(xiàn)代通行方式用字母在圖中標(biāo)記,并在引用原文時(shí)括注出重要用語(yǔ)在圖中對(duì)應(yīng)的線段。為便于對(duì)照,在同一或相近問(wèn)題的不同附圖中,盡量保持標(biāo)記同一對(duì)象(針對(duì)勾股形而言)的字母位置一致。其二,關(guān)于中國(guó)古代較早的測(cè)望算法特別是《海島算經(jīng)》中測(cè)望算法的證明,由于劉徽自注及圖已經(jīng)失傳,后人無(wú)法論定。([10],169頁(yè)) 以《海島算經(jīng)》中的9個(gè)算題為考察對(duì)象,錢寶琮先生和吳文俊先生分別提出了復(fù)原古人算法的不同思路:錢先生主要通過(guò)作輔助平行線構(gòu)造相似三角形,依據(jù)相似三角形對(duì)應(yīng)邊成比例的理論進(jìn)行證明;吳先生主要依據(jù)出入相補(bǔ)原理(13)出入相補(bǔ)原理的命名由吳文俊先生給出。[20] 鄒大海先生指出,作為一種不言自明的原理,出入相補(bǔ)原理早在先秦時(shí)代就已經(jīng)被認(rèn)識(shí)和應(yīng)用,現(xiàn)傳本《九章算術(shù)》、《周髀算經(jīng)》和《算數(shù)書》等著作中的部分?jǐn)?shù)學(xué)方法,包括測(cè)望方法,應(yīng)該是用出入相補(bǔ)原理獲得的。[21] 關(guān)于此原理的相關(guān)含義,本文不再贅述。進(jìn)行證明,有的雖然也會(huì)借助平行線構(gòu)造相似勾股形(如第3題的望邑公式),但證明基礎(chǔ)仍是出入相補(bǔ)原理;他們所作的平行線及形成的交點(diǎn)的位置并不相同,構(gòu)造的相似勾股形也就不相同。[22,23]實(shí)際上,在吳先生的證明過(guò)程中,反復(fù)用到了容橫容直這一由出入相補(bǔ)原理導(dǎo)出的原理。對(duì)于二位先生提出的兩種不同證明思路,郭書春先生認(rèn)為都有道理。([10],169頁(yè)) 本文的考察表明,周述學(xué)對(duì)測(cè)望算法的理解源于楊輝著作中的證明和附圖,而后者的依據(jù)恰是基于出入相補(bǔ)原理的容橫容直原理。吳先生的復(fù)原方案在周述學(xué)著作中得到了一定程度的印證和支持。因此,在下面的分析中,對(duì)周述學(xué)未給出證明的算法,本文將采用容橫容直原理,并有選擇地借鑒吳先生的有關(guān)證明思路,概括出最可能符合周述學(xué)推理思路的說(shuō)明。
2.1.1 單表測(cè)望
單表測(cè)望對(duì)應(yīng)類型40“單表小勾股求大股”和41“單表小勾股求大勾股”。
(1)單表小勾股求大股
1)當(dāng)人目高不為0時(shí)
舉例第64題(圖1a(14)此圖按照周述學(xué)書中的“單表測(cè)高圖”繪制([4],622頁(yè)),圖的命名采用周述學(xué)的命名方式。下同。):
有竿(A′B)不知其高。從竿腳(A′)量遠(yuǎn)(A′E′=AC)二十五尺,立一丈表(E′E),表后退行(E′D′=CD)五尺,用窺穴(D)望表(端E),與竿(端B)齊平,其人目窺穴,高(DD′=E′C)四尺。求竿高幾何?得竿高四十尺。
以表高(EE′)退人目,余(E′E-D′D,等于CE)乘表去竿遠(yuǎn)(AC),以退行(CD)除之,并表高,共得竿高(A′B)。(15)需要說(shuō)明的是,由于本文關(guān)注的主要是算法,故而這里將具體題目算法中運(yùn)算用到的數(shù)及其單位省去。下同。([4],621頁(yè))
術(shù)文給出的求竿高算法相當(dāng)于公式:
(1)
圖1 單表測(cè)高測(cè)遠(yuǎn)圖
此題后有關(guān)于算法原理的說(shuō)明(圖1(16)為了更加清楚,我們又單獨(dú)繪制了人目高為0的情形,如圖1b。):
直田(□BD)之長(zhǎng)(AB,JD)名股,其闊(AD,JB)名勾,于兩隅角(B,D)斜界一線(BD),其名曰弦。弦之內(nèi)外分二勾股(ABD,JDB),其一勾中容橫(□EA),其一股中容直(□EJ),二積之?dāng)?shù)皆同(□EJ=□EA)。以余勾(CD)除橫積(□EA)得積外之股(NB);以余股(PD=CE)除直積(□EJ)得積外之勾(BI=AC)。二者法雖異,而實(shí)相通也。([4],621- 622頁(yè))
可以看出,其中只考慮了上述竿高公式去掉人目高后的部分,實(shí)際上相當(dāng)于人目高為0的情形,對(duì)應(yīng)公式為
也即
(2)
并給出了表去竿遠(yuǎn)的算法公式為
(3)
推理思路為:□EJ=□EA,即NB·CD=AC·CE,通過(guò)變形,即可得到上述(2)和(3)式。這里,需要特別說(shuō)明其中所用術(shù)語(yǔ)“勾”、“股”、“余勾”、“余股”、“積外之勾”和“積外之股”的含義。“勾”、“股”對(duì)應(yīng)于由直田□BD所分成的兩個(gè)勾股形ABD和JDB的兩個(gè)直角邊:在勾股形ABD中,AD邊為勾,AB邊為股;在勾股形JDB中,JB邊為勾,JD邊為股。“余勾”和“積外之股”是相對(duì)于勾股形ABD中所容橫積□EA的橫邊AC和從邊AN而言的:“余勾”是指勾股形ABD的勾AD中去掉AC后所余的部分CD;“積外之股”是指股AB中去掉AN后所余的部分NB。相應(yīng)地,“余股”和“積外之勾”是相對(duì)于勾股形JDB中所容直積□EJ的從邊JP和橫邊JI而言的:“余股”是指勾股形JDB的股JD中去掉JP后余下的部分PD,與表高CE等長(zhǎng);“積外之勾”是指勾JB去掉JI后余下的部分BI,與表去竿遠(yuǎn)AC等長(zhǎng)。兩個(gè)小長(zhǎng)方形□EA和□EJ分別是大長(zhǎng)方形□BD分成的兩個(gè)全等勾股形DBA和BDJ的內(nèi)容長(zhǎng)方形,它們有一個(gè)共同頂點(diǎn)E在對(duì)角線BD上。前一個(gè)小長(zhǎng)方形的寬大于高,稱為橫,后一個(gè)小長(zhǎng)方形的高大于寬,稱為直。這里明確提到所容橫與所容直面積相等,并由此推出用于計(jì)算高度和距離的算法??梢娭苁鰧W(xué)是把這兩個(gè)長(zhǎng)方形相等作為原理來(lái)使用的。這個(gè)思想來(lái)源于賈憲《黃帝九章算經(jīng)細(xì)草》,被數(shù)學(xué)史家稱為容橫容直原理;此原理又是由出入相補(bǔ)原理得出的[24]。
另外,其書中題圖下方還有小字注釋:
竿(AB)高名股,竿至人目(D)謂之通勾(AD),所立之表(CE)乃勾中容橫(□EA)之界限,限外至人目即是余勾(CD)也。以余勾除所容之橫積,乃得積外之大股(NB)矣。([4],622頁(yè))
原本所測(cè)之竿、所立之表應(yīng)分別為A′B、EE′,但從這段圖注來(lái)看,在推理時(shí),是將AB看作竿高,因?yàn)楦椭寥四緼D為通勾,所對(duì)應(yīng)的股是AB而非A′B;相應(yīng)地,將CE看作表高。圖注與上述利用容橫容直原理所做的解釋是相一致的。此題和相應(yīng)的原理解釋、附圖及注應(yīng)是來(lái)自楊輝《續(xù)古摘奇算法》([12],1114- 1115頁(yè)),對(duì)應(yīng)部分僅有個(gè)別字的差異,而且周述學(xué)保留了該書所使用的術(shù)語(yǔ)(比如,余勾、余股、積外之勾和積外之股等),顯示周述學(xué)繼承了前人的思路,將上述求竿高及表去竿遠(yuǎn)的算法公式建立在基于出入相補(bǔ)原理的容橫容直原理的基礎(chǔ)之上,而非基于相似勾股形對(duì)應(yīng)邊成比例的理論。不止于此,下面我們會(huì)看到這種依據(jù)出入相補(bǔ)原理的思路實(shí)際上貫穿于周述學(xué)對(duì)于全部測(cè)望算法的理解之中。
2)當(dāng)人目高為0時(shí)
周述學(xué)《勾股論》“單表測(cè)望”術(shù)文與此情形相對(duì)應(yīng)。下面先給出原術(shù)文(圖1b):
單表測(cè)望:以表高(CE)為小股,乘表外大勾(NE=AC),以余勾(CD)除之得大股(NB);以小勾(CD)乘大股,以小股除之得大勾;若以小勾除大勾,以所得數(shù)乘小股為大股;又以小勾除小股,所得為勾股差,以差乘大勾亦得為大股。([4],607頁(yè))
對(duì)照這段術(shù)文與上述應(yīng)用容橫容直原理的解釋文字可知,從計(jì)算的角度來(lái)說(shuō),此處的“小(余)勾”、“小股”分別與上述“余勾”、“余股”相對(duì)應(yīng),“(表外)大勾”、“大股”(18)需要特別注意的是,根據(jù)上下文語(yǔ)義可知,這段術(shù)文中所使用的術(shù)語(yǔ)“大股”與“表外大勾”相對(duì)應(yīng),因此,盡管“大股”前面均沒(méi)有加“表外”二字,但可以肯定“大股”即“表外大股”之簡(jiǎn)稱。另外,這里只有第一次提及“表外大勾”時(shí)前面加了“表外”二字,其余也只以“大勾”簡(jiǎn)稱。也就是說(shuō),周述學(xué)所謂的“大勾”、“大股”分別是“表外大勾”、“表外大股”的簡(jiǎn)稱。分別與上述“積外之勾”、“積外之股”相對(duì)應(yīng),則大股公式即(2)式,大勾公式即(3)式。求大股還可以用公式
(2′)
或
(2″)
唐順之《勾股重差論》所述“立表之法”求大股也有相當(dāng)?shù)娜N形式,但其依據(jù)是在“人目(D)與表(E)、與所望之高(B)三相直”的情況下,“以所測(cè)之高(AB)為大股,以大股地下之影(AD)為大勾,以表(CE)為小股,以表地下之影(CD)為小勾”([4],611頁(yè))(其中標(biāo)記字母參見圖1b)??梢?,二人所說(shuō)的“大股”、“大勾”的含義并不一致。不過(guò),在周述學(xué)收錄的算題中,仍然有唐順之所說(shuō)的類型。比如,第66題(圖1b):
塔(AB)不知高。從塔底中心(A)量至影末(D),長(zhǎng)(AD)四丈。別立一表(CE),高二尺五寸,量影長(zhǎng)(CD)八寸。求塔高幾何?得一十二丈五尺。
塔影(AD)如大勾,表高如小股,表影(CD)如小勾,求塔高如大股。
以小股乘大勾為實(shí)(AD·CE),以小勾為法除之。([4],622頁(yè))
求塔高算法對(duì)應(yīng)的公式為
(4)
當(dāng)然,此題也可以按照周述學(xué)的理解,將NB看作是塔高,亦即(表外)大股,相應(yīng)地,將NE(長(zhǎng)度等于AC)看作是塔影,亦即(表外)大勾,也就是說(shuō)對(duì)塔的標(biāo)記做特殊處理:將原本處于同一水平位置的塔與表看作處于不同水平位置。相應(yīng)地,求塔高用到的即上述(2)式。如此,則用到的證明根據(jù)明顯更符合容橫容直原理,而不是相似勾股形對(duì)應(yīng)邊成比例的理論。雖然這種處理是將所測(cè)之高減去表高看作大股,符合周述學(xué)的理解傾向,但是由于他收錄的唐順之的論文和部分算題都是將所測(cè)之高看作大股,難免又對(duì)他造成一種影響,使得他會(huì)混淆大股、大勾等術(shù)語(yǔ)所表示的距離。在周述學(xué)為算題補(bǔ)充的題解當(dāng)中,可以看出這種混淆的痕跡。例如,第65題(此為人目高不為0的情形,參見圖1a):
山(A′B)不知高。東五十三里(A′E′=AC)有木(EE′),長(zhǎng)九十五尺,人立木東三里(E′D′=CD),目高(DD′)五尺,望木末(E)與峰(B)斜平。求山高幾何?得(一百五十九丈四尺)[一百六十八丈五尺](20)即使按原算法,結(jié)果也不正確,零數(shù)應(yīng)為“五尺”,非“四尺”。今按改正后的算法,將結(jié)果改正為“一百六十八丈五尺”。。
山東至木(AC)如大勾,(木長(zhǎng))[以人目減木長(zhǎng)(E′E-D′D)](21)若以“人立木東”為小勾(余勾),則題解此處以“木長(zhǎng)”為小股不正確,具體算法“以人目減木長(zhǎng)為小股”正確,故改正。如小股,人立木東如小勾,(求山高)[以木長(zhǎng)減山高(A′B-EE′,即NB)](22)若以“山東至木”為大勾,則須“以木長(zhǎng)減山高”為大股,故改正。如大股。
以山東至木為勾,以人目減木長(zhǎng)為小股,相乘得容方積為實(shí),以余勾人立木東為法除之,加(目高)[木長(zhǎng)](23)按此法求得的是大股(NB),故求山高(A′B)當(dāng)加“木”長(zhǎng)(EE′)非“目”高(DD′)。此題原型見于《九章算術(shù)》,最后加的是“人目之高”,劉徽注改正為加“木之高”。([11],201頁(yè)) 吳敬《九章算法比類大全》采納了劉徽的正確算法,最后也是加“木高”。([13],275頁(yè)) 顧應(yīng)祥《勾股算術(shù)》最后加的卻又是“目”高非“木”高,且給出的答案符合其算法。([16],986頁(yè)) 雖然周述學(xué)對(duì)題目的描述與顧書一致,但二者給出的答案卻不一致??梢?,對(duì)于此題,周述學(xué)并未參考吳敬的書,很可能也并未參考顧應(yīng)祥的書,較有可能的是二人的題目出自同一本書?;蛘呤侵苁鰧W(xué)發(fā)覺(jué)此問(wèn)有誤,給出了他認(rèn)為正確的答案而未說(shuō)明。即得。([4],622頁(yè))
其中,第一段為題設(shè),最后一段是術(shù)文(或法),中間一段即周述學(xué)補(bǔ)充的題解(24)顧應(yīng)祥《勾股算術(shù)》亦載有此題([16],986頁(yè)),但沒(méi)有題解。。術(shù)文中的“容方積”表示相乘得到的長(zhǎng)方形□AE的面積,可知此算法依據(jù)的不是相似勾股形對(duì)應(yīng)邊成比例理論,而是容橫容直原理。但題解中的大勾“山東至木”與大股“山高”,小勾“人立木東”與小股“木長(zhǎng)”,顯然不相對(duì)應(yīng)??梢?,周述學(xué)在使用這些術(shù)語(yǔ)時(shí)并沒(méi)有堅(jiān)持統(tǒng)一的標(biāo)準(zhǔn),這其實(shí)也反映了他理解前人已有的知識(shí)并將它們納入自己的知識(shí)體系的一個(gè)過(guò)程。
(2)單表小勾股求大勾股
此條目下有“荊川”二字([4],623頁(yè)),說(shuō)明對(duì)應(yīng)例題第69題及其后的解釋應(yīng)該是直接采自唐順之的著述,但在其傳世著作中并未見到有關(guān)內(nèi)容?,F(xiàn)引該題如下(圖2(25)其中圖2a按照周書中的圖([4],623頁(yè))繪制而成,展示的是一種特殊位置:后多勾(后晷景)HF恰好與前晷景 CD相接。因此,為了便于理解古人的觀測(cè),本文重新繪制表示一般情況的圖2b,并在分析時(shí)按照?qǐng)D2b中的標(biāo)注進(jìn)行說(shuō)明。):
立表(CC′)測(cè)竿(AB)。表高三丈,卻行(CF)六丈,望之參合。又記表高(CE)二丈,卻行(CD)二丈,望之亦相參合。求(表)[竿](26)此處“竿”誤作“表”,今校正。高幾何?得(表)[竿](27)此處“竿”誤作“表”,今校正。高四丈。
以大、小二股相減,余(CC′-CE)以退行前小勾(CD)相乘為廣實(shí);以小股與大勾乘(CE·CF),以大股(CC′)除之為后多勾(HF);又以前小勾減之,余為景差勾(HM),為法,除實(shí),加表,共廣四丈。此求高與求廣同法也。([4],623頁(yè))
圖2 勾股一表以御廣遠(yuǎn)圖
并有附圖(圖2a)解釋:
以小股減大股,以小勾乘之為勾實(shí),以起廣數(shù)(AB);以小股乘大勾,以大股除之得后多勾,又為后晷景,以前晷景小勾減之為景差,為法,大勾減后晷景數(shù)(CF-HF)為股間,小勾乘股間為股實(shí),以起遠(yuǎn)數(shù)(AC)。([4],623頁(yè))
根據(jù)術(shù)文和解釋,可以得到后多勾(后晷景)
景差為HF-CD,竿高公式
(5)
竿去表公式
(6)
此題的測(cè)量方法實(shí)為《海島算經(jīng)》“南望方邑”問(wèn)的測(cè)量方法,術(shù)文后的注解“此求高與求廣同法”也表明了二者的一致性?!稓v宗算會(huì)》同時(shí)記載了與后者題型一致的第75題,并把它歸為重表測(cè)望,因此,這里先不討論算法的證明思路,將于下文一并討論。
2.1.2 重表再望
重表再望對(duì)應(yīng)題目類型42“重表小勾股求大股大勾”和43“兩表橫矩小勾股求廣”中的“正測(cè)廣”。
(1)重表小勾股求大股大勾
該類型包含兩種情況。下面先看第一種,又可分為人目高為0和不為0兩種情況。
1)當(dāng)人目高為0時(shí)(圖3a(28)與周述學(xué)的“重表測(cè)高測(cè)遠(yuǎn)法圖”([4],624頁(yè))一致。)
舉例第71題:
海島(AB)不知高遠(yuǎn)。立二表(CE,HG),各高三丈,前后各參直,相去(CH)一千二百步。從前表退行(CD)一百四十七步三尺,人目著地(D),望島峰(B)與前表端(E)齊平。又從后表退行(HF)一百五十二步二尺,人目著地(F),望島峰(B),亦與后表端(G)齊平。求島高及去前表(AC)各幾?得島高四里六十六步,前表去島一百二里一百八十步。
置表高,以乘表間相去為股實(shí)(CH·CE);又置前表退行,乘表間為勾實(shí)(CH·CD);以前表退行減后表退行,余(HF-CD)為法,以法除股實(shí),加表高,以里法約之,得島高;以法除勾實(shí),以里法約之,得前表去島遠(yuǎn)。([4],624- 625頁(yè))
圖3 重表測(cè)高測(cè)遠(yuǎn)圖(一)
此題原型即《海島算經(jīng)》“望海島”問(wèn)([25],218頁(yè)),兩者算法一致:島高公式為
(7)
前表去島公式為
(8)
周述學(xué)《勾股論》中的術(shù)文即對(duì)應(yīng)此種情形,原文如下:
重表再望:以表高(CE)為小股,乘表間(CH)為股實(shí);以前表卻行(CD)為小勾,乘表間為勾實(shí);以二表卻行相減,余(HF-CD)為法,以法除股實(shí)得大股(NB),以法除勾實(shí)得大勾(NE=AC)。([4],607頁(yè))
對(duì)照第71題的術(shù)文可知,此總括性術(shù)文應(yīng)該是對(duì)前者進(jìn)行概括并加以一定的抽象(如,將島高減去表高抽象為大股,將前表去島遠(yuǎn)抽象為大勾)得到的。
2)當(dāng)人目高不為0時(shí)(圖3b(29)此圖根據(jù)周述學(xué)書中的“重表測(cè)高測(cè)遠(yuǎn)圖”([4],624頁(yè))繪制。楊輝書中有相當(dāng)?shù)膱D([12],1116頁(yè))。)
第70題原文如下:
有竿(A′B)不知高遠(yuǎn)。立二表(EE′,GG′),各高一丈,前后相去(E′G′=CH)一十五尺,從前表退行(E′D′=CD)五尺,人目高(DD′)四尺,于窺穴內(nèi)望表(E),與竿(B)齊平。又從后表退行(G′F′=HF)八尺,亦窺穴望表(G),與竿(B)齊平。求竿高及去前表遠(yuǎn)(A′E′=AC)各幾何?得竿高四十尺,前表去竿二十五尺。
置表高,減人目,余(EE′-DD′)以乘表間(CH)為股實(shí);又置前表退行,乘表間為勾實(shí)(CH·CD);以二表退行相減,余(HF-CD)為法。以法除股實(shí),加表高,得竿高;以法除勾實(shí),得前表去竿。
又術(shù):以二表退行尺數(shù)相減,余(HF-CD)以除表間為實(shí),以表高減人目,余(EE′-DD′)為法乘之,并表長(zhǎng),得高;又以相多(HF-CD)除表間為實(shí),以前表退行數(shù)(CD)為法乘之,亦得遠(yuǎn)(AC)。([4],623頁(yè))
這個(gè)題目應(yīng)該出自楊輝《續(xù)古摘奇算法》([12],1115頁(yè)),周述學(xué)補(bǔ)充“又術(shù)”。根據(jù)題目及術(shù)文可知,表高減人目為CE=EE′-CE′=EE′-DD′,竿高算法對(duì)應(yīng)的公式為
(9)
前表去竿算法對(duì)應(yīng)的公式同(8)式。另外,求竿高、前表去竿還可以用公式
(9′)
(8′)
周述學(xué)說(shuō)明了術(shù)文是如何得來(lái)的:
前表(CE)(30)這段證明中的“前表”、“后表”分別指CE、HG,相應(yīng)地,所測(cè)之“木”(即“竿”)高是指AB。去木(AB)近,為小股;后表(HG)去木遠(yuǎn),為大股。前表(CE)乃小股容積(□EA,□EJ)之界限,其去木(AC)即小股中之容積一段也。后表(HG)乃大股容積(□GA,□GK)之界限,其去木(AH)即大股中之容積一段也。以小股容積減大股容積(□GK-□EJ=□GA-□EA),其余減不盡者,正在前后表兩界之中,名表間積(□GC),故以表高(CE)乘表間(CH)為實(shí),以前表小余股(CD)減后表大余股(HF),以余除表間積,得弦外之高(NB)。本是小容積減大容積(□GK-□EJ),余為實(shí),小余股減大余股(HF-CD),余為法,以法除實(shí),求弦界外之高。加表高,增人目高(DD′),得為木之通長(zhǎng)(A′B)也。([4],623- 624頁(yè))
其中,“界限”、“容積”、“表間積”等用語(yǔ)明顯與容橫容直原理聯(lián)系在一起。從中可以看出(9)式的推理思路(31)結(jié)合圖3b可知,推理過(guò)程中將AB、CE分別看作所測(cè)之竿A′B、所立之表EE′,與單表測(cè)望的處理方式一致。:在長(zhǎng)方形□BD中,由BD和E,得
□EJ=□EA
(1.1)
在長(zhǎng)方形□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時(shí)的情況。同理,當(dāng)人目高為0(即DD′=0)時(shí),有AB=NB+CE,將(1.3)式代入,故得(7)式。這段解釋應(yīng)該源自楊輝算書([12],1116頁(yè)),其中一些用語(yǔ)明顯與前述有關(guān)容橫容直原理的解釋不一致(比如,“余股”、“弦(界)外之高”,分別相當(dāng)于前述“余勾”、“積外之股”),但均保留了下來(lái)。這段解釋未涉及(8)式的推導(dǎo),但由(1.1)和(1.3)式容易推得。
接著看第二種情況,又可分為人目高為0和不為0兩種情況。
1)當(dāng)人目高為0時(shí)
例第73題(圖4a):
松(OB)生山(AO)上,不知高下。立兩表(CE,HG),各高二丈,前后相去(CH)六十步,令后表(HG)與前表(CE)相參直。從前表卻行(CD)九步一尺,人自薄地(D),遙望松末(B),與表端(E)參合;望松本(O),入表(EP)二尺八寸。從后表卻行(HF)十步三尺,人目薄地(F),遙望松末(B),亦與表端(G)參合。求松高及山去表(AC)各幾?得松高一十二丈二尺八寸,山去表一百九十七丈一尺七分尺之三。
求松高:置表間,乘入表為實(shí)(EP·CH),以二表卻行相減,余(HF-CD)為法除之,加入表,共為松之高。 求山去表:以表間與前表卻行乘之為實(shí)(CH·CD),以法除之,余實(shí),以法命之。 求山高:以表高減入表,余(CE-EP)以乘表間,以法除之,[加表高、減入表](32)原文缺少“加表高、減入表”([4],625頁(yè)),今據(jù)算理補(bǔ)之。。 求松與山共高(AB):以表高乘表間(CH·CE),以法除之,加表高即得。([4],625頁(yè))
圖4 重表測(cè)高測(cè)遠(yuǎn)圖(二)
此題原型即《海島算經(jīng)》“望松”問(wèn)([25],218- 219頁(yè)),二者算法一致:松高公式為
(10)
前表去山公式同(8)式。另外,此題還補(bǔ)充了求山高、松與山共高的算法:山高公式為
(11)
松與山共高公式為
(12)
其中求山高算法不準(zhǔn)確,按改正后的術(shù)文,(11)式應(yīng)為
2)當(dāng)人目高不為0時(shí)
例第74題(圖4b):
城(A′O)上有戍樓(OB),不知高遠(yuǎn)。立兩表(EE′,GG′),俱高一丈五尺,表間相去(E′G′=CH)八十步,前后參直,人目高(DD′)四尺。從前表退行(E′D′=CD)三十步,望樓岑(B),與前表末(E)參合;望樓足(O),入表(EP)五尺六寸。又從后表退行(G′F′=HF)五十步,遙望樓岑(B),與后表(G)參合。求城與戍樓各高幾何?得樓高二丈八尺,城高三丈一尺。
以表間乘入表為城樓高之實(shí)(EP·CH),以表高減人目及入表,余(EE′-DD′-EP)以乘表間(CH)為城高之實(shí),以兩表退行相減,余(HF-CD)為法,以法除城高[之實(shí)](33)抄本漏掉“之實(shí)”二字,今補(bǔ)之。,(加入表)[加表高、減入表](34)原文為“加入表”([4],626頁(yè)),今據(jù)算理改為“加表高、減入表”。為城之高;法除樓高[之實(shí)](35)抄本漏掉“之實(shí)”二字,今補(bǔ)之。,(加表高、減入表)[加入表](36)原文為“加表高、減入表”([4],626頁(yè)),今據(jù)算理改為“加入表”。得樓高,以表減人目,余(EE′-DD′)乘表間,以法除之,加表高,得城與樓共高(A′B)。([4],625- 626頁(yè))
根據(jù)題目及術(shù)文可知,樓高算法對(duì)應(yīng)的公式為
(13)
城高算法對(duì)應(yīng)的公式為
(14)
城與樓共高算法對(duì)應(yīng)的公式為
(15)
其中,求樓高、城高的算法并不準(zhǔn)確。今按改正后的術(shù)文,(13)式應(yīng)為
(14)式應(yīng)為
另外,還可得到前表去城算法,對(duì)應(yīng)公式同(8)式。需要說(shuō)明的是,雖然術(shù)文中關(guān)于樓高、城高的算法不準(zhǔn)確,但是所給答案卻與利用改正后的算法求出的答案相符合。這說(shuō)明術(shù)文之誤可能是抄寫錯(cuò)誤,將求樓高、城高最后所加的零數(shù)顛倒了。
周述學(xué)雖未給出相關(guān)公式的推導(dǎo),但卻將此類問(wèn)題與望海島問(wèn)題歸為一類,并且按望海島、望松的順序先后排列,這顯示他對(duì)(10)和(13)式的理解應(yīng)該分別以(7)和(9)式的推導(dǎo)為基礎(chǔ),是基于容橫容直原理的。以(10)式的推導(dǎo)為例,對(duì)比圖4a與圖3a可知,前者表示松與山共高的AB與后者表示島高的AB相當(dāng),據(jù)圖4a,在長(zhǎng)方形□BD中,由BD和E,得
□EJ=□EA
(2.1)
在長(zhǎng)方形□OD中,由OD和P,得
□PS=□PA
(2.2)
式(2.1)-式(2.2),得□IS-□ET=□PN,即(OB-EP)·CD=AC·EP,整理得
(*)
(吳文俊先生稱為“松高輔助公式”[23]),將(8)式代入,即得。
(2)兩表橫矩小勾股求廣——正測(cè)廣
例第75題(圖5(37)周述學(xué)書中有附圖([4],626頁(yè)),與此圖中實(shí)線部分相當(dāng)。):
圖5 橫矩兩表測(cè)廣圖
方城(ABQR)不知大小。立兩表(C,C′),東西相去(CC′)二百一十六尺,齊人目處,以索連之,令東表(C)與城東南隅(R)、東北隅(A)參直,從東表退北行去表(CD)七十四尺,遙望城西北隅(B)入索東端(CE)五十尺。若從東表退北行去表(CF)三百二十四尺,遙望城西北隅,適與西表(C′)相參合。求城方(AB)及去表(AC)各幾何?得城方一萬(wàn)二千五百尺,去表一萬(wàn)八千四百三十六尺。
城方為勾,城去表為股。
以表間減入索,余(CC′-CE)以東表退行(CD)相乘為勾實(shí),以[后](38)此處據(jù)下文說(shuō)法補(bǔ)“后”字以示區(qū)別。北行去表乘入索(CE·CF),以表間除之為景差(HF);又以后北行去表減景差,余(CF-HF)以東表退行乘之為股實(shí),卻以東表退行減景差,余(HF-CD)為法,以法除勾實(shí),加入表間(CC′),得城方;以法除股實(shí),得城去表。([4],626- 627頁(yè))
(16)
這種不一致在一定程度上說(shuō)明了后人對(duì)測(cè)望問(wèn)題的推進(jìn),也反映了當(dāng)時(shí)人們對(duì)該算法的一種不同的推理思路。
吳文俊先生通過(guò)對(duì)照《海島算經(jīng)》中望邑與望海島公式的各項(xiàng),認(rèn)為邑方、邑去表公式分別對(duì)應(yīng)于島高、表去島公式,言外之意二者證明完全一致。[23]而對(duì)于這個(gè)新的求城方(竿高)的算法,我們可以據(jù)圖2,借助容橫容直原理給出最可能是原作者的推理思路:
在長(zhǎng)方形□BD中,由BD和E,得
□EJ=□EA
(3.1)
同理,在長(zhǎng)方形□BF中,由BF和G,得
□GK=□GA
(3.2)
式(3.2)-式(3.1),得
□GK-□EJ=□GC
(3.3)
又在長(zhǎng)方形□C′F中,由C′F和G,得
□GC=□GL
(3.4)
周述學(xué)記載的這個(gè)算法,唐順之了解,顧應(yīng)祥(39)顧應(yīng)祥收錄的相當(dāng)題目所給的城方算法也是這個(gè)。([16],989- 990頁(yè))也知道??梢?,對(duì)于《海島算經(jīng)》測(cè)望方邑方法,當(dāng)時(shí)的數(shù)學(xué)家,至少是周述學(xué)周圍的人,并不是直接通過(guò)類比將它與測(cè)望海島方法聯(lián)系起來(lái),而是把它看作一種新的測(cè)量方法并進(jìn)行重新推理,從而得到了新的算法公式。因而,周述學(xué)將它與測(cè)望海島方法分為不同的類別,也有一定道理。
2.1.3 三望
三望對(duì)應(yīng)題目類型43“兩表橫矩小勾股求廣”中的“斜測(cè)廣”。例第76題(圖6(40)周述學(xué)書中有附圖([4],627頁(yè)),與此圖中實(shí)線部分基本相當(dāng)。):
圖5 橫矩兩表測(cè)廣圖
東南望波口(OB)。立兩表(C,C′),南北相去(CC′)九丈,以索薄地連之。當(dāng)北表之西卻行去表(CD)六丈,薄地遙望一望波口南岸(B),入索北端(CE)四丈二寸;以望二望北岸(O),入前所望表里(EP)一丈二尺。又西卻行去北表(CF)一十三丈五尺,薄地遙望三望波口南岸(B),與南表(C′)參合。求波口廣幾何?斜測(cè)廣
得一里二百四十步。
以北表之西后卻行乘先望南岸入索(CE·CF),以兩表相去除之為景差(HF),內(nèi)減北表之西先卻行,余(HF-CD)為法,又以去北表前、后卻行相減,余(CF-CD)乘望北岸入索表里為實(shí),以法除之為波口闊數(shù),以里法、步法約之。([4],627頁(yè))
此即《海島算經(jīng)》“東南望波口”問(wèn)([25],220- 221頁(yè))。根據(jù)題目及術(shù)文可知,求波口廣算法對(duì)應(yīng)的公式為
(17)
吳文俊先生通過(guò)對(duì)照《海島算經(jīng)》中此題與望松算法公式的各項(xiàng),認(rèn)為波口廣公式對(duì)應(yīng)于松高公式。[23]實(shí)際上,對(duì)比圖6與圖4a可知,兩圖中各點(diǎn)及線段,雖然代表的實(shí)際含義不同,但對(duì)應(yīng)的圖形含義卻也是一致的,因此,若將波口廣公式中的CF拆分成CH+HF,則整理后可得(10)式。雖然周述學(xué)未就此題再說(shuō)明一遍推理思路,但他將上述求城方的題目與此求波口廣的題目先后排列,并分別釋以“正測(cè)廣”和“斜測(cè)廣”之義,而這兩種測(cè)量方法又正好分別與望海島和望松的測(cè)量方法對(duì)應(yīng),結(jié)合前述相關(guān)分析可知,他對(duì)于波口廣算法的理解應(yīng)該是按照這種方式來(lái)的。
2.1.4 重矩測(cè)深
重矩測(cè)深對(duì)應(yīng)題目類型44“重矩小勾股求深”,分為望一處和望兩處兩種情況。
(1)當(dāng)望一處時(shí)
例第77題(圖7a):
圖7 重矩測(cè)深圖
俯望深谷(AC=BI)。偃矩(ECD)岸上,令勾高(CD)六尺,從勾端(D)望谷底(B),入下股(CE)九尺一寸。重設(shè)矩(VHU)于上,其矩間相去(CH=DU)三丈,更從勾端(U)望谷底(B),入上股(HV)八尺五寸。求谷深幾何?得四十一丈九尺。
以矩間相去乘入上股為實(shí)(HV·CH),以入上股減入下股,余(CE-HV)為法除之,內(nèi)減勾高,余得谷深。
又以矩間相去乘入下股為實(shí)(CE·CH),以入上、下股相減,余為法除之,內(nèi)減勾及矩間,余得谷深,乃下矩至谷底之?dāng)?shù)(AC)。如求谷底闊(AB),以勾乘矩間(CH·CD),以法除之為得谷底闊。([4],627- 628頁(yè))
此即《海島算經(jīng)》“望深谷”問(wèn)([25],220頁(yè))。根據(jù)題目及術(shù)文可知,谷深(下矩至谷底之距離)算法對(duì)應(yīng)的公式為
(18)
后人又補(bǔ)充了一個(gè)算法,相應(yīng)谷深公式為
(19)
谷底闊公式為
(20)
此測(cè)望方法與望海島方法相似。吳文俊先生有對(duì)《海島算經(jīng)》算法的證明[23],據(jù)其思路,(18)式的推導(dǎo)如下:在長(zhǎng)方形□BU中,由BU和V,得
□VW=□VA
(4.1)
在長(zhǎng)方形□BD中,由BD和E,得
□EJ=□EA
(4.2)
式(4.1)-式(4.2),得□VC-□EY=□VX,即CH·HV-(CE-HV)·AC=(CE-HV)·CD,整理即得(18)式。雖然周述學(xué)未再說(shuō)明一遍有關(guān)推理思路,但從他對(duì)測(cè)望海島算法的理解思路,可以想見他對(duì)此算法的推理應(yīng)該與之一致。
(4.3)
又由(18)式知
(4.4)
(2)當(dāng)望兩處時(shí)
例第78題(圖7b):
登山(AC)臨邑,不知門高(BB1)。偃矩(ECD)山上,勾高(CD)三尺,從勾端(D)下望門額(B1),入下股(CE1)四尺八寸;望門閫(B),入下股(CE)二尺八寸八分。又立重矩(VHU)于上,相去(CH=DU)五尺,從勾端(U)望門額,入上股(HV1)三尺六寸;又望門閫,入上股(HV)二尺四寸。求城門高幾何?得門高一丈。
以兩矩相距乘門額入上股(HV1·CH),以門額入上股與下股相減,余(CE1-HV1)為法除之,得門額去矩之?dāng)?shù)(41)據(jù)算理,這里“門額去矩之?dāng)?shù)”是指門額與下表勾端所在水平直線間的距離,同樣,下文“門閫去矩之?dāng)?shù)”是指門閫與下表勾端所在水平直線間的距離。。乃以兩矩相距乘門閫入上股(HV·CH),以門閫入上股與入下股相減,余(CE-HV)為法除之,得門閫去矩之?dāng)?shù)。二數(shù)相減,余為門高。([4],628頁(yè))
根據(jù)題目及術(shù)文可知,門高公式為
(21)
這個(gè)題目的原型即《海島算經(jīng)》“望清淵”題。對(duì)照兩個(gè)題目,可知前者的門額、門閫分別相當(dāng)于后者的水岸、白石。后者術(shù)文如下:
術(shù)曰:置望水上、下股,相減,余(CE1-HV1)以乘望石上股(HV)為上率。又以望石上、下股相減,余(CE-HV)以乘望水上股(HV1)為下率。兩率相減,余以乘矩間為實(shí)。以二差相乘為法。實(shí)如法而一得水深。([25],221頁(yè))
若按此術(shù)文,則前者求門高的算法應(yīng)為
(22)
其中,HV(CE1-HV1)為上率,HV1(CE-HV)為下率。顯然,單從形式上來(lái)看,這兩個(gè)公式是不一樣的。
吳文俊先生有對(duì)《海島算經(jīng)》中相關(guān)算法〔相當(dāng)于(22)式〕的證明。[23]此處使用求門高的術(shù)語(yǔ)說(shuō)明其思路:通過(guò)對(duì)比,可知望門高相當(dāng)于測(cè)望了兩處深谷,則求門高相當(dāng)于使用了兩次望深谷算法,故而依據(jù)(18)式,可得下矩至門閫之?dāng)?shù)為
(5.1)
下矩至門額之?dāng)?shù)為
(5.2)
式(5.1)-式(5.2),得
(5.3)
整理即得(22)式。不難看出,推導(dǎo)過(guò)程中間的(5.3)式就是周述學(xué)記載的求門高算法對(duì)應(yīng)的公式,即(21)式。從這個(gè)算法本身來(lái)看,周述學(xué)的理解思路應(yīng)該與此相一致。
2.1.5 四望
圖8 偃矩測(cè)廣從圖
四望對(duì)應(yīng)題目類型45“累矩立勾股與橫勾求廣從”。例第79題(圖8(42)周述學(xué)書中有“偃矩測(cè)廣從圖”([4],629頁(yè)),是從俯視城的角度繪制的。在當(dāng)時(shí)還沒(méi)有透視畫法的條件下,估計(jì)是為了直觀,他將原本與城平面垂直的兩立矩均畫成了與之平行的樣子。雖然不準(zhǔn)確,但從幫助讀者理解算法的角度來(lái)說(shuō),是值得肯定的。):
登山(AC)臨邑(OO1B1B),邑在山南,不知廣(OO1)、從(OB)。偃矩(ECD)山上,勾高(CD)三尺五寸,勾端(D)與邑東南隅(B)及東北隅(O)參相直,從勾端遙望東北隅,入下股(CP)一丈二尺。又橫勾(PZ)于入股之處隨于入股去處橫設(shè)一勾,從勾端望西北隅(O1),入橫勾(PZ)五尺;東南隅,入下股(CE)一丈八尺。又設(shè)重矩(VHU)于上,矩間相去(CH=DU)四丈,更從立勾端(U)望東南隅,入上股(HV)一丈七尺五寸。求邑廣、從幾何?得東西廣一里四十步,南北從一里一百二十步。
以勾高乘東南隅入下股(CE·CD),以入上股(HV)除之,內(nèi)減勾高,余為法。求從:以東南隅入下股,內(nèi)減東北隅入下股,余(CE-CP)以乘矩間相去為實(shí),以法除之得二萬(wàn)四千寸。
求廣:以西北隅入橫勾乘矩間相去為實(shí)(CH·PZ),以法除之得二萬(wàn)寸。各以里法一萬(wàn)八千寸、步法五十寸約之得廣及從。([4],628頁(yè))
此即《海島算經(jīng)》“登山臨邑”問(wèn)([25],222頁(yè))。根據(jù)術(shù)文及題目可知,邑南北從公式為
(23)
邑東西廣公式為
(24)
吳文俊先生有對(duì)《海島算經(jīng)》中相關(guān)算法的證明。[23]據(jù)其思路,(23)式的推導(dǎo)以望松和望深谷算法為基礎(chǔ):對(duì)比圖8與圖4a可知,前者有關(guān)下矩測(cè)望部分與后者的前表測(cè)望部分完全一致。其中,邑南北從、東南隅入下股、東南隅入下股與東北隅入下股之差、勾高分別相當(dāng)于松高、表高、入表、前表卻行,因此,根據(jù)上述松高輔助公式,可得邑南北從為
(6.1)
(6.2)
將式(6.2)代入式(6.1),整理即得(23)式。(24)式的推導(dǎo)需借助相似勾股形對(duì)應(yīng)邊成比例的理論:根據(jù)相似勾股形DO1O與DZP,可知邑東西廣
(6.3)
又根據(jù)相似勾股形DOA與DPC,可知
(6.4)
總之,周述學(xué)雖然只在最開始兩處給出了推理說(shuō)明,但卻足以體現(xiàn)出他對(duì)容橫容直原理在算法推導(dǎo)中的認(rèn)同和重視。實(shí)際上,之后的算法推導(dǎo)基本上是通過(guò)類比這兩處尤其后一處推理展開的。從這點(diǎn)看來(lái),最開始的推理說(shuō)明足以看作所有算法推導(dǎo)的理論基礎(chǔ)。
前文已經(jīng)提到,周述學(xué)《歷宗算會(huì)》中16道測(cè)望題目中有14道題目在顧應(yīng)祥《勾股算術(shù)》中也有記載(43)周書的第64題和第69題(來(lái)自唐順之)未見于顧書。,其中13道題設(shè)的敘述形式和已知條件數(shù)據(jù)均與后者相同,但二者對(duì)同一題目的歸類往往相異。周書中的算法及題目分類情況已經(jīng)列成表1,現(xiàn)在將顧書中的例題分類情況列為表2。
表2 《勾股算術(shù)》中的測(cè)望問(wèn)題歸類情況
對(duì)比表1和表2可以看出:對(duì)于第65—68題,周述學(xué)歸為一類“單表小勾股求大股”,顧應(yīng)祥分為兩類:第65、68題屬于“容方與余勾求余股”,第66、67題屬于“小勾股與勾求股測(cè)望”。對(duì)于第70—74題,周述學(xué)歸為一類“重表小勾股求大股大勾”,顧應(yīng)祥分為兩類:第70—72題屬于“兩余勾小股求大勾股測(cè)望”,第73、74題屬于“兩余勾求兩勾股測(cè)望”。對(duì)于第75、76題,周述學(xué)歸為一類“兩表橫矩小勾股求廣”,顧應(yīng)祥分為兩類:第75題屬于“兩余勾橫測(cè)望”,第76題屬于“橫勾股測(cè)望”。對(duì)于第77、78題,周述學(xué)歸為一類“重矩小勾股求深”,顧應(yīng)祥分為兩類:第77題與70—72題同屬一類,第78題與73、74題同屬一類。對(duì)于第79題,周述學(xué)歸為“累矩立勾股與橫勾求廣從”,顧應(yīng)祥則歸于“直勾股橫勾股測(cè)望”之下。
總的來(lái)說(shuō),顧應(yīng)祥的題型名目有的是以算法中用到的條件命名的,比如“兩余勾小股求大勾股測(cè)望”、“兩余勾求兩勾股測(cè)望”,有的是以實(shí)際測(cè)量方式命名的,比如“橫勾股測(cè)望”、“直勾股橫勾股測(cè)望”,有的則綜合了這兩者,比如“兩余勾橫測(cè)望”,可見其命名方式并不統(tǒng)一。周述學(xué)的命名方式則比較統(tǒng)一,均是以測(cè)量工具(從中可以看出測(cè)量方式)加上算法中用到的條件來(lái)命名。這一分類方式顯然比顧應(yīng)祥的要合理。另一方面,在顧應(yīng)祥的分類下,上述我們按照周述學(xué)每一分類所收錄的算題的問(wèn)題情境的特點(diǎn),進(jìn)一步概括出的當(dāng)人目高為0時(shí)和當(dāng)人目高不為0時(shí)、正測(cè)廣和斜測(cè)廣,以及測(cè)望一處和測(cè)望兩處等細(xì)的分類方式就不成立了,這也反映了周述學(xué)與顧應(yīng)祥的不同分類思想。而從這些更細(xì)的分類中,我們可以推知周述學(xué)理解測(cè)望算法的可能思路。結(jié)合周述學(xué)與顧應(yīng)詳?shù)膶W(xué)術(shù)交往和了解顧氏的工作這一事實(shí)看,周述學(xué)應(yīng)該是認(rèn)識(shí)到了顧應(yīng)祥對(duì)測(cè)望算法的理解有不足之處,進(jìn)而對(duì)測(cè)望算法的原理有更深的理解,才提出新的分類方式的。另外,被周述學(xué)歸入單表測(cè)望的第65、68題,在顧應(yīng)祥看來(lái)卻并不是測(cè)望問(wèn)題,而是容方問(wèn)題。這也說(shuō)明了相比于顧應(yīng)祥,周述學(xué)在測(cè)望問(wèn)題的來(lái)源和繼承性上有更清晰的認(rèn)識(shí)。
測(cè)望問(wèn)題特別是除一次測(cè)望以外的測(cè)望問(wèn)題是中國(guó)傳統(tǒng)數(shù)學(xué)中較難的一種數(shù)學(xué)問(wèn)題。劉徽《重差》(《海島算經(jīng)》)的自注及圖失傳之后,后世數(shù)學(xué)家尤覺(jué)這種算法難以理解。楊輝《乘除通變本末》(1274)曾說(shuō):“但《海島》題法隱奧,莫得其秘。李淳風(fēng)雖注,只云下法,亦不曾說(shuō)其源?!?[26],1049頁(yè)) 其《續(xù)古摘奇算法》稱他置“先賢作法之萬(wàn)一”的“海島小圖于座右”,并“將《孫子》度影量竿題問(wèn)引用詳解,以驗(yàn)小圖”,通過(guò)對(duì)《孫子》度影量竿題詳細(xì)解釋,對(duì)當(dāng)時(shí)流傳的一種前人關(guān)于劉徽望海島題算法的圖證加以驗(yàn)證。([12],1114頁(yè))
明代一般被認(rèn)為是中國(guó)數(shù)學(xué)的衰落期,這一時(shí)期能夠理解測(cè)望算法的數(shù)學(xué)家寥寥無(wú)幾。吳敬只羅列了題目而沒(méi)有說(shuō)明算法的推導(dǎo)思路。王文素曾說(shuō):“解曰:戰(zhàn)國(guó)魏劉徽撰《海島》,(著)[注]‘勾股’(44)作《九章算術(shù)注》、撰《海島算經(jīng)》(初名《重差》)的劉徽是三國(guó)時(shí)期的魏國(guó)人,王文素卻誤認(rèn)為他是戰(zhàn)國(guó)時(shí)期的魏國(guó)人。王文素在北方,而南方的周述學(xué)在“算會(huì)圣賢姓氏”中也將劉徽的時(shí)代誤寫為“戰(zhàn)國(guó)魏”。估計(jì)這種錯(cuò)誤在明代比較普遍。大概由于當(dāng)時(shí)絕大多數(shù)人所看到的劉徽《九章算術(shù)》注本大多非原本,即使是原本也沒(méi)有題記作注的年代(現(xiàn)在知道劉徽作《九章算術(shù)注》在三國(guó)時(shí)“魏景元四年”,依據(jù)的是《晉書·律歷志》和《隋書·律歷志》),就想當(dāng)然地以為此“魏”指戰(zhàn)國(guó)時(shí)代的魏國(guó)。,其為術(shù)也,上可以測(cè)高,下可以知深,平可以求遠(yuǎn)。唐李淳風(fēng)雖續(xù)算草,未聞解曰。至宋楊輝,乃立鎖積小圖,圖最為簡(jiǎn)易,學(xué)者由此識(shí)彼可也。愚不能推廣其妙,特如此終之而已?!?[14],789頁(yè)) 表明他對(duì)于測(cè)望的理解也只限于楊輝算書中的海島小圖及其解釋。顧應(yīng)祥收錄了更多的測(cè)望算題,但不知何故,只列出了題目和解法,而沒(méi)有任何圖證和解釋。
盡管如此,但也存在努力鉆研數(shù)學(xué)的學(xué)者,周述學(xué)可算一個(gè)代表。相比于明代其他數(shù)學(xué)家,周述學(xué)將楊輝算書中有關(guān)一次測(cè)望和二次測(cè)望的證明,更確切地說(shuō)是證明的依據(jù)——出入相補(bǔ)原理,特別是基于這一原理的容橫容直原理——作為他理解一系列測(cè)望算法的依據(jù),按照單表測(cè)望、重表再望、重矩測(cè)深、三望、四望等大的類別對(duì)算題進(jìn)行重新分類,并統(tǒng)一以測(cè)量工具(從中可以看出測(cè)量方式)加上算法中用到的條件來(lái)命名,每種分類方式下又按照當(dāng)人目高為0時(shí)和當(dāng)人目高不為0時(shí)、正測(cè)廣和斜測(cè)廣,以及測(cè)望一處和測(cè)望兩處等細(xì)的類別對(duì)相關(guān)算題進(jìn)行重新組織編排,使其更加合理。他還總結(jié)出以容橫容直原理為根據(jù)的概述性算法,為所收錄的算題補(bǔ)充題解。這些工作顯示出他對(duì)于測(cè)望問(wèn)題及其原理更深刻的思考和理解。反過(guò)來(lái)說(shuō),正是由于理解更加深刻,他才能夠?qū)y(cè)望問(wèn)題做出更加合理的分類和組織。
周述學(xué)在測(cè)望方面的工作,從原創(chuàng)性上說(shuō)雖然不能與劉徽等中國(guó)古代頂尖數(shù)學(xué)家相比,但也反映出他在理解測(cè)望原理、將測(cè)望知識(shí)進(jìn)行系統(tǒng)化等方面的成就,超越了明代其他數(shù)學(xué)家。他對(duì)測(cè)望算法的推導(dǎo)思路和歸類思想是值得關(guān)注的,相關(guān)的分析也可以為繼續(xù)探索周述學(xué)的學(xué)術(shù)思想和明代數(shù)學(xué)的特點(diǎn)提供某些依據(jù)。
致 謝感謝我的導(dǎo)師鄒大海老師、兩位匿名評(píng)審專家,他們提出的寶貴意見和建議,對(duì)于本文的完善和提高起到了很大的幫助作用。