如何嚴謹地證明 0.9999…=1?
查看原文 >>謝邀。
先嚴謹地定義0.99..,然後這個等式就是一個平凡的結果。
在我們看來,這種問題跟「0是不是自然數」是一個性質的問題。「0是不是自然數」是個數學問題么?當然不是,這純粹是個記號問題,是個關於定義的語言問題。你想讓他是就是,想讓他不是就不是;但是你如果想讓所有人都贊同你對這個問題的答案,唯一的方法是弄死所有和你觀點相左的人。
至於0.99..和1,它們確實不一定非得相等。如果你接受非標準分析,接受超實數,接受存在>0的無窮小作為一個固定的實體,那麼你確實可以把0.99..定義成1減掉某個無窮小。但是如果你使用的是標準實數系,把0.99..定義成0.9+0.09+..這個級數的和,或者0.9,0.99,..這個實數列的上確界。那0.99..=1就是很平凡的事情,基本是同義反覆的廢話。
所以在討論一個數學命題之前,先確保你真的理解這個命題在說什麼,確保你真的明白這個命題里出現的每一個詞,每一個符號的意思。
這是實數相等的定義啊,還用證明嗎?
上圖引自夏老師的實分析上冊
假設你已經知道如何由dedekind cut構造實數,那麼我們可以規定實數的十進位表示規則如下:
實數 由 產生,顯然必能得到兩個相鄰的整數分別在 和 , 為 和 .
用數 十等分這個區間, 必定落在一個或兩個區間內。
如果 一直落在一個區間內,重複上述過程,我們就得到了
如果 從某個區間開始同時落在兩個區間內,用相似的方法我們可以構造 ,按照成立的不等式左端或右端,
這以後的數就有了兩種表示,一種是用0循環,一種是用9循環。所以為什麼0.99999999999...=1.0000000
因為這就是一個東西。
PS:我老師上課做實數enumeration的時候,直接明說規定不能用9,所以0.999999這個表示方法就根本不存在,從根本上迴避了這個問題。
為什麼不試試神奇的JavaScript呢?
Thanks for inventing JavaScript
這個題目是我半個月之前答的,答完之後也沒怎麼看評論,今天看了看評論發現還是評論老哥人才多。竟然有那麼多人堅信0.999....不等於1,如果要是根本不知道或者理解不了這很正常,畢竟聞道有先後,術業有專攻。在看了大家的評論之后里面確實有很多高手指出了我的不足,也拓寬了我的思路。但更多的就是那些一知半解還自恃清高的人,根本不是為了理解這個答案而是專門為了抬杠而來。是我太弱,我理解不了你們,求求你們去發paper好不好?你們要是真的能證明這兩個不相等,菲爾茲獎在等著你,你拿菲爾茲獎狠狠抽我臉好不好。
求求各位了如果覺得我寫的是錯了等你們學完了高等數學之後再來討論好不好,不然我真的是看不懂你們想表達什麼。
但是也有我寫的不詳細和很多老哥指出了我的不足,這裡統一修改一下。
第一種方法1/3=0.33333......這是小學課本上寫的,而且這本來就是無限循環小數的定義,對這裡有問題去看無線循環小數的百度百科。
第二種方法小數點後都是無窮個9,所以小數點後的值是一樣的。之所以是無窮,就是因為無窮減去一個常數還是無窮,硬要說小數點後少了一個9的可以去參考希爾伯特旅館悖論。
第三種方法的原理是基於實數的稠密性。
第四種方法用1-1/10∧n是同一種方法的不同形態。
~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~
這道題目其實是一道很好的劃分數學能力與階段的題目,這道題目可以說是橫貫了整個人類的數學發展史,我從小到大,隨著數學能力的不斷提升,至少見到這道題4遍,而每次標準的解答都不相同。這裡我提供4種不同的解答思路,分別代表4個數學階段
我第一次見到這道題是在我小學奧數的題目,當時的我還年輕,開心的寫下了0.99999...小於1。而拿到答案的我驚呆了,這兩者竟然相等,在我百度之後明白了,1/3等於0.3333...,2/3等於0.6666...,3/3等於0.999...等於1。這個解答雖然不甚嚴謹,但在我小學剛學分數時仍是醍醐灌頂一般。這個解答代表了數學的第一個階段,也是畢達哥拉斯學派階段。
在一年之後新一年奧數比賽前老師帶我們做前一年卷子,這是我才知道標準解答根本不是我一年前理解的那樣,而是利用方程
設x=0.99999...(小數點後無窮個9)
10x=9.99999...(小數點後無窮個9)
10x-x=9
9x=9
x=1
這個解答同樣在我年幼時感到巧妙,有趣的是,這個方法同樣對應著數學的一個階段,那就是未知數/方程的誕生。
在我高二的時候我第三次遇到這道題目,這次的我仍然是為了參加奧賽而遇到的這道題,我按照上面提到的第二種方法解答被老師狠狠的嘲笑了。這時的我已經涉足數論方面,但感覺越來越吃力。老師給出的解答方案是看能不能找出一個數大於0.9999...同時小於1。如果能那麼0.9999...<1,如果不能,那麼0.9999...=1。當時的我只能承認這個方法的嚴謹,但卻在心中嘲笑著這個方法的晦澀難懂。此時的我還不知道自己正在嘲諷數學的皇冠-數論。這也正是數學的第三個階段。
又過了兩年,當我上了大學,學了數分,知道了ε-σ語言,學過了級數,學過了上下限,這時的我才真正知道了什麼才是真正嚴謹的數學思想與數學邏輯,相比之下以前學過的東西不過是滄海一粟而已,這種方法也代表著現代數學,微分積分的時代。
(我保證我寫的能讓各位知乎小學生看明白)
Def 1:整數由Peano公理構造,是一個有序的整環。
Def 2:有理數是整數的分式域,有理數的序可以從整數的序出發良定義。
Def 3:實數被定義為有理數的Dedekind分割(有理數的向下封閉無最大元的真子集)。
Def 4:至此我們還沒有定義一個數是怎麼寫的。現在我們來定義十進位有限小數的寫法:一個含一個小數點的有限數碼串,定義為這個串去掉小數點後的數,比上10的k次方(k是小數點後的位數)這個有理數。
Def 5:然後定義無限小數的意義:一個含一個小數點的無窮數碼串,(作為一個Dedekind分割)定義為小數點後取前k位得到的有理數的Dedekind分割的並集。請驗證這個定義可以得到0.99999... = 1。
Rmk:除了從序的角度,還可以從度量空間的角度構造實數,即把不完備的有理數稠密嵌入一個叫做實數的完備度量空間,方法是取Cauchy列——然後再說什麼是無限小數,那樣也可以說清楚0.9999... = 1,不過沒有Dedekind分割簡潔。
/* 為什麼你們覺得無限小數一定要是級數和呢?*/實話說這個問題沒有什麼大的意義,在數學分析里這個問題的答案就是顯然的。
一般的數學分析教材,要麼拒絕0.9循環這樣的數字出現,要麼就是明確0.9循環和1是同一個數的兩種寫法。
首先0-1這個閉區間是完備的,其次,0.999...小於或者等於1。第三,很容易證明不存在一個數介於0.999...和1之間,那麼小於等於就是等於了。同時,0.999...也大於除了1以外的區間內任意數。 所以兩個數相等。
嚴格的證明就是嚴格地定義實數,然後把實數和小數表示法的關係捋清,這樣就會發現0.9999...和1.000...都是某個嚴格存在的實體1的兩種不同寫法,僅此而已,實際上所有非0有限小數都有兩種寫法。
用極限證明是循環論證,因為實數都沒定義清楚,怎麼定義極限?
補充一下具體證明吧,被某人掛了,心情不好,做點貢獻。
設 為有理數列,滿足柯西收斂準則,即 使得 都有 。但是在有理數域中,不一定有極限,比如
作為有理數列就沒有有理數極限。
為了定義實數,規定等價關係
那麼這樣的一個等價類就是一個實數,而原來有有理數極限的柯西列也是實數,顯然收斂於同一個有理數的柯西列是等價的,他們構成的等價類就是有理數在實數域中的嵌入。
所以實數1表示所有收斂於1的有理數柯西列的等價類。
那麼無限小數是什麼呢,這表示一個柯西列:
整數部分,保留1位小數,保留2位小數,....
所以0.9999...的意思就是數列
0,0.9,0.99,0.999,..., ,...
顯然 ,因為對於任意 ,取 即可。
我們要想從極限證明 可以這樣:(以下0.9,9循環均用0.9四個點表示)
設 且
(因為不知道絕對值中二數大小,故用絕對值)這裡當 時, ;當 時 ( 且 ,是一常數).當取>時, 的值不證自明,不合題意。有
又可有
當 時 ,取等號時, .
當 時為
下限為
上限為
於是
當等於 時,下限為
令 得其下限(注意,是下限)類似的,上限的上限為 於是
事實上,我們總有
對於任意的 總有
綜上所述 .
證畢
這只是數字表示法的問題而已,用不著扯極限更用不著證明。
比如說吧,十進位表示法里,1/3=0.33333...、2/3=0.666666...
而三進位表示法里,(十進位)1/3=(三進位)0.1,(十進位)2/3=(三進位)0.2
再如,十進位里,8/10=0.8
而二進位表示法里,(十進位)8/10=(二進位)0.110011001100...(1100無限循環)
可以很清晰的看出,普通小數以及循環小數都可以寫成兩個整數之比;只是轉換成小數表示法時,每個不同進位都會遇到一些麻煩……
(有理數實際上應該是「有比數」,詞根ratio應該解釋為比例;rational number本不應該生硬的翻譯成「有理數」)
這是因為,對一個X進位的小數,它小數點後第n位上的數字m的含意就是m * X^-n(X的n次方分之m)。
但這東西並不能保證在小數點後有限位內,容納所有真分數(原因和質數有關)。
換句話說,小數表示法是有缺陷的,任何進位的小數都會遇到一些無法用有限位表示的真分數。
不過,這個缺陷倒也沒什麼大不了的。標出循環節讓人知道它是循環小數就好了,反正很容易就能轉換回比例表示法。
顯然,一個數在十進位小數表示法里會觸發缺陷,並不代表這個數字就有什麼特殊的——寫成分數不就沒問題了嘛。
因此,3 X 1/3 = 3 X 0.3333... = 0.9999... = 1 = 3/3
如果寫成三進位:10 X 1/10 = 10 X 0.1 = 1 = 10/10
你看,不就這麼回事嘛。
如果說的更「學術」點,就是:每種小數編碼方案都會在一些特殊分數那裡出現bug,bug表現是,按照普通方案編碼時,沒有辦法用有限長度的編碼表示這些分數;換句話說,這裡缺失了一個和這個有理數對應的、有限長度的「碼點」。
為了消除這種bug,人們在小數點和阿拉伯數字0~9之外,額外規定了一個「循環節表示方式」,從而額外增加了一個「碼點」,使得「以有限長度的符號串編碼所有分數」成為可能。但還有個bug:(十進位表示法里的)1、2、3等整數有兩個「碼點」,一個是1、2、3,另一個是0.99...、1.99...、2.99...。為了避免混亂,只好又添加了一條人為規定:整數只能使用1、2、3的形式編碼,而0.99...之類是非法碼點。換句話說,糾結0.99...是不是等於1,和「糾結0.33...和0.33333...是不是相等」一樣,沒有任何意義——它們本就是同一個有理數在小數編碼規則下的不同編碼形式(而且還是個非法碼點),如此而已。如果再深挖一步,那就是:根據集合論,自然數和有理數一樣多。因此,必定存在一些編碼方案,使得我們可以用自然數編碼有理數。
但是,理論上能,和實踐上的能是兩碼事。實踐上的能,還要滿足簡潔、直觀、編解碼方便等等要求。而「小數點方案」就是一個特別優良的編碼方案。它的編碼規則是,以小數點為界,當編碼使用X進位時,小數點往前n位上的符號m表示m * X^n,而小數點往後n位上的符號m則表示m * X^-n。進一步的,我們還可以在整個符號串前面加±號表示正數和負數……這個方案一舉把自然數、整數、有理數乃至實數一網打盡,而且閱讀極為方便。(當然,無理數只是理論上能編碼,實際只能寫出近似值;但取近似值、讀近似值極其方便,正是小數點方案最最突出的優點之一。)——相比之下,羅馬數字以及著名的法語數字編碼方案就顯得……當然,分數方案也很棒。12345/11,輕鬆編碼一切有理數。但它有11/121和1/11、13/11和(1+2/11)這樣海量的重複碼點,這些就限制了它的應用(雖然可以通過化簡到真分數來統一;但因為分母多變,仍然很少有人能一下子看出3/11和5/17哪個更大;換句話就是難以像小數那樣瞥一眼便能讀懂個七七八八)。而且……用分數編碼無理數的話,這類缺陷就更嚴重了,而且不繼續擴展規則就無法和有理數區分開來……本質就是,定義 為0.999...9(共 個9),證明 .
首先,根據十進位的定義:
根據等比數列求和公式:
根據極限的定義,對於任意 ,令
則當 時,恆有
又 ,所以 .
因此
即0.999...=1. 證完.
UPD:可能還是不太嚴謹,可惜水平有限。
intuition:
0.99 is not 1
0.999 is not 1
...
but 0.999... is 1 since 1 is lim(n goes to inf,) 1- 1/10^n = 1 where (1-1/10^n) is C.S. and eventually epsilon close to 1 for every epsilon bigger than 0, all 1-1/10^n are rationals.
In fact, 0.999... and 1 are actually the same, the same here means 0.999... and 1 are exactly the same element of Reals.
這個問題我持續研究了十幾年,大概5年前覺得自己徹底解決了這個問題,所以有點忍不住...
1、小學證法
2、中學證法
令 ,則 ,因此
3、高數證法
考慮數列:
數列通項為:
和就是所求:
4、數分證法
此時還沒有極限的定義,要建立「數」的概念就需要這個等式,所以這個等式只能在怎麼記錄或者描述一個數的基礎上定義。
對於一個給定的實數,定義一個小數展開式。 如果知道一個實數x位於閉區間[0,10]內(也就是說,這個實數大於或等於0,而小於或等於10),我們就可以想像把這個區間分成十個部分,只在終點處相重疊:[0,1]、[1,2]、[2,3],依此類推,直到[9,10]。
1位於[1, 2]之間,記下1;第1位小數位於[0, 1]之間,記下0,得到1.0;第2位小數位於[0, 1]之間,得到1.00….。最終得到1 = 1.000…
1也位於[0, 1]之間,記下0;第1位小數位於[9, 10]內,記下9,得到0.9;第2位小數位於[9, 10]內,得到0.99…。最終得到1 = 0.999…
在這種形式中,1=1.000...而且1=0.999...的事實,反映了1既位於[0,1],又位於[1,2]。
【補充】每個有限小數都有兩種循環小數記法,比如1就有1.000...和0.999...兩種記法,1.1可以寫成1.1000...和1.0999...
5、補充一個
其實這個問題困擾我這麼多年,主要是因為下面這個式子是不是成立的問題:
現在我是明白了,0.999...6這個數根本不存在,因為9如果是無限,就根本不會出現6;如果出現了6,那麼9就是有限的,那個式子當然不成立了。
----2018/12/23補充----
6、評論區 @Jerze 關於如何讓兩個整數相除得到 的疑問,以 為例,採用試商法,只要整數部分試商為0即可。
(由於知乎的LaTeX不支持hfill命令,導致下式有點難看了,那個豎弧線上面的起始位置是第一條橫線處,最上面的0.999中,0和下面的3對齊,後面附圖。)
這個問題下的答案,很好地反映出,高等數學的普及在大眾當中,目前幾乎是空白的。
很多人對這樣的問題,其實連問題的 point在哪,都沒弄懂。甚至,這個在任一本數學分析的實數連續統里都能找到答案的題目,居然出現了一些 很 玄學的回答。
首先,其實高贊的兩個答案是很正確的,但很多人無法理解或者說不願意接受。
命題:0.9999.....與 1 相等。
這個命題,要判斷它真偽,首先要把命題上的詞語都定義清楚。
①0.9999...的定義
②1 的定義
③相等的定義
事實上,這個命題一方面,如同高贊所說,在利用戴德金分割得到實數的定義後,可以定義實數的表達方式。
而用該法,這兩個數,就直接是2種不同寫法而已,如同同一個人的中文名和英文名乳名之類,根本不需要證明。
很多人無法接受「不需要證明」這個概念。
此外,也可以用另一個關於實數相等的定義,來證明這個命題。
根據有理數列相等的定義(另有一回答已給出),可以如下證明:
構造以下兩個數列{an} {bn}
{an}={0.9,0.99,0.999…}
{bn}={1,1,1…}
對於任意ε&>0,存在N=[lg(1/ε)+1],
使得|bN-aN|=0.00...(共N-1個0)001=1/10的N次方=1/(10的 [lg(1/ε)+1] 次方)<1/(10的 lg(1/ε)次方)=ε。
根據定義可知,lim an=lim bn。
當然,這裡引入了極限的定義,而0.9999....本身這個寫法也是引入了極限的,因此也無法避免。
選擇回答這道題是因為,看到這裡面的回答,真的覺得有點難受。高等數學對於大部分人來說,確實在日常生活沒有任何意義。可是希望大家對自己不懂的事物能保持敬畏之心,而不是口若懸河。這是一個利用專業知識,能解決的很基礎的問題,而不是某些人口中故弄玄虛的問題。更不是某些玄學答案所說什麼,愛怎麼定義都行的問題。
至於大部分提及的1/3×3的方法,比較樸素,但問題在於,0.9999....與0.3333...都沒有定義的情況下,用其中一個去解釋另一個,是不嚴謹的。
而那個10x-x的方法,我是這樣理解的。
問題存在於,x可以理解成不同形式:
即0.9999....=1- o(1/n)
or
0.9999....=1-o(1/n2)
而這些不同階數的無窮小,是不能直接相減抵消的。因此它的減法存在合理性的問題。
當然其實引入了極限之後,令n→∞,結果也是成立的。
這兩種方法,其實在初等數學裡是很能幫助理解的,只是不夠嚴謹而已。
日經題,老是出現在時間線上
https://www.zhihu.com/question/19607903
一句總結,0.9999...是lim0.999...的簡寫。是定義。而且是極限還沒誕生時,實際為極限理論做的定義。
不存在真的無限位的0.999...不存在!0.9999...任意位永遠小於1。永遠!0.999...無限位不是一個數,是一個lim運算的簡寫。其計算值=1各位用極限證明了半天,都沒發現自己是證明lim0.9999..=1么。其實給不懂的人解釋應該在前者,也就是0.9999...=lim0.9999....。大家卡殼的是這個地方啦。
而不是拚命證明後者lim0.999..=1。後者但凡有點直覺的人都能看出來。且證法簡單,幾乎就是大學層面的1+1=2。也並不反直覺,就算沒有極限知識也能懂。
----------1/3的證明有問題。
首先1/3=0.3333...,你怎麼知道左右相等的,小學老師告訴你的,那小學老師也告訴你0.999..=1了。你咋認為一個是另一個的前提了呢。因為本質上0.333..也不等於1/3啊。你想想呢。已知0.3&<1/3,0.33&<1/30.333..(任意位)&<1/3如何得到0.333...(無窮位)=1/3的。因為根本就不是0.333..(無窮位)=1/3而是我們定義0.3(無窮位)這個寫法意味著0.333...(n趨向於無窮時)的極限值,且該極限值永遠達不到。這就是定義。。。應該根據定義證明啊。。根據我們對小數的基本定義出發。
0.99999...=9/10+9/100+9/1000....=9*(1/10+1/100+...)後部分為等比數列等比數列求和公式為1-q^n/(1-q)*a=9*(1-0.1^n)/(1-0.1)*0.1n趨向於正無窮時,該數字趨向於9*1/0.9*0.1=1就是說當位數趨近於無窮時,該數字無限趨近於1。但是,極限演算法不會考慮n=∞的情況,只會考慮n無限趨近無窮的情況。所以這種無法整除的數用,無限小數的計數法,定義就是n趨向正無窮時的極限值。也就是說當我使用0.9999...這個書寫方式時。0.999...不再代表他十進位的表面值。而是代表他未來無限趨近的一個值。也就是說,普通人認為的0.9999...應該永遠小於1這是對的。只是因為我們定義無限循環小數就不是其十進位的值,而是其無限趨近的值。0.9999...最靠近的無疑是1。所以他等於1。簡單的說就是無限循環小數就是明明不能用小數寫。偏偏要用小數寫所以產生的無限接近完美,但是永遠不可能完美的值。不止0.9999...不等於1。0.1111...也不等於1/9。硬要說的話他們是不斷趨近去這個值。總結一下,世界上根本不存在0.999...(無限循環)這個數。不存在任何無限循環這種玩意。正因為不存在,所以我們可以拿來干別的。1/3用小數寫,永遠寫不完。咋辦。那我就定義下。既然0.333的無窮極限值就是1/3。那我就給個簡稱,0.333趨近無窮位的極限值=0.333無窮。好了,完美。說話簡單多了。然後坑慘了一堆認為他倆真的相等的人。其實1/3是一個值,精確存在的。0.3333...根本就是一個極限表達式的簡化版。根本就不是一個數,而是一個極限式子的計算結果。不斷趨近的那個完美就是我想要說的那個數。因為我用小數的語言說不出那個數。我就給你意會一下的意思。
反正,以我淺薄的大學數學知識。數學不存在無窮的。只有趨近無窮的各種演算法而已。0.999..的極限趨近和1的圖片。0.9999..永遠小於1。但是趨近值,也就是極限值就是1.-----------你說你還用ε證啥,人家本來無限循環定義就是極限值。只不過那會大家極限還沒作為研究對象,所以表達不出來這個意思。其實人家就是按這個意思定義啊。證啥。。。。兩年前在csdn博客上寫過類似的證明 海楓 : 再談0.循環9等於1。但數據公式無法直接拷貝過來,那我簡單寫一下吧。
定義: 0.循環9是小學的表達方式,它的真實身份是:
下面是證明(反證法):
假設: ,只能是
由實數實的稠密性可知必定存在一個x,介於兩者之間,即:
(式1)
由上式,可以推出: ,再由阿基米德性質可知,必須存在一個確定的m,使得
,於是有:
(式2)
聯合式1和式2,馬上可以有:
移項,並且級數展開得:
前m+1項和結果就是1,於是: ,顯示出現矛盾,
於是有:
得證。
至於為什麼會出現矛盾,是因為兩者相等,他們中間不存在任何數,如果假定他們兩者不相等,那麼讓 增加一點小變化,無認是多麼小,都會大於1。我在原博客中後面引用了極限原理做說明。歡迎大家一起交流,謝謝!
原回答:
第一次修改:
補充:正證(冪級數法)
看了這個問題下面的回答,真是千奇百怪啊,覺得有必要把我的證明思路寫下。
這個問題,本人大學時專門思考過。
下面是詳細證明過程。
首先,需要明確兩個問題。
(1)0.9的循環是數嗎?答案是肯定的。如果不是數,就沒有比較的意義了。
(2)兩個數相等怎麼理解?即|a-b|=0(註:符號||表示絕對值)
於是,兩個數不相等就是|a-b|≠0,進一步有|a-b|>0。這個怎麼理解?
肯定存在一個ε0>0,使得
|a-b|> ε0>0
至此,開始證明0.9的循環等於1。
用反證法,假設0.9的循環不等於1。按前面的分析,一定存在一個ε0>0,使得
|0.9的循環-1|>ε0>0
由於
|1-0.9|=0.1,
|1-0.99|=0.01,
|1-0.999|=0.001,
因此,對上述給定的ε0>0,一定可以選擇某個數0.99999...9(小數點後面有很多個9,比如100個),使得
|1-0.99999...9|=0.0000...1<ε0
又因為
1≥0.9的循環>0.99999...9
因此,
|1-0.9的循環|<|1-0.99999...9|<ε0
由於前面已經證明了
|0.9的循環-1|>ε0
因此兩者矛盾。故假設不成立。
於是,0.9的循環等於1。
都看到這裡了,覺得不錯的,點個贊啊。
P.S. 本回答來自我下面的這篇回答。
有哪些像伽利略鐵球下落實驗一樣直覺與事實相違背的事??www.zhihu.com我的其它回答:
有哪些每天堅持效果顯著的高中學習習慣??www.zhihu.com高中數學該如何考好 如何學好數學??www.zhihu.com
推薦閱讀: