第七章 數字
從現在起,我將絕口不提印度人的科學成就,不提他們在天文學方面的精細發現——這甚至比希臘人和巴比倫人的天文學成就更具性,也不提他們那無法用語言形容的、熟練的計算方法。這些印度人並不是敘利亞人。我隻想說,這種計算用9個符號就能完成。
——塞維魯斯·塞伯赫特(Severus Sebokht),敘利亞主教
電影中經常會出現囚犯用“五杆門”( five-bar gate)計數法,在牢房的牆上刻出道道痕跡,以標記在獄中挨過的每的橋段。“五杆門”計數法用不斷重復的記號來記錄不斷更新的數字。它和其他形式的計數符號一樣,都是我們古老的計算方式,可追溯至成千上萬年前。舊石器時代晚期(前4萬—前1萬年)的穴居人就把動物骨骼作為計算時的計數棒。現存早的例子可能是距今3.5萬年、明確標記有29個凹痕的列彭波骨(Lebombo bone),這些狒狒的小塊肋骨發現於斯威士蘭(Swaziland)列彭波山上的邊界山洞(Border Cave)裡。
即便在靈敏的數字繫統發明之前,人們也有使用刻痕計數的需求——比如,牧人需要記錄羊群的數量。每隻外出喫草的羊穿過大門時,牧人就會在木棍上刻下一道凹痕。到黃昏時分羊群歸來時,他就會根據木棍上的刻痕檢查羊的數量,每進來一隻羊就把手指移至下一處刻痕。他用這種方式可以知道是否有羊丟失,而不必知道他的羊群中有多少隻羊。計數棒在當時的用途就像計算對牧人的用途一樣,它能像數字一樣在人際間口口相傳,也可以通過書寫流傳下去。
簡單改進一下原始計數棒,就能顯著擴大其適用範圍。人們所需的隻是另外一根計數棒,這可不隻是倍增了我們可資利用的凹槽數量那麼簡單。其工作原理如下:其中一根棒子為標準棒(the standard),上面已刻有很多凹痕,比如20道,而另外一根為未刻痕的計數棒(tally stick),上面畫了一條分割線,將計數棒區分為上半截和下半截。牧人在標準棒上順著凹槽移動手指數羊。他的手指很快就移動至標準棒的底部了,於是,他就在計數棒的下半截劃上一道凹痕,以表示數完了1個單位的20。然後,牧人又重新在標準棒上計數。每當手指摩挲至第20個凹痕後,他就在計數棒的下半截刻上一道。當標準棒記錄下後一隻羊後,牧人便在計數棒的上半截刻下後得出的不足20隻羊的凹痕數。現在,如果計數棒下半截上有4道凹痕,上半截有7道,則計得的數值為4×20+7=87。不過,他當然不必知道這個實際總數是多少,隻要他能夠在羊群返回時,在兩根棍子上做好標記,逆向推進這個過程即可。
當然,標準棒上的凹痕數量是十分任意的,設定其為20也沒什麼特別的優勢。盡管如此,在計數棒上刻痕,設定單位數為20來數羊,本身就是古英語中“刻痕”(score)一詞的起源。在《聖經》中,數字70寫作“60和10”,表示60的語詞“threescore”可追溯至14世紀時期——在約翰·威克裡夫(John Wyclif)翻譯的《聖經》裡有這麼一句:Thre scoor and sixe daies(66天)。這是本從拉丁文翻譯為英語的《聖經》。
這種以20為基數的計數繫統又稱二十進制計數法。現代法國的編號方式仍然部分地采用了二十進制:20(vingt)便被用作從60—99之間數字的基本單位。法語中的80就是quatre-vingts,其字面意思為“4個20”,而soixante-quinze(字面意思為“60又15”)則表示75。此項慣例在法國大革命之後引入,目的是統一當時法國各地的多種計數繫統。
其他計數繫統的基數各有不同。基數為12的十二進制繫統則是早出現的計數繫統之一。它被付諸使用可能是因為一年大約會出現12次月相周期(陰歷月),也可能因為數字12的倍數和因數都方便求得:12=2×2×3=3×4=2×6, 60=12×5,360=12×30,依此類推。十二進制計數法在歐洲廣為使用,“一打”(dozen)一詞就來自古法語詞douzaine,意為“12個一組”。計數單位“羅”(gross)源自拉丁詞彙表示“龐大的”grossus,gross常用來表示數字144,意為“一大打”或者“12打”。
終,人類手上的10個數字提供了十分便於理解和使用的計數標準,進而十進制繫統被普遍采用。
畢達哥拉斯(約前580—前500年)當之無愧是歷史上位偉大的數學家,盡管以他的名字命名的思想流派發展壯大的過程更像是一場宗教運動而非數學運動,但該流派還是取得了豐碩的成果。在畢達哥拉斯哲學的基礎觀念裡,數字與宇宙的實質緊密相連;他把數字視為抽像存在,也視為構成物質的基石。然而,我們應指出,他的生活籠罩著神秘的面紗,一些歷史學家甚至認為歷史上並無此人。
甚至在早於畢達哥拉前18世紀,古巴比倫人就使用了“六十進制”計數法,與每10個單位進一位的十進制不同,它是每60個單位向更高的單位進一位。因此,我們正是從古巴比倫人那裡繼承了1小時為60分鐘,1分鐘為60秒的計時方式。同樣,將角度分為弧度、弧分和弧秒都基於六十進制。古巴比倫人的數字符號高到59,過這一數值,下一個單位就又從1開始計數。因此,若用六十進制計數法表示我們現在的數字,我們可在單位之間用逗號隔開。於是,數字61便寫作(1,1)。同樣,數字123寫作(2,3),因為它的構成方式為60×2+3。由此可得,數字4321寫作(1,12,1),因為4321=3600×1+60×12+1,以此類推。這種六十進制計數法也用於表示分數,分號可用來隔開整數與分數。因此,雖然(1,30)表示數字90(1×60+30),但(1;30)則表示數字1.5,因為30/60與1/2等值。類似的,(2;45)表示2.75,因為45/60與3/4等值。
古巴比倫時期的一小塊泥板(現存於美國耶魯大學)很好地表示了數字2平方根的近似值。其寫作形式為包含分號的六十進制(1;24,51,10)。我們可用完整分數的形式寫出這個數字,並將所有分數加總起來:
並且,鋻於的值是1.414213……,可以看出,上述數值與值十分近似。不過,數值近似本身並不能真正令人印像深刻。十分謹慎保守的古代科學史學者奧托·諾伊格鮑爾(Otto Neugebauer)捍衛著古巴比倫科學的價值,根據他的說法,藏於耶魯大學的小泥板和許多其他已知的古巴比倫泥板都證明古巴比倫人通曉“畢達哥拉斯定理”:他們已經知道從正方形的邊長確定其對角線的長度這一方法——這比畢達哥拉斯還要早1000年!因此,邊長為1個單位的正方形的對角線長度恰好為兩個邊長平方之和的平方根。而在直角三角形中,此對角線則構成其斜邊:
古代印度數學家也熟知解出平方根的技巧,我們可從一本1881年在巴赫沙利村(今巴基斯坦境內)附近發現的、寫在樺樹皮上的《巴赫沙利手稿》(Bakhshali Manuscript)中看到這方面的記載。該手稿的成書時間可追前2世3世紀之間,其中包含了各種數學問題的解法,比如求解平方根的技巧等。
同樣,《周髀算經》是一本古代中國數學文獻,成書年代可追溯至周朝(前1046—前256年)。該書收集了246個未命名的數學問題,每一個都附有詳細的解答步驟和答案,其中包含了對畢達哥拉斯定理的證明,這是世界上關於該定理證明的早記載之一,周公曾為該證明配圖(見上頁圖),這是展示以三角形斜邊為邊長的正方形面積等於另兩邊平方之和的直觀的方法之一。
另外一個數學造詣過古希臘人的例子則由古巴比倫人和古埃及人共享殊榮,即確定π值(圓的周長與直徑之間的恆定比率)。π值是一個“無理數”,它無法剛好寫成兩個整數之比,這在早先是一個僅有古希臘數學家纔完全理解的概念。因此,用十進制計數法表示的π值是一連串無限的數字。我們受古希臘人對數學做過較大貢獻的觀念影響頗深,以至於許多人認為是古希臘人發現了這個常數的存在。這主要是由於我們普遍使用古希臘字母π表示這個常數。它有時候也稱“阿基米德常數”,這是為了紀念這位用幾何方法對其進行嚴格估算的古希臘科學家。然而,其他民族在古希臘人登上歷史舞臺之前便知道了這個常數。古代科學家解出這個常數的方法十分有趣。根據十分粗糙的估算,π的值為3,即任何圓形的周長均為其直徑長度的3倍。這個數值已足夠應付諸多場合了,但巴比倫人和埃及人還需做得更好。
古人並未給這個常數命名,甚至不承認它是個實際存在的數學量,而是把它編入估測圓形面積的數學規則中。我們在學校學習的圓面積計算法則πr2就表達了這層含義,就像我們學習圓周長等於2πr一樣。古巴比倫人經常寫道,圓面積為周長平方的1/12。這聽起來可能相當奇怪,但通過一些不太復雜的代數運算,我們可以看到他們用於計算的π值恰好為3。一塊前2000年早期的泥板表明,當時的人使用了更為的π值3?或3.125,這比值3.1415……略小。
古埃及人使用了不同的公式表示圓的面積為半徑8/9長度的平方。我們對這個公式稍做調整之後可以看出,他們使用的π值為3.16,盡管這一取值稍大,但仍好過3這個粗略值。
古巴比倫人,尤其是漢謨拉比王朝時期(約前1780年)的古巴比倫人在數學領域取得了重大進步,成千上萬塊楔形文字泥板有力地證明了這一點。例如,他們的乘法表是如此獨特,以至於2000年後托勒密的同類表格都無法望其項背。當然,我們也不應誇大古巴比倫人的數學能力和成就;盡管比古埃及人取得了更高的造詣,但他們仍不可避免地被古希臘人,特別是畢達哥拉斯、阿基米德和歐幾裡得等天纔人物越。然而,我們也應該指出,托勒密在其《天文學大成》裡用到了巴比倫的六十進制計數法,盡管僅用於寫作分數。直到伊斯蘭時代,所有天文學著作裡的整數總是寫成與羅馬數字極其相似的字母。
仿照古希臘和希伯來傳統的阿拉伯符號法可追溯至伊斯蘭世界早期。這套符號稱為輔音音素繫統(abjad system),因為數字繫統中的前4位(1,2,3,4)分別由字母表中的前4個字母表示:alif(a),bā (b),jīm(j)和dāl(d)。例如,托勒密會將數字365寫作τξε,而伊斯蘭數學家則會將其寫作。他們都用3個字母代表數字300、60和5。需要注意的是,這與我們如今使用的十進制符號有較大不同,十進制計數法由9個符號加上0組成,可用於表示任何數字。相反,在輔音音素繫統中,數字3、30和300都要用不同的字母表示。
穆斯林數學家甚至在繼承了古印度的十進制計數法之後,仍繼續使用經過改進的古巴比倫六十進制算術,在天文計算中尤其如此,以至於這種算術又稱“天文學家的算術”。
我們使用的數字符號的原型都來自古印前3世紀阿育王時期的銘文、前2世紀的納納加特(Nana Ghat)銘文,1—2世紀的納西克洞穴(Nasik Caves)均刻有這些數字符號,它們全都與使用的數字符號十分相似。例如,數字2和3被公認為古代符號=和≡的草書派生形式。然而,這些古印度早期的銘文都不包含任何位值(place value)和零的概念,而正是零讓現代位值計數法得以實現。古印度文獻有證據表明,數字零可能出現得更早一些,但是任何現存的包含零所對應符號在內的銘文時間都不早於9世紀。
位值計數法是個數字繫統,其中每個位置與緊鄰位置的關繫都是基數的恆定倍數。我們的十進制繫統的基數自然為10,這套繫統的發展可歸於兩位偉大的中世紀印度數學家,位是提出位值觀念的阿耶波多(āryabhata,476—550年),第二位則是一個世紀之後的婆羅門笈多。近有人在作品裡指出,已知古老的包含位值繫統的文獻是成書於458年的耆那教宇宙志《羅克維巴伽》(Lokavibhaga)。到670年前後,位值繫統已傳入今敘利亞北部,當地一位名叫塞維魯斯·塞伯赫特的主教稱贊發明這個繫統的印度人比希臘傑出人物更獨具慧眼,更具發明精神,他還提到了“9個符號”,但似乎他還不知道零這種觀念。
人們目前並不清楚阿撥斯王朝的巴格達學者是何時得知印度數字的。也許,早在婆羅門笈多《悉檀多》(直接譯自梵語,或轉譯自波斯語)翻譯為阿拉伯文的曼蘇爾時期,學者們就已對印度數字有所了解。兩位的巴格達學者——哲學家肯迪和數學家花剌子米在把印度數字引入伊斯蘭世界期間自然發揮了關鍵作用。他們都在馬蒙統治時期撰寫了該主題的作品,而且也正是他們的作品後來被譯為拉丁文而傳入了西方世界,歐洲人因此得以了解十進制。中世紀的歐洲人還隻當這些是阿拉伯數字呢。然而,直到若干世紀後,歐洲人纔廣泛接受了這一數字繫統,其中一個社會原因是人們認為十進制是穆斯林的像征。
歐洲人接受十進制較為滯後還有一個更為重要的實際原因:羅馬數字已足夠應付日常生活的多數事務。隻有在文藝復興時期人們對科學產生興趣之後,纔理解了數學的重要性,也纔意識到數字是數學的核心,因此也是現代科學的基石。
印度–阿拉伯數字繫統終由偉大的數學家、比薩的列奧納多(Leonardo of Pisa,即斐波那契,1170—1250年)在歐洲普及開來,他曾在地中海世界四處遊學,師從當時的阿拉伯數學家。旅行歸來2年後的1200年,時年32歲的斐波那契就用自己所學的知識寫成了《計算之書》(Liber Abaci)。然而,歷史學家喬治·薩頓指出:“一個例子就足以說明印度數字整體上在西方的普及程度之緩慢。直到18世紀,法國審計法院(Cour des Comptes of France)仍在使用羅馬數字。”
考慮到羅馬數字在進行乘法等運算時較為不便,人們可能認為印度–阿拉伯十進制繫統會在歐洲受到熱烈而真摯的歡迎。但這個計數繫統真正重要之處並不在於表示9個數字的符號本身,甚至也不在於9個數字(外加0)。畢竟,羅馬數字僅需要7個字母就能表示1000以內的任意整數。關鍵之點在於位值繫統本身:印度–阿拉伯符號可定義大至無限的任意數字,它的運算效率遠羅馬數字。我們以123乘以11為例。多數人可在紙上輕松地計算出結果,而如果善於此道,你甚至能心算得出答案。正確答案是1353。你也可以試試用羅馬數字進行同樣的乘法運算。你必須用CXXIII(123)乘以XI(11),得到MCCCLIII(1353)。這麼做總是顯得有點累贅。古埃及人可能是在偶然間早發現了這種計算技巧,隨著熟練運用,將算法提煉了出來。
讓我們再回顧一下批繼承了印度十進制計數繫統的巴格達數學家。花剌子米在825年左右寫作了算術方面的偉大著作《印度算術中的加減法》(The Book of Addition and Subtraction According to the Hindu Calculation),該書阿拉伯文原版已不復存在,這個標題也隻是猜測。這本書可能是本翻譯為拉丁文的有關十進制的書籍,拉丁版譯名為《花剌子米的印度算術》(Liber Algorismi de Numero Indorum),開篇就道“花剌子米說”(Dixit algorismi)。接著,書裡描述了各種計算指令的演算步驟,“算法”一詞也源自本書,該詞得自花剌子米的拉丁化名字。然而,他的這本著作和其他早期作品的譯本在歐洲被當作危險的薩拉森魔法(Saracen magic),遭到了諸多反對。
伊斯蘭世界也十分不願意改弦更張。盡管肯迪和花剌子米已引進了印度十進制,但阿拉伯數學家卻更樂於繼續使用他們熟知的方法:要麼堅持巴比倫六十進制計數法,要麼固守用字母指示數字的希臘、羅馬傳統。11這在天文歷表中十分常見,天文學家以這種方式延續著他們從托勒密《天文學大成》等文獻中習得的傳統。花剌子米之後500年,十進制計數法仍被束之高閣,巴比倫的六十進制繫統則繼續廣泛使用。我們以博學之人比魯尼在1025年寫成的地理學專著《城市坐標的確定》為例稍加說明。在該書中,比魯尼十分嚴謹地推導著數學公式,並輔以適用的例子,比如展示如何確定比魯尼生活的城市——阿富汗中部的加茲尼(Ghazna)的坐標,即根據巴格達和麥加的坐標來確定。緯度測定對比魯尼這樣的天纔而言沒有任何困難,並且他根據原始的轉換技巧把所有六十進制整數轉化為十進制整數進行計算。在當時計算經度難度更大,所有步驟都直接按照巴比倫的六十進制完成。
使用六十進制的傳統和慣例持續了數百年之久。出版於中世紀的阿拉伯文數學、天文學和地理學圖表幾乎不包含任何十進制數字。到14世紀,阿拉伯地理學家阿布·菲達(Abū al-Fidā,1273—1331年)彙編的經緯度表格還在使用六十進制。因此,人們幾乎無法批評歐洲人在如此長的時間裡一直拒絕使用印度–阿拉伯數字,因為伊斯蘭世界也一樣。
很多科學觀念的起源都籠罩著厚厚的歷史迷霧,而在阿拉伯科學的語境下,這些觀念上的困惑則包括從“他們不過傳遞了希臘和印度的知識”到“我們所知的一切都來自他們”等,不一而足,而不確定也迷人的一直都是數字0的起源問題。
爭論的緣起與支撐某個論點的證據存有矛盾並沒有多少聯繫,也與論點缺乏證據沒有太大關繫,爭論的根源在於“誰早發現了零?”。這個問題可能意味著不同的事情,問題的含義不同,答案自然也不同。因此,讓我先把問題講清楚:
問題到底是:人們在何時使用符號或標記來表示數字中的空白占位符?
或者,更具體地說:我們目前的十進制計數繫統使用的這種空白占位符(比如用來表示數字11和101的區別)是何時出現的?
占位符是否意味著人們認可了零作為表示無物存在(空或虛無)的哲學觀念?
或者,它是否意味著人們把零當作一個真正的數字,與其他任意數字具有同等地位,位於正數和負數的邊界處?
很明顯,理解零這個概念的難度有所不同。我們並非在尋找一位早晨醒來突發奇想的數學家:“我知道我們的數字繫統缺少什麼了,那就是會讓算術變得更加通用和有用的數字:零。”
零的粗淺定義是對一個數字內的進位制的定前2000年早期的古巴比倫人需要區別六十進制表格中的數字。他們從一開始就充分覺察到了使用的數字含義具有模糊性。以數字(1,20)為例。它可能指的是如下任何一組數字:
(甲) (1,20),它表示 60×1+20=80
(乙) (1,0,20),它表示 3600×1+60×0+20=3620
(丙)(1,20,0),它表示 3600×1+60×20+0=4800
如果人們並未把零放框的合適位置,我們何以知道其中的數字到底是多少?古巴比倫人用兩種方式解決了這個問題。1和10的楔形符號分別是 和,因此,數字20寫作,數字80或(1,20)寫作。但為了與數字3620或(1,0,20)進行區分,他們會直接在符號間留出足夠的空隙表示零或空位: 。當然,這仍未解決如何寫作數字4800(1,20,0)的問題。他們的解決辦法就是像寫作(1,20)時一樣直接寫出,並根據該數字書寫的上下文,解釋清楚該符號表示4800而非意指80。
很久以後,塞琉古巴比倫人以亞歷山大大帝繼承人的身份統治了美索不達米亞,他們發明了一個可取代古巴比倫人使用的這種模稜兩可的“空隙”的符號。因此前300年的眾多巴比倫楔形文字泥板上發現了已知的早表示零的符號()。然而,它僅用於分隔其他數字符號,這就像我們如今用零來區分25、205、2005一樣。奇怪的是,塞琉古人與早先的巴比倫人一樣,從不把這個分隔符置於數字末尾,而是將其放在其他數字符號之間。
人們自然可以爭論,使用表示零的符號究竟在何種程度上標志著數字零的真正發明。有趣的是,與十進制繫統相比,六十進制很少需要用表示零的符號占據空位。在六十進制繫統中,小於60的整數壓根兒不會用到表示零的符號,小於3600的整數也僅用到59次(相比而言,十進制中則會用到917次)。因此,它對巴比倫人而言並非急需之物。
而在世界另一側的中美洲,稍晚於巴比倫人的瑪雅人則用很少的符號(一個點代表數字1,一條線代表數字5)發明出了自己的二十進制(基數為20)數字繫統。他們的點線組合可達19種,之後就往下一個單位進一。而且他們和巴比倫人一樣,都使用一個表示零的符號作為占位符。此類記錄的早例子出前36年。
受到古巴比倫天文學及相關的六十進制繫統強烈影響的古希臘人,則用他們自己的字母表示整數,並用六十進制符號表示分數。為此,他們也需要一個表示零的符號,古希臘字母中第十五位omicron(類似於英語字母中的o)充當了此任。但在上述3種情況(古巴比倫人、瑪雅人和古希臘人)中,表示零的符號都不是一個數字,甚至都未曾作為一個獨立的概念出現。然而,在面對“誰首先發明了表示零的符號?”這種問題時,回答古巴比倫人就對了。
那麼,零作為表示空無(nothingness)概念的情況又當如何?當然,哲學上談到的“虛空”概念在某種程度上可等同於數學概念中的零。如果的確如此,那就是古希臘人先人一步。傑出的數學史家卡爾·博伊爾(Carl Boyer)曾主張說,亞裡士多前400年時就把零作為數學概念用於思考和寫作了。14亞裡士多德在《物理學》(Physica)中從直線上的點的角度談到數學上表示零的概念。亞裡士多德還提到,由於物體的速度與其所在介質的阻力(或密度)呈反比,因而零無法作為被除數。如此,物體在真空(或虛空)中的速度會因為沒有阻力而達到無限。亞裡士多德聲稱,這證明了虛空不可能存在。因此,大約在同一時期,我們看到古巴比倫人發明了表示零的符號,而古希臘人首先描述了零的概念。
我們現在來討論把零當作獨立的數字本身這個更為復雜的問題,古希臘人和古巴比倫人的觀念必然因此而產生關聯。許多歷史學家認為,零作為數字出現是比較晚近的情況,就連花剌子米列出的方程式中的代數量也不含有零。相反,他總會讓等式兩邊的數量保持在非零狀態。舉一個符號表征更明確的例子,他絕不會建立x2+3x?10=0,而會建立x2+3x=10這種等式。x在這兩種情況下的取值都是2,這兩個等式之間不足道的區別隻在於(根據花剌子米自己定義的規則)重新調整了數字10的位置。但前一個等式對他而言還相當陌生,因為“零”在當時尚不具備與其他數字同等的地位。