本文轉載自【微信公眾號:環球科學】,經微信公眾號授權轉載,如需轉載原文作者聯繫
0.999...=1?
0.999…是否等於1?這個問題的背後是不同數學體系間的碰撞。我們將看到,在古典數學的框架內,0.999…=1得到了嚴格的證明,這也是該問題最為直接的解答方案。
引
數學中的記數法能夠幫助我們理解並證明數學思想。實用的數學符號以及特定運算法則的引入幫助數學家取得了眾多進展。公元5至7世紀,印度數學家發明了十進位系統。得益於該系統,我們能夠描述極大和極小的數字,並對其進行運算。
如果沒有這項非比尋常的發明,科學可能就無法生根發芽,更不用說貿易和現代工業的發展了。但是,一些記數法有時會讓人困惑不解。這就是我們在這裡要討論的問題。至少第一眼看上去,這個問題簡直讓人摸不著頭腦。這個問題就是:
「0.999…=1正確嗎?」或者反過來說,「0.999…<1正確嗎?」
0.999…這個表達式使用的是實數的小數記數法。這個表達式裡的省略號意味著,最後一個9後面會跟著無窮多的9。只有在小數點後邊的數字確定的情況下(如192.252525…),這種表達式才有意義。在這篇文章中,我們會探討這個記數法現在被賦予的真正含義。但首先,看看數學老師如何運用一些基礎計算法則,向學生證明0.999…=1。
01
0.999...=1的簡單證明
證明一
所有人都知道1/3=0.333…。如果我們用1除以3,首先我們發現個位數是0,接著出現了0.3、0.33、0.333。於是我們很確信,接下來的數是無窮的,因此1/3=0.333…。
接著,我們在等號的兩邊分別乘以3,那麼就得到了3×1/3=3×0.333…,即1=0.999…。
同理,我們通過計算得到1/9=0.111…。我們在等號兩邊同時乘以9,就可以得到1=0.999…。
證明二
令u=0.999…。在等號的兩邊分別乘以10。我們注意到一個數乘以10後,相當於將小數點向右移動一位:10u=9.999…。
我們現在把新的等式兩邊同時減去u=0.999…:
10u–u=9(因為9.999…–0.999…=9)。我們得到9u=9,因此u=1。我們又一次證明了1= 0.999…。
證明三
假設0.999…<1。那麼0.999…和1的平均值m就應當大於0.9而小於1,因為兩個數的平均值總是位於這兩個數之間。
那麼m的小數形式應該是以0.9開頭的。又因為m大於0.99而小於1,則m的小數形式應該是以0.99開頭的。
通過這樣一步步推演,我們證明m的小數形式必然是0.999…。因此,m等於兩個數中較小的那個。這是不合邏輯的,因為兩個不相等的數的平均值不可能等於其中任何一個。因此,最初的假設0.999…<1是錯的。同理可證,0.999…>1也是不可能的,因此只可能是1=0.999…。
我們也可以通過另一種方式完成這個推導。
令u=0.999…,那麼我們就得到了m=(u +1)/2=u,因此u+1=2u,所以u=1。
但是,數學老師很清楚,即使演示了這些證明之後,如果讓學生暢所欲言,他們依然會對等號的合理性心存懷疑。來自世界不同地區的多項研究發現,即使看過了多種正確的證明過程,仍有人不相信這個等式是正確的。
02
圖像證明法
有一種證明0.999=1的方法採用了圖像的手段。我們以二進位為例。在二進位中,上述問題可被轉化為:0.111是否等於1?
小數0.111實際上等於1/2+1/4+1/8++1/2n+。在這張圖中,我們可以很清晰地看到邊長為1的正方形被不斷地對半切割開來,而它的面積為1。
但是依然有人質疑這種方法,因為這種方法看起來並不完美。實際上大正方形的右上角是永遠無法被填滿的。
有數十篇數學教育領域的論文討論了這種現象。在我看來,這種現象有一個簡單的解釋:
這是由於一些孩子從6~8歲起,就用下面的方法比較整數和有限小數,而且這個方法的效果往往不錯。
03
比較規則
當我們比較兩個正數時,我們把兩個數上下排列、小數點對齊,然後我們從左到右將上下兩個數逐位進行比較,找到第一個不同的數字。如果存在這樣的數字,那麼我們就知道這兩個正數是不相等的,且數字更小的那個正數本身也更小。
比如,如果我們對0.28145和0.2813989進行比較,那麼我們可以這樣把它們排列在一起:
0.28145
0.2813989
運用上述規則,我們發現這兩個數字中第一個不同的數字位於小數點後第4位,而由於4大於3,因此我們知道上面的數大於下面的數。如果我們用同樣的規則對1(寫作1.000…)和0.999…進行比較:
1.000…
0.999…
我們很快就發現1大於0.999…,因為比較時第一個數字就不同:
1大於0。
根據這種比較規則,毫無疑問0.999…<1。而數學老師對這樣想的學生的回應往往是這樣的:「這種比較方法適用於有限小數,但有限小數的比較法則不適用於無限小數。」簡單地說,並不是所有運算法則都適用於無窮的情況。
數學老師的權威可以叫停這場爭論。但是執著的學生依然可以這樣據理反駁:
「為什麼在證明1、2、3中,有限小數的運算法則可以延伸到無限小數,但是比較規則卻不可以延伸到無限小數?」
這麼一問,我們又回到了原點。在這場爭論中,到底是誰比較有道理?是能用3種方法證明0.999…=1的老師,還是那些堅持比較規則,一心和老師作對的學生?為了解決這個問題,我們需要回到無限小數的定義上去。
目前,人們對無限小數的定義建立在「收斂數列」的概念之上。
如果用以下形式表示數r:
0.a1a2a3…an…,這就意味著r等於a1/10+a2/100+a3/1000+…+an/10n+…。也就是說,r是下面這個數列的極限:a1/10,a1/10+a2/100,a1/10+a2/100+a3/1000,…。
04
用極限證明0.999...=1
r是一個數列的極限,在這個數列中,每一項都是一個有限小數。比如0.333…就是數列0,3/10,33/100,333/1000,…的極限。
19世紀初,數學家伯納德·博爾扎諾(Bernard Bolzano)、奧古斯丁·路易·柯西(Augustin Louis Cauchy)和卡爾· 魏爾施特拉斯(Karl Weierstrass)提出極限的概念後,這一定義成型。他們提出的極限概念有時也被稱為極限的ε-δ定義。
後來,數學家提出了根據整數構建實數集的方法(用柯西數列或者戴德金分割法),進一步完善了上述定義,最終對實數以及無限小數的完整定義達成了一致。
這些在19世紀打下的紮實基礎以及數學家的一致意見,讓我們對無限小數的定義有了十足的把握。這個定義被稱為「實數和連續性的古典定義」。那麼根據這個定義,如何解釋「1=0.999…?」這個問題呢?不出所料,答案是站在上文的數學老師這一邊的。
證明四
當n逼近無窮大時,u=0.999…就成為了以下數列通項公式的極限:
xn=0.9+0.09+…+0.0…09(在小數點和最後一個9之間有n個零)。因式分解後,該公式可寫為:xn=0.9(1+1/10+… +1/10n)。
我們知道0.9=1–1/10。我們把a=1/10代入恆等式(1–a)(1 +a+a2+a3+…+an)=1–an+1(如果你想證明的話可以把恆等式展開),就可以推導出xn=1–1/10n +1。
當n逼近無窮大時,數列10n+1也逼近無窮大,而1/10n+1則會逼近0,xn逼近1,因此我們得知1=0.999…。
我們沒有列出詳細的證明步驟(按照ε-δ定義),但是上面的簡單證明對於那些理解了實數古典定義精髓的人來說應該不是難事。
藉助極限的概念,實數的古典定義表明,證明1、2和3是正確的。古典定義還能證明,在這些證明中把計算法則應用於無窮的情況是合理的,而學生採用的比較規則是不正確的,因為嚴格不等式不適用於數列的極限。
不過高中生不必進行如此深入的討論。我們可以利用這個機會,向他們列舉基於極限的實數定義能夠導出哪些結論。
將某些不等式隨意推廣到極限的情況是不正確的。如,
假設對於任意整數n來說,yn<a且yn收斂,但這並不意味著n→∞時yn<a,而是僅意味著n→∞時yn≤a。
某些實數,比如n/10k(n 和 k 是整數)有兩種小數形式,一種是以無窮多的0結尾的(因此我們就不寫出來了),另一種以無窮多的9結尾。
例如:
0.15=0.14999…,12.8=12.7999…,1=0.999…。
上述情況適用於所有進位的記數法。如在2進位中,1.000…=0.111…,0.101=0.100111…。
人們很難相信1=0.999…的原因在於,他們常常不能理解「無限小數記數法」和「實數」之間的關係。在整數和有限小數的範疇內,識別一個數及其小數形式是輕而易舉的事,因為小數的表達方式具有單一性。
但是到了無限小數的領域,想要識別一個數就不再那麼容易了,必須要藉助實數更為抽象的概念。千萬別把實數和它們的小數形式混淆。如果每個實數都有唯一的小數形式,那麼世界將是多麼簡單明了啊。但現實卻不是這樣的!
現在我們還有一個問題沒有解決:
在數學意義上,0.999…<1成立的場景是否會出現?
實際上,答案是肯定的,有兩種方法可以使這個基於直覺的不等式嚴格成立。
我們將會看到,用其中任意一種方法構造的數集都無法與19世紀定義的實數系相媲美。為了簡化討論,我們將只討論正數,以及經過一些調整後適用於負數的情形。
05
定義0.999...<1的缺陷
第一種方法非常簡單直接:直接將有限小數和無限小數看作不相等的數。這是一種非常經濟的方法:
不用改變任何事,只需認定0.999…<1以及類似的不等式成立即可。
我們把這種假設稱為「冥頑不靈學生的實數」。
用這種方法,我們將帶有小數點的數字序列(如315.212121…)看成實數,並認為,若且唯若兩個數的數字完全相同時才相等。然後我們用學生提出的方法來比較這兩個數的大小:
將這兩個數上下排列,使小數點對齊,然後從左到右將兩個數的每一位進行比較,直到找到差別。這種排序法叫做帶小數點的無窮序列的字典序(從左到右)。
比如,7345.222222…比7345.221222…要大。
這樣一來,在「冥頑不靈學生的實數」的範疇內,0.999…< 1。
古典實數對兩個數的大小順序是這樣定義的:在兩個不同的數之間,總是存在無窮多的其他實數。對於「冥頑不靈學生的實數」來說,這一點在多數情況下也成立,除了0.999…和1這種情況。在「冥頑不靈學生的實數」的體系中,2.19999…和2.20000…雖然不相等,但它們之間不存在任何實數。也就是說,這些數之間存在著一個「空洞」。
實際上,這些數之間存在無數個「空洞」:
在每個以無窮多的9結尾的數後面,都有這樣的一個「空洞」。
這與連續性的概念相違背。連續性指的是平直、光滑、無窮的幾何結構。從這個觀點出發,「冥頑不靈學生的實數」並不令人滿意。
為了定義「冥頑不靈學生的實數」間的運算,人們設想了一些新方法。我們可以從中挑出一種,看看它有什麼缺陷。當然,其他方法也未必比這個好。
我們規定,r和r'的和為f(r + r'),積為f(r×r'),其中「+」 和「×」是一般意義下的運算符號,而 f 是進位轉換操作。在必要的情況下,f 會將9的無窮序列轉變為0,同時在9的無窮序列前自動加1。
對於冥頑不靈的學生來說,根據一般的計算規則,0.666…+0.333…首先會得出0.999…,然後通過f的轉化,會算出答案為1。因此他會得出,0.666…+0.333…=1。
如果仍讓0.666…+0.333…=0.999…(雖然這看上去更合理),就會得到1/3+2/3=0.333…+0.666…=0.999…,但我們期望得到的是1/3+2/3=1。而通過這種運算方法,就不會有這樣的問題了。
上述運算法則避免了在計算中出現999…的問題,因此也避免了1/3+2/3=0.999…以及其他類似問題的出現。最重要的是,在上述運算中,加法和乘法是符合交換律和結合律的;此外,乘法對加法也滿足分配律。因此,「冥頑不靈學生的實數」乍看之下非常符合邏輯。
但是,這種算法並非處處適用。因為在這種算法中,乘以1有時會改變一個數。比如,0.999…×1=1。
更糟糕的是,消去律(若a≠0,則由ab=ac我們可以推導出 b=c)在這種體系中不再適用:
從0.999…×1=1=1×1我們無法推導出0.999…=1,因為對冥頑不靈的學生來說,0.999…一定不等於1。
要想使用該算法,就必須重新審視我們常用的代數運算法則在冥頑不靈的學生的體系中是否依然有效。
在「冥頑不靈學生的實數」世界中,極限的概念也不盡如人意。數列1– (1/10)n並不收斂於1,而是收斂於0.999…(而0.999…卻不等於1)。
但是,1/10n卻收斂於0,這就意味著1/10n–1收斂於–1。換句話說,一個收斂於L的數列,其加法逆元的極限卻不一定等於–L。
這實在是令人掃興!冥頑不靈的學生或許有一套實數能夠讓不等式0.999…<1成立,但是這背後卻要付出巨大的代價!我們還是另尋高明吧。
06
非標準分析法
19世紀定義的極限概念為現代意義上的連續性打下了基礎。極限的概念排除了無窮小,即那些比任意非0整數的倒數都要小的數。這種無窮小的數在實數的古典概念中不存在。
但是,17至18世紀的數學家,尤其是萊布尼茨(Leibniz)曾採用了無窮小的概念。當代物理學家也喜歡使用無窮小,因為它能簡化一些計算。在1966年,美國數學家亞伯拉罕·魯濱遜(Abraham Robinson)證明,實數可以包含無窮小,並且這樣的設定不會產生矛盾。
他的理論——非標準分析理論(non-standard analysis)十分優美且強大。它為蒙受不白之冤的無窮小正名。他的理論建立在模型論(一門數理邏輯,發展於20世紀)的基礎上,成為另一種可能替代古典實數概念的理論。
類似於古典實數概念中基於收斂數列的小數,我們也可以利用該理論構建小數概念。在這個理論中,0.999…有特殊含義,其中的省略號意味著小數點後有無窮多的9,而這裡的「無窮多」可以有多種理解,因為在這個理論中有幾種不同的無限大整數 H,它們在古典理論中是不存在的。
根據對無窮多的不同理解,0.999…在這個理論中可以是大小不同的實數,它們或等於1,或嚴格小於1。這是因為,如果0.999…中有H個9,那麼0.999…=1–1/10H,而等號右邊並不等於1(而是差了無窮小)。
這種小數的理論由數學家阿爾伯特·萊特斯頓(Albert Lightstone)提出。如果冥頑不靈的學生放棄了前面提到的方法,還可以嘗試這種非標準分析法,這樣他仍能堅稱0.999…<1並不是無稽之談。因為在魯濱遜的非標準分析中,實數組成了一個域(一種集合,其中定義了加法和乘法),因此我們不會遇到前一種方法中無限小數與有限小數間出現「空洞」的情況。
結
接受0.999...=1吧!
那麼,怎樣利用非標準分析來看待本文中的問題呢?我們是該採用它的實數(有時也被稱作超實數),還是19世紀古典理論中被廣泛接受的實數呢?
這個問題不好回答。簡單地說,有大量的研究支持採用非標準分析。該理論的支持者宣稱,用這種理論得出的證明過程比古典理論更加簡單直接,而且結果是一樣的。有些人甚至認為應該在數學分析的一般教學中教授非標準分析。
雖然反對者以及懷疑者並不質疑該理論的嚴密性(因為有人已經證明該理論和古典實數理論一樣可信),但是他們卻認為該理論不夠簡潔。下面這位數學家對此的評論頗具代表性:
「我同意非標準分析是一個非常有意思的領域,它能夠解釋為什麼使用了無窮小的不嚴謹論證,也能夠得到和方法嚴密的ε-δ極限一樣的結果。話雖如此,我卻不能認同非標準分析的證明比標準分析更加簡單清晰。
當你深入非標準分析的核心後,你會發現它一點也不簡單,需要具備深厚的數學功底才能理解。當然了,教師可以這樣告訴學生:『相信我,如果你們願意的話我可以嚴格地進行證明』,但是實際上,教師一般都會採用並不嚴密的論證。」
雖然非標準分析已經存在半個世紀了,但它依然不能取代古典分析,更毋需說它還有好幾個競爭對手存在。和其他幾種方法相比,它並不能以更簡單的方式證明0.999…<1。
總而言之,我們要接受0.999…=1。
並且我們應當認識到,之所以在直覺上認為0.999…和1嚴格不等,實際上是因為我們掉入了一種記數法的陷阱。
這種記數法讓我們錯誤地認為,實數不恆等於帶小數點的數字序列。記數法是幫助我們理解數學概念、使數學進步的好幫手,但有時它們也會把我們弄糊塗了。