郭園園
(中國科學(xué)院自然科學(xué)史研究所,北京 100190)
?
阿爾·卡西《論圓周》研究
郭園園
(中國科學(xué)院自然科學(xué)史研究所,北京 100190)
基于阿拉伯文史料,對波斯數(shù)學(xué)家、天文學(xué)家阿爾·卡西《論圓周》進(jìn)行研究。該研究表明卡西利用正多邊形逼近圓周的方法求解圓周率。由于對圓內(nèi)接正多邊形的邊數(shù)、邊長的精確度及圓周率的精度本質(zhì)關(guān)系的認(rèn)識,加之精巧的開平方算法,使得卡西將圓周率推算至較高的精度。該研究對于進(jìn)一步理解《論圓周》中卡西的算法思想有重要意義。
阿爾·卡西 論圓周 圓周率 迭代算法
(續(xù)注)在抄本中,當(dāng)用阿語字母表示60進(jìn)制數(shù)碼,要在字母的上方加上橫線以區(qū)別其他文字;在數(shù)表中,當(dāng)數(shù)碼可以明顯辨別時通常不需要其上方的橫線;當(dāng)利用阿語字母表示含有多個數(shù)位數(shù)碼時,數(shù)位與數(shù)位之間有空位,但上方的橫線是連續(xù)的。另由于阿語是從右往左書寫,因此相關(guān)數(shù)碼的書寫及運(yùn)算順序均是從右向左。
關(guān)于60進(jìn)制數(shù)碼的單位,當(dāng)結(jié)合上下文可以明確辨別時不需要額外書寫,但一般情況用阿語單詞表示,如下表所示:
…60260160060-160-260-360-460-560-660-760-860-960-1060-1160-1260-1360-1460-1560-1660-1760-18…
據(jù)考證目前已知該書現(xiàn)存8份抄本[1],均為阿拉伯文書寫。其中質(zhì)量較高可供研究的是土耳其伊斯坦布爾抄本①Askeri Müze 756, Istanbul.和伊朗馬什哈德抄本②G. al-Dīn Jamshīd M. al-Kāshī, al-Risāla al-muhītīyya. Number 162 of the mathematics collection (Number 5389 of the general collection) of Holy Shrine Library in Mashhad, Iran.。土耳其學(xué)者薩利赫·穆拉德(Salih Mourad)曾基于伊斯坦布爾抄本對該書進(jìn)行過研究,后來他將研究成果告知史密斯(David Eugene Smith,1860~1944)。通過史密斯1925年的作品,西方世界第一次知曉卡西的此項工作。1949年,阿拉伯?dāng)?shù)學(xué)史家勒基(Paul L. Luckey,1884~1949)同樣僅基于伊斯坦布爾抄本,首次將該書譯為德語并進(jìn)行了初步研究。直至其去世后的1953年,該德文譯本[2]才出版,同時附有校訂后的印刷體阿拉伯原文。由于伊斯坦布爾抄本第4、5兩節(jié)中的29張開方算表多處數(shù)據(jù)模糊無法辨別,故在勒基提供的阿拉伯語校訂部分僅包含第1、2、15、25四張算表③在參考文獻(xiàn)[1](87~88頁)中,霍根迪耶克通過對伊斯坦布爾抄本、勒基提供阿拉伯文校本和馬什哈德抄本進(jìn)行比對得出:伊斯坦布爾抄本含有較多錯誤,且在數(shù)表部分大量數(shù)據(jù)模糊無法識讀,而這些問題是馬什哈德抄本中沒有的。勒基的校本對伊斯坦布爾抄本中的多處錯誤進(jìn)行了修改,并且最終得到了馬什哈德抄本的證實,表現(xiàn)了勒基優(yōu)秀的阿拉伯文獻(xiàn)研讀和校訂能力。。1954年羅森菲爾德(Boris A. Rosenfeld)和尤什科維奇(A. P. Youschkevitch, 1906~1993)將卡西部分著作譯為俄文并出版④B. A. Rosenfeld and A. P. Youschkevitch, Al-Kāshānī, Istorico-matematiches kie Issledovaniya, Volumu VII,Moscow, 1954. 轉(zhuǎn)引于參考文獻(xiàn)[3],258頁。;1956年羅森菲爾德又將其中的《論圓周》和《算術(shù)之鑰》兩本書重新翻譯⑤Dzhemshid Giyaseddin al-Kashi, Klyuch Arifmetiki, Traktat ob Okruzhnosti[Key to Arithmetics, Treatise on the Circumference], Per. B. A. Rosenfeld, Comm. A. P. Youschkevitch, B. A. Rosenfeld. Moskva: Gosudarstvennoe Izdatelstvo Tekhniko-teoreticheskoi Literatury, 1956. 383~424. 轉(zhuǎn)引于參考文獻(xiàn)[3],258頁。。[3]關(guān)于《論圓周》的翻譯,羅森菲爾德仍然是基于伊斯坦布爾抄本進(jìn)行的,并且附上了抄本的影印圖片,其中第4節(jié)開方數(shù)表部分僅包含其中的前兩張數(shù)表。
后來伊朗學(xué)者夸巴尼(A.Qurbānī)首次發(fā)現(xiàn)了質(zhì)量更高的馬什哈德抄本(圖1為該抄本首頁),并于1971年完成了一本關(guān)于卡西在數(shù)學(xué)和天文學(xué)領(lǐng)域成就的專著*A. Qurbānī, Kāshānī nāmeh[A monograph on Ghiyāth al-Dīn Jamshīd Mas’ūd al-Kāshī], Tehran University Press, Tehran, Iran, 1971. Revised edition 1989. 轉(zhuǎn)引于參考文獻(xiàn)[5],78頁。。其中關(guān)于《論圓周》一書,夸巴尼基于馬什哈德抄本、勒基和羅森菲爾德的研究寫了一篇波斯文摘要??浒湍嵩谌ナ狼安痪脤ⅠR什哈德抄本的副本提供給霍根迪耶克(Jan P. Hogendijk),霍氏對此進(jìn)行了較為深入的研究。在其2009年的文章[1]中,霍氏指出在《論圓周》現(xiàn)存抄本中,馬什哈德抄本的質(zhì)量最高、最接近卡西手稿,隨后霍氏著重利用馬什哈德抄本對勒基的阿拉伯文校本和德文翻譯分別進(jìn)行了部分修訂并將馬什哈德抄本的影印圖片附于文章后。另,2004年,美國學(xué)者艾札瑞(K. Azarian)基于馬什哈德抄本,將《論圓周》第1節(jié)譯為英文[4];2010年,艾札瑞基于馬什哈德抄本和夸巴尼的上述著作寫了一篇關(guān)于《論圓周》主要內(nèi)容的摘要性文章[5]。
圖1 《論圓周》馬什哈德抄本首頁([1], 152頁)
下文中筆者主要基于勒基提供《論圓周》阿拉伯文校本、霍根迪耶克的相關(guān)校訂工作和馬什哈德抄本影印圖片*雖然《論圓周》馬什哈德抄本質(zhì)量較高,但由于是阿拉伯文手寫體,筆者無法識讀每一處細(xì)節(jié)。故筆者首先對勒基提供的印刷體阿拉伯文校本進(jìn)行全面的解讀和翻譯,隨后參照了參考文獻(xiàn)[1]中霍根迪耶克基于馬什哈德抄本對勒基校本的40處非重要詞匯的修改。,同時結(jié)合卡西另兩本數(shù)學(xué)著作《論弦與正弦》和《算術(shù)之鑰》中的相關(guān)內(nèi)容,對以往研究比較薄弱的圓周率數(shù)值算法部分展開分析。
在《論圓周》介紹部分中,卡西簡要敘述了以往三位著名的數(shù)學(xué)家阿基米德(Archimedes,287~212 B. C.)、阿布·瓦法(Abu’l-Wafā’al-Būzjānī,940~998)和阿爾·比魯尼(Abū Rayhān al-Bīrūnī,973~1050后)的相關(guān)工作。卡西首先指出阿基米德在其《圓的度量》(MeasurementofaCircle)一書中通過圓內(nèi)接正96邊形,及與其相似的圓外切多邊形得出:
圓的周長小于三倍直徑加上其七分之一,大于(三倍直徑)加上直徑的七十一分之十。二者之間的差值為四百九十七分之一,即若圓的直徑為497腕尺、或497指、或497法爾薩赫,則此時圓的周長誤差為1腕尺、或1指、或1法爾薩赫。([2],75頁)*本段中涉及長度單位的量值及其換算關(guān)系,詳見下文中關(guān)于《論圓周》第3節(jié)的論述。
接下來針對阿布·瓦法的工作,卡西指出:
阿布·瓦法將圓周分為360度,首先求出半度所對弦長,隨后將其乘以720便得到圓內(nèi)接多邊形周長,圓外切多邊形求法與之類似。若直徑為120,則圓周的整數(shù)部分為376,分?jǐn)?shù)部分大于59(60-1),10,59,小于59(60-1),23,54,12,二者差值為12(60-2),55,12。([2],75頁)
緊接著卡西指出單位圓中0.5°弧所對弦長的準(zhǔn)確值為31(60-1),24,56,58,36,而此處阿布·瓦法的錯誤取值為31(60-1),24,55,54,55,關(guān)于這點(diǎn)將在《論圓周》的結(jié)論部分中說明。類似地,阿爾·比魯尼利用其得出的單位圓中2°弧所對弦長2(600),5,39,43,36,求得圓內(nèi)接180邊形的周長為6(600),16,59,10,48,0,同理求出相似外切180邊形的周長為6(600),17,1,58,19。卡西指出2°弧所對弦長恰為正弦表中sin1°值的2倍,但比魯尼的取值有誤,準(zhǔn)確值應(yīng)為2(600),5,39,26,22。這點(diǎn)同樣在結(jié)論部分加以說明。
盡管卡西指出了阿布·瓦法的錯誤,但是他并未明確該數(shù)據(jù)究竟是源于阿布·瓦法的哪本著作。據(jù)庫巴尼考證*A. Qurbānī, Kāshānī nāmeh[A monograph on Ghiyīth al-Dīn Jamshīd Mas’ ūd al-Kāshī], Tehran University Press, Tehran, Iran, 1971. Revised edition 1989, 137. 轉(zhuǎn)引于參考文獻(xiàn)[5],79頁。,卡西很可能參閱了納西爾·丁·圖西(Nasīr al-Dīn al-Tūsī,1201~1274)的著作Taksīral-Dā’irā,該書是阿基米德著作《圓的分割》(DivisionoftheCircle)一書的阿文譯本。其中圖西有這樣一段論述:
……例如,假設(shè)點(diǎn)C為圓心,弧AB為圓周的1/720。連接弦AB,根據(jù)前面的定理和阿布·瓦法的運(yùn)算,弦AB等于31(60-1),24,55,54,55。若圓直徑為120,則前面的值可以被視為半度弧所對弦。接下來,如果我們將此弦視為圓內(nèi)接(正)720邊形的邊長,則此多邊形周長為376(600),59,10,59,……
此數(shù)據(jù)與卡西指出阿布·瓦法的錯誤數(shù)據(jù)完全相同。另通過對阿布·瓦法著作Kitābal-Kāmil*該書為托勒密《至大論》的一個簡化版本。的研究,韋普克(F. Woepcke,1826~1864)*F. Woepcke, Sur une mesure de la circonférance du cercle, du aux astronomes arabes, et fondée sur un calcul d’Abol Waf, Journal Asiatique, 5m série, tome 15, 281~320. 轉(zhuǎn)引于參考文獻(xiàn)[5],79頁。認(rèn)為上述圖西所述弦AB的量值在阿布·瓦法看來僅為一個正弦值,并非弦長。即便如此,至少也可以說明阿布·瓦法所推算弦表的數(shù)據(jù)是不準(zhǔn)確的。另據(jù)庫巴尼考證*A. Qurbānī, Kāshānī nāmeh[A monograph on Ghiyīth al-Dīn Jamshīd Mas’ ūd al-Kāshī], Tehran University Press, Tehran, Iran, 1971. Revised edition 1989, 138. 轉(zhuǎn)引于參考文獻(xiàn)[5],79頁。,卡西關(guān)于比魯尼錯誤數(shù)據(jù)的論述應(yīng)源于比魯尼的著作Qānoūnal-Mas’ūdī。在該書第5卷第3章中,比魯尼指出2°弧所對弦長為2(600),5,39,43,36,這與卡西前面所指出比魯尼的錯誤數(shù)據(jù)相同。該值比準(zhǔn)確值略大,比魯尼將其視為圓內(nèi)接正180邊形的邊長,故據(jù)此推算出來的一系列數(shù)據(jù)均是不準(zhǔn)確的。
在介紹部分的最后,卡西給出了他所要求圓周率的精度要求,即若存在一個直徑為地球直徑600 000倍的假想球體,使得通過此直徑所求得的圓周長與真實值之間的誤差小于一根馬鬃的粗細(xì)。卡西及其同時代的伊斯蘭天文學(xué)家們接受托勒密(Ptolemy,約100~約170)宇宙體系,即地球的外部有一個恒星天球。通過一系列的假設(shè)和運(yùn)算托勒密得出天球半徑為地球半徑的20 000倍?;诟碌挠^測數(shù)據(jù),中世紀(jì)伊斯蘭天文學(xué)家們改變了托勒密模型中的一些距離參數(shù),但整體上是延續(xù)了托勒密體系,并得出近似的結(jié)果。在卡西《天堂的階梯》(Sullamal-Samā’,StairwaytoHeavens)一書中假設(shè)天球半徑為地球半徑的26 328倍([1],77頁),另卡西在《論圓周》第10節(jié)指出有人計算出天球半徑為地球半徑的70 073.5倍。筆者認(rèn)為卡西此處選取直徑為地球直徑60 000倍的假想球體,是由于該數(shù)值比以往天球稍大且便于后續(xù)運(yùn)算,則計算得出的圓周率在天球內(nèi)部的任意圓中計算時的誤差會更小。在《論圓周》第3節(jié)的開始部分,卡西重復(fù)了這一圓周率的精度要求??ㄎ黠@然不滿足于前人相關(guān)運(yùn)算的精度與誤差,筆者認(rèn)為這是《論圓周》的直接寫作目的,同時卡西對前人正弦表的糾正及其所要求圓周率誤差精度的選取或與當(dāng)時的天文運(yùn)算有關(guān)。
卡西在《論圓周》前兩節(jié)中明確了其推算圓周率的迭代算法。第1節(jié)中闡述并證明了一條幾何定理(圖2),這是后面一系列迭代算法的理論基礎(chǔ),原文如下:
卡西對于上述定理的證明過程用現(xiàn)代數(shù)學(xué)符號簡要表述為:
圖2 《論圓周》第1節(jié)附圖([2],4頁)
圖3 《論圓周》第2節(jié)附圖([2],5頁)②圖3與下文中的圖4在原抄本中是同一幅圖,圖4為圖3的右下部局部圖,此處為了便于表述筆者將二者分開。
表1 《論圓周》迭代公式歸納算表
圖4 《論圓周》第2節(jié)附圖局部圖([2],5頁)
將弧BH在點(diǎn)T處平分,連接ET,其在點(diǎn)I處將弦BH平分。過點(diǎn)T作圓的切線TL,即過點(diǎn)T作ET的垂線段,在兩個方向上的垂線段分別為TK、TL。連接并延長EH(與KL)交于點(diǎn)L; 同樣連接并延長EB(與KL)交于點(diǎn)K。此時有KL平行于BH。其中BH為圓內(nèi)接多邊形邊長,KL為圓外切多邊形的邊長,且二者*此處指兩個正多邊形相似。相似。([2],76頁)
卡西將BH視為圓內(nèi)接正3×2n邊形邊長,KL視為與之相似的圓外切正3×2n邊形邊長,隨后利用相似三角形的性質(zhì)求出此外切正多邊形周長??ㄎ鞯耐茖?dǎo)過程利用現(xiàn)代數(shù)學(xué)符號簡要表述為:
若AH、BH可知,則圓外切正3×2n邊形周長可知。
雖然卡西在《論圓周》中對圓周率自身特點(diǎn)并沒有相關(guān)的直接描述,但他卻在其1427年成書的《算術(shù)之鑰》[6]第4卷(圖形的面積與體積計算)第4章(圓及其相關(guān)圖形的計算)第2節(jié)(圓的面積及周長與直徑之間的互化)的開始部分關(guān)于圓周率有這樣一段論述:
我們知道圓的周長等于直徑的三倍再加上一個直徑的分?jǐn)?shù)倍,此部分小于直徑的七分之一,但是在計算過程中為了方便起見通常取其為七分之一。阿基米德告訴我們這個值小于七分之一,大于七十一分之十。通過運(yùn)算,我們已經(jīng)在《論圓周》一書中得到了一個較為精確的結(jié)果,當(dāng)圓的直徑為1時,圓周長為3(600),8,29,44。前面所述的值要比阿基米德給出的范圍精確得多,但是這僅僅是更加接近真實值,除了萬能的真主,誰也無法得到真實值…([6],147頁)
這顯然是卡西對于圓周率無限不循環(huán)特性的一種簡單樸素的認(rèn)識,接下來卡西重復(fù)了《論圓周》介紹部分所預(yù)設(shè)的圓周率精度,他敘述道:
現(xiàn)在有一個(假想)球,其直徑為地球直徑的600 000倍,則其周長同樣為地球周長的600 000倍。要求其周長,為了使誤差不超過一根馬鬃的粗細(xì),則需要將圓周分為多少邊形?在運(yùn)算過程(每次開方運(yùn)算需要)精確到什么數(shù)位?([2],77頁)
由上可知,《論圓周》并不是要求出圓周率盡可能精確的數(shù)值,而是要滿足某種精度要求。為了解決上述第一個問題,卡西首先將該假想球體上的大圓周除以360,得出每度弧長;隨后將所得除以60,得出每分度弧長,如此繼續(xù)下去,連續(xù)8次除以60,最終得到1×60-8弧長小于一根馬鬃的粗細(xì),如表2所示:
表2 求地球直徑六十萬倍假想球體大圓中圓心角為1×60-8所對弧長表([2],77頁)
接下來當(dāng)圓周為360度時,卡西引入了滿足前面誤差精度的一個必要條件——互為相似的圓內(nèi)接、圓外切正多邊形周長差等于1(60-8),則在前面假想大圓的內(nèi)接與外切正多邊形的差值不會超過一根馬鬃的粗細(xì),進(jìn)而利用二者算數(shù)平均數(shù)表示的圓周與真實圓周長的差值會更小??ㄎ鲗x取此必要條件并沒有做解釋,事實上前面運(yùn)算過程中涉及的4個初、終量,具備如下的比例關(guān)系:
筆者認(rèn)為上式左側(cè)相比兩個量的單位是長度單位,而右側(cè)的兩個量是角度單位,它們各自的比值所表示預(yù)設(shè)的誤差率是相等的。卡西此處利用角度的概念在保持預(yù)設(shè)精度要求的同時巧妙地連接了由長度單位表示的所求大圓周和下面將要涉及的單位圓周。接下來卡西在圓周為360度的圓中經(jīng)過連續(xù)縮放運(yùn)算,為了達(dá)到前面的預(yù)設(shè)精度,所求圓內(nèi)接正多邊形的邊長應(yīng)小于8(60-4)。筆者將卡西所給縮放運(yùn)算過程列表3如下:
表3 圓周為360度的圓中滿足預(yù)設(shè)精度內(nèi)接正多邊形邊長上限估值表*此表中所有線段及圓弧的單位均為角度單位。
卡西在上述估算過程中,每一步均進(jìn)行了近似取值。若按照卡西的上述思路整體對圓內(nèi)接多邊形邊長a的極大值進(jìn)行估算:
a2=d2-(2×弦心距)2=(d+弦心距)·(d-弦心距)
顯然卡西經(jīng)過連續(xù)縮放得到a<8(60-4)是合理的。為了使得圓內(nèi)接正多邊形邊長小于8(60-4),卡西繼續(xù)列表運(yùn)算:從圓內(nèi)接正三角形開始將其邊數(shù)連續(xù)加倍,同時相應(yīng)將其每邊所對弧長連續(xù)減半,經(jīng)過28次運(yùn)算最終得到圓內(nèi)接正3×228邊形每邊所對弧長達(dá)到要求,如表4所示:
表4 圓內(nèi)接正多邊形邊數(shù)確定表([2],79頁)*原抄本及勒基提供的校本中此數(shù)表中的數(shù)據(jù)是完整且連續(xù)的,此處為了示意說明將中間部分行數(shù)據(jù)略去。
至此卡西得出當(dāng)圓周為360度時,為了滿足圓內(nèi)接、外切正多邊形的周長差小于1(60-8),圓內(nèi)接、外切正3×228邊形滿足要求,其每邊所對弧長等于5(60-4),47,36,51,26,16,45,28,7,30。另由上下文可知,若從圓內(nèi)接正3×2邊形入手,經(jīng)過28次連續(xù)將邊數(shù)加倍的迭代運(yùn)算可以得出每邊的長度,隨后乘以邊數(shù)3×228便可以得到內(nèi)接多邊形周長,進(jìn)而求出圓周。若迭代運(yùn)算次數(shù)少于28次,即多邊形的邊數(shù)不足3×228,則無論其邊長如何精確都無法滿足前面的精度要求;若迭代運(yùn)算次數(shù)等于28次,則將多邊形的邊數(shù)精確運(yùn)算到某一數(shù)位后,隨后乘以邊數(shù)則可求出滿足預(yù)設(shè)精度的圓周率,但是即使向后繼續(xù)運(yùn)算并不會提高圓周率后續(xù)數(shù)位的精確度;若迭代運(yùn)算次數(shù)多于28次,雖然將多邊形的邊數(shù)精確運(yùn)算到某一數(shù)位后,將其乘以邊數(shù)可求出滿足預(yù)設(shè)精度的圓周率,但是會造成運(yùn)算量的浪費(fèi)。另外通過卡西的構(gòu)造思想,筆者得出當(dāng)圓周為360度時,滿足互為相似的圓內(nèi)接、外切正3×2n邊形的周長差小于其他數(shù)量級時所對應(yīng)逼近圓周的多邊形邊數(shù),如表5所示:
表5 圓內(nèi)接、外切正多邊形周長差小于其他低階數(shù)量級時多邊形邊數(shù)對應(yīng)表
接下來卡西敘述道:
此時每條弦均小于7(60-4),這是在圓周為360(60°)的情況下。若取直徑為120,則圓周不超過其七分之一的三分之一。設(shè)存在圓內(nèi)接正多邊形,其邊數(shù)為800 335 168,即1(605),2,8,16,12,48。([2],80頁)*在伊斯坦布爾抄本和馬什哈德抄本中用印度數(shù)碼表示的正多邊形邊數(shù)均為800 335 168,但實際上3×228=805 306 368?;舾弦苏J(rèn)為這是卡西在手稿中就出現(xiàn)的錯誤,導(dǎo)致后來的抄本均出現(xiàn)錯誤,但由于在《論圓周》后續(xù)的運(yùn)算中是利用六十進(jìn)制數(shù)碼(3×228=1,2,8,16,12,48)進(jìn)行,故不影響最后的結(jié)果。([1],87頁)
故被開方數(shù)的最后一個單位為60-13×60-4=60-17。在前面28次迭代開方運(yùn)算中,由被開方數(shù)的n位有效數(shù)字開方得出其平方根的n位有效數(shù)字,故每次開方運(yùn)算的精確值應(yīng)達(dá)到60-17;另保留一位約算數(shù)位,故卡西得出每次開方運(yùn)算的精確值應(yīng)達(dá)到60-18。換言之,在利用圓內(nèi)接正3×228邊形逼近圓周,即進(jìn)行28次迭代運(yùn)算的前提下,若每次開方的精確度不足60-18,則最終通過圓內(nèi)接正多邊形來求解圓周所體現(xiàn)出的圓周率達(dá)不到前面的精度要求,但是至少可以保證已求出數(shù)位結(jié)果的準(zhǔn)確性;若每次開方的精確度超過60-18,由于前面限定3×228邊形,并不會因此而提高圓周率60-8以后數(shù)位的精度。
很明顯卡西通過預(yù)設(shè)的圓周率誤差精度,首先準(zhǔn)確地確定了圓內(nèi)接正多邊形的邊數(shù)以及每次開方的精確數(shù)位,這樣既滿足了精度要求同時也減省了不必要的運(yùn)算。由前可知,通過圓的內(nèi)接、外切正多邊形周長來推算圓周率的方法早已有之,但是前人并沒有明確多邊形的邊數(shù)、邊長的精確度以及圓周率的精確度之間的關(guān)系。卡西對于三者之間本質(zhì)關(guān)系的準(zhǔn)確把握表明他在該方法的認(rèn)識上已經(jīng)達(dá)到了較高的理論水平。
《論圓周》第4節(jié)是其數(shù)值算法的核心,卡西首先敘述道:
將2(601)加到正六邊形邊長,即1(601)上,得到3(601);再將其進(jìn)一位得到3(602);取其平方根再加上2(601)。將所得之和再次進(jìn)一位,并取其平方根,重復(fù)28次相同的運(yùn)算。([2],80頁)
隨后卡西指出在開平方運(yùn)算中要利用“準(zhǔn)數(shù)法”(mījān)和將所得平方根平方來檢驗運(yùn)算的準(zhǔn)確性。除此之外沒有過多的論述,之后便是28張連續(xù)的迭代開平方算表。由于這些算表算法、結(jié)構(gòu)相同,故此處僅以第一張算表——求解3(602)平方根為例進(jìn)行說明。如上文所述原始算表中的數(shù)碼單位是利用阿拉伯語表述,其數(shù)碼是利用阿語字母表述,故運(yùn)算書寫順序整體上是從右至左、從上至下進(jìn)行(圖5)。
圖5 《論圓周》第4節(jié)第一張開方算表馬什哈德抄本影印圖片([1],142頁)
接下來基于圖5和勒基提供阿拉伯文校本中的相同算表*勒基提供阿拉伯文校本中的此算表見文獻(xiàn)[2],81頁;另在勒基的德文譯本中將此算表([2],12頁)左右顛倒重新編寫,筆者在表6中保持了原阿拉伯文抄本中從右到左的書寫和運(yùn)算順序。,筆者將此算表中的數(shù)碼全部轉(zhuǎn)寫為今天的印度阿拉伯?dāng)?shù)碼,如表6所示。
下面筆者對該算表中涉及的相關(guān)算法展開分析。
3.1 精巧的開平方算法
表6整體上分為上下兩部分,上部為開平方算表,下部將所得平方根自乘來復(fù)原被開方數(shù)進(jìn)行檢驗。在上部的開方算表中,卡西采用了一種與傳統(tǒng)中算“增乘”開方算法類似的算法。在阿拉伯?dāng)?shù)學(xué)史上,早期阿拉伯?dāng)?shù)學(xué)家薩馬瓦爾(Al-Samaw’al,約1130~約1180)[7]、
薩拉夫·丁·圖西(Sharaf al-Dīn al-Tūsī,1135~1213)[8]都使用過該算法,此外卡西在《算術(shù)之鑰》第1卷第5章(整數(shù)的開方)、第2卷第10章(分?jǐn)?shù)的開方)和第3卷第5章(六十進(jìn)制數(shù)碼開方)中,對利用上述算表開方有詳細(xì)的論述*關(guān)于卡西此種形式開方算法過程、算法原理及其歷史演變可以參考筆者的另外兩篇文章:《〈算術(shù)之鑰〉與中算若干問題的比較研究》(《自然科學(xué)史研究》,2013年第1期,107~128頁)、《〈算術(shù)之鑰〉之代數(shù)學(xué)研究》(上海交通大學(xué)博士學(xué)位論文, 2013年)。。盡管卡西不是此算法的原創(chuàng)者,但是從現(xiàn)有史料來看,阿拉伯早期數(shù)學(xué)家們均是給出與中算相似的分散的算表,卡西卻將所有分散的算表整合在一起,他自己的解釋是便于運(yùn)算和檢驗。筆者按照《算術(shù)之鑰》中相關(guān)算法將上述開方算表中前面幾步機(jī)械算法復(fù)原,如表7所示:
表7 《論圓周》第4節(jié)第一張開方算表局部*表7為表6的右上部局部表。
(1)首先寫出被開方數(shù)3(602)并作表格。從600開始將被開方數(shù)分節(jié),其中每節(jié)中所含數(shù)位的個數(shù)等于所要求開方次數(shù),故3(602)被分為兩節(jié),首節(jié)為數(shù)字3(602),次節(jié)為0(601),0(600)。其中每一節(jié)的第一個數(shù)位為被開方數(shù)的有理數(shù)位,本題中600、602為有理數(shù)位,剩余數(shù)位稱為無理數(shù)位。隨后在豎直方向上分層,層數(shù)等于開方次數(shù),每兩層間作水平分割線,每一層的寬度由實際運(yùn)算需要決定。本題應(yīng)分為兩層,上半部為“數(shù)行”,下半部為“根行”,“數(shù)行”之上也就是表格的最上方稱為“結(jié)果行”。
(2)從第一節(jié)3(602)開始,試求出0~59中最大的整數(shù),可以從3中減去此數(shù)的平方,得到1。將其寫在結(jié)果行中本節(jié)的有理數(shù)位上,同時寫在根行中與其對應(yīng)的列。用上面的數(shù)字1乘以根行中的數(shù)字1,把乘積寫在數(shù)行被開方數(shù)對應(yīng)位置的下方,即該節(jié)有理數(shù)位所在列。隨后將二者相減,在下方寫出二者之差2,在此之前要在二者之間作一條水平分割線用以表示此線上部的數(shù)字將被擦去。隨后將結(jié)果行的數(shù)字再次加到根行的數(shù)字上,所得和寫在原有數(shù)字的上方并后(左)退一位,即位于601所在列,在此之前要在二者之間作一條水平分割線用以表示線下方的部分將被擦去。故數(shù)行中的運(yùn)算方向是由上至下,而根行中的運(yùn)算方向是由下至上。
(3)接下來再次尋找0~59之間的最大整數(shù),即次商x,使得[2(601),x]與x(600)的乘積能夠從前面被開方數(shù)的剩余部分2(602)中減去,得到43(600),將其寫在結(jié)果行第二節(jié)的有理數(shù)位上,同時寫在根行中分割線上方對應(yīng)位置上。用它乘以根行中的數(shù)字,將結(jié)果寫在被開方數(shù)剩余部分的下方并從中減去,如果沒有得到這樣的數(shù)字,則在結(jié)果行中前面所述的次商位置上寫零,同時將根行中的數(shù)字繼續(xù)后退一位,如前繼續(xù)運(yùn)算。本例中根行數(shù)字為[2(601),43]乘以43(600)得到1(602),56,49寫在數(shù)行中被開方數(shù)剩余部分2(602)的下方并從其中減去,剩余3(601),11。接下來將上方的數(shù)字43(600)再次加到根行對應(yīng)數(shù)字上,得到3(600),26,退位如前。
(4)對本題而言,3(602)開平方至單位600時無法開盡,卡西稱之為“無理根”。如若得到其精確的方根,需要在其左側(cè),即低階數(shù)位上補(bǔ)充數(shù)字零。例如開平方需要在接下來的兩個連續(xù)數(shù)位上補(bǔ)充數(shù)字零;如果是開立方,則連續(xù)三個數(shù)位上添加數(shù)字零,以此類推。如果需要更為精確的方根,可以繼續(xù)添加數(shù)字零,其中開方的次數(shù)應(yīng)為被開方數(shù)低階數(shù)位所添加數(shù)字零個數(shù)的約數(shù),且添加的零個數(shù)越多,結(jié)果越精確。本題中在60-1及60-2兩個數(shù)位上添加零作為下一數(shù)節(jié),其中60-2為本節(jié)有理數(shù)位,后面的運(yùn)算同前。
3.2 開方法中的估商方法
顯然按照上面的開平方算法,每進(jìn)行一次估商運(yùn)算,整個算表在豎直方向上需增加三行數(shù)據(jù)、在水平方向上需向左增加兩列數(shù)據(jù),直至運(yùn)算至60-18。但是由于題目數(shù)據(jù)的特殊性,隨著被開方數(shù)剩余部分以及根行中數(shù)字?jǐn)?shù)位的逐漸增加,通過上面算表及《論圓周》下文第7節(jié)可知卡西從第4次估商開始,僅需利用被開方數(shù)中剩余部分的前三位數(shù)碼除以根行中的前三位數(shù)碼便可以準(zhǔn)確地求出新的估商。筆者據(jù)此將隨后每次估商過程復(fù)原,如表8所示:
表8 《論圓周》第4節(jié)第1張開方算表結(jié)果行中60-2~60-13除法估商表
①該表格第三列中的“[]”為取整符號。
3.3 算表結(jié)構(gòu)的調(diào)整
若按照傳統(tǒng)開平方算法,如圖6所示,筆者將原算表數(shù)據(jù)分為1、2、3、4共計4部分,形成兩個同底的三角形結(jié)構(gòu)。其中1、3為數(shù)行層,2、4為根行層。
圖6 《論圓周》迭代開方算表上部結(jié)構(gòu)圖
卡西利用上述估商的特殊性,首先將兩個同底的三角形數(shù)據(jù)結(jié)構(gòu)在豎直方向上進(jìn)行調(diào)整:從第12次估商開始,將被開方數(shù)的剩余部分35(60-18),9,7,47,34,43,59,49,48,49,1(60-8)按照圖6中右側(cè)上部箭頭方向移至數(shù)行頂部;同時將根行數(shù)字50(60-19),28,1,52,55,55,56,45,50,27,3(60-9)按照圖6中右側(cè)下部箭頭方向移至根行底部且向左后退一位。在圖6中可見卡西保持原有1、2兩部分不變并將二者底邊靠攏,將3、4兩部分移至原有數(shù)表中的空白部分。隨后在水平方向上,由于在60-10至60-18共計9次估商過程采用的是將被開方數(shù)剩余部分的前三位除以根行數(shù)字的前三位,故將不需要的圖中陰影部分?jǐn)?shù)據(jù)略去。通過這樣數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)變,在保證結(jié)果準(zhǔn)確性的同時減省了運(yùn)算空間與運(yùn)算量。
3.4 檢驗算法之一:“準(zhǔn)數(shù)法”(mījān)
要保證第4節(jié)28張開方算表中每一個數(shù)據(jù)的準(zhǔn)確性并非易事,為此卡西進(jìn)行了兩類保證其準(zhǔn)確性的運(yùn)算——準(zhǔn)數(shù)法和平方檢驗法。對于前者,在《論圓周》中卡西僅提及了其名稱,但是在《算術(shù)之鑰》第1卷有關(guān)十進(jìn)制整數(shù)算術(shù)的第9章中對此有詳細(xì)的論述:
檢驗計算的正確性可以利用準(zhǔn)數(shù)法,如果運(yùn)算準(zhǔn)確則準(zhǔn)數(shù)法一定正確,而沒有必要將原來的問題重新計算。該方法是將某個數(shù)字的每一位上的數(shù)字相加,從結(jié)果中逐個減去數(shù)字9,直至剩余的差為9或者小于9,此即為原數(shù)的準(zhǔn)數(shù)。例如要求數(shù)字64578的準(zhǔn)數(shù),將數(shù)字8、7、5、4、6相加后逐個減去數(shù)字9,剩余3,此即為原數(shù)的準(zhǔn)數(shù)。對于兩數(shù)乘積的準(zhǔn)數(shù)等于乘數(shù)的準(zhǔn)數(shù)乘以被乘數(shù)的準(zhǔn)數(shù),然后將所得乘積逐個減去數(shù)字9,剩余的差應(yīng)等于原乘積的準(zhǔn)數(shù),這種方法可以用來檢驗乘法運(yùn)算的正確性。([6],76 ~77頁)
此方法不僅適用于十進(jìn)制整數(shù)運(yùn)算,在《論圓周》中同樣可用于檢驗六十進(jìn)制數(shù)碼運(yùn)算的準(zhǔn)確性,此時需要將每個數(shù)位上數(shù)字相加并逐一減去59。我們截取前面開方算表6開始部分的部分?jǐn)?shù)據(jù)來說明,如表9所示。
卡西第二次估商得到43(600),將其同時寫在結(jié)果行及根行中;隨后將其乘以根行的數(shù)字,把乘積寫在被開方數(shù)下方并從其中減去。在此過程中需要檢驗乘法運(yùn)算:[2(601),43]×43(600)=1(602),56,49的正確性。被乘數(shù)[2(601),43]的準(zhǔn)數(shù)為45,將其寫在表格同行的右側(cè),乘數(shù)43(600)的準(zhǔn)數(shù)為43,二者相乘有:45×43=1 935=59×32+47;另原乘積1(602),56,49的準(zhǔn)數(shù)同樣為(49+56+1=106=59+)47,此時兩個準(zhǔn)數(shù)相等,故原乘法運(yùn)算正確,剩余同理。隨著迭代算法的進(jìn)行,開方結(jié)果逐漸逼近2(601),算表中乘法運(yùn)算數(shù)據(jù)逐漸“簡單化”,從第20張算表開始卡西便不再需要該算法進(jìn)行檢驗。
表9 《論圓周》第4節(jié)第1張開方算表中“準(zhǔn)數(shù)法”示意算表*表9為表6的右上部局部表。
3.5 檢驗算法之二:平方復(fù)原法
如果說準(zhǔn)數(shù)法是用來保證容易發(fā)生錯誤的每一步乘法運(yùn)算的準(zhǔn)確性,那么“平方檢驗法”便是用來保證28張算表中每一張算表運(yùn)算的準(zhǔn)確性。該算法體現(xiàn)在每張算表的下部,上下兩張算表在相同列中數(shù)據(jù)的單位相同,這樣便于運(yùn)算和檢驗。所謂的“平方檢驗法”并非“嚴(yán)格”將所求得的平方根進(jìn)行平方,隨后觀察所得結(jié)果是否為原被開方數(shù)。由于在開方過程中算表結(jié)構(gòu)進(jìn)行了調(diào)整,同時略去了部分?jǐn)?shù)據(jù),故該檢驗法進(jìn)行了適應(yīng)性的調(diào)整,以第1張算表為例,整體的原則是將從被開方數(shù)3(602)中減去的數(shù)相加,最后加上被開方數(shù)中的剩余部分3(60-16),16,27,所得和應(yīng)還為原被開方數(shù)3(602)。筆者將平方檢驗數(shù)表按照其運(yùn)算順序抽象為圖7所示。
圖7 《論圓周》第4節(jié)迭代開方算表下部結(jié)構(gòu)圖
卡西首先從上部斜行開始運(yùn)算,第一斜行由下至上分別為平方根的首位數(shù)字1(601)順次乘以平方根中剩余每一位上的數(shù)值,直至58(60-17);第二斜行由下至上分別為平方根的第二位數(shù)字43(600)順次乘以平方根中剩余每一位上的數(shù)值,直至58(60-17) ……第四斜行由下至上分別為平方根的第四位數(shù)字22(60-2)順次乘以平方根中剩余每一位上的數(shù)值,直至58(60-17);從第五斜行開始,繼續(xù)上面的運(yùn)算規(guī)律,但是由于卡西在開平方過程中略去了部分?jǐn)?shù)據(jù),故每一斜行的數(shù)據(jù)依次減少一個,即第五斜行最后的乘積終止于58(60-3)×48(60-16);第六斜行終止于27(60-4)×42(60-15)……最后第11斜行僅為25(60-9)×31(60-10)。另由于在開平方過程中部分?jǐn)?shù)據(jù)進(jìn)行了舍入運(yùn)算,故在平方檢驗算表的最左側(cè)部分?jǐn)?shù)據(jù)進(jìn)行了適應(yīng)性的調(diào)整。
此時將11個斜行數(shù)據(jù)在豎直方向上相加,把所得結(jié)果寫在第一水平行中;由于在每次估商運(yùn)算后,一次項系數(shù)要加倍后退位,故應(yīng)從被開方數(shù)中減去上面所得和的二倍,故此時在第二水平行中將上一行中的數(shù)據(jù)重新書寫;在第三水平行中還應(yīng)加上從被開方數(shù)中減去的部分估商的平方,從右至左分別為1(601)的平方、43(600)的平方……直至25(60-9)的平方;在第四水平行中加上被開方數(shù)中剩余部分3(60-16),16,27。最后將4個水平行中的數(shù)據(jù)相加得到原被開方數(shù)3(602),并寫在第五水平行,說明原開方運(yùn)算正確。原抄本在第六水平行中為印度數(shù)碼書寫,每個數(shù)字表示上方斜行部分在豎直方向相加時需要進(jìn)位的數(shù)值。*例如在上方斜行部分左側(cè)第四列將要進(jìn)行加法運(yùn)算的數(shù)值為:58,41,24,44,30,15,4,21,8,25,27,0,54,39,56,0,0,18,6(其中最后的數(shù)字6為第六水平行左側(cè)第四列位置的數(shù)字)相加得到470=7,50。其中非進(jìn)位數(shù)字50寫在第一、二水平行左側(cè)第四列的位置;進(jìn)位數(shù)字7寫在第六水平行左側(cè)第五列的位置,隨后與上方斜行部分第五列中的數(shù)字相加?!墩搱A周》第4節(jié)28張迭代開方算表所得結(jié)果統(tǒng)計如表10所示:
表10 《論圓周》第4節(jié)28張迭代開方算表結(jié)果統(tǒng)計表([2],9~10頁)*勒基在其德文翻譯部分所給此數(shù)表中的數(shù)據(jù)是完整且連續(xù)的,此處為了示意說明將中間部分行數(shù)據(jù)略去。
另在此算表的第5、6、7、8行均出現(xiàn)了兩行數(shù)據(jù),現(xiàn)以第5行中部分?jǐn)?shù)據(jù)為例來說明其排列規(guī)律:
……59×8=52,71×8=8,06×8=48,0 …………14×8=52,14×8=32,0……
在《論圓周》第5節(jié)中僅包含求解圓內(nèi)接正3×228邊形邊長的開平方算表①在勒基提供的阿拉伯文校本中并沒有包含第5節(jié)的算表。,即利用勾股定理,從直徑的平方中減去第4節(jié)中第28張算表所得平方根的平方②用直徑的平方4減去第28張算表所得平方根的平方,等價于用2減去第27張算表所得平方根,隨后求所得差的平方根。此處看似不需要第28張算表,但是第4節(jié)仍然計算第28張算表的原因是為了第6節(jié)中求解圓外切正3×228邊形邊長所需。,隨后將所得進(jìn)行開平方運(yùn)算:
《論圓周》第6節(jié)首先講述的是求解半徑為60個單位長度的單位圓中互為相似的圓內(nèi)接、外切正3×228邊形周長。在求內(nèi)接多邊形周長時,卡西將第5節(jié)中的開平方結(jié)果乘以其邊數(shù)3×228=1(605),2,8,16,12,48,運(yùn)算過程如算表11所示:
表11 《論圓周》第6節(jié)求2π乘法表([2],83頁)③此處利用表格進(jìn)行乘法運(yùn)算的基本步驟是將乘數(shù)與被乘數(shù)所有數(shù)位上的數(shù)字按照順序?qū)懺诰匦伪砀裣噜弮蛇?;隨后將乘數(shù)每一數(shù)位上的數(shù)字乘以被乘數(shù)每一數(shù)位上的數(shù)字,把乘積寫在相應(yīng)交叉位置的格中;最后在豎直方向上將所有乘積相加并寫在表格下方,此即為最后乘積。這種利用表格進(jìn)行乘法運(yùn)算及相應(yīng)的除法運(yùn)算在《論圓周》第9節(jié)以及《算術(shù)之鑰》中多次出現(xiàn)。
隨后卡西利用第2節(jié)中內(nèi)外多邊形周長的比例關(guān)系來求圓外切多邊形周長:
其中第一項首位單位為601,第四項首位單位為60-9,二者乘積為60-8;將其除以第三項首位單位600,得到第二項首位單位為60-8。此處由于低階單位的數(shù)字對于運(yùn)算結(jié)果的首位精度沒有影響,故將低階單位數(shù)字略去,則上述運(yùn)算簡化為:
將圓內(nèi)接、外切正3×228邊形周長差29(60-9)加到內(nèi)接多邊形周長6(601),16,59,28,1,34,51,46,14,49,46(60-9)之上,得到圓外切多邊形的周長為6(601),16,59,28,1,34,51,46,14,50,15(60-9)。由上文可知當(dāng)圓周為360度時,圓內(nèi)接、外切多邊形的周長差小于1(60-8)度時,滿足通過地球直徑600 000倍的長度為直徑所求圓周的誤差小于4/5根馬鬃的粗細(xì);在上述單位圓中,圓周約為376.8,內(nèi)接、外切正多邊形周長差小于29(60-9),相對于所求大圓而言,此時內(nèi)接、外切多邊形周長差小于2/5根馬鬃的粗細(xì);若利用二者算術(shù)平均數(shù)來表示圓周,則圓周的真實值與所求值之間的誤差小于1/5根馬鬃的粗細(xì),滿足前面的精度要求。第6節(jié)最后卡西指出當(dāng)單位圓半徑為60時,此時圓周為:6(601),16;59,28,1,34,51,46,14,50。若半徑為1,則圓周數(shù)值不變,但單位要后退一位,即相當(dāng)于卡西所給2π的取值為:6(600),16,59,28,1,34,51,46,14,50。將此數(shù)分別乘以1至60之間的每個數(shù)字并列表*在勒基提供的阿拉伯文校本中并未包含此算表,馬什哈德抄本中包含此算表([1],110頁)。,這樣便于通過半徑求圓周或是通過圓周求半徑等的相關(guān)運(yùn)算。另在《算術(shù)之鑰》第4卷第4章第2節(jié)(圓的面積、周長與直徑間的互化)中附有一張類似數(shù)表([6],149頁),其中π的取值僅為3(600),8,29,44。
卡西在第7節(jié)中主要說明第4節(jié)中的28張算表精確到60-18已經(jīng)能夠滿足預(yù)設(shè)精度要求,即使再往后精確計算一位,對預(yù)設(shè)的誤差精度不會產(chǎn)生影響。卡西首先指出:
第一張算表的最后一位是正57(60-18),但真實的結(jié)果是最后一位為負(fù)20(60-19)。 這是由于最后一次運(yùn)算時將剩余的3(60-16),16,27除以兩個平方差中的前幾位,即3(60-17),27,50,得到的商為56(60-18),40,但是前面取值僅為57(60-18)。([2],85頁)
為了使第2張算表的結(jié)果繼續(xù)向后精確一位,則需要在最后一步除法運(yùn)算估商之前將被除數(shù)減去前面的誤差。在迭代公式中每次開方運(yùn)算之前,前面一次的結(jié)果乘以半徑60后,所有的單位需要進(jìn)一位,由于第1張算表略去的誤差為-20(60-19),故在第2張算表的被開方數(shù)中要減去20(60-18)。第2張算表在最后一次除法運(yùn)算之前被開方數(shù)的剩余部分為2(60-16),56,5,從其中減去20(60-18),剩余2(60-16),55,45。將其除以兩個平方之差,即下方根行中的一次項系數(shù)3(60-17),51,49,得到的商為45(60-18),28。原來第2張算表的結(jié)果末位為46(60-18),故第2張算表的誤差為-32(60-19)。按照此規(guī)律,卡西將上文中所有按照順序得到的平方根及內(nèi)接正多邊形邊長、周長都繼續(xù)向后推算一位,如表12所示:
表12 《論圓周》第7節(jié)2π誤差檢驗表([2],86頁)*原抄本及勒基提供的校本中此數(shù)表是橫向排列,且數(shù)據(jù)是完整連續(xù)的,此處為了示意說明將中間部分行數(shù)據(jù)略去。
由此可知,如果將圓內(nèi)接正3×228邊形邊長繼續(xù)向后推算一位,則需要在原有最后一位25(60-14)基礎(chǔ)上減去52(60-15);進(jìn)而所得多邊形周長需要在原有最后一位46(60-9)基礎(chǔ)上減去54(60-10)。我們可以取內(nèi)接多邊形邊長最后一位為24(60-14),周長為45(60-9),即便如此周長的誤差也小于1(60-9),仍滿足前面的誤差精度。
在第8節(jié)中,卡西將前面求出半徑為1的單位圓周長——相當(dāng)于2π,直接轉(zhuǎn)化為印度數(shù)碼?!墩搱A周》并未給出具體的六十進(jìn)制分?jǐn)?shù)到十進(jìn)制小數(shù)的轉(zhuǎn)化方法,但卡西在《算術(shù)之鑰》第3卷第6章中對于60進(jìn)制數(shù)碼與印度數(shù)碼的互化有詳盡的闡述,且他指出《論圓周》第8節(jié)的轉(zhuǎn)化運(yùn)算就是利用此法?!端阈g(shù)之鑰》原文如下:
將六十進(jìn)制數(shù)碼表示的分?jǐn)?shù)轉(zhuǎn)化為用印度數(shù)碼表示,即十進(jìn)制小數(shù)。首先將六十進(jìn)制數(shù)碼表示的分?jǐn)?shù)乘以10,此時結(jié)果中的首位數(shù)字,即“度”位上的數(shù)字為(轉(zhuǎn)化后十進(jìn)制小數(shù)的)十分位數(shù)字;如果此位沒有數(shù)字,則在十分位補(bǔ)上數(shù)字0;隨后將剛才結(jié)果取出整數(shù)部分(即十分位數(shù)字)后的剩余部分繼續(xù)乘以數(shù)字10,如果結(jié)果中的首位數(shù)字同上滿足要求,則取其作為百分位數(shù)字;如若不然,則在百分位補(bǔ)上數(shù)字0;隨后將剩余的分?jǐn)?shù)繼續(xù)乘以數(shù)字10,將得到結(jié)果中(處于度單位上)的數(shù)字寫在千分位上,如此繼續(xù)下去。([6],123~124頁)
例題:現(xiàn)在要將8(60-1), 29, 44轉(zhuǎn)化為十進(jìn)制小數(shù),解題過程如表13所示:
表13 《算術(shù)之鑰》第三卷第6章六十進(jìn)制分?jǐn)?shù)轉(zhuǎn)化十進(jìn)制小數(shù)例題算表
由于(最后一行)乘法結(jié)果中“分”單位上的數(shù)字大于一半*此處指表13中第7行第3列數(shù)字35,其大于60的一半,即大于30,目的是四舍五入。,則將百萬分位上所取的數(shù)字加1,得到3。隨后將結(jié)果按照印度數(shù)碼的書寫方式記為:1 4 1 5 9 3,此即為所求,其中最右側(cè)一位數(shù)字的單位為百萬分位。([6],123~124頁)
卡西利用上述方法得到二倍圓周率等于6.2831853071795865,隨后將其分別乘以1至10之間的每一個整數(shù),這樣便于通過印度數(shù)碼表示的半徑求圓周,或是通過印度數(shù)碼表示的圓周來求半徑,如表14所示:
表14 《論圓周》第8節(jié)用印度數(shù)碼表示2π倍數(shù)表([2],86頁)
在《論圓周》第9節(jié)中卡西利用第6節(jié)和第8節(jié)中2π的兩張倍數(shù)表,分別舉例如何利用類似于第6節(jié)中的表格算法通過半徑來求圓周,以及通過圓周來求半徑。此外在《算術(shù)之鑰》第5卷第4章第2節(jié)有關(guān)圓面積的計算內(nèi)容中,還包含了半徑與面積之間類似的表格算法。
表15 《論圓周》第10節(jié)兩個2π近似值差值表([2],91頁)
在《論圓周》結(jié)語部分,卡西主要解決了《論圓周》開始部分中所提及的阿布·瓦法與阿爾·比魯尼在弦表中部分?jǐn)?shù)據(jù)運(yùn)算錯誤的問題,此處不再展開論述。
在眾多古代文明中都可以找到有關(guān)圓周率推算的數(shù)學(xué)內(nèi)容??ㄎ髟凇墩搱A周》一書中得到擁有16位準(zhǔn)確數(shù)字的用十進(jìn)制小數(shù)表示的圓周率,若僅從推算精度看,直至1596年荷蘭數(shù)學(xué)家魯?shù)婪颉し丁た埔羵?Ludolph Van Ceulen,1539~1610)才將用十進(jìn)制小數(shù)表示的圓周率推算至20位準(zhǔn)確數(shù)字。圓周率的推算是一項復(fù)雜的工作,若要客觀準(zhǔn)確地評價卡西在《論圓周》一書中取得的數(shù)學(xué)成就,不能僅憑圓周率的推算精度。
由上文可知,卡西已經(jīng)認(rèn)識到了圓周率無限不循環(huán)的特點(diǎn),在天文學(xué)及高精度運(yùn)算中對圓周率的精度提出了較高要求,因此在《論圓周》開始部分就確定了圓周率的精度要求,這也是該書的寫作目的。在算法思想上,卡西采用了阿基米德的方法,即從互為相似的圓內(nèi)接、外切正六邊形入手,將多邊形邊數(shù)連續(xù)加倍,相應(yīng)地二者的周長逐漸逼近圓周,隨后在單位圓中利用推算出的內(nèi)接、外切多邊形周長的算術(shù)平均數(shù)表示圓周,即二倍圓周率。在《論圓周》正文部分,卡西首先利用幾何模型構(gòu)造了迭代算法;隨后通過對圓周率精度、迭代運(yùn)算次數(shù)和迭代運(yùn)算中的開方精度之間本質(zhì)關(guān)系的認(rèn)識,進(jìn)而確定了運(yùn)算量,使得在滿足預(yù)設(shè)精度的同時避免了運(yùn)算量的浪費(fèi)。有了理論上的保證,進(jìn)而卡西在《論圓周》第4節(jié),利用28張迭代開方算表進(jìn)行推算。在具體的操作過程中,卡西將已有的開方算表算法進(jìn)行了適應(yīng)性的改造,使得在保證運(yùn)算結(jié)果準(zhǔn)確的同時減省了運(yùn)算量,體現(xiàn)了他高超的構(gòu)造運(yùn)算能力。
1 Hogendijk J P. Al-Kāshī’s determination of π to 16 decimals in an old manuscript [J].ZeitschriftfürGeschichtederArabisch-IslamischenWissenschaften, 2009, 19: 73~154.
2 Luckey P L. Der Lehrbrief über den Kreisumfang [J].AbhandlungenderDeutschenAkademiederWissenschaftenzuBerlin, 1953, 6.
3 Youschkevitch A, Rosenfeld B. Ghiyath al-din Jamshid Mas’ud al-Kashi (or al-Kashani) [C] //DictionaryofScientificBiography.Volume 11. New York: Charles Scribner’s Sons, 1981. 255~262.
4 Azarian M K. Al-Kāshī’s fundamental theorem [J].InternationalJournalofPureandAppliedMathematics, 2004, 14(4), 499~509.
5 Azarian M K. Al-Risāla al-muhītīyya: A Summary [J].MissouriJournalofMathematicalScience, 2010, 22(2), 64~85.
6 Jamshīd al-Kāshī. al-Demerdash A S, al-Cheikh M H (eds.).Miftahal-Hisab(KeytoArithmetic) [M]. Cairo: Dār al-Kātib al-‘Arabī, 1967.
7 Rashed R.TheDevelopmentofArabicMathematics:BetweenArithmeticandAlgebra[M]. Translated by Armstrong A F. Kluwer Academic Publishers, 1994.
8 Sharaf al-Dīn al-Tūsī. Rashed R. (ed. & trans.).Oeuvresmathématiques:AlgèbreetgéométrieauXIIesiècle[M]. 2 Vols. Paris: Les Belles Lettres, 1986.
A Study of al-Kāshī’sTreatiseontheCircumference
GUO Yuanyuan
(InstitutefortheHistoryofNaturalSciences,CAS,Beijing100190,China)
This article analyzesTreatiseontheCircumference(1424) by al-Kāshī (circa 1380~1429) based on related Arabic historical materials. Al-Kāshī adopted regular polygons to approximate circle circumference in the calculation of Pi. The results show that an insight into the relationship among the side number of the regular polygons, plus the side length accuracy and the precision of Pi, were crucial in al-Kāshī’s high accuracy of Pi. The results also demonstrate that the sophisticated algorithm of extracting square root contributed to his calculation. The present study is of significance in understanding the algorithm used inTreatiseontheCircumference.
al-Kāshī,TreatiseontheCircumference,Pi,iterative algorithm
2015- 01- 13;
2015- 11- 30
郭園園,1981年出生,天津人,助理研究員,主要研究方向為數(shù)學(xué)史。
中國科學(xué)院科學(xué)技術(shù)史青年人才研教特別支持項目:阿爾·卡西代數(shù)學(xué)研究(編號:Y522021009)
N091∶O11
A
1000- 0224(2016)01- 0095- 25