從0.999...談起
? ? 很久沒有投稿了,這里就以網(wǎng)上比較常見的問題:0.9循環(huán)是否等于1作為引子寫一個短文。一般的科普作品會簡單解釋并證明0.999...=1。然而關(guān)于它的討論常常不會就此停止。因為我們通常會見到反對這一結(jié)論的意見。然而反對者的理由雖然很多,卻很少有給出數(shù)學(xué)或者邏輯上的理由的。反對這些反對者的人則往往只是用另一種方式復(fù)述證明,并沒有解釋問題本身。所以筆者才會考慮寫一篇文章。
一、對于該問題爭論本身的分析
? ? 通常情況下,一個問題如果能在教科書找到解答,人們就不再會繼續(xù)爭論。可是,圍繞在這樣的問題上的爭論卻沒有因為微積分給出的結(jié)論而終止。這說明表面上大家在討論兩者是否相等,實際上問題的癥結(jié)并不在結(jié)論。
? ? 而熱衷于討論這些問題的人一般都會預(yù)設(shè)很多前提。有時候是關(guān)于實數(shù)的完備公理,有時候是初等數(shù)學(xué)的一些基本常識。甚至有些人會直接代入生活中的常識作為討論前提。但卻很少有人嘗試質(zhì)疑這些前提。這里說的質(zhì)疑并不是懷疑它們是否正確,而是說嘗試去掉某些甚至所有的前提,回歸到問題的本身。
? ? 對于這個問題而言,問題的本身其實就是三個符號,0.999...,等號和1. 其中看起來最為復(fù)雜的就是0.999...,所以我們放在后面討論它。這里先對等號和1做個簡單的分析。我們首先要指出的就是,能被稱為符號的東西一定有它的意義。也許它的含義或者定義會因為情形不同而改變,但它不可能是一個空洞而無意義的符號。這就好比,我們的漢字可以被認(rèn)為是一個又一個符號,字典里也會給出它們的不同的釋義,具體情境中它們會有具體且唯一的正確含義,但所有被我們成為漢字的一定有其意義,否則就不會成為漢語的組成部分。同樣的道理適用于其它語言,也適用于所有的符號。
? ??比如,等號作為一個符號,它表達(dá)的意思,或者說它的意義就是左右兩邊的東西相等。但是不同的場景中相等的具體定義是不一樣的。舉個例子,如果我們說x=y表達(dá)的意思是x就是y,那么一個并不那么顯然的問題就是
這個式子對嗎?如果我們說二者相等,那是因為我們認(rèn)為它們倆都是某個有理數(shù)a,即0.25這個有理數(shù)的不同表示。但是接下來,如果我說3整除a的分母,你會馬上意識到,這兩個符號其實本來都只是分?jǐn)?shù),也就是兩個整數(shù)的形式比。因為這個命題只對等式左邊的3/12是正確的。于是我們會發(fā)現(xiàn)就連“x就是y”這句話其實也需要根據(jù)具體的情況重新定義?;蛘呶覀儜?yīng)該說,等號即“是”,也就是下判斷。這是一個先定性再定量的過程。只不過定性的部分被隱藏在了質(zhì)量的辯證法里。也就是先回答這是什么,然后再計算它們究竟是否相等。比如,如果我們把問題出成
那么進(jìn)行計算的過程會反過來迫使我們將等號左右兩邊都判定為有理數(shù),即3/12是一個分?jǐn)?shù),0.25是一個小數(shù),所以用等號相連時它們只能被看作有理數(shù)。通常情況下,定性的過程或者被人們當(dāng)作一種預(yù)設(shè)有意識地使用,或者被人們當(dāng)作一種常識無意識地使用。同時,定性和定量是無法分割的。這一點在數(shù)學(xué)中其實是很明顯的但也同樣容易被人忽視。比如數(shù)學(xué)中有很多術(shù)語名詞。人們提起它們的時候第一反應(yīng)或許是:這是某個量。也就是說量有了自己的名字。這本身就是質(zhì)量的辯證法的體現(xiàn)。只不過這種說法一般都是對現(xiàn)象的描述,顯得有些本末倒置。實際發(fā)生的事情應(yīng)該是某種質(zhì)被量化了。因為通常來說,質(zhì)才是主要矛盾。
? ? 而1和等號類似,自身即包含定性到定量的辯證過程。定性在這里指的是我們首先需要“數(shù)”的概念。然后才能通過定量給出其中的單位(乘法單位元)“1”。比如,初等數(shù)學(xué)的知識就足以告訴我們,整數(shù)可以通過同余類的概念分成奇數(shù)和偶數(shù)。如果所有的奇數(shù)記作1(也就是用奇數(shù)1來代表所有奇數(shù)),所有的偶數(shù)記作0(用偶數(shù)0來代表所有偶數(shù)),那么根據(jù)偶數(shù)+偶數(shù)=偶數(shù)(0+0=0),奇數(shù)+奇數(shù)=偶數(shù)(1+1=0)等法則,我們會發(fā)現(xiàn)僅靠同余類0和1就可以得到一種新的數(shù)。人們通常稱它為二元域,因為它只有兩個數(shù)。這個并不復(fù)雜的例子反過來可以說明,一旦我們的符號涉及“數(shù)”,哪怕是看起來最簡單的0和1,我們都不得不搞清楚0和1的具體含義。也就是說我們不能討論抽象的作為符號的“數(shù)”是否相等,必須在具體的某一種數(shù)中(或者說某一個具體的群環(huán)模域這樣的泛代數(shù)里)才能真正討論兩個數(shù)是否相等。
? ? 至此,我們已經(jīng)可以得出一個最基本的結(jié)論,想要研究這個問題,就一定要先給出一個足以同時容納等號左右兩個符號的體系。常見的爭論中最大的爭議之一就來源于此,即為什么我們一定要在實數(shù)或者其它的體系里討論這個問題,我不能按照自己的想法規(guī)定它們嗎?這一節(jié)基本上回答了符號體系的必要性。
二、關(guān)于0.999...
? ? 現(xiàn)在我們重點討論0.999...這個符號本身。重點解釋為什么實數(shù)體系或者超實數(shù)體系等等數(shù)學(xué)體系一定會被牽涉進(jìn)來。換句話說,上一節(jié)我們說明了符號體系的必要性,現(xiàn)在來說明為什么一定需要特定的體系才能來研究這個問題。
? ? 符號0.999...本身已經(jīng)蘊含了很多信息。首先這個符號本身不是一個有限的符號。但是無窮并非是神秘的東西。比如首先把0.999...看作十進(jìn)制小數(shù),然后把它解釋為小數(shù)點后每一位都是9. 這個解釋會讓0.00...01+0.999...=1這樣的想法不攻自破。因為想讓這個等式成立,除非左邊的0.00...01中的數(shù)字1不可能在小數(shù)點后的有限位。然而0.999...中每個數(shù)字9都在小數(shù)點后的有限位,即十分位,百分位,千分位,諸如此類。那么這個數(shù)字1根本沒有對應(yīng)的9可以相加。所以要么我們只能說這個思路是錯的,要么從一開始我們就必須說0.999...根本不是我們通常說的十進(jìn)制小數(shù)。但即便我們修改0.999...的定義,認(rèn)為小數(shù)的數(shù)字不僅可以落在小數(shù)點后的有限位,還可以落在一個被稱為無窮位的地方,那么上邊的等式還會遇到一個顯而易見的問題,那就是無窮位的1+9會進(jìn)1,那么無窮位的前一位是誰?如果無窮位的前一位是某個有限位,那么0.00...01+0.999...也不是1,而是一個形如1.00...0999...0的數(shù)字。并且這個想法還有其它的問題應(yīng)該拿出來討論,比如它背后使用的序集和我們通常說的作為自然數(shù)的序集是不一樣的。而如果無窮位前面一位是另一個無窮位,那么無窮遠(yuǎn)處的計算是怎么影響到有限位的呢?
? ? 因此這個符號作為一種記號,已經(jīng)把很多想法天然地排斥出去了。上面的分析更多的是一種定量分析。事實上,定性的分析我們能看得更清楚。0.999...這個符號來源于對有限小數(shù)的無限延申。能夠合理容納它的體系必須要首先包含有限小數(shù),并且能夠讓有限小數(shù)表達(dá)出我們常識中所認(rèn)知的性質(zhì)。這也是很多人嘗試使用形如0.00....01去把0.999...和1的“差別”補(bǔ)齊的根源。但其失敗的必然性也來自于此。既然0.999...來自于有限小數(shù)的無限延申,這里其實應(yīng)該首先解決的是無限或者無窮。如果依然用有限的方法去解決無限的問題,出錯也是遲早的事情。
? ? 上文中對于無窮的解釋非常簡單粗暴,即0.999...的意思是小數(shù)點后每一位都是9. 表面上看它沒有任何跟無窮相關(guān)的字詞。但是每一位實際上是說我們要同時或者在有限的時間里寫下無窮多個9(準(zhǔn)確地說是和自然數(shù)一樣多的9)。?這當(dāng)然是違反直覺和常理的。這反而是這個定義合理的地方。因為它體現(xiàn)了無窮的一種量化方式。這個定義取自對符號的字面意思的解釋。用到的隱藏假設(shè)只有十進(jìn)制小數(shù)。所以有它的合理性。
? ? 我們還可以用另一種方式來體現(xiàn)無窮的量化。用到的假設(shè)也只有十進(jìn)制小數(shù)。既然我們熟悉有限的東西,而0.999...來自于有限小數(shù)的無限延申,那么我們可以用有限小數(shù)來逼近它。比方說,0.999...是數(shù)列{0.9,0.99,0.999,0.9999,...}. 根據(jù)上面的定性分析,我們使用了一個無窮數(shù)列來表示有限小數(shù)無限延申的過程。因此這個定義也有它的合理性。但是它有瑕疵。那就是數(shù)列{0.9,0.98,0.998,0.9998,...}看起來似乎也可以認(rèn)為是無限逼近0.999...的過程,因為它們的數(shù)值越來越相近,符合我們對無窮逼近的一般理解。由此來看,我們甚至可以構(gòu)造無窮多個數(shù)列,它們都可以用來表示有限數(shù)列無限逼近到0.999...的過程。換句話說,我們可以提出問題:0可以用哪些數(shù)列逼近?比如{1,1/2,1/3,...}可以表示0,{0,0,0,...}當(dāng)然也是0,{0,0.1,0,0.01,0,0.001,...}也可以表示0. 所有這些能表示0的數(shù)列和{0.9,0.99,0.999,...}逐項相加或者逐項相減得到的一定還是0.999...的表示。
? ? 因此比起上面簡單粗暴的定義,無限逼近的過程看似復(fù)雜,卻更細(xì)致地反映出了無窮這個抽象概念被量化的過程,即通過自然數(shù)個有限抵達(dá)極限。這個過程在第一個定義中被隱含在了十進(jìn)制小數(shù)本身的定義了,因為十進(jìn)制小數(shù)的每一位都需要用自然數(shù)(或者整數(shù))標(biāo)號。因此兩個定義的相通之處說明,一旦我們使用了十進(jìn)制小數(shù)這個概念,無窮和極限就已經(jīng)繞不開了。除非我們不打算使用小數(shù)來解釋0.999...的含義,否則就必須構(gòu)建一個能和無窮、極限打交道的“數(shù)”。然而我們提到過,0.999...這個符號來源于有限小數(shù)的無限延申。繞開小數(shù)解釋0.999...或許有理論上的可能,但需要給出足夠好的理由,否則更像是一種自言自語。
? ? 事情發(fā)展到了這一步,實數(shù)其實已經(jīng)呼之欲出了。因為第二個定義提出了關(guān)于無限逼近時的一系列問題,比如數(shù)列何時收斂,數(shù)列收斂時極限是否存在,數(shù)列極限存在時是否唯一?舉個例子,在承認(rèn)pi是無理數(shù)的前提下,我們可以用pi的小數(shù)表示來逼近它,即pi可以用數(shù)列{3,3.1,3.14,3.142,...}來定義。我們會發(fā)現(xiàn)數(shù)列的每一項都是有理數(shù),可它的極限pi是無理數(shù)。這說明有理數(shù)面對極限時的性質(zhì)并不好。從這個角度講,實數(shù)是有理數(shù)(按照通常的度量)完備化的結(jié)果。換句話說,實數(shù)中收斂的數(shù)列一定有極限,并且極限唯一,而且實數(shù)是包含有理數(shù)的最小的滿足上述性質(zhì)的“數(shù)”。從這個意義上講,合理地給出0.999...的定義的最小體系就是實數(shù)。
? ? 現(xiàn)在我們已經(jīng)初步建立起來了能夠容納0.999..的體系。于是我們會回到開篇的問題,即何為相等。作為實數(shù),0.999...不過是1的另一種表示形式。但是包含有理數(shù)的“數(shù)”不止實數(shù)。比如說超實數(shù)可以視作實數(shù)的擴(kuò)張。可它關(guān)于極限不再是完備的。不過不管如何構(gòu)造超實數(shù),其中的每個數(shù)都可以表示為標(biāo)準(zhǔn)部分(實數(shù)的部分)和非標(biāo)準(zhǔn)部分。而0.999...作為一個超實數(shù),它的標(biāo)準(zhǔn)部分就是1,非標(biāo)準(zhǔn)部分是一個無窮小量,可以用{0.1,0.01,0.001,...}來表示。這種情況下,0.999...和1的確相差一個無窮小量。然而超實數(shù)的構(gòu)造通常都會要求它的基本性質(zhì),比如在微積分上的主要結(jié)論,和實數(shù)一致。因為超實數(shù)在想法上本來就追溯到萊布尼茲的無窮小量。如果構(gòu)造出的超實數(shù)不能支撐起牛頓-萊布尼茲公式,那它根本不應(yīng)該被叫做超實數(shù)。所以0.999...和1作為超實數(shù)的標(biāo)準(zhǔn)部分相等非但不是一種簡單的否定,反而更說明了0.999...這個符號所體現(xiàn)的無限與極限在量化時無論采取何種形式或者定義,都必須與今天我們知道的微積分保持基本的一致。想要否定當(dāng)前的結(jié)論,就必須給出新的體系。然而從數(shù)學(xué)發(fā)展的歷史乃至科學(xué)發(fā)展的歷史來看,新的體系不可能是簡單地推翻舊的體系。就好像超實數(shù)盡管可以看作實數(shù)的擴(kuò)張,盡管能夠給出0.999...不等于1的結(jié)論,卻無法取代實數(shù)作為有理數(shù)完備化的地位。而這個“地位”甚至可以說是現(xiàn)代公理集合論的一個深刻的結(jié)論。
三、結(jié)語
? ? 對于0.999...這個符號進(jìn)行討論之后,我們可以發(fā)現(xiàn)它實際上隱含著實數(shù)這個概念發(fā)展的歷史。從一開始如同機(jī)械一樣地把實數(shù)等同于有理數(shù)、無理數(shù)(或者有限小數(shù),無限循環(huán)小數(shù)和無限不循環(huán)小數(shù))組裝起來的產(chǎn)物,到實數(shù)與極限結(jié)合成為有理數(shù)的完備化,再到現(xiàn)在實數(shù)在公理集合論中獲得其唯一性(唯一性也有它的含義和定義)。它的定義的變化反映的是數(shù)學(xué)本身的發(fā)展。舊的定義并不是簡單地被人懷疑或否定乃至拋棄,相反,新舊定義的興替反映的恰恰是實數(shù)這個概念本身。正因為如此,今天的我們說實數(shù)其實就是有理數(shù)和無理數(shù)的時候,沒人會說這是錯的。而由此很多人又會產(chǎn)生一個錯覺,即數(shù)學(xué)無非是一堆符號、定義的互相推導(dǎo),無非是看我們承認(rèn)誰是前提,誰是公理。這樣地看法既不符合事實,也不符合歷史。比如實數(shù)的符號、定義并不是實數(shù)自己。我們之所以能夠把不同的命題、句子成為實數(shù)的定義,恰恰是因為我們先有了實數(shù)的概念,然后把與它相關(guān)的一堆命題擺在面前,根據(jù)實數(shù)這個概念本身進(jìn)行篩選,誰可以作為定義,誰可以作為性質(zhì),誰可以作為它的重要定理。然而這實際上是一個先做出判斷(定性),再進(jìn)行定量分析的過程。所以我們可以看出數(shù)學(xué)中“質(zhì)”是非常重要但往往被人忽略的過程。因為一旦提筆開始計算(或者證明),“質(zhì)”就已經(jīng)被有意識或者無意間給出了。由此,我們的最終結(jié)論實際上就是數(shù)學(xué)的正確性最終來自于實踐,包括社會生產(chǎn),包括歷史。因為質(zhì)量的辯證法有既有質(zhì)到量的過程也有量到質(zhì)的過程。某個數(shù)學(xué)理論能夠在歷史中證明其正確性,必然是因為它能夠解決某個問題,或許是理論問題,或許是生產(chǎn)中的問題。0.999...是否等于1看似是數(shù)學(xué)中的理論問題,但涉及的微積分本身在歷史上是牛頓力學(xué)在數(shù)學(xué)中催生的產(chǎn)物,而誕生后又在數(shù)學(xué)內(nèi)部,其它科學(xué)理論,社會生產(chǎn)中有廣泛應(yīng)用,因此作為實數(shù)二者相等是有其正確性可言的,并非是一句文字游戲所能概括的。