郭園園
(上海交通大學(xué)人文學(xué)院科學(xué)史與科學(xué)哲學(xué)系,上海 200240)
從花拉子米(al-Khwārizmi,約780 ~ 約 850)到阿爾·卡西(al-Kāshi,約 1380 ~1429)600余年的時(shí)間里,中世紀(jì)的阿拉伯?dāng)?shù)學(xué)家們?nèi)〉昧溯x煌的成果。阿爾·卡西是阿拉伯?dāng)?shù)學(xué)史晚期最著名的數(shù)學(xué)家之一,《算術(shù)之鑰》為其代表作,其內(nèi)容包括算術(shù)、代數(shù)和幾何,幾乎涵蓋了當(dāng)時(shí)所有的數(shù)學(xué)分支,堪稱一本初等數(shù)學(xué)大全,除了滿足一般學(xué)生的需求外,對(duì)于從事實(shí)際工作的讀者,如天文學(xué)家、測(cè)量員、建筑師、商人等也有幫助。該書分5卷,分別為:第1卷、整數(shù)的算術(shù);第2卷、分?jǐn)?shù)的算術(shù);第3卷、天文學(xué)家的計(jì)算法(六十進(jìn)制數(shù)碼的算術(shù));第4卷、圖形的度量;第5卷、用還原與對(duì)消及雙假設(shè)法等方法求解未知數(shù)。一方面由于阿拉伯世界地處中西交匯之處,包括《算術(shù)之鑰》在內(nèi)的眾多阿拉伯?dāng)?shù)學(xué)經(jīng)典中都包含了明顯的東西方古老文明的痕跡;另一方面由于在中世紀(jì)阿拉伯帝國晚期,蒙古帝國的迅速崛起客觀上提供了中國與阿拉伯地區(qū)間進(jìn)一步交流的可能性,這些都有可能帶來中阿數(shù)學(xué)知識(shí)的交流與傳播,所以《算術(shù)之鑰》與中算相似問題的比較研究一直是研究的熱點(diǎn)問題。但是由于語言和史料的原因,國內(nèi)學(xué)者長期依賴于國外二手文獻(xiàn);而國外的阿拉伯?dāng)?shù)學(xué)史工作者又缺乏對(duì)中算相對(duì)全面系統(tǒng)的了解,因此以往就此問題的研究往往只是就幾個(gè)“散點(diǎn)”進(jìn)行分析,還有很大的研究空間。本文作者從解讀《算術(shù)之鑰》的阿拉伯文本獻(xiàn)入手,在前人的研究基礎(chǔ)上對(duì)其與中算相似的高次開方等問題進(jìn)行了進(jìn)一步的探討。
阿爾·卡西(全名 Ghiyāth al-Dīn Jamshīd Mas'ūd al-Kāshī,或 al-Kāshānī),生于卡尚(Kāshān,位于今伊朗),1429年6月22日卒于撒馬爾罕(Samarkand,位于今烏茲別克斯坦),天文學(xué)家、數(shù)學(xué)家??ㄎ鞒錾鷷r(shí)正逢帖木兒(Timur,1336~1405)帝國迅速崛起階段,由于連年的征戰(zhàn)和帖木兒生前所推行鐵血的軍事政策導(dǎo)致帝國內(nèi)的經(jīng)濟(jì)嚴(yán)重衰退,因此卡西從小便生活于貧困之中。與其他的中世紀(jì)科學(xué)家類似,卡西也是將其科學(xué)著作獻(xiàn)給君主或權(quán)貴以獲得經(jīng)濟(jì)上的資助。盡管卡西另有一份醫(yī)生的職業(yè),但是他仍將大部分的時(shí)間和精力用于數(shù)學(xué)與天文學(xué)的研究上。
撒馬爾罕是中亞的一座古城,它后來成為帖木兒帝國的首都,沙魯克(Shāh Rukh,帖木兒之子)及其子烏魯伯格(Ulugh Beg,1394~1449)成為該城的統(tǒng)治者。烏魯伯格本身就是一位偉大的科學(xué)家,精通天文,而且是科學(xué)、藝術(shù)的倡導(dǎo)者與保護(hù)人,并且試圖將撒馬爾罕建設(shè)成為一個(gè)巨大的文化中心。事實(shí)上,直至1449年烏魯伯格被暗殺,在四分之一個(gè)世紀(jì)的時(shí)間里它成為東方最重要的科學(xué)中心。經(jīng)過一段時(shí)間徘徊之后,卡西最終在撒馬爾罕找到了自己的歸宿,并成為烏魯伯格最親密的合作伙伴和顧問。盡管卡西在來到撒馬爾罕之前就已經(jīng)完成了一些較好的著作,但是他最優(yōu)秀的作品還是在撒馬爾罕完成的。1424年7月,他完成了《論圓周》(Risāla al-mu.hit.iyya,“The Treatise on the Circumference”),書中體現(xiàn)了卡西非凡的運(yùn)算能力,他將2π的值精確地推算到小數(shù)點(diǎn)后十六位;1427 年3 月2 日,他完成了《算術(shù)之鑰》(Miftāh al-hisāb,“The key of Arithmetic”);他的第三本著作《論弦與正弦》(Risāla al-water wa'l-jaib,“The Treatise on the Chord and Sine”)完成的確切時(shí)間未知,在此書中卡西將sin1°的值推算到與其計(jì)算π相同的精度。
由于《算術(shù)之鑰》是中世紀(jì)晚期質(zhì)量很高的一本數(shù)學(xué)著作,因此在數(shù)百年的時(shí)間里它被反復(fù)傳抄。《算術(shù)之鑰》的阿拉伯文手稿現(xiàn)分別保存于圣彼得堡、柏林、巴黎、萊頓、倫敦、伊斯坦布爾、德黑蘭、麥?zhǔn)驳?伊朗)、巴特那(印度)、蘭布爾(印度)、白沙瓦(巴基斯坦),其中最重要的手稿分別位于圣彼得堡(Publ.Bibl.131)、萊頓(Univ.185)、柏林(Preuss.Bibl.5992 和 2992a,及 Inst.Gesch.Med.Natur.I.2)、巴黎 (BN.5020)、倫敦(BM.419)和印度(Office 756)[1]。
1888年,伊朗學(xué)者將卡西的著作搜集整理成書(Majmū)并于次年出版,其中包括《算術(shù)之鑰》。據(jù)編輯者指出其使用了相關(guān)的五個(gè)手稿,但是主要依據(jù)萊頓手稿;1954年蘇聯(lián)學(xué)者將此版本譯為俄文并出版①Al-Kashi,Mathematicheskie traktaty.B A Rosenfeld(trans).Rosenfeld and A PYouschkevitch(eds).Moscow∶Istorikomatematicheskie issledovaniya,Volumu VII,1954.其中《算術(shù)之鑰》俄文譯文位于13~326頁.;1956年蘇聯(lián)學(xué)者又將其中的《算術(shù)之鑰》及《論圓周》兩本書編訂成合集出版②Al-Kashi,Klyuch Arifemetiki;Traktat ob Okruzhnosti(The Key to Arithmetic;The Treatise on the Circumference).B A Rosenfeld(trans).Rosenfeldand.A P Youschkevitch(eds).Moscow∶Gosudarstvennoe Izdatel'stvo Tekhniko-teoreticheskoi Literatury,1956.其中《算術(shù)之鑰》俄文譯文位于7~262頁,《論圓周》的俄文譯文位于263~319頁,隨后是評(píng)注,最后位于428-568頁附有《算術(shù)之鑰》萊頓手稿的照片。拉希德認(rèn)為這不是一個(gè)權(quán)威版本([3],201頁)。;1968年,埃及學(xué)者以萊頓手稿為基礎(chǔ)出版了一個(gè)阿拉伯文版本并附有阿文評(píng)注[2],這也是本篇論文所使用的《算術(shù)之鑰》研究底本;1977年敘利亞學(xué)者也出版了一個(gè)阿拉伯文版本①Jamshid al-Kashi,Miftah al-Hisab(Key to Arithmetic).al-Nabulsi(eds).Damascus:Ministry of High Education,1977.。
對(duì)于《算術(shù)之鑰》的研究專著很少。德國數(shù)學(xué)史家勒基(P.Luckey,1884~1949)曾對(duì)其部分內(nèi)容進(jìn)行了翻譯和研究,并留有一本德文專著②P.Luckey,Die Rechenkunst bei Gamsid b.Masud al-Kasi[M].Wiesbaden:F.Steiner,1951.。法國數(shù)學(xué)史家拉希德(R.Rashed)結(jié)合七八十年代以來最新的阿拉伯?dāng)?shù)學(xué)史研究成果于1984年出版了一本法文版的關(guān)于阿拉伯算術(shù)和代數(shù)的專著③R.Rashed,Entre arithmetique atalgebra:recherchésur I'histoire desmathematiquesarabes.Paris:les Belles letters,1984.,其中對(duì)卡西的工作及其地位給出了新的評(píng)價(jià),1994年此書被譯為英文出版[3]。此外對(duì)于《算術(shù)之鑰》的研究性論文也不多,下文在相關(guān)內(nèi)容中會(huì)具體介紹。
高次開方問題在中算中起源于《九章算術(shù)·少廣章》開方術(shù),經(jīng)后世中算家逐漸發(fā)展,到宋代賈憲時(shí)已經(jīng)發(fā)展成一系列的成熟算法,這些內(nèi)容主要包括:增乘開方法、立成釋鎖開方法、無理根的近似算法、“開方作法本源”圖,以上內(nèi)容在《算術(shù)之鑰》中均有相似的內(nèi)容。下面按照《算術(shù)之鑰》中開方問題的行文順序首先就增乘開方算法進(jìn)行比較。
據(jù)錢寶琮考證,中算增乘開方法最早見于宋代賈憲所著《黃帝九章算法細(xì)草》,并著文[4]就賈憲增乘開立方法進(jìn)行詳細(xì)分析,此處不再展開。1948年,勒基首次提出《算術(shù)之鑰》中建立了開高次方的一般方法,與魯菲尼-霍納算法一致,由于卡西在書中并沒有講述此方法的來源,故認(rèn)為他的思想可能源于中國宋代賈憲的增乘開方法[5]。勒基的觀點(diǎn)曾長期占據(jù)主導(dǎo)地位,《算術(shù)之鑰》1956年俄文譯本的序言、1967年阿文版本的序言以及德克赫勒(A.K.Dakhel)的論文[6]中都重復(fù)了勒基的工作及結(jié)論([3],143頁)。但是隨著對(duì)12世紀(jì)阿拉伯?dāng)?shù)學(xué)家薩馬瓦爾(al-Samaw'al,約1130~約1180)的研究④目前薩馬瓦爾的主要相關(guān)著作有兩本:一本是《代術(shù)珍寶》,1972年由S.Ahmd和R.Rashed共同校訂出版,其為阿拉伯文版并附有法文簡介,即參考文獻(xiàn)[11];另外一本是名為al-Qiwami fi al-Hisab al-Hindi(1172~1173)的有關(guān)印度算術(shù)的著作,此書全文已經(jīng)遺失,但是其第3卷的手稿得以保存,見([3],143頁)。,《算術(shù)之鑰》中的高次開方、無理根的近似逼近以及算術(shù)三角形都可以在其中找到相同的內(nèi)容,有些內(nèi)容甚至可以直接追溯到10世紀(jì)阿拉伯?dāng)?shù)學(xué)家凱拉吉(al-Karaji,953~約1029)。
國內(nèi)的研究,1966年,杜石然先生在俄文譯本的基礎(chǔ)上比較了兩種算法,并指出:“……把阿爾·卡西的開方法與宋元時(shí)期的增乘開方法相比較,便可以很明顯地看出期間的每一步驟完全相同……,我們認(rèn)為,這種算法很可能是受到了中國宋元數(shù)學(xué)的直接影響”[7]。文中僅就《算術(shù)之鑰》第1卷第5章中所載的開方法與宋元增乘開方法做了比較,但是譯文不全,且在《算術(shù)之鑰》第2卷、第3卷中對(duì)開方問題還有大量詳細(xì)的術(shù)文,所以就此尚需進(jìn)一步的研究。1984年,杜石然先生在另一篇文章中簡要重復(fù)了以往的觀點(diǎn),并沒有給出新的論證:“對(duì)al-Kashi《算術(shù)之鑰》的研究可以證實(shí)書中的算法與賈憲所用的增乘開方法幾乎完全相同,……看來似乎可以肯定,在al-Kashi的著作中確實(shí)存在著中國數(shù)學(xué)的影響”[8]。
《算術(shù)之鑰》中的開方問題位于第1卷第5章(整數(shù)的開方)、第2卷第10章(分?jǐn)?shù)的開方)和第3卷第5章(六十進(jìn)制數(shù)碼的開方),前三卷占到全書篇幅的三分之一,相當(dāng)于基礎(chǔ)的算術(shù)知識(shí)??梢钥闯鲩_方運(yùn)算在當(dāng)時(shí)僅是作為數(shù)學(xué)基礎(chǔ)知識(shí),算不上是較難的內(nèi)容。在第1卷第5章中,卡西先后給出了“乘方”與“方根”的定義、乘方的名稱及乘方次數(shù)與名稱之間的互化關(guān)系。這里需要注意一點(diǎn),當(dāng)時(shí)的阿拉伯?dāng)?shù)學(xué)家對(duì)于較高次冪的乘方名稱是通過“平方”與“立方”的累加來實(shí)現(xiàn)的,例如:今天的“四次方”在當(dāng)時(shí)記為“平方平方”、“五次方”記為“平方立方”、“六次方”記為“立方立方”等。隨后卡西指出如果某乘方能夠得出某開方冪指數(shù)下準(zhǔn)確的方根,則此乘方為有理數(shù);反之為無理數(shù)。接下來為了便于表述運(yùn)算過程,文中給出了有理數(shù)位和無理數(shù)位的概念,例如現(xiàn)要求Z+),則從a的個(gè)位起,其第(nk+1)(K∈N)數(shù)位稱為其有理數(shù)位,剩余的數(shù)位全部為其無理數(shù)位。隨后便是開平方與開高次方的具體方法并分別給出一道例題加以說明。與中算不同的是,卡西并沒有將開立方單獨(dú)列出,這主要是由于開平方與開高次方均是由增乘開方法統(tǒng)一起來,對(duì)此卡西在高次開方的一般方法后指出:
上面的方法(開高次方方法)同樣適用于求平方根,但是在本章的前面將其單獨(dú)列出有助于初學(xué)者理解。([2],67頁)
下面是卡西對(duì)于開高次方一般方法的敘述:
開高次方的情況:
首先寫出被開方的數(shù)字,同開平方方法一樣畫出表格。如前所述,從個(gè)位數(shù)字開始將被開方數(shù)分節(jié),其中每一節(jié)數(shù)字的個(gè)數(shù)等于所要求開方次數(shù)。在每兩節(jié)之間用雙縱線分隔開。其中每一節(jié)的第一個(gè)數(shù)位為被開方數(shù)的有理數(shù)位,剩余的數(shù)位稱為其無理數(shù)位。隨后在豎直方向分層,其層數(shù)等于開方次數(shù),在每兩層之間作出水平分割線。每一層寬度應(yīng)該由實(shí)際計(jì)算的需要決定。上面一行稱為“數(shù)行”,最下面一行稱之為“根行”,(根行)上方是“平方行”,再上方是“立方行”,這樣繼續(xù)下去一直到“數(shù)行”,“數(shù)行”之上也就是表格最上方是“結(jié)果行”。另外也可以將數(shù)行下面的一行稱為“第二行”,同理下面稱為“第三行”,這樣直至“根行”。
首先從最后一節(jié)開始,試求出最大的個(gè)位數(shù)字,可將其減去此數(shù)的乘方,即此個(gè)位數(shù)字開方次數(shù)的乘方。我們已經(jīng)將(九個(gè))個(gè)位數(shù)字分別從其平方到平方平方立方立方(十次方)的一系列乘方列在了另一個(gè)表格中,這樣便于求出上述數(shù)字。
如果找到了這個(gè)數(shù),則將其寫在結(jié)果行中最后一個(gè)有理數(shù)位上,另外還需寫在根行與其對(duì)應(yīng)的位置,隨后用上面的數(shù)字乘以下面的數(shù)字,將結(jié)果即此數(shù)的平方寫在平方行,其個(gè)位數(shù)字與根行中的個(gè)位數(shù)字對(duì)齊,(這幾個(gè)數(shù)字的個(gè)位均)位于最后一個(gè)有理數(shù)位所在列上,如果(剛才的乘積)有十位,則寫在(左側(cè))另外一列上。
隨后用上面的數(shù)字乘以平方行中的數(shù)字,將所得的結(jié)果即(結(jié)果行中數(shù)字的)立方寫在立方行中,剩余的過程如上,這樣一直計(jì)算到第二數(shù)行,此時(shí)得到的各行中的結(jié)果實(shí)際上就是此數(shù)的一系列連續(xù)不同次數(shù)的乘方。
用上面的數(shù)字乘以第二數(shù)行中的數(shù)字,得到的結(jié)果是此數(shù)開方次數(shù)的乘方,隨后用數(shù)行中對(duì)應(yīng)的數(shù)字將其減去;接下來為了得到第二數(shù)行中的結(jié)果,用上面的數(shù)字再次加到根行中的數(shù)字上;隨后用上面的數(shù)字乘以此時(shí)根行中的和,將結(jié)果加到上方的平方行中;隨后同樣用上方的數(shù)字乘以平方行中的和,將結(jié)果加到立方行①原阿拉伯語萊頓手稿中為平方行,應(yīng)改為立方行,參考文獻(xiàn)[2]已將其改正。,這樣直至加到第二數(shù)行。此時(shí)為了得到第三數(shù)行中的結(jié)果,再次用上面的數(shù)加到根行中的數(shù)字上;隨后用上面的數(shù)字乘以根行中的結(jié)果,將其加到上面一行,這樣一直到第三數(shù)行結(jié)束。
為了得到第四數(shù)行中的結(jié)果,第三次用上面的數(shù)加到根行中的數(shù)上。重復(fù)這樣的過程,直至進(jìn)行到根行,即用上面的數(shù)字加上最后根行中的數(shù)字。隨后將第二數(shù)行中的數(shù)字向右移動(dòng)一位,將第三數(shù)行中的數(shù)字(向右)移動(dòng)兩位,下一行移動(dòng)三位,依此下去直至根行結(jié)束,即根行在數(shù)行下幾層,就應(yīng)向右移動(dòng)幾位,最后根行中個(gè)位數(shù)字應(yīng)與數(shù)行中最后一個(gè)有理數(shù)位前面一個(gè)有理數(shù)位的前面一位數(shù)字對(duì)齊(即第二節(jié)中的十位)。
這種方法就是將上面的數(shù)字分別乘以每一行中的數(shù)字,把結(jié)果加到上面一行,最后再用數(shù)行中的數(shù)將此結(jié)果減去。對(duì)于每一行的乘法運(yùn)算與其中一個(gè)乘數(shù)是個(gè)位數(shù)字的乘法運(yùn)算相同。隨后將結(jié)果加到上一行中的數(shù)字上,使其個(gè)位與上面的乘數(shù)對(duì)齊,即位于上方此節(jié)的第一列中,在此之前要在二者之間作出分割線用以表示線下方的數(shù)字將被擦去;但是在數(shù)行中不是如此,在數(shù)行中將乘積寫在(被開方)數(shù)之下,然后將它從其中減去,在下方寫上二者的差,在此之前要在二者之間做一條分割線用以表示在線以上的部分將被擦去。
此時(shí)對(duì)于數(shù)行中分割線以下剩余數(shù)字的處理方式同前,在數(shù)行中的運(yùn)算方向應(yīng)該是由上至下,而剩余的行中的運(yùn)算方向則是由下至上。隨后由數(shù)字一開始再次尋找最大的個(gè)位數(shù)字(即次商),將其寫在結(jié)果行最后一個(gè)有理數(shù)位的前面一個(gè)有理數(shù)位上(即第二節(jié)的個(gè)位數(shù)字),同時(shí)寫在下面根行中分隔線上方已有數(shù)字的右邊一位上。用它乘以根行中數(shù)字,將結(jié)果加到平方行中,隨后用上面的數(shù)字同樣乘以平方行中的和,將結(jié)果加到立方行中。
這樣一直下去直至第二數(shù)行,接下來用上面的數(shù)字(即次商)乘以此行中的數(shù)字和,并按照前面所述的方法用數(shù)行中對(duì)應(yīng)的數(shù)字將結(jié)果減去。減法運(yùn)算之后,將上面的數(shù)字加到根行中分割線之上的數(shù)字,隨后按照前面的方法逐行運(yùn)算,并將各行中的數(shù)字進(jìn)行移動(dòng)。如果沒有這樣的數(shù)字(即次商),則在表格上方前面提到的數(shù)位上寫零,并將所有行中的數(shù)字再次進(jìn)行移動(dòng)。然后按照上面的方法繼續(xù)運(yùn)算,直至(計(jì)算到被開方數(shù)的)第一位。隨后按照前面的方法將結(jié)果從數(shù)行中減去,如果在數(shù)行中分割線下方?jīng)]有剩余數(shù)字,則此要求的(被開方)數(shù)為有理數(shù),結(jié)果行中的數(shù)字即為其方根。([2],66~67頁)
對(duì)此書中給出了一道求例題,即求44,240,899,506,197的平方立方根(即五次方根),書中的演算過程如下②此數(shù)表見參考文獻(xiàn)[2],69頁;筆者僅將其中的阿拉伯文及東阿拉伯?dāng)?shù)碼進(jìn)行翻譯,表格的排列順序未作修改。:
?536結(jié)果行442408995061973125求平1299方105695493立方24213502根的2421350206176數(shù)行214126949580809136590384403558367696903431769639452405第二39452405行4220574或平35231831方平3981831方行31253125250062515399065601714149615227650641704544815057196161694961614887701488770第81912三1406858行或79581立方1327277行7727712501250750500375125
續(xù)表
在《算術(shù)之鑰》第3卷第5章中對(duì)于六十進(jìn)制數(shù)碼的開方問題給出了類似的詳盡算法并附有一道開平方、一道開立方和一道開立方立方(即六次方)問題,下面以開立方問題為例進(jìn)行說明,現(xiàn)要求:18,52;59,43,51,25①卡西在《算術(shù)之鑰》中為了表述六十進(jìn)制數(shù)碼或是十進(jìn)制小數(shù),通常數(shù)字后加上一個(gè)單位名稱用以表示最后一位數(shù)字的單位。例如此處卡西在數(shù)字25之后加上單位名稱“,即表示25 的單位為“60-4”,其前面的數(shù)字單位依次類推。的立方根,演算數(shù)表如下②見參考文獻(xiàn)[2],119頁.筆者僅對(duì)數(shù)表中的阿拉伯文進(jìn)行翻譯,并未改變數(shù)表的排列順序。:
?30秒 25分 10度 求立方根60-6 60-5 60-4 60-3 秒 分 度 601數(shù)行2551435952184016122255016102265342203022265342203020000
續(xù)表
通過觀察不難發(fā)現(xiàn)對(duì)于第1卷整數(shù)中的開方問題和第3卷六十進(jìn)制數(shù)碼的開方問題在具體演算過程中有三點(diǎn)不同:
(1)對(duì)于整數(shù)的開方問題利用的是印度數(shù)碼①卡西所使用的印度數(shù)碼我們習(xí)慣上稱之為東阿拉伯?dāng)?shù)碼,其對(duì)應(yīng)的1~9九個(gè)數(shù)字的書寫分別為:,今天的東阿拉伯?dāng)?shù)碼中的零用點(diǎn)來表示,卡西當(dāng)時(shí)用空心小圓圈來表示數(shù)字零。東阿拉伯?dāng)?shù)碼為當(dāng)今阿拉伯世界的通用數(shù)碼。進(jìn)行書寫,其書寫順序與今天國際通用的阿拉伯?dāng)?shù)碼書寫順序相同,因此開方順序也是從左至右進(jìn)行;而六十進(jìn)制數(shù)碼則是利用按照閃語字母表順序排列的阿拉伯語字母表示②閃語,是古代美索不達(dá)米亞語言的一個(gè)支系,當(dāng)時(shí),說這種語言的有好幾個(gè)民族,阿拉伯人、以色列人和埃塞俄比亞人,現(xiàn)代阿拉伯語由閃語演化而來。1~9九個(gè)數(shù)碼分別對(duì)應(yīng)于字母;10~60整十的6個(gè)數(shù)碼分別對(duì)應(yīng)于字母,剩余的數(shù)碼為這些字母的組合。,書寫及運(yùn)算方向與前者恰好相反;
(2)六十進(jìn)制數(shù)碼開方過程中的被開方數(shù)及結(jié)果行中方根的每一數(shù)位上的數(shù)碼均需加上單位名稱加以區(qū)分??ㄎ髟谒惴ㄐg(shù)文中指出,方根中“度”數(shù)位必須與被開方數(shù)中“度”數(shù)位對(duì)齊,其余數(shù)位上的單位則要按照連續(xù)上升或者下降的單位名稱進(jìn)行書寫。而對(duì)于十進(jìn)制整數(shù)數(shù)碼的開方過程則沒有任何單位名稱,由此可知一方面對(duì)于十進(jìn)制數(shù)碼開方運(yùn)算過程中每一位上的單位很容易確定,故沒有必要將其寫出;另一方面被開方數(shù)中的個(gè)位數(shù)字必須與方根中的個(gè)位數(shù)字對(duì)齊,且結(jié)果行中數(shù)字盡管相離較遠(yuǎn),但是其單位名稱是連續(xù)變化的,如上面開五次方的例題中,結(jié)果行中數(shù)字5位于百位,3位于十位,6位于個(gè)位;
(3)無論是哪一種開方運(yùn)算,本質(zhì)上是一種“增乘”的過程,對(duì)于印度數(shù)碼的乘法運(yùn)算可以進(jìn)行心算,而六十進(jìn)制數(shù)碼的乘法運(yùn)算需要借助于六十進(jìn)制數(shù)碼乘法表。盡管有這幾點(diǎn)不同,但是本質(zhì)上第1卷與第3卷中的兩種算法是一致的。
下面我們來比較《算術(shù)之鑰》與宋代賈憲增乘開方算法的異同:
兩者的相同點(diǎn)都是在開方過程中采用隨乘隨加的機(jī)械化算法來構(gòu)造減根方程,其算法核心是相同的。不同之處在于形式,主要有三點(diǎn):
(1)與《算術(shù)之鑰》相比,賈憲在算法的表述上過于“簡略”,不過這也是中算傳統(tǒng)中“寓理于算”的體現(xiàn);卡西的表述十分詳盡,對(duì)于從來沒有接觸過“增乘”開方的初學(xué)者很容易理解和掌握;同時(shí)為了便于表述,作者還引入了大量的術(shù)語,此部分內(nèi)容置于書中開頭的基礎(chǔ)知識(shí)部分,更說明這種算法在當(dāng)時(shí)早已有之,應(yīng)當(dāng)具有一定的流傳廣度;
(2)卡西將所有的開方過程體現(xiàn)在一張數(shù)表之上,在這點(diǎn)上不僅與中算不同,甚至與其早期的阿拉伯?dāng)?shù)學(xué)傳統(tǒng)均不同,這在下文中還會(huì)繼續(xù)討論。正如卡西在述文中所說的那樣,不同行中水平分割線表示其上方或下方的數(shù)字將要保留或是將要擦去,把所有的過程體現(xiàn)在一張數(shù)表上是便于初學(xué)者理解掌握和重現(xiàn)計(jì)算過程有利于檢驗(yàn)運(yùn)算的正確性,當(dāng)然這是在紙張的普遍應(yīng)用之后才可能實(shí)現(xiàn)的;
(3)最重要的一點(diǎn),在中算“增乘”過程中算式排列的最下面一行是借算行,且每次求得的方根寫在與被開方數(shù)數(shù)位相同的位置上;而卡西在算式排列的最下面一行為一次項(xiàng)行,即中算中的倒數(shù)第二行,沒有借算行,且每次求得方根置于每一節(jié)的有理數(shù)位上,這些有理數(shù)位恰好是中算中“借算”所處的位置,即二者確定數(shù)位的作用是相同的。且在實(shí)際運(yùn)算過程中卡西的數(shù)碼排列方法反而會(huì)節(jié)省一行的空間。
事實(shí)上,12世紀(jì)的阿拉伯?dāng)?shù)學(xué)家薩馬瓦爾就已經(jīng)給出了與卡西相同的開高次方方法。薩馬瓦爾在其印度算術(shù)書al-Qiwāmī中同樣將按照閃語字母表順序排列的阿拉伯字母表示數(shù)字進(jìn)行高次開方,其書中的例題為:
求數(shù)字 0;0,0,2,33,43,3,43,36,48,8,16,52,30(30 的單位為 60-13)的平方立方根,解題過程的術(shù)文及數(shù)表如下①由于是對(duì)六十進(jìn)制數(shù)碼開方,故筆者認(rèn)為下列數(shù)表(參考文獻(xiàn)[3])的排列順序與原手稿的排列順序恰好相反。:
?第一行00023343343364881652300第五行第四行第三行第二行第一行0000
此時(shí)仔細(xì)觀察最左側(cè)有理數(shù)位上的數(shù)字,即度數(shù)位上的數(shù)字,其上為空位;隨后移至下一位有理數(shù)位上的數(shù)字43,現(xiàn)找出一個(gè)最大數(shù)字,能將其平方立方從此位數(shù)字及其高位數(shù)字(共同構(gòu)成的數(shù)字)中減去,得到6,將其寫在最高和最低兩行(的相應(yīng)有理數(shù)位上);隨后在六十進(jìn)制數(shù)碼乘法表中找出6(所對(duì)應(yīng)的行),用最高行數(shù)字乘以最低行數(shù)字,即6乘以6,將結(jié)果寫在第二行;接下來將最高行數(shù)字(6)乘以第二行的結(jié)果,將結(jié)果加到第三行;隨后將最高行數(shù)字(6)乘以第三行的結(jié)果,將結(jié)果加到第四行;最后將最高行數(shù)字與第四行數(shù)字的乘積從第五行(對(duì)應(yīng)的數(shù)字)中減去,
得到下表:
?第一行0600第五行24734336488165230第四行2136第三行336第二行36第一行0600
一旦完成了十四步運(yùn)算,并且把結(jié)果記錄下來,那么這四行的運(yùn)算便結(jié)束。([3],92~93頁)
通過上面的敘述可以發(fā)現(xiàn),這種算法應(yīng)當(dāng)是當(dāng)時(shí)的數(shù)學(xué)家們頻繁使用的,而不是薩馬瓦爾的獨(dú)創(chuàng)。幸運(yùn)的是在手稿的前幾頁有一道關(guān)于求數(shù)字6五次冪的題目中薩馬瓦爾詳盡敘述了這“十四步”運(yùn)算。在計(jì)算完數(shù)字6的連續(xù)次冪后,他給出了下面的術(shù)文及一張數(shù)表:
將右側(cè)的數(shù)字6加到左側(cè),則左側(cè)數(shù)字變?yōu)?2;接下來將右側(cè)的數(shù)字6乘以左側(cè)的12,得到1,12,并將其加到第二行得到1,48;將右側(cè)的數(shù)字6乘以第二行數(shù)字1,48,將結(jié)果加到第三行得到14,24;將右側(cè)的數(shù)字6乘以第三行數(shù)字,并將結(jié)果加到第四行,得到1,48,0,此時(shí)最終得到第四行的數(shù)字。
將右側(cè)數(shù)字6加到左側(cè)得到18;將右側(cè)數(shù)字6乘以左側(cè)的18,得到1,48,隨后加到第二行得到3,36;將右側(cè)數(shù)字6乘以第二行數(shù)字3,36,將結(jié)果加到第三行,得到36,0,此時(shí)最終得到第三行數(shù)字。
將右側(cè)數(shù)字6加到左側(cè)數(shù)字18上,得到24;隨后將右側(cè)數(shù)字6乘以左側(cè)數(shù)字24,并將結(jié)果加到第二行數(shù)字3,36上,得到6,0,此時(shí)最終得到第二行數(shù)字。
將右側(cè)數(shù)字6加到左側(cè)數(shù)字24上,最終得到30。([3],95頁)
第一行 第二行 第三行 第四行 第五行 行①5thx1=6 x21=36 x31=3,36 x41=21,36 x51=2,9,3664th 2x1=123x21=1,484x31=14,245x41=1,48,03rd 3x1=186x21=3,3610x31=36,02nd 4x1=2410x21=6,01st 5x1=30
接下來,我們回到前面的開方過程,薩馬瓦爾給出了如下數(shù)表([3],97頁):
?第一行0600第五行24734336488165230第四行148第三行36第二行6第一行03000
隨后薩馬瓦爾指出通過移動(dòng)四行中的數(shù)字得到新數(shù)表,如下所示([3],97頁):
隨后進(jìn)行第二次估根,盡管相對(duì)于第一次估根要困難一些,但是薩馬瓦爾沒有進(jìn)一步的評(píng)述,便得到數(shù)字12,并在同一頁手稿中給出了下面兩個(gè)數(shù)表([3],98~99頁):
?第一行06120第五行11441394056165230第四行1552638294536第三行3713122848第二行66224第一行3012第一行06120第五行11441394056165230第四行23810448第三行39431648第二行62424第一行3100
不幸的是,手稿接下來的部分殘缺了,通過前面的算法最終可以得到結(jié)果為:0;6,12,30。
從薩馬瓦爾開方過程中算法原理、術(shù)語表述、數(shù)碼排列的特點(diǎn)來看,卡西都很好地繼承了早期阿拉伯?dāng)?shù)學(xué)家們的傳統(tǒng)。主要的區(qū)別在于卡西將所有的開方過程整合到一張數(shù)表之中,薩馬瓦爾給出了一系列分散的數(shù)表,這種算法顯然適用于當(dāng)時(shí)的土板算法;而從卡西的敘述來看,他恰好處于土板算法到紙張算法的過渡階段。從現(xiàn)有史料來看,卡西《算術(shù)之鑰》中關(guān)于開高次方的增乘算法更多的體現(xiàn)了早期的阿拉伯?dāng)?shù)學(xué)傳統(tǒng),并非受到中算直接的影響。接下來按照《算術(shù)之鑰》的行文順序討論開方問題中無理根的近似算法。
在開方運(yùn)算中并不是每一個(gè)被開方數(shù)都可以開盡。一般情況下,按照減根變換的方法求某整數(shù)的方根,運(yùn)算至個(gè)位時(shí)如果在被開方數(shù)中有剩余數(shù)字,即此方根為不盡方根便產(chǎn)生了無理根的近似算法。中國早在《九章算術(shù)·少廣章》開方術(shù)中就對(duì)此有論述,術(shù)文曰:
若開之不盡者,為不可開,當(dāng)以面命之。
劉徽注文曰:
術(shù)或以借算加定法而命分者,雖粗相近,不可用也。凡開積為方,方之自乘當(dāng)還復(fù)其積分,令不加借算而命分,則常微少;其加借算而命分,則又微多。其數(shù)不可得而定。故惟以面命之,為不失耳。[9]
在劉徽《詳解九章算法》之后附錄的《九章算法纂類》中關(guān)于賈憲開方術(shù)的術(shù)文中,均為“實(shí)除盡”的情形,對(duì)此沒有說明。但是從宋元時(shí)期其他的相關(guān)著作來看,加“借算”這種傳統(tǒng)始終存在,相當(dāng)于若a=rn+t,則
卡西在《算術(shù)之鑰》第1卷第5章高次開方的一般方法之后給出了與中算類似的無理根近似算法:
如果有剩余數(shù)字,則此數(shù)為無理數(shù),數(shù)行中的剩余數(shù)字為(方根中分?jǐn)?shù)部分的)分子。而作為這個(gè)分?jǐn)?shù)的傳統(tǒng)近似分母應(yīng)該是所得結(jié)果的開方次數(shù)的乘方與所得結(jié)果加一之和的開方次數(shù)的乘方之差。
隨后按照上面的方法計(jì)算處理第一個(gè)有理數(shù)位上的數(shù)字(即將方根中的個(gè)位數(shù)字逐行增乘),直至(將各行中的數(shù)字)移位(之前),最后將數(shù)行之下各行中分隔線以上的數(shù)字之和再加一,此數(shù)恰為前面所要求的兩個(gè)乘方之差,即傳統(tǒng)分母。([2],67頁)
卡西按照此方法處理上述五次開方問題的結(jié)果,他將最后各層中分隔線以上的數(shù)字重新列表,以及運(yùn)算的分?jǐn)?shù)結(jié)果如下所示①見參考文獻(xiàn)[2],71頁。筆者僅將數(shù)表中的阿拉伯文及東阿拉伯?dāng)?shù)碼進(jìn)行翻譯,數(shù)表的排列順序未作修改。:
最后得到方根的結(jié)果,如下所示:
536
21
414237740281①卡西在《算術(shù)之鑰》中表示分?jǐn)?shù)時(shí),如果有整數(shù)部分,則將其寫在最上面一行,以下依次為分子和分母;整數(shù)為零時(shí),有時(shí)被省略。則上述結(jié)果相當(dāng)于:
顯然卡西的這種不盡方根的近似算法與劉徽注中加“借算”的方法完全相同,只不過此時(shí)卡西已將其運(yùn)用到任意高次冪。此外卡西明確指出這個(gè)分?jǐn)?shù)的分母是“所得方根的開方次數(shù)的乘方與方根加一之和的同次數(shù)乘方之差”,這里面有三層含義:第一,卡西認(rèn)為開分運(yùn)算的本質(zhì)就是求兩個(gè)連續(xù)乘方的差;第二,上述的增乘算法恰好可以構(gòu)造出這兩個(gè)連續(xù)乘方之差;第三,這種近似算法的原理是進(jìn)行線性插值。
我們注意卡西在術(shù)文中將加“借算”的分母稱為“傳統(tǒng)分母”,說明此法早已有之。R.Rashed指出,事實(shí)上這種不太精確的近似方法在凱拉吉和薩馬瓦爾之前的阿拉伯?dāng)?shù)學(xué)家中使用較為普遍,他們僅將這種近似算法局限在求三次方根以內(nèi)。例如烏格里迪西(al-Uqlidisi,約920~約980)就在其書中對(duì)于開平方運(yùn)算給出過加“借算”的近似算法,即若:N=a2+r,則有:;阿爾·巴格達(dá)第(al-Baghdadi,約980~1037)將此近似算法應(yīng)用于開立方運(yùn)算,即若:N=a3+r,則有:[3],109 ~110頁)。
到了薩馬瓦爾時(shí),已將此算法應(yīng)用于任意次冪的開方近似運(yùn)算中。在薩馬瓦爾的印度算術(shù)著作al-Qiwāmī中,緊接著“增乘”算法后面,對(duì)于無理根的近似算法,他指出:
要求某數(shù)的平方根、立方根或是任意次方根,當(dāng)?shù)玫搅朔礁恼麛?shù)部分…如果此時(shí)(被開方數(shù))有剩余…現(xiàn)要得到一個(gè)較為精確的方根,則需將剩余的數(shù)字作為分子,將此開方次數(shù)下的系數(shù)乘以所得方根整數(shù)的不同次數(shù)的乘方,最后將所得的數(shù)字之和加1,此即為近似方根分?jǐn)?shù)部分中的分母。([3],134頁)
所以這就可能是為什么其后的阿拉伯?dāng)?shù)學(xué)家,如納西爾·丁·圖西(Nasir al-Din al-Tusi,1201~1274)及卡西在其各自的書中均將此加“借算”的分母稱為“傳統(tǒng)分母10”。顯然無論是中算家還是阿拉伯?dāng)?shù)學(xué)家都無法滿足于這種精度的不盡方根,因此產(chǎn)生了更為精確的近似算法。劉徽在《九章算術(shù)注》中曰:
不以面命之,加定法如前,求其微數(shù),微數(shù)無名者以為分子,其一退以十為母,其再退以百為母。退之彌下,其分彌細(xì),則朱冪隨有所棄之?dāng)?shù),不足言之也。
此處的“微數(shù)”,按照郭書春先生的觀點(diǎn)指的是細(xì)微的數(shù),即按照上述的開方程序,求既定的名數(shù)以下的部分。實(shí)際上是以十進(jìn)制分?jǐn)?shù)逼近無理根。([9],138頁)
在《算術(shù)之鑰》中也有類似的表述,只不過卡西不像劉徽那樣一口氣全盤托出,而是在上述的近似算法之后指出:
還有一種求無理乘方比較精確方根的方法,我們將其安排在下一章,因?yàn)檫@涉及
到分?jǐn)?shù)的相關(guān)知識(shí)。([2],73頁)
卡西將第二種相對(duì)更為精確的方法安排在第2卷中的分?jǐn)?shù)開方部分。下面來看兩種文明對(duì)于處理分?jǐn)?shù)開方問題的相關(guān)內(nèi)容。
在中算里,這點(diǎn)同樣可以追溯到《九章算術(shù)·少廣章》,術(shù)文曰:
若實(shí)有分者,通分內(nèi)子為定實(shí),乃開之。訖,開其母,報(bào)除。若母不可開者,又以母乘定實(shí),乃開之。訖,令如母而一。([9],133頁)
賈憲立成釋鎖平方法曰:
積有分子者,以分母乘其全,入內(nèi)子,又以分母再自乘之,開平方,求積,如分母自乘而一。([7],260頁)
在《算術(shù)之鑰》第2卷第10章分?jǐn)?shù)開方部分中,卡西給出了如下四種類型([2],95~96頁):
(1)對(duì)于分子分母都是有理數(shù)的分?jǐn)?shù)開方問題,用分子的方根除以分母的方根;
(2)但如果二者均沒有精確的方根,對(duì)于平方根,用分子乘以分母一次;求立方根,乘兩次;求平方平方根,乘三次;求平方立方根,乘四次,以此類推。隨后求出最后乘積的一個(gè)近似方根,并除以原來分?jǐn)?shù)的分母,此即為所求;
(3)如果分?jǐn)?shù)中帶有整數(shù),則可以按照前一卷中的算法,首先求出整數(shù)部分的方根大小,剩余的整數(shù)和分?jǐn)?shù)一起作為傳統(tǒng)分母的分子,隨后如前化簡;
(4)將整數(shù)部分化為分?jǐn)?shù)中的分子,然后按照前面的方法取其方根。
卡西所給的分?jǐn)?shù)開方方法本質(zhì)上與中算中的方法相同,不過卡西已經(jīng)將其推廣到任意高次冪的情況且更加系統(tǒng)化。接下來卡西給出了另一種類似《九章算術(shù)》劉徽注中“微數(shù)”算法相同的表述:
我們知道將任意一個(gè)數(shù)乘以某數(shù)(開方次數(shù))的乘方,隨后取乘積的方根,再除以此數(shù),則所得的結(jié)果比直接開方的結(jié)果更為精確,且所乘的乘方越大,結(jié)果越精確。因此對(duì)于任意的被開方數(shù),在開平方時(shí)可以乘以100;在開立方時(shí)乘以1000;在開平方或者平方平方時(shí)均可以乘以10000……在數(shù)字的右邊要額外加上一些數(shù)字0,如果是開平方則加上兩個(gè)0;如果是開立方,則加上三個(gè)0;如果是開平方平方,則要加上四個(gè)0。其中開方的次數(shù)應(yīng)當(dāng)為被開方數(shù)右側(cè)所增加0數(shù)目的約數(shù),且增加數(shù)目越多,結(jié)果就越精確。隨后將表格中加上0之后的數(shù)字開方,將所得的方根除以前面所乘乘方的方根,而在實(shí)際運(yùn)算中僅需要將原來被開方數(shù)字上方結(jié)果行中的數(shù)字視為(結(jié)果中的)整數(shù)部分,隨后用所增加0上面的結(jié)果乘以傳統(tǒng)分母,再將此乘積加上被開方數(shù)中剩余的數(shù)字。將得到的結(jié)果寫在前面整數(shù)的下方作為分子,在傳統(tǒng)分母的右側(cè)要加上數(shù)字0,其個(gè)數(shù)等于被開方數(shù)中增加0的上方結(jié)果行中所增加的數(shù)字位數(shù),即乘方中由于0的增加所增加方根數(shù)的位數(shù);或者按照若求平方根,則將增加0的個(gè)數(shù)取半;若求立方根,則取增加0的個(gè)數(shù)的三分之一;若求平方平方根,則取增加0的個(gè)數(shù)的四分之一,將其作為分母,最后如果分子分母中有公約數(shù)的話還要將其約去。([2],97頁)
卡西給出的例題是求145的平方根:
例題:現(xiàn)要求145的平方根,同前面一樣首先繪制表格,在結(jié)果行中得到數(shù)字十二,此時(shí)被開方數(shù)中剩余數(shù)字一,則其為無理數(shù)。
如果要求出更加精確的結(jié)果,則需要在數(shù)字的右邊加上偶數(shù)個(gè)零,此處加上四個(gè)0,并且為它們額外畫出四列,用另一種顏色加以區(qū)分,如下所示:
2 2461638440048①12041450000121
在被開方數(shù)上方的結(jié)果行中得到十二,將其作為結(jié)果中的整數(shù)部分;用數(shù)行中后來所增加數(shù)字0上方的數(shù)字,即4乘以傳統(tǒng)分母,即2409得到9636;隨后將其加上數(shù)行中剩余的數(shù)字,即384,得到10020,將其寫在分子的位置;隨后在傳統(tǒng)分母的右側(cè)
同樣也可以將增加的數(shù)字0上方結(jié)果作為(最后方根的)分子部分,但是此時(shí)的分母為原來被開方數(shù)所乘乘方的方根,即在數(shù)字1的右側(cè)增加幾個(gè)0,其個(gè)數(shù)等于結(jié)
果行中位于被開方數(shù)中增加的0上方所增加的數(shù)位位數(shù)。但是這樣得到的結(jié)果不如上面例題方法得到的結(jié)果精確。([2],98頁)
上文主要內(nèi)容恰好是中算里的“微數(shù)”算法,相當(dāng)于,這種方法在阿拉伯被稱為“零算法”。從9世紀(jì)開始,就有多位阿拉伯?dāng)?shù)學(xué)家開始使用這種方法來逼近無理平方根、立方根。例如與花拉子米同時(shí)代的Banu Musa(約805~873)就給的運(yùn)算表達(dá)式;烏格里迪西在其952年的著作al-Fusul中利用此法進(jìn)行開平方和開立方;巴格達(dá)第在其著作al-Takmila中利用此法進(jìn)行開立方,直至薩馬瓦爾才在其1172年的著作《印度算術(shù)》中將其擴(kuò)展到開任意次冪,其方法與卡西相同([10],383頁)。
綜上所述,卡西對(duì)于不盡方根的近似算法保留了早期的阿拉伯?dāng)?shù)學(xué)傳統(tǒng),但此時(shí)已經(jīng)更趨于系統(tǒng)化、理論化,且卡西在進(jìn)行無理根近似運(yùn)算時(shí),為了得到更為精確的結(jié)果,是將“線性插值”與“微數(shù)”算法同時(shí)使用。
隨后我們繼續(xù)回到第一卷,卡西接著敘述道:
如果利用上述數(shù)字排列的方法計(jì)算更高(的精度),尤其是在被開方數(shù)數(shù)位較多以及開方次數(shù)較大的情況下則比較困難。我們已經(jīng)在其他文章中介紹過另外一種方法。([2],73 頁)
雖然卡西此處并沒有明確說明“其他文章”中的“另外一種算法”指的是什么,而且在《算術(shù)之鑰》也沒有給出其他的不盡方根近似算法,但是在《算術(shù)之鑰》中的眾多數(shù)表里的無理方根都達(dá)到了相當(dāng)高的精度,對(duì)于這些筆者認(rèn)為卡西指的可能是類似《論圓周》推算圓周率時(shí)使用的加速逼近算法,這點(diǎn)還有待于進(jìn)一步的研究。但是上述近似算法作為數(shù)學(xué)知識(shí)的基礎(chǔ)部分對(duì)于普通的學(xué)生已經(jīng)足夠了。
無論是賈憲還是卡西在開方問題中除了增乘開方法以外,還給出了立成釋鎖開方法及與其有密切關(guān)系的算術(shù)三角形,下面來分析二者的異同。出過形如
賈憲給出增乘開方法后,接下來給出了“立成釋鎖”開平方法和“立成釋鎖”開立方法,錢寶琮先生認(rèn)為:
立成釋鎖開方法…演算步驟大致和《九章算術(shù)·少廣章》相同。“釋鎖”是宋元數(shù)學(xué)家開方或解數(shù)字方程的代用名詞。唐代以后天文學(xué)家為預(yù)推各項(xiàng)天文數(shù)據(jù)立出來的表叫做“立成”。因此,賈憲的立成釋鎖法可以解釋作:利用一種表格上的數(shù)字來解決一般的開方問題。這種數(shù)字表格很可能就是他提出的指數(shù)為正整數(shù)的二項(xiàng)式定理系數(shù)表——“開方作法本源”。開平方和開立方用著這個(gè)系數(shù)表的第三層和第四層。如果推廣到求四次冪、五次冪或六次冪的根時(shí),就要用到第五、第六或第七層了。([4],37~38頁)
“開方作法本源”圖,即算術(shù)三角形,首見于明《永樂大典》第16344卷第5頁“楊輝詳解開方作法本源,出《釋鎖算書》,賈憲用此術(shù)”。后來元代朱世杰《四元玉鑒》載有“古法七乘方圖”,比前者多兩層且加了斜線。明吳敬《九章比類》亦載有添加了斜線的五層圖。明王文素將前人按照等腰三角形形狀排列的系數(shù)三角形改為按照直角三角形排列,取名“開方本源圖”,載于其《算學(xué)寶鑒》(1524)中。
在卡西的《算術(shù)之鑰》中增乘開方法之后,同樣也給出了立成開方法與算術(shù)三角形,術(shù)文如下:
另一種方法:
如果要求兩個(gè)乘方之差,便需要知道在此開方次數(shù)下的各項(xiàng)系數(shù)。這些系數(shù)實(shí)際上就是當(dāng)結(jié)果行中的數(shù)字為1時(shí),按照前面的(增乘)算法在每次移項(xiàng)之前位于各行中的數(shù)字。
例如:現(xiàn)要求平方立方的各項(xiàng)系數(shù),如前所述做出表格,在結(jié)果行中寫出數(shù)字1,在根行中同樣如此。按照上面的(增乘)算法,在移項(xiàng)之前得到根行的數(shù)字為5,平方行中為10,立方行中為10,平方平方行為5。
此時(shí)得到的四個(gè)數(shù)字便是平方立方的各項(xiàng)系數(shù),其中每一個(gè)數(shù)字(對(duì)應(yīng)的乘方)次數(shù)與其所在行名稱相同。在求平方立方根過程中每次移項(xiàng)時(shí)所移動(dòng)的數(shù)字實(shí)際上就是剛才得到的系數(shù)與結(jié)果行中的數(shù)字及其乘方的乘積。
?15411064311046332154321結(jié)果行平方平方行立方行平方行根行
例如用結(jié)果行中的數(shù)字乘以移位之前根行中的數(shù)字5,再用結(jié)果行中數(shù)字的平方乘以平方行中的數(shù)字10,用其立方乘以立方行中的數(shù)字10,用其平方平方乘以平方平方行中的數(shù)字5,隨后將這些數(shù)字之和加1,即為結(jié)果行中數(shù)字的平方立方與其加1后所得和的平方立方之差。
通過計(jì)算得到平方的系數(shù)只有一個(gè),即為2;立方的系數(shù)分別為3、3;對(duì)于此后次數(shù)每增加一次,其系數(shù)的個(gè)數(shù)就增加一個(gè)。其中系數(shù)兩端的數(shù)字依次增加(1)。將某次數(shù)下任意相鄰的兩個(gè)系數(shù)相加,所得便是相鄰下一個(gè)次數(shù)中中間一項(xiàng)的系數(shù)。([2],72~75頁)
隨后卡西給出了算術(shù)三角形①見參考文獻(xiàn)[2],74頁.筆者僅對(duì)數(shù)表中的阿拉伯文及東阿拉伯?dāng)?shù)碼進(jìn)行翻譯,并未改變數(shù)表的排列順序。,并給出了利用算術(shù)三角形求兩個(gè)連續(xù)乘方之差的一般方法,最后給出了兩道例題,分別為:55-45、75-45,且附有演算數(shù)表。
以上便是《算術(shù)之鑰》開方問題的全部內(nèi)容。
杜石然先生曾指出:
除高次開方法外,阿爾·卡西《算術(shù)之鑰》中還引入了一個(gè)二項(xiàng)式定理系數(shù)表。阿爾·卡西曾利用這一數(shù)表來計(jì)算相鄰或者不相鄰兩自然數(shù)的同次冪之差,例如書中所舉的例題:求55-45或75-45等等…值得注意的是卡西關(guān)于求出二項(xiàng)定理系數(shù)表中各數(shù)的方法,也和賈憲“求廉草”中所用的方法完全相同。([7],259頁)
閱讀原文便可以發(fā)現(xiàn),上述認(rèn)識(shí)有兩處不妥:其一、卡西認(rèn)為開方問題的本質(zhì)就是求兩個(gè)連續(xù)乘方之差,而利用算術(shù)三角形求兩個(gè)連續(xù)乘方之差是一種開方方法,而不僅僅是計(jì)算“相鄰或不相鄰兩自然數(shù)的同次冪之差”問題;其二、賈憲與卡西所給出的算術(shù)三角形在形式和構(gòu)造上不同。在形式上前者比后者每一行多出了兩端的數(shù)字1,其中一個(gè)恰好是中算中“立成釋鎖”開方法與“增乘開方法”在算籌布式中的“借算”;而卡西的算術(shù)三角形中沒有兩端的系數(shù)1,這恰好也與其沒有“借算”行的特點(diǎn)相吻合。另外中算中的算術(shù)三角形起初采用等腰三角形的形式排列,這就需要將每行中的系數(shù)應(yīng)用于每列中進(jìn)行立成算法,雖然并不實(shí)用,但卻體現(xiàn)了中算家追其一種形式上的統(tǒng)一性與完美性。與中算不同,卡西的算術(shù)三角形采用直角三角形的形狀排列,且與其在開方過程中的數(shù)字排列順序完全一致。最后卡西給出了兩種構(gòu)造算術(shù)三角形的方法,其中一種與賈憲“求廉草”法相同,另一種是利用各行系數(shù)間的關(guān)系,即來求得。從術(shù)文來看卡西對(duì)于算術(shù)三角形中各行數(shù)字間的關(guān)系已經(jīng)很熟悉,可以判斷算術(shù)三角形應(yīng)早已有之,后面會(huì)繼續(xù)討論阿拉伯?dāng)?shù)學(xué)史中算術(shù)三角形的內(nèi)容。盡管卡西給出的第二種開方方法與賈憲所述的立成釋鎖方法相同,且同樣利用增乘開方法構(gòu)造出了算術(shù)三角形,但僅憑這些就來推斷二者之間的相互影響是不夠的。
事實(shí)上薩馬瓦爾在al-Qiwāmī中介紹完增乘開方法后,與《算術(shù)之鑰》相同緊接著給出立成算法,其中詳述了二、三、四、五次開方問題的立成算法,下面以求五次方根為例進(jìn)行說明:
若求250的平方立方根(即五次方根),得到3,剩余7,由于五次方的系數(shù)為5、10、10、5,將方根中的整數(shù)3乘以第一個(gè)系數(shù);3的平方乘以第二個(gè)系數(shù);3的立方乘以第三個(gè)系數(shù);3的平方平方(即四次方)乘以第四個(gè)系數(shù),將這幾個(gè)乘積之和加上數(shù)字1,得到781,此即為(被開方數(shù)中)剩余數(shù)字的分母。最后得到3又781分之7。如此繼續(xù)運(yùn)算其余(更高)次冪的方根。([3],136頁)
由卡西與薩馬瓦爾對(duì)于立成開方法的描述可以看出,二者在方法、編寫順序,甚至是語言的細(xì)節(jié)上都有眾多相似之處。究竟薩馬瓦爾是否影響了卡西,還有待于進(jìn)一步研究,但至少在立成方法上,卡西保持了十二世紀(jì)的阿拉伯?dāng)?shù)學(xué)傳統(tǒng)。
另外與賈憲立成開平方法及開立方法相比,薩馬瓦爾和卡西除了將其推廣到任意高次冪這點(diǎn)不同以外,兩種文明對(duì)于增乘與立成的關(guān)系認(rèn)識(shí)也不同?!霸龀恕迸c“立成”兩種算法名稱源于中算,形成于由傳統(tǒng)的開平方、開立方向高次開方機(jī)械化算法發(fā)展的過渡階段。賈憲先給出立成釋鎖開方法,后給出增乘開方法,雖未給出二者的關(guān)系,但是很明顯前者是在《九章算術(shù)》開方術(shù)基礎(chǔ)上演化而來,屬于算法的初級(jí)階段;而“增乘”算法對(duì)于高次開方問題在利用算籌計(jì)算時(shí)體現(xiàn)了較強(qiáng)的機(jī)械性和可操作性,從認(rèn)知的先后順序來看,后者應(yīng)該為前者發(fā)展的高級(jí)階段。后增乘開方法經(jīng)劉益、秦九韶、李冶、朱世杰等人的發(fā)展,在高次方程數(shù)值解領(lǐng)域取得了輝煌的成就。中國數(shù)學(xué)史界傳統(tǒng)的觀點(diǎn)認(rèn)為到了明代,增乘開方法已經(jīng)失傳,在王文素的《算學(xué)寶鑒》中的高次開方問題全部采用的是立成釋鎖開方法,且運(yùn)算方法已經(jīng)由珠算取代了籌算。筆者認(rèn)為可能增乘開方法并未消失,只不過由于珠算的迅速發(fā)展,使得高次開方問題可以全部統(tǒng)一為立成釋鎖開方法。由于中算史料相對(duì)的零散性以及兩種算法各自的優(yōu)缺點(diǎn),或許在不同的發(fā)展階段中算家對(duì)其關(guān)系的認(rèn)識(shí)不同,這點(diǎn)有待于進(jìn)一步的研究。而薩馬瓦爾和卡西卻先給出增乘算法,隨后給出立成算法,雖然將二者稱為兩種方法,但是并沒有割斷二者之間本質(zhì)的聯(lián)系。且從書中例題可以看出對(duì)于被開方數(shù)相對(duì)于開方次數(shù)不大的情況下采用一次立成算法即可開方結(jié)束,體現(xiàn)了阿拉伯?dāng)?shù)學(xué)家運(yùn)算靈活不拘于形式的特點(diǎn)。此外,通過立成算法,可以將增乘算法與算術(shù)三角形之間建立聯(lián)系,同時(shí)算術(shù)三角形揭示出增乘算法的構(gòu)造原理并將三者有機(jī)的統(tǒng)一起來。下面來討論一下有關(guān)算術(shù)三角形的問題。
事實(shí)上在薩馬瓦爾的著作[11]中就有關(guān)于算術(shù)三角形的論述,這是至今所知在阿拉伯?dāng)?shù)學(xué)史中最早的關(guān)于算術(shù)三角形的記載,而薩馬瓦爾又是在轉(zhuǎn)述10世紀(jì)阿拉伯?dāng)?shù)學(xué)家凱拉吉的成果。薩馬瓦爾在書中是在利用不完全數(shù)學(xué)歸納法推算公式的 過程中得出算術(shù)三角形,隨后根據(jù)推導(dǎo)過程構(gòu)造算術(shù)三角形并闡述了其構(gòu)造過程,相當(dāng)于,算術(shù)三角形數(shù)表如下所示([11],111 頁):
?立方立方立方 立方 立方 立方 立方 立方立方 立方 立方1111111111112111098765432665545362821151063122016512084563520104149533021012670351551792462252126562161924462210842871792330120368149516545912205510166111121平方立方平方平方立方立方平方立方平方平方立方立方平方立方平方平方立方 平方 物111
卡西給出的算術(shù)三角形同上面的數(shù)表相比,缺少兩側(cè)的系數(shù)“1”,但這恰好滿足其“增乘”開方?jīng)]有“借算”行的特點(diǎn)。除此之外,卡西繼承了上述數(shù)表的直角三角形排列、表頭名稱、系數(shù)構(gòu)造原理等多個(gè)特點(diǎn)。從現(xiàn)有史料來看中算家和阿拉伯?dāng)?shù)學(xué)家?guī)缀踉谕瑫r(shí)認(rèn)識(shí)到了算術(shù)三角形,但是認(rèn)識(shí)的途徑、目的和意義均是不同的。
“盈不足”術(shù)是中國古代的一種比較古老的著名算法,早在《九章算術(shù)·盈不足》中就有記載。杜石然先生曾指出:從公元10世紀(jì)開始,阿拉伯?dāng)?shù)學(xué)家就開始用“hisab al-khataayn”這一名稱來表示盈不足術(shù),直至《算術(shù)之鑰》的第5卷第2章中仍然以此作為標(biāo)題。此外杜石然先生也傾向于錢寶琮先生的觀點(diǎn),即:al-khataayn是由“契丹”一詞的音譯轉(zhuǎn)化而成([7],248~251頁)。
在《算術(shù)之鑰》第5卷中卡西將還原與對(duì)消、al-khataayn算法和分析綜合法作為解決代數(shù)方程的三種常用方法。因?yàn)檫@種算法在阿拉伯早已有之,所以很難從《算術(shù)之鑰》的內(nèi)容上確定其早期的是否受到中算的影響。筆者此處僅就al-khataayn的阿拉伯語進(jìn)行語義上的分析。
《算術(shù)之鑰》第5卷的標(biāo)題為
譯為:通過還原與對(duì)消及雙假設(shè)等方法來求解未知數(shù);
綜上所述,就《算術(shù)之鑰》與中算相似問題,尤其是高次開方問題所涉及的一系列相關(guān)算法內(nèi)容來看,二者在論述、方法等方面都有顯著的不同;且縱觀阿拉伯?dāng)?shù)學(xué)史,對(duì)于這些不同點(diǎn),卡西都保留著10至12世紀(jì)的阿拉伯?dāng)?shù)學(xué)傳統(tǒng),可以判斷《算術(shù)之鑰》中的這些問題并沒有像傳統(tǒng)觀點(diǎn)所認(rèn)為的那樣受到中國宋元數(shù)學(xué)的直接影響,不過這恰好體現(xiàn)了早期文明中數(shù)學(xué)發(fā)展多元化的特點(diǎn)。至于中阿間的數(shù)學(xué)交流,還有待于更多史料的解讀和研究。
筆者在本文的書寫過程中發(fā)現(xiàn)以下幾個(gè)問題值得認(rèn)真思考并可以成為后續(xù)的研究方向:
1.阿拉伯原始文獻(xiàn)中數(shù)學(xué)語言的來源、演化及其準(zhǔn)確的翻譯方式;
2.阿拉伯?dāng)?shù)學(xué)史中十進(jìn)制數(shù)碼與六十進(jìn)制數(shù)碼間的算術(shù)運(yùn)算關(guān)系;
3.卡西對(duì)于無理方根的所有逼近算法及其來源與演化;
4.通過卡西《算術(shù)之鑰》中第5卷代數(shù)學(xué)部分與薩馬瓦爾《代數(shù)珍寶》之間的比較研究來進(jìn)一步剖析12至15世紀(jì)阿拉伯?dāng)?shù)學(xué)史晚期代數(shù)學(xué)的發(fā)展概況。
此外筆者認(rèn)為在現(xiàn)階段,由于史料研究的不足,對(duì)于早期跨文明數(shù)學(xué)史的比較研究,一些啟發(fā)性研究工作的價(jià)值要大于某些結(jié)論;尤其是在對(duì)待“起源”、“誰影響了誰”這類問題時(shí),應(yīng)當(dāng)慎重對(duì)待。鑒于筆者水平有限,文中的錯(cuò)誤和不妥之處還請(qǐng)專家讀者批評(píng)指正。
1 B A Rosenfeld.A P Youschkevitch.Biography in Dictionary of Scientific Biography[M].New York:Charles Scribner's Sons,1970~1990.255~262.
2 Jamshīd al-Kāshī.Miftāh al-Hisāb(Key to Arithmetic)[M].A S al-Demerdash.M H al-Cheikh(eds).Cairo:Dār alkātib al-‘a(chǎn)rabī,1967.
3 Rashed R.The Development of Arabic Mathematics:Between Arithmetic and Algebra[M].A FW Armstrong(trans).Norwell:Kluwer Academic Publishers,1994.
4 錢寶琮.增乘開方法的歷史發(fā)展[A]//錢寶琮.宋元數(shù)學(xué)史論文集[C].北京:科學(xué)出版社,1966.36~44.
5 Luckey P.Die Ausziehung desn-ten Wurzel und der binomische Lehrsatz in der islamischen Mathemarik[M].Springer:Math Annalen 120,1948.217 ~274.
6 Dakhel A K.The Extraction of the n-th root in the sexagesimal notation,a study of chapter5,treatise IIIof by Jamshīd Ghiyāth al-Dīn al-Kāshīwith translation and commentatry[D].WasfīA Hijab.E SKemmedy(eds).Beirut:American University,1960.
7 杜石然.試論宋元時(shí)期中國和伊斯蘭國家間的數(shù)學(xué)交流[M]//錢寶琮.宋元數(shù)學(xué)史論文集.北京:科學(xué)出版社,1966.258.
8 杜石然.再論中國與阿拉伯國家間的數(shù)學(xué)交流[J].自然科學(xué)史研究,1984,3(4):294~303.
9 郭書春.九章算術(shù)譯注[M].上海:上海古籍出版社,2007.133.
10 Rashed R.Combinatorial analysis,numerical analysis,Diophantine analysis and number theory[M]//R Rashed:Encyclopedia of the History of Arabic Science.New York:Routledge,1996.383.
11 Al-Samaw'al.al-Bahir en algebra[M].SAhmd.R Rashed(eds).Damascus∶Imp.De I'Universite de Damas,1972.