賈洪巖 紀(jì)志剛
(1.中共上海市閔行區(qū)委黨校,上海201199; 2.上海交通大學(xué)科學(xué)史與科學(xué)文化研究院,上海200240)
康熙年間,《借根方算法》(1700,以下簡(jiǎn)稱“《算法》”)首次通過西方代數(shù)學(xué)傳入中國(guó),作者是比利時(shí)傳教士安多(Antoine Thomas,1644—1709)[1],書中介紹了西方的開方算法①本文將解未知數(shù)的計(jì)算方法,如(xn=a)、(axn±bxm=c),統(tǒng)稱為開方算法。 稱xn=a 的解法為高次冪開方算法,其中解2 次冪的方法為開平方法,解3 次冪的方法為開立方法,解其余次冪的方法為n 次冪開方算法(n≥4)。稱axn±bxm=c 的解法為高次冪方程解法,其中解2 次冪的方法為二次冪方程解法(或帶縱平方法),解3 次冪的方法為三次冪方程解法(或帶縱立方法),解其余次冪的方法為n 次冪方程解法(4≤n≤6)。。 1712 年,康熙開蒙養(yǎng)齋,梅瑴成(1681—1763)、何國(guó)宗(? —1767)等人應(yīng)召入館并編撰《數(shù)理精蘊(yùn)》,《數(shù)理精蘊(yùn)》下編卷31—36《借根方比例》(以下簡(jiǎn)稱“《比例》”)即以《算法》為底本改編而成。
《比例》卷32、33 分別介紹了高次冪開方算法(xn=a)和高次冪方程解法(axn±bxm=c),在清初算家看來“借根方比例法中,開各乘方為最要”([2],下編卷32 頁2)。 也許因?yàn)椤八卧獣r(shí)期的增乘開方法失傳之后,這是第一次給出高次方程的數(shù)值解法”[3],所以《比例》卷33 中的高次冪方程解法也一直備受當(dāng)代學(xué)者的關(guān)注。 通過對(duì)卷33 中三次冪方程解法的分析,先前研究一般認(rèn)為卷33 中的高次冪方程解法來源是中、西雙方二者之一①李儼、韓琦認(rèn)為此法即西方的“牛頓法”,魏保華、潘亦寧也支持西方來源的觀點(diǎn)。 錢寶琮、李迪雖然承認(rèn)三次冪方程解法與“牛頓法”完全相同,但《數(shù)理精蘊(yùn)》是否受到影響需進(jìn)一步研究。 李兆華則認(rèn)為三次冪方程解法“是由中國(guó)古代的開帶縱立方法,即《數(shù)理精蘊(yùn)》卷24 的方法,演變來的”。 參見參考文獻(xiàn)[3—10]。。
但是,關(guān)于《比例》卷32 中高次冪開方算法(xn=a)的來源②魏雪剛指出《比例》卷32 中的高次冪開方算法與《少廣拾遺》的開方算法一致,指出了兩書之關(guān)聯(lián),但稱兩書中的開方算法一致似有不妥(參見參考文獻(xiàn)[11])。 實(shí)際上《比例》只是吸收了《少廣拾遺》的部分內(nèi)容,并非一致,具體分析見下文。,《比例》卷33 中的4—6 次冪方程解法(axn±bxm=c)的來源,以及卷32、33 中開方算法之關(guān)系的研究有待加強(qiáng),而這些算法實(shí)際上有非常緊密的關(guān)系,應(yīng)放在一起討論,方可探明原委。 因此,《比例》中的高次冪開方算法與高次冪方程解法有怎樣的關(guān)系? 不同次冪的解法有何異同? 它們又是從何而來? 本文基于“古證復(fù)原”原則,對(duì)比分析了與《算法》《比例》密切相關(guān)的幾部算書,為《比例》中的高次冪開方算法、高次冪方程解法之來源給出一種新的可能。
雖然《算法》是《比例》的底本,但兩書中大部分的開方算法并不相同。 總的來說,兩書中開方算法的異同關(guān)系如圖1 所示。
圖1 《算法》《比例》部分開方算法對(duì)比
《算法》介紹了4—9 次冪的開方算法(xn=a),以及2、3、4、6 次冪的方程解法(axn±bxm=c)。 書中都是盡可能使用“換元法”進(jìn)行計(jì)算,比如,將x4=a 視為X2=a(X=x2);將x6=ax3+b 視為X2=aX+b(X=x3)。 只有在無法使用此法時(shí),安多才給出特殊的計(jì)算方法,即5、7 次冪開方算法(即x5=a、x7=a,以下簡(jiǎn)稱“查表法”)和三次冪方程解法(即ax3±bx2=c),它們與中算傳統(tǒng)不同,是純粹的數(shù)值運(yùn)算,安多也沒有對(duì)這些運(yùn)算過程作任何解釋說明。
《比例》卷32 介紹了高次冪開方算法(xn=a)(3—10 次冪),清初算家為不同次冪給出了三種開方算法,與本卷開始處介紹的順序一致,分別為“未知法”③由于此算法在處理3—10 次冪時(shí)具備機(jī)械化、程序化的特征,擁有相同的算法原理,且此算法的來源未知,故而將這種計(jì)算方法稱作“未知法”,此名稱為筆者命名,并非出自《比例》原文。、“代開法”“表開法”。 基于開篇以及之后案例中的介紹邏輯,可知三種計(jì)算方法雖然不同,但應(yīng)該是并列關(guān)系。 在“未知法”之后,“代開法”之前,還有“蓋幾乘方之本法,有……”字樣,之后的內(nèi)容是對(duì)“未知法”中部分步驟的猜測(cè)性解讀(分析見下文)。
在這三種開方算法中,“代開法”和《算法》的“換元法”相同,“表開法”改編自《算法》的“查表法”①“表開法”與“查表法”的算法流程基本相同。 由于清初算家清楚“查表法”的算法原理,所以將《算法》中僅有的5、7 次冪“查表法”作了改進(jìn)和拓展,使其能夠適用于3—10 次冪,并為它們配備了“新數(shù)表”。,二者的來源比較清晰,因此本文不對(duì)它們做具體分析。 本文主要討論的一個(gè)問題,即卷32 中“未知法”的來源和構(gòu)造過程②關(guān)于清初算家構(gòu)造“未知法”與“表開法”的先后問題,尚未有證據(jù)明確指出二者的先后順序,筆者認(rèn)為二者應(yīng)該是同時(shí)構(gòu)造的。 但如果一定要區(qū)分構(gòu)造它們的先后順序,筆者以為,應(yīng)該是先有“未知法”,后有“表開法”。 原因在于,“表開法”中所需要的數(shù)值,“未知法”里都有,且明確了數(shù)值的計(jì)算方法。 但是,“未知法”所需要的整個(gè)運(yùn)算流程,“表開法”是沒有的。(下文關(guān)于卷32 中高次冪開方算法的討論均指“未知法”,特此說明)。
《比例》卷33 介紹了高次冪方程解法(axn±bxm=c)(3—6 次冪)。 其中,三次冪方程解法倍受關(guān)注,正是基于對(duì)它的分析,前人學(xué)者才得出了《比例》中高次冪方程解法的來源是中、西雙方二者之一的結(jié)論。 但是,《比例》卷33 中不只有三次冪方程解法,還有4—6 次冪方程解法,且4—6 次冪方程解法的來源未知,同時(shí),卷33 中的3—6 次冪方程解法還呈現(xiàn)出了統(tǒng)一的、機(jī)械化、程序化特征。 因此,本文的另一個(gè)主題是將《比例》卷33 中的3—6 次冪方程解法視為一個(gè)整體,來探討其來源和構(gòu)造過程,而不只是針對(duì)其中的三次冪方程解法。
綜上,首先,目前已知《比例》卷32 中的“代開法”“表開法”源自《算法》,但“未知法”的來源有待探究。 其次,《比例》卷33 中的三次冪方程解法源自《算法》,但4—6 次冪來源未知。 因此,為了更好地探究卷32 中的“未知法”以及卷33 中的高次冪方程解法的來源,有必要對(duì)與《比例》《算法》有緊密關(guān)系的其他算書作對(duì)比分析,為溯源工作打好基礎(chǔ)。
首先,安多在編撰《算法》時(shí)引用了《算法纂要總綱》(以下簡(jiǎn)稱“《總綱》”),此書同樣為安多所作,約成書于1689—1695 年間[12],因而不能忽略此書。 書中介紹了平方、立方、帶縱平方、帶縱立方四種開方算法。 其次,《比例》作為《數(shù)理精蘊(yùn)》的一部分,《數(shù)理精蘊(yùn)》卷11、23、24 中的開方算法也應(yīng)得到關(guān)注。 其中,下編卷11 介紹了平方、帶縱平方算法,卷23、24 介紹了立方、帶縱立方算法。 再次,在《數(shù)理精蘊(yùn)》的編撰者中,梅瑴成自幼受梅文鼎的影響,何國(guó)宗及分校官魏廷珍、王蘭生也都曾和梅文鼎學(xué)習(xí)過數(shù)學(xué)和天文[3],加上《比例》卷32 中有部分內(nèi)容與《少廣拾遺》中的計(jì)算方法十分相似,因此,梅文鼎的《少廣拾遺》也值得我們留意。 書中介紹了“諸乘方大法”,可以處理3—13 次冪的開方算法(xn=a),但此法的算法流程和算法原理與“未知法”并不相同。
由于《總綱》《數(shù)理精蘊(yùn)》(卷11、卷23、卷24)均不涉及3 次冪以上的開方算法,因此,在此處先探討《比例》卷32 中“未知法”的開平方、開立方法,以及《比例》卷33 中二次冪、三次冪方程解法與《總綱》《數(shù)理精蘊(yùn)》之關(guān)系。
首先,關(guān)于《比例》卷32“未知法”的開平方、開立方算法(關(guān)系參見圖2)。 對(duì)比《總綱》《比例》《數(shù)理精蘊(yùn)》(卷11、卷23)可知:其一,《數(shù)理精蘊(yùn)》卷11、23 中的開平方、開立方算法屬于清初算家所謂的“常法”,算理與《九章算術(shù)》無異。 其二,《比例》“未知法”中的開平方、開立方算法都異于“常法”,與中算傳統(tǒng)開方法迥異。 其三,《總綱》的開平方法與“常法”相同,與《數(shù)理精蘊(yùn)》卷11 的步算過程相同;開立方法則異于“常法”,與《比例》“未知法”的步算過程相同。
圖2 《總綱》與《數(shù)理精蘊(yùn)》《比例》中開平方、開立方算法之關(guān)系
其次,關(guān)于《比例》卷33 中的二次冪、三次冪方程解法(即開帶縱平方、開帶縱立方)。對(duì)比《算法》《總綱》《比例》《數(shù)理精蘊(yùn)》(卷11、卷24)可知,幾本算書中的帶縱平方法(二次冪方程)大都相同,且與《算法統(tǒng)宗》的“歸除平方帶縱歌”類似[13],在此不作贅述。 關(guān)于開帶縱立方(三次冪方程)算法(關(guān)系參見圖3),《數(shù)理精蘊(yùn)》卷24 屬于清初算家所謂的“常法”,與《比例》大體相同但細(xì)節(jié)有異。 《算法》與《總綱》的表述形式、運(yùn)算思路極為相近,安多曾在《算法》中稱“此法與《總綱》內(nèi)第十二節(jié)內(nèi)帶一縱開立方之法同”([14],頁187),也許正因如此,才有學(xué)者認(rèn)為二者是相同的[8],但如果回歸文本內(nèi)容仔細(xì)對(duì)比二者的算法過程可知,它們其實(shí)還是略有差別的①在求初商積時(shí),《算法》是以多項(xiàng)式為基礎(chǔ),將初商帶入x3+ax2,《總綱》則是將初商帶入x2(x+a),二者的區(qū)別在于前者為數(shù)值運(yùn)算,后者結(jié)合了立體幾何圖形的構(gòu)造進(jìn)行運(yùn)算。 參見參考文獻(xiàn)[15]。。 然而,雖然安多在《算法》中聲稱此法與《總綱》相同,但《比例》卷33 的帶縱立方解法卻沿用了《算法》的計(jì)算方法,而非《總綱》之法。 值得反思的是,《算法》和《總綱》的運(yùn)算過程略有不同,但為何安多稱二者相同②依筆者淺見,安多基于西方數(shù)學(xué)知識(shí)背景看待這兩種算法,二者均為純數(shù)值運(yùn)算,因此認(rèn)為二者算理相同。? 清初算家又為何使用了《算法》的方法,而沒有使用《總綱》的方法? (分析見下文)
圖3 相關(guān)算書中三次冪方程解法之關(guān)系
通過對(duì)比分析《算法》《總綱》《數(shù)理精蘊(yùn)》和《比例》中的部分開方算法可知:首先,《比例》中的開方算法,除了二次冪方程解法,其余大都異于中算傳統(tǒng)中的“常法”。 其次,《比例》卷32 中“未知法”的開立方法源自《總綱》,《比例》卷33 中的三次冪方程解法源自《算法》(圖4)。 不同之處在于,《算法》《總綱》中的開方算法均屬于純數(shù)值運(yùn)算,傳教士安多并未對(duì)算法流程作任何解釋,清初算家則是在《比例》中使用中算術(shù)語對(duì)相關(guān)算法作了解釋說明。 但是,“未知法”的4—10 次冪開方算法、《比例》卷33 的4—6 次冪的方程解法來源仍是未知的,因此,下文將用兩節(jié)分別討論它們的來源。
圖4 《比例》卷32、33 中部分開方算法來源
由于《比例》卷33 中的高次冪方程解法與《比例》卷32 中的“未知法”緊密相關(guān),因而在本小節(jié)先探討《比例》卷32 中“未知法”(3—10 次冪)的來源。 此外,雖然已知《比例》卷32 中的“表開法”改編自《算法》的“查表法”,且“查表法”與“未知法”的算法原理不同,但“未知法”卻借鑒了“查表法”中的部分計(jì)算方法,因此,在探究“未知法”來源之前,需要對(duì)“查表法”作一簡(jiǎn)要介紹,為之后的探源工作做好鋪墊。
“查表法”是通過查找“數(shù)表”中的兩個(gè)數(shù)值(即“相近小數(shù)”與“次行之?dāng)?shù)”)來求得初商、次商和三商的,這兩個(gè)數(shù)值與本文主題即《比例》卷32“未知法”、卷33 高次冪方程解法的由來密切相關(guān)。
以5 次冪“查表法”求解為例(x5=13383270465632)([14],頁19),首先,要在“數(shù)表”中找到與被開方數(shù)13383270465632 前部分相近的“相近小數(shù)”,即130691232,通過此數(shù)值便可得到被開方數(shù)的初商(4)和次商(2)。 然后,再找到“相近小數(shù)”相同格內(nèi)的“次行之?dāng)?shù)”,即15558480,用它便可得到三商的值。 7 次冪的步算過程也是如此,只是“數(shù)表”的數(shù)值不同,整個(gè)步算流程極為便捷。 實(shí)際上,清初算家正是參考了“相近小數(shù)”和“次行之?dāng)?shù)”這兩個(gè)數(shù)值,才能將源自《總綱》的三次冪開方算法擴(kuò)展至更高次冪,具體分析見下文。
基于上文分析可知,《比例》“未知法”的三次冪開方算法源自《總綱》,異于中算傳統(tǒng)中的“常法”(如《數(shù)理精蘊(yùn)》卷23)。 分析“未知法”與“常法”的區(qū)別,有助于進(jìn)一步理解清初算家構(gòu)造“未知法”時(shí)的思考方式,并探究這種計(jì)算方法的由來。
“未知法”和“常法”的算法流程都可以總結(jié)為以下10 個(gè)步驟:①定位;②定初商;③求初商積;④求次商廉隅之共積;⑤求次商廉法;⑥定次商;⑦求初商、次商共積;⑧求三商廉隅之共積;⑨求三商廉法;⑩定三商。 但是,二者的具體計(jì)算過程仍有不同,主要體現(xiàn)在步驟5、7、9 上(步驟5、9 的算法原理相同,因此可視為同一問題)。
清初算家曾在《比例》卷32 開平方法的末尾處直言,“此法止用廉法除余積,得次商,即并初商數(shù)自乘,得數(shù)復(fù)與原積相減,與常法不同”([2],下編卷32 頁4)。 此段文字可以看做是對(duì)上述步驟5—8 的“解釋說明”,對(duì)應(yīng)了“未知法”與“常法”的不同之處,比如,“即并初商數(shù)自乘”對(duì)應(yīng)“未知法”的步驟7(求初商次商共積),但是,這種異于“常法”的計(jì)算方法是怎么來的呢?
《數(shù)理精蘊(yùn)》卷23 展現(xiàn)的“常法”計(jì)算思路符合中算傳統(tǒng)“析理以辭,解體用圖”這一特征,它將立方體“遞析開之”,分為“方、廉、隅”幾個(gè)立方體,分別計(jì)算它們的表面積和體積,以此逐步求次商、三商。 因此,在求初商、次商之共積時(shí)便需要使用“方、廉、隅”的相關(guān)數(shù)值反推求之,相應(yīng)的,此法所需的計(jì)算量也比較大。 反之,《總綱》和《比例》“未知法”的三次冪開方算法在此步驟則節(jié)省了大量計(jì)算,它們只需“合并初商、次商,自乘、再乘”(初商+次商)3即可。
然而,這種“初商次商共積”的計(jì)算方法不只是出現(xiàn)在《總綱》的三次冪開方算法中,它同樣出現(xiàn)在《算法》的“查表法”中。 如上文所述,5 次冪“查表法”是用“相近小數(shù)”130691232 求得初商、次商為4、2,而此數(shù)值130691232 正是“初商、次商相并再自乘四次”之結(jié)果(425),二者互為逆運(yùn)算,同樣的情況在7 次冪的“查表法”中同樣存在。 由于這種逆向思維并不困難,所以清初算家完全能夠意識(shí)到“數(shù)表”“中每格所列細(xì)數(shù)二層……上層為初商、次商積”([2],下編卷32 頁44),即(初商+次商)n。
正所謂孤證不立,如果清初算家僅知道《總綱》中的這種計(jì)算方法,而沒有見過“查表法”對(duì)“相近小數(shù)”的使用,其實(shí)很難保證他們能夠?qū)ⅰ犊偩V》中的這種異于“常法”的、僅出現(xiàn)在三次冪開方算法中的計(jì)算方法適用于更高次冪。 但是,當(dāng)這種計(jì)算方法同時(shí)出現(xiàn)在《總綱》的三次冪開方算法和《算法》的5、7 次冪“查表法”中,就足以說明此算法在“求初商次商共積”時(shí)的可行性。 同時(shí),由于此法適用于3、5、7 次冪,這也說明此算法可適用于其他次冪。
因此,《比例》“未知法”中的三次冪開方算法雖然源自《總綱》,但清初算家在構(gòu)造“未知法”的4—10 次冪開方算法時(shí),則應(yīng)該是在《總綱》三次冪開方算法的基礎(chǔ)上,參考了《總綱》中異于“常法”的計(jì)算方法,以及《算法》對(duì)“相近小數(shù)”的使用方法。 而清初算家之所以在構(gòu)造3—10 次冪“未知法”時(shí)采用了這種方法,主要可能出于兩方面原因:其一,在保證數(shù)值準(zhǔn)確的前提下,此法可以簡(jiǎn)化大量計(jì)算步驟。 其二,此法可以適用于任意次冪,有助于使“未知法”在處理高次冪時(shí)不至于特別復(fù)雜。
除了上述步驟7,《比例》“未知法”的步驟5、9 也與“常法”不同,這兩個(gè)步驟求的是“次商廉法”和“三商廉法”,前者用于計(jì)算次商,后者用于計(jì)算三商。 由于這兩個(gè)步驟的算法原理相通,因而在此先討論步驟5。 以“未知法”三次冪開方算法的步驟5 為例,其計(jì)算方法為“初商自乘,3 因之”,所得之?dāng)?shù)“以除次商積,即定次商”。 此方法同樣可以對(duì)應(yīng)清初算家在平方法末尾處所作的“解釋說明”,即“此法止用廉法除余積,得次商……與常法不同”。 但值得反思的是,這種異于“常法”的計(jì)算方法是怎么來的? 實(shí)際上,清初算家對(duì)這一計(jì)算過程應(yīng)該并不陌生,因?yàn)榇擞?jì)算方法在《少廣拾遺》中也曾出現(xiàn)過。
2.2.1 “未知法”“蓋本法”與“諸乘方大法”
為了下文更好地探討“未知法”對(duì)《少廣拾遺》中計(jì)算方法的借鑒,有必要在此之前先對(duì)“未知法”與《少廣拾遺》之關(guān)系作一個(gè)簡(jiǎn)要的說明。
清初算家在介紹完“未知法”之后(自三乘方開始),會(huì)緊隨著“蓋幾乘方之本法,有……”的一段話,之后會(huì)再介紹一種計(jì)算方法(以下稱此計(jì)算方法為“蓋本法”)。 筆者以為,“蓋”應(yīng)表示推測(cè),相當(dāng)于“大約”“大概”,再考慮到“未知法”來源未知,且異于“常法”,故而認(rèn)為,“蓋幾乘方之本法,有……”之后的“蓋本法”應(yīng)該是清初算家對(duì)前面“未知法”原本樣貌的推測(cè),因此,“蓋幾乘方之本法,有……”應(yīng)解讀為“大概此處‘幾乘方’原本的計(jì)算方法應(yīng)該是這樣的……”①對(duì)比“蓋本法”與“未知法”可知,“蓋本法”中僅第一步計(jì)算過程與“未知法”步驟5、6 一致,其余均與“未知法”有異,且有很大的不同。 首先,二者所求關(guān)鍵數(shù)值的步驟不同,“蓋本法”是先求“次商”,再求“次商廉隅之共積”,但是,“未知法”則是先求“次商廉隅之共積”,再求“次商”,二者正好相反。 其次,“未知法”和“蓋本法”求“次商廉隅之共積”的方法不同。 “未知法”是用過“原積”-“初商積”的方法求得“次商廉隅之共積”;“蓋本法”則是通過對(duì)“廉”“隅”做計(jì)算,再求“次商廉隅之共積”。 因此,進(jìn)一步說,筆者認(rèn)為“蓋本法”僅是針對(duì)“未知法”步驟5、6 的原本樣貌的測(cè)性解讀,即主要針對(duì)開平方法后“解釋說明”中“此法止用廉法除余積,得次商”的回應(yīng),而非“未知法”的全部流程。。
實(shí)際上,“蓋本法”與《少廣拾遺》“諸乘方大法”中求“廉隅共積”的計(jì)算方法非常相似,二者的區(qū)別在于乘以次商的時(shí)機(jī)不同。 “蓋本法”是先求各廉和,再用各廉和一起乘以次商;“諸乘方大法”則是在計(jì)算每一廉的定積時(shí),直接乘以次商。 二者有此區(qū)別的原因暫且不表,只有解決了之后的一系列問題,才能言明(原因分析見下文)。 但二者的相似性,以及梅瑴成等人對(duì)梅文鼎工作的熟悉,說明清初算家在構(gòu)造“未知法”時(shí),應(yīng)該參考了《少廣拾遺》中的“諸乘方大法”。
因此,清初算家應(yīng)該是基于對(duì)“諸乘方大法”的了解,將其中的部分計(jì)算方法進(jìn)行了適當(dāng)?shù)恼{(diào)整,才構(gòu)造了“蓋本法”,并在“未知法”之后,“蓋本法”之前,給出“蓋幾乘方之本法,有……”的字樣,表示對(duì)“未知法”本來樣貌的推測(cè)②關(guān)于“蓋本法”的作用及意義:清初算家在開平方法后曾指出“未知法”中的步驟5—8 與“常法”不同,而此計(jì)算方法能解決“廉法條例甚繁,難于布算”的實(shí)際問題。 因此,一方面,“蓋本法”是對(duì)“廉法條例甚繁,難于布算”的實(shí)際演示,它能夠展現(xiàn)“未知法”確實(shí)在“多乘方,所省實(shí)多”;另一方面,則是為了解釋,為什么在“求廉法”和“次商”時(shí),即“未知法”的步驟5、6,可以使用“止用廉法除余積得次商”的這種異于“常法”的計(jì)算方式。 筆者以為,第二方面是最重要的。。
然而,我們雖然考證了“未知法”“蓋本法”與“諸乘方大法”之間的關(guān)系,但是本小節(jié)開篇所說的重要問題仍然有待解答,即這種“止用廉法除余積”的異于“常法”的計(jì)算方法是怎么來的? 它和《少廣拾遺》又有怎樣的關(guān)系?
2.2.2 《少廣拾遺》中的“第一廉汎積”
《少廣拾遺》的“開諸乘方大法”在求次商(或三商)時(shí),需要用“汎積之和”與“余積”相除,但“汎積之和”的求法比較繁瑣。 繁瑣之處在于,不同次冪有不同數(shù)量的“廉”,不同“廉”求“汎積”值的方法又不同,最終需要求得每個(gè)“廉”的“汎積”值,再將它們相加,才能得到“汎積之和”。
“廉”的汎積值求法(圖5)所示,其中最關(guān)鍵的兩個(gè)數(shù)值為該“廉”的“定率”及其“應(yīng)有各數(shù)”。 首先,隨著乘方數(shù)的增加,“廉”的數(shù)量會(huì)增加,而不同次冪各“廉”的“定率”也有所不同,其數(shù)值源自“廉率立成圖”([16],頁5a),如立方有兩個(gè)廉,第一廉的“定率”為3。 其次,各“廉”對(duì)應(yīng)的“應(yīng)有各數(shù)”也不同,如立方第一廉的“初商應(yīng)有各數(shù)”即為“初商平冪”。 這兩個(gè)數(shù)相乘便可得到立方第一廉的汎積值,即初商2×3,如果再求得立方第二廉的汎積值,將二者相加,便能基于此求得次商。
圖5 各廉“汎積”計(jì)算流程
稍加留意便可發(fā)現(xiàn),《比例》三次冪“未知法”的步驟5,即上文所述異于“常法”的計(jì)算方法,恰好與《少廣拾遺》中三次冪第一廉汎積的計(jì)算方法相同,二者都是“初商自乘,三因之”。 無獨(dú)有偶,這兩個(gè)數(shù)值還都是為了求次商所用,只不過《少廣拾遺》的計(jì)算更為繁瑣,在處理更高次冪時(shí),它除了要求第一廉的汎積值,還要求其他所有廉的汎積值。
再看“未知法”與“常法”的另一個(gè)不同之處,步驟9。 “未知法”(三次冪)為“初商、次商相并自乘,3 因之”,所得為“三商廉法”,用此數(shù)便可求三商。 再看《少廣拾遺》求三商時(shí)的計(jì)算方法,同樣需要計(jì)算“汎積之和”,但與上文求次商時(shí)略有不同的是,此時(shí)各廉“應(yīng)有各數(shù)”的計(jì)算方法要改成帶入“初商、次商相并之?dāng)?shù)”,即所謂“其廉定率不變,但求汎積時(shí),三商則并初商、次商兩位商數(shù)合而用之”([16],頁18a)。 因此,《少廣拾遺》在求三次冪的三商時(shí),第一廉汎積的計(jì)算方法應(yīng)為(初商+次商)2×3,此法與“未知法”的步驟9 完全相同。
可見,“未知法”(三次冪)求次商、三商時(shí)所需的“次商廉法”“三商廉法”的計(jì)算方法與《少廣拾遺》(三次冪)求次商、三商時(shí)所用的部分內(nèi)容(即第一廉汎積求法)完全相同,對(duì)比其他次冪(如4—10 次冪)同樣如此。 因此我們說,“未知法”異于“常法”的“止用廉法除余積”的計(jì)算方法,極有可能是參考了《少廣拾遺》的“諸乘方大法”。
但是,如果這種可能性是真實(shí)的,就引出了另一個(gè)問題,即清初算家在熟悉《少廣拾遺》中“諸乘方大法”的基礎(chǔ)上,為什么在構(gòu)造《比例》的“未知法”時(shí)沒有沿用熟悉的算法,而是使用了現(xiàn)在這種“止用廉法除余積”的計(jì)算方法呢? 他們是怎么確定,可以僅通過“諸乘方大法”的第一廉汎積,而非所有廉的汎積值的和,就能求得次商和三商呢? 他們是在什么情況下,意識(shí)到這種方法不僅能適用于《總綱》的三次冪開方算法,還能拓展并適用于更高次冪? 實(shí)際上,清初算家應(yīng)該是對(duì)比了《算法》“查表法”使用的“數(shù)表”中的“次行之?dāng)?shù)”,才確認(rèn)了此方法的可行性。
2.2.3 “第一廉汎積”與《算法》的“次行之?dāng)?shù)”
以《少廣拾遺》解四乘方為例(x5=13383270465632,x=422),求三商時(shí),其第一廉“定率”應(yīng)為5,“應(yīng)有各數(shù)”為424,因此,第一廉“汎積”的計(jì)算方法應(yīng)為424×5=15558480。 而這一數(shù)值,恰巧和《算法》五次冪“查表法”所用“數(shù)表”中的“次行之?dāng)?shù)”相同,即求三商時(shí)所用的“三商廉法”。 同樣的情況也發(fā)生在七次冪上,《少廣拾遺》七次冪求三商時(shí)第一廉汎積的數(shù)值同樣可以和《算法》七次冪“數(shù)表”相應(yīng)表格的“次行數(shù)字”相對(duì)應(yīng)。
因此,除了《總綱》中的三次冪開方算法在求次商、三商時(shí)所用的“次商廉法”“三商廉法”可以對(duì)應(yīng)于《少廣拾遺》中的第一廉汎積求法,《算法》中5、7 次冪“查表法”在求三商時(shí)所用的“次行之?dāng)?shù)”也能夠?qū)?yīng)于《少廣拾遺》。 應(yīng)該正是這種一致性,讓清初算家確認(rèn)并意識(shí)到,雖然這種計(jì)算方法僅等同于“諸乘方大法”的第一廉汎積求法,且與“常法”不同,但它仍然能夠保證求次商廉法、三商廉法以及次商、三商時(shí)的準(zhǔn)確性,以及對(duì)不同次冪的廣泛適用性。 基于此,清初算家才能夠?qū)ⅰ犊偩V》中僅有的三次冪開方算法進(jìn)行拓展,只需在不同次冪的步驟5、9 中使用這種異于“常法”的計(jì)算方法(表1),即可讓“未知法”適用于更高次冪。
表1 《比例》“未知法”不同次冪次商、三商廉法求法
至此,我們也許可以對(duì)上述關(guān)于“蓋本法”與“諸乘方大法”為何不同這一問題,嘗試作出回應(yīng)。
考慮到《數(shù)理精蘊(yùn)》是一部西方數(shù)學(xué)著作的編譯作品[17],所以“未知法”很可能是作為西方的開方算法來介紹的。 實(shí)際上,清初算家在構(gòu)造出了“未知法”之后,就已經(jīng)認(rèn)識(shí)到了“未知法”與“常法”有異,出于某種原因,他們需要對(duì)這種異于“常法”的計(jì)算步驟作解釋說明,因此,就需要借助某種熟知的開方算法,此時(shí),梅文鼎的《少廣拾遺》就派上了用場(chǎng)。 通過參考《少廣拾遺》,清初算家對(duì)“諸乘方大法”中的部分計(jì)算流程進(jìn)行了改編,構(gòu)造了“未知法”之后的“蓋本法”,以此試圖對(duì)“未知法”中異于“常法”的部分算法進(jìn)行解釋,使其合理化;并在介紹“蓋本法”之前,給出“蓋幾乘方之本法,有……”的字樣,表示這是對(duì)“未知法”原貌的推測(cè)。 同時(shí),此行為還能展現(xiàn)這種西方開方算法的“中源”特征,這與當(dāng)時(shí)“西學(xué)中源”說的社會(huì)背景也是吻合的。
反觀本小節(jié)之主題,雖然《比例》卷32 中的三次冪開方算法源自《總綱》,但是,卷32 中的4—10 次冪開方算法,以及整個(gè)“未知法”(3—10 次冪)則應(yīng)視為中、西算法相互會(huì)通融合的產(chǎn)物。 首先,它展現(xiàn)了中算傳統(tǒng)特征的術(shù)語和表達(dá)形式。 其次,清初算家基于對(duì)《算法》5、7 次冪“查表法”所用的“相近小數(shù)”和“次行之?dāng)?shù)”的理解,以及對(duì)梅文鼎《少廣拾遺》“開諸乘方大法”的熟悉,才能以《總綱》中異于“常法”的三次冪開方算法為基礎(chǔ),將其拓展至3—10 次冪。 此外,“未知法”還展現(xiàn)了中算傳統(tǒng)中的程序化、機(jī)械化特征(圖6)。 經(jīng)檢驗(yàn),它不僅可以處理《算法》所未及的更大數(shù)值,還可以適用于任意次冪,“但其數(shù)繁衍而無所用,茲故不載焉”([2],下編卷32 頁3)。
圖6 高次冪開方算法流程圖
在討論《比例》卷33 中統(tǒng)一的3—6 次冪方程解法來源之前,首先要指出的是,卷33 中的三次冪方程解法的步算過程與《算法》是一樣的。 如果用現(xiàn)代數(shù)學(xué)語言解讀,兩書中的解法都和“牛頓法”一樣,也正因如此,才有《比例》三次冪方程解法源自西方之論斷。
但是,兩本算書中的三次冪方程解法還是有差異的。 首先,二者的表述方式不同,《算法》的步算過程是純數(shù)值運(yùn)算,安多僅介紹了各數(shù)值的使用方法,但并未對(duì)運(yùn)算過程做任何解釋,其中更沒有任何中算傳統(tǒng)術(shù)語。 《比例》則更像是對(duì)純數(shù)值運(yùn)算的解讀,清初算家使用了大量中算傳統(tǒng)術(shù)語,如“立方廉”“平方廉”“次商廉法”……來解釋運(yùn)算過程。 其次,《算法》中的高次冪方程(axn±bxm=c)均為多項(xiàng)式相乘之結(jié)果,它們屬于純數(shù)值運(yùn)算,與幾何圖形無任何關(guān)系,但《比例》的編撰者卻將它們視為不同的幾何圖形,并稱得到這些幾何體的過程為“變正方體而為長(zhǎng)方體,或?yàn)轫嗾坶L(zhǎng)方體、扁方體”([2],下編卷33 頁12),體現(xiàn)了中算傳統(tǒng)用圖解方式說明數(shù)學(xué)問題的特點(diǎn)[18]。 此外,還不應(yīng)忘記《算法》中3 次冪與4、6 次冪的方程解法并不相同,而《比例》中的3—6 冪次方程解法卻帶有中算傳統(tǒng)的程序化、機(jī)械化特征。 因此,在探討《比例》卷33 中高次冪方程解法的來源時(shí),不應(yīng)忽視其中算淵源。
如上文所述,在《比例》之前,《數(shù)理精蘊(yùn)》卷24 就已經(jīng)介紹了中算傳統(tǒng)處理三次冪方程的“常法”,有學(xué)者認(rèn)為《比例》卷33 中的三次冪方程解法即來源于此[3],但二者實(shí)際上并不完全相同(表2),且清初算家在《比例》中也曾直言稱“借根方比例開帶縱立方,與常法不同”([2],下編卷33 頁10)。
表2 《數(shù)理精蘊(yùn)》卷24、《比例》三次冪方程解法步算流程對(duì)比
雖然兩種算法的運(yùn)算流程大體相同,都可分為“求初商、求初商積、求次商積、求次商廉法、求次商”5 個(gè)步驟,但二者對(duì)步驟2、4 的處理方式還是略有不同,這體現(xiàn)了“常法”與《比例》卷33 對(duì)同一運(yùn)算法則的不同理解方式。
“常法”使用的是符合中算傳統(tǒng)開帶縱立方的圖解方式,即將一個(gè)長(zhǎng)方體遞析開之,將其分為一個(gè)小長(zhǎng)方體,以及包裹在它之外的“方、廉、隅”,求“次商”時(shí),需分別計(jì)算“方、廉、隅”的表面積、體積,并以此求得次商(圖7)。 然而,即便清初算家有了熟悉的“常法”,但他們并沒有在《比例》卷33 中沿用此法,而是轉(zhuǎn)而采用了《算法》中的三次冪方程解法。 究其原因,“常法”所處理的帶縱立方問題總表現(xiàn)為某幾類“常規(guī)”幾何體,它們或?yàn)椤伴L(zhǎng)方體”或?yàn)椤氨夥襟w”,但《算法》中的方程是多項(xiàng)式相乘的結(jié)果,與幾何圖形并無關(guān)系。 因此,在清初算家看來,這些一元多次方程“或?yàn)殚L(zhǎng)方體扁方體形,或非長(zhǎng)方體扁方體形,皆不可知”,既然其樣貌不可知,自然就“不可以帶縱之常法求也”([2],下編卷33 頁10)。
圖7 “常法”圖解與“新”圖解
因此,清初算家為這些“不常規(guī)”幾何圖形“重構(gòu)”了新的圖解方式,以x3+4x2為例,他們借助中算傳統(tǒng)“析理以辭,解體用圖”的方法,把x3+4x2所代表的長(zhǎng)方體分成了兩個(gè)部分,稱其為“正方體之外多四平方,故成長(zhǎng)方體”([2],下編卷33 頁17)(圖7)。 求次商時(shí),只需分別計(jì)算“正方體”(x3)和“四平方”(4x2)兩者的“次商廉法”并相加(即步驟4),即可求得“次商”值,而“次商廉法”的計(jì)算方法則與《比例》“未知法”沿用《少廣拾遺》第一廉“汎積”的計(jì)算方法相同(表1)。
至此,也可以對(duì)上文中提及的問題,即“既然《算法》的作者聲稱三次冪方程解法與《總綱》同,那么清初算家為何選擇了《算法》,而非《總綱》”嘗試作出回應(yīng)。
依筆者淺見,清初算家選擇沿用《算法》計(jì)算方法的原因在于,在求初商積時(shí)(步驟2):一,《總綱》將初商帶入x2(x+a)的行為與中算傳統(tǒng)的思路相同,此法在《數(shù)理精蘊(yùn)》卷24 中已有體現(xiàn)。 二,《算法》將初商帶入x3+ax2的方法具備將三次冪方程解法拓展至更高次冪方程解法的可能性。 三,《算法》將初商帶入x3+ax2以求初商積的方法(步驟2),可以和之后步驟4 中將x3+ax2拆分為兩個(gè)幾何圖形的圖解方式保持一致性,而《總綱》卻不能。
此外,清初算家還將這種新的“圖解方式”應(yīng)用于任意次冪,在處理高次冪方程時(shí),即便它們的外形“皆不可知”,但只需根據(jù)不同次冪改變相應(yīng)的“次商廉法”計(jì)算方法即可。如x5+2x3=7990272,同樣是將其拆分為兩個(gè)部分,即“四乘方”(x5)和“兩個(gè)立方體”(2x3)([2],下編卷33 頁37),然后分別計(jì)算二者的“次商廉法”即可(表1)。 與《比例》卷32 中的“未知法”一樣,卷33 中的4—6 次冪方程解法同樣展現(xiàn)了中算傳統(tǒng)的程序化、機(jī)械化特征。
綜上,《比例》卷33 中的三次冪方程解法一直是前人討論的焦點(diǎn),雖然它和西方的“牛頓法”類似,但它只是3—6 次冪方程解法的其中之一,如此,《比例》卷33 中的高次冪方程解法(3—6 次冪)應(yīng)該被視為一個(gè)整體進(jìn)行討論。 通過上述對(duì)比、復(fù)原、分析,可知清初算家沿用了《算法》中的三次冪方程解法,并基于中算傳統(tǒng)的圖解方式對(duì)此算法作了“重構(gòu)”與“創(chuàng)新”,又參考了《比例》卷32“未知法”中源自《少廣拾遺》第一廉汎積的“次商廉法”的求解方式,才構(gòu)造出了這套新的帶有程序化、機(jī)械化特征的高次冪方程解法。
《比例》卷32 的高次冪開方算法(“未知法”)(xn=a)、卷33 的高次冪方程解法(axn±bxm=c)的來源如圖8。 雖然卷32 中的三次冪開方算法源自《總綱》,卷33 中的三次冪方程解法源自《算法》,但是,將這兩個(gè)算法改編成一套程序化、機(jī)械化的算法流程,并將其拓展、適用于更高次冪的工作應(yīng)是清初算家“會(huì)通中西”的一個(gè)創(chuàng)造性成果,并非單獨(dú)源自中、西二者之一。
圖8 《比例》卷32、33 開方法來源分析
值得反思的是,《算法》中的高次冪開方算法和高次冪方程解法原本并非全書的重點(diǎn)內(nèi)容①其一,安多盡量使用開平方、開立方的“換元法”來解決這些開方問題。 其二,在“借未知數(shù)—列式—化簡(jiǎn)—開方”這一運(yùn)算流程中,簡(jiǎn)單問題經(jīng)過“化簡(jiǎn)”步驟后便能直接得到最終結(jié)果,只有復(fù)雜問題(即化簡(jiǎn)后等式為xn=a 或axn±bxm=c)才會(huì)涉及這些算法。 其三,在《算法》的刪減本《借根方算法節(jié)要》中,安多僅刪減了對(duì)高次冪開方算法的介紹。 其四,傅圣澤在介紹《阿爾熱巴拉新法》時(shí),介紹了西方代數(shù)學(xué)的符號(hào)表示法、等式的概念,唯獨(dú)沒有介紹開方算法。,但為何清初算家要在《比例》中稱贊“借根方比例法中,開各乘方為最要”,并做這般創(chuàng)造性的改進(jìn)工作呢? 究其原因:
其一,開方算法一直以來都是中國(guó)傳統(tǒng)數(shù)學(xué)最為擅長(zhǎng)的運(yùn)算法則之一。 從《九章算術(shù)》首次給出開平方法與開立方法,到《孫子算經(jīng)》對(duì)開方算法“超位退位定位”的改進(jìn)……到南宋的賈憲給出了“增乘開方法”,以及劉益、秦九韶等人對(duì)“增乘開方法”的改進(jìn),可見開方算法在中國(guó)本就有深厚的土壤基礎(chǔ)。
其二,康熙對(duì)開方算法有較高的關(guān)注度。 在面對(duì)傅圣澤(Jean-Fran?ois Foucquet,1665—1741)的“新代數(shù)學(xué)”(符號(hào)代數(shù))時(shí),康熙非但沒有理解這些數(shù)學(xué)知識(shí)的重要意義,在評(píng)價(jià)傅圣澤的“算法平平”時(shí),他還不忘轉(zhuǎn)而稱贊《算法》中的開方算法([6],頁25)。當(dāng)?shù)弥餮笕舜鬟M(jìn)賢(Ignatius Kgler,1680—1746)帶來了“簡(jiǎn)單講述小計(jì)算之書幾小本”[19]時(shí),他也非常關(guān)注“此等人尚有新好法,或有簡(jiǎn)便計(jì)算數(shù)表,開方方法,即繕寫帶給朕”[19]。 由此可見康熙對(duì)開方算法的重視。
其三,與“西學(xué)中源”說相吻合。 自康熙在《御制三角形推算法論》中明確提出“西學(xué)中源”說后[20],歷算學(xué)家通常會(huì)以此學(xué)說為基礎(chǔ),將西學(xué)納入中算傳統(tǒng)。 《數(shù)理精蘊(yùn)》在開篇就描繪了中國(guó)古代典籍西傳之圖景([2],上編卷1 頁10),清初算家更是在書中稱西方的比例算法乃中算傳統(tǒng)之質(zhì)言([2],下編卷3 頁3)……加之康熙曾稱“阿爾朱巴爾,傳自東方之謂也”[21](阿爾朱巴爾,algebra 音譯,即指《算法》),這些宮廷數(shù)學(xué)家自然要將此觀點(diǎn)付諸實(shí)踐,在卷32“未知法”后接“蓋本法”的行為就是一種體現(xiàn)。
相較于西方算法,《比例》卷32 中的高次冪開方算法(“未知法”)和卷33 中的高次冪方程解法不僅可以使用中算傳統(tǒng)術(shù)語進(jìn)行表達(dá),它們還帶有中算傳統(tǒng)的程序化、機(jī)械化特征,展現(xiàn)了“中源”的影子,尤其是清初算家對(duì)“未知法”本貌的推測(cè),更是建立了西方算法與梅文鼎《少廣拾遺》之間的聯(lián)系。 此外,因?yàn)榍宄跛慵业膭?chuàng)造性工作,它們還可以處理更大數(shù)值和更高次冪。 相較于中算傳統(tǒng),由于借鑒了《算法》“數(shù)表”中的數(shù)值,《比例》卷32 的高次冪開方算法(“未知法”)和卷33 的高次冪方程解法可以在確保計(jì)算準(zhǔn)確性的前提下,省略大量計(jì)算步驟,使算法流程甚是簡(jiǎn)捷。 總之,清初算家的會(huì)通行為無疑對(duì)中算傳統(tǒng)的發(fā)展以及中西文化的交流都具有積極意義。