作者:N_a_O_H_ , 哆嗒數(shù)學(xué)網(wǎng)群友, 常年活躍于數(shù)學(xué)貼吧。
微信、手機(jī)QQ搜索關(guān)注 DuoDaaMath 每獲得更多數(shù)學(xué)趣文 新浪微博:http://weibo.com/duodaa
和朋友們聚餐吃飯,他們總會(huì)把最后驗(yàn)證賬單的活交給我。我說我算不出來,還是按計(jì)算器吧。于是伴隨著目瞪口呆,他們會(huì)驚詫地問我:“你不是數(shù)學(xué)系的嗎?” 在諸多情況想,包括在研究中,這類體力活般的運(yùn)算都交給了計(jì)算工具,比如說計(jì)算機(jī)。計(jì)算機(jī),顧名思義,最初是人們發(fā)明出來代替人們進(jìn)行計(jì)算工作的機(jī)器。隨著編程語言被應(yīng)用于計(jì)算機(jī),人們可以精確定義給予計(jì)算機(jī)的指令,并且能以比人工計(jì)算快得多的速度得出結(jié)果,精確程度亦是令人信服。 人們利用計(jì)算機(jī)處理一個(gè)龐雜的計(jì)算任務(wù)時(shí),依賴的是一種叫做循環(huán)結(jié)構(gòu)的東西。這種結(jié)構(gòu)把本身復(fù)雜的運(yùn)算轉(zhuǎn)化為一步一步的,每一步都依賴一個(gè)離散變量的小型計(jì)算,只需設(shè)定好想要的步數(shù),就能令計(jì)算機(jī)按照這規(guī)定的步數(shù)進(jìn)行一次次的機(jī)械的簡單運(yùn)算。就像織布機(jī)和流水線一樣,這種簡單機(jī)械的工作交給計(jì)算機(jī)是再適合不過的了,計(jì)算機(jī)運(yùn)算的效率與準(zhǔn)確程度都遠(yuǎn)高于人類。隨著人們對(duì)數(shù)學(xué)的深入了解,指數(shù)函數(shù),三角函數(shù)以及對(duì)數(shù)函數(shù)這些超越函數(shù)都可以通過這種循環(huán)結(jié)構(gòu)計(jì)算了,而這些運(yùn)算是初期的編程語言沒有規(guī)定的。
泰勒公式是計(jì)算這些函數(shù)的一種方法,把上述函數(shù)轉(zhuǎn)化為一個(gè)多項(xiàng)式,這些多項(xiàng)式每一項(xiàng)的系數(shù)也是有特定的規(guī)律的。這樣,每一項(xiàng)的指數(shù)與系數(shù)都有規(guī)律可循,那么用循環(huán)結(jié)構(gòu)執(zhí)行就成為了可能。按照這種思路,就連定積分的計(jì)算也可以交給計(jì)算機(jī)了。 看上去很厲害,沒錯(cuò)吧? 請(qǐng)仔細(xì)留意我上面的措辭。我說,計(jì)算機(jī)用泰勒公式去運(yùn)算那一系列超越函數(shù)的函數(shù)值,這聽起來似乎沒有半點(diǎn)問題。然而泰勒公式是用一個(gè)多項(xiàng)式近似表示函數(shù)某點(diǎn)周圍的性態(tài),注意是近似!泰勒公式只是個(gè)有限項(xiàng)的多項(xiàng)式,只要你愿意你可以寫出它的任意多項(xiàng),但是它始終是有限項(xiàng)的。真正恒等于那些超越函數(shù)的是它們的泰勒級(jí)數(shù),泰勒級(jí)數(shù)是一個(gè)無窮和。你用泰勒公式無論怎么精確,都只是泰勒級(jí)數(shù)的一個(gè)部分和,也就是其中有限項(xiàng)的和,其結(jié)果永遠(yuǎn)與精確值相差一些。
簡單來說,得到上訴精確值或者近似值的方法,就是本文說的“數(shù)值計(jì)算”(這里打個(gè)引號(hào),避免和真正專業(yè)的數(shù)值計(jì)算這個(gè)分支誤會(huì))。 計(jì)算機(jī)也可以計(jì)算定積分的數(shù)值,我們可以完全按照定積分定義相仿的思想來計(jì)算——取曲線下一列縱向的細(xì)長矩形面積之和來逼近曲線下的精確面積。這樣的方法下,計(jì)算機(jī)無論如何努力,都只能把曲線下的面積化為有限個(gè)矩形之和,其結(jié)果自然與精確的結(jié)果有所偏差。當(dāng)然,我們可以改進(jìn)這些計(jì)算方法,比如把矩形改成梯形,或者利用根高級(jí)的理論簡化步驟,但是我們得到的還是有限次計(jì)算得到的精確值或者近似值。
有人說,計(jì)算機(jī)進(jìn)行了那么多次運(yùn)算,其得出的結(jié)果的誤差已經(jīng)非常小了,以至于人們隨時(shí)都能把它扔掉。不要著急,我完全沒有要責(zé)難計(jì)算機(jī)計(jì)算能力的意思。我說了這么多,只是想說上述計(jì)算并沒觸及到數(shù)學(xué)的一個(gè)基礎(chǔ)核心概念:無窮。
無窮這東西,其實(shí)并不像它們?cè)趯?shí)平面中那樣離我們那么遙遠(yuǎn),而是一直在我們身邊。小學(xué)二年級(jí)引入了除法的概念,老師一再強(qiáng)調(diào)0永遠(yuǎn)不能作為除數(shù)。那時(shí)我想勤于思考的孩子都想過,那么0做除數(shù)會(huì)是什么后果呢,比如說1除以0?抱著好奇心他們把這個(gè)算式輸進(jìn)了計(jì)算器,得到的卻是一個(gè)冷漠的Syntax Error,于是只好就此作罷。到了后來,隨著知識(shí)的不斷積累,學(xué)生們意識(shí)到了任何0之外的數(shù)除以0,得到的是無窮大,因?yàn)槟銦o論有多少個(gè)0,它們的和就一定是0,所以結(jié)果只好是無窮大了。這種想法倒無可非議,只是流于想象,并不十分不嚴(yán)謹(jǐn)罷了。于是,“n/0”這類形式的無窮,大概就是我們最早能夠接觸到的了。
感謝數(shù)學(xué)家柯西和魏爾斯特拉斯,我們終于有了一種嚴(yán)謹(jǐn)?shù)姆绞蕉x,證明和計(jì)算極限。那么我們回到上面的例子,我們還是來研究1/x在x=0處的極限。這次先讓計(jì)算機(jī)來做。直接輸入1/0會(huì)讓電腦爆炸,所以我們只能通過一系列盡可能接近于1的數(shù)字來研究結(jié)果,1/0.1=10,1/0.01=100, 1/0.0001=10000, 1/0.00000001=100000000...千萬不要以為這一系列結(jié)果告訴你很多東西,尤其是不能錯(cuò)誤地就這幾個(gè)結(jié)果,我們就臆斷,x越接近于0,1/x越大,而這恰好是許多對(duì)數(shù)學(xué)不了解的人所犯的錯(cuò)誤。數(shù)學(xué)中,對(duì)于有限的極限有這樣一個(gè)性質(zhì):某處的極限存在(或者都趨于無窮),當(dāng)且僅當(dāng)每一個(gè)收斂到這點(diǎn)的數(shù)列,都收斂到一個(gè)相同值(或者都趨于無窮)。因此,為了用計(jì)算機(jī)證明這種極限,我們必須證明任意一個(gè)這樣的數(shù)列都趨于正無窮,這將意味著我們必須驗(yàn)證無窮多個(gè)數(shù)列的結(jié)果,而且,就算我們能夠驗(yàn)證無窮個(gè)序列的結(jié)果,那么對(duì)于這每個(gè)序列都有x趨于0時(shí),y不斷增大,注意我們能得出的只是不斷增大這個(gè)事實(shí),至于有多大呢?計(jì)算機(jī)暴力驗(yàn)證的辦法,就行不通了。
來看另一方面,人們可以用極限的嚴(yán)格定義來證明,1/x在0處的值為無窮。容易驗(yàn)證對(duì)于任意給定的正整數(shù)N,存在0附近的某個(gè)點(diǎn)x,使得|1/x|>N。數(shù)學(xué)分析的知識(shí)告訴我們,1/x的絕對(duì)值可以比任何一個(gè)正整數(shù)都大,自然就是無窮大了。
從這里,我想引出這篇文章我真正想說的。我們數(shù)學(xué)系做數(shù)學(xué)的方式是用理性推理去證明數(shù)學(xué)問題的,這些數(shù)學(xué)命題很可能涉及無窮的概念。我們大多數(shù)人不會(huì)去糾結(jié)一個(gè)復(fù)雜的加減乘除運(yùn)算式子,如何快速心算得到結(jié)果。比如,上面的命題“1/x在x=0處的極限為無窮”這一命題就是一個(gè)例子。暴力計(jì)算的思路很難驗(yàn)證一個(gè)涉及無窮的數(shù)學(xué)性命題,絕大多數(shù)情況下都只能驗(yàn)證有限個(gè)情況下命題的真?zhèn)涡裕鵁o法從本質(zhì)上證明或證偽它。
下面我想再舉另一個(gè)例子,這是我這周的C++課作業(yè)內(nèi)容。作業(yè)要求編一個(gè)程序,來算采礦和淘金兩種方法的收益,已知兩種方法中,各有一定的概率獲得一定數(shù)量的收入。要求設(shè)定一些隨機(jī)變量,然后把程序跑1000000次,求平均數(shù)。這個(gè)作業(yè)的目的再明顯不過了,無非是要驗(yàn)證數(shù)學(xué)實(shí)驗(yàn)的結(jié)果符合某個(gè)期望。作業(yè)中(具體的作業(yè)內(nèi)容我不再敘述了)按照數(shù)學(xué)推理計(jì)算能得到數(shù)學(xué)期望的理論結(jié)果,采礦的期望收益為75美元,淘金為68美元。而用程序跑出來的結(jié)果,始終與這兩個(gè)結(jié)果相差一些。誠然,如果你用程序模擬的結(jié)果最終成兩個(gè)分別以75和68為中心的正態(tài)分布,或者能驗(yàn)證這個(gè)程序計(jì)算的次數(shù)越多(多于1000000次),結(jié)果越接近于75和68,那么自然是有說服力的。然而,盡管做出一個(gè)很大的樣本,也不能從數(shù)學(xué)理論上認(rèn)定,他們的數(shù)學(xué)期望就是75和68。如果要認(rèn)定,兩種情況都要求無限次的運(yùn)算。而我們能通過有限次運(yùn)算得出的,從某種意義上來講是蒼白無力的,看上去很接近75和68的結(jié)果根本不足以說明數(shù)學(xué)期望的存在性——無論他們?cè)趺唇咏繕?biāo)值。反過來說,倒是因?yàn)橛辛死碚撋蠑?shù)學(xué)期望的存在,多次運(yùn)算后的結(jié)果一致地逼近某個(gè)數(shù)值,這樣的一個(gè)結(jié)果才是可能的。我們熟知的投針實(shí)驗(yàn)和拋硬幣實(shí)驗(yàn)都是一個(gè)道理。
這揭示了一個(gè)事實(shí):在一些人認(rèn)為很厲害的“數(shù)值計(jì)算”,在我們做數(shù)學(xué)的時(shí)候只是一個(gè)驗(yàn)證的工具,很多時(shí)候也許能給我們一些啟發(fā),但是大多時(shí)候一個(gè)數(shù)學(xué)理論突破的瓶頸跟計(jì)算機(jī)的這種計(jì)算沒有半毛錢關(guān)系。甚至,我可以說嚴(yán)重一點(diǎn),正如偉大哲學(xué)家康德也指出的,這些算式都是一個(gè)個(gè)經(jīng)驗(yàn)性的命題,永遠(yuǎn)不會(huì)有真正的普遍性,從而沒有指導(dǎo)意義。 這些“數(shù)值計(jì)算”夠做到的,只是窮舉和有限的運(yùn)算,總而言之能做到的東西有限,不足以歸納證明帶有任意性的命題,也就是本身蘊(yùn)含著無窮的那些。實(shí)際上,計(jì)算機(jī)要做到真正的數(shù)學(xué)推理,需要換一種辦法。這也是數(shù)學(xué)家們研究的一個(gè)領(lǐng)域,叫做機(jī)器證明。它的思路,已經(jīng)不是“數(shù)值計(jì)算”去得到一些近似值,這個(gè)不是本文想討論的范圍。
在文章的最后,我想描述一下,有限在無限面前是多么渺小。 現(xiàn)在的計(jì)算機(jī),如果要他完成一個(gè)需要2的500次方步驟才能完成計(jì)算,那簡直是不可能完成的任務(wù)。但在,無窮面前,他可能只是一個(gè)很平常有限數(shù),很多時(shí)候都可以忽略不計(jì)。比如,前面驗(yàn)證極限的時(shí)候,這個(gè)數(shù)字都出不了場(chǎng)呢!
說到底,這些“數(shù)值計(jì)算”可以覆蓋的數(shù)學(xué)中的領(lǐng)域,標(biāo)題上還高估了呢。所以,我是數(shù)學(xué)系的,但是是不會(huì)幫你們驗(yàn)證賬單的。
|