數學之美 十四 談談數學模型的重要性

2022-02-28 18:17:38 字數 1727 閱讀 4358

發表者:吳軍,google 研究員

[注:一直關注數學之美系列的讀者可能已經發現,我們對任何問題總是在找相應的準確的數學模型。為了說明模型的重要性,今年七月份我在 google 中國內部講課時用了整整一堂課來講這個問題,下面的內容是我講座的摘要。]

在包括哥白尼、伽利略和牛頓在內的所有天文學家中,我最佩服的是地心說的提出者托勒密。雖然天文學起源於古埃及,並且在古巴比倫時,人們就觀測到了五大行星(金、木、水、火、土)執行的軌跡,以及行星在近日點運動比遠日點快。(下圖是在地球上看到的金星的軌跡,看過達文西密碼的讀者知道金星大約每四年在天上畫乙個五角星。)

但是真正創立了天文學,並且計算出諸多天體執行軌跡的是兩千年前古羅馬時代的托勒密。雖然今天我們可能會嘲笑托勒密犯的簡單的錯誤,但是真正了解托勒密貢獻的人都會對他肅然起敬。托勒密發明了球座標,定義了包括赤道和零度經線在內的經緯線,他提出了黃道,還發明了弧度制。

當然,他最大也是最有爭議的發明是地心說。雖然我們知道地球是圍繞太陽運動的,但是在當時,從人們的觀測出發,很容易得到地球是宇宙中心的結論。從地球上看,行星的運動軌跡是不規則的,托勒密的偉大之處是用四十個小圓套大圓的方法,精確地計算出了所有行星運動的軌跡。(托勒密繼承了畢達格拉斯的一些思想,他也認為圓是最完美的幾何圖形。)托勒密模型的精度之高,讓以後所有的科學家驚嘆不已。即使今天,我們在計算機的幫助下,也很難解出四十個套在一起的圓的方程。每每想到這裡,我都由衷地佩服托勒密。一千五百年來,人們根據他的計算決定農時。但是,經過了一千五百年,托勒密對太陽運動的累積誤差,還是差出了一星期。

地心說的示意圖,我國天文學家張衡的渾天地動說其實就是地心說。

糾正地心說錯誤不是靠在托勒密四十個圓的模型上再多套上幾個圓,而是進一步探索真理。哥白尼發現,如果以太陽為中心來描述星體的執行,只需要 8-10 個圓,就能計算出乙個行星的運動軌跡,他提出了日心說。很遺憾的事,哥白尼正確的假設並沒有得到比托勒密更好的結果,哥白尼的模型的誤差比托勒密地要大不少。這是教會和當時人們認為哥白尼的學說是邪說的乙個原因,所以日心說要想讓人心服口服地接受,就得更準確地描述行星運動。

完成這一使命的是克卜勒。克卜勒在所有一流的天文學家中,資質較差,一生中犯了無數低階的錯誤。但是他有兩條別人沒有的東西,從他的老師第谷手中繼承的大量的、在當時最精確的觀測資料,以及運氣。克卜勒很幸運地發現了行星圍繞太陽運轉的軌道實際是橢圓形的,這樣不需要用多個小圓套大圓,而只要用乙個橢圓就能將星體運動規律描述清楚了。只是克卜勒的知識和水平不足以解釋為什麼行星的軌道是橢圓形的。最後是偉大的科學家牛頓用萬有引力解釋了這個問題。

故事到這裡似乎可以結束了。但是,許多年後,又有了個小的波瀾。天文學家們發現,天王星的實際軌跡和用橢圓模型算出來的不太符合。當然,偷懶的辦法是接著用小圓套大圓的方法修正,但是一些嚴肅的科學家在努力尋找真正的原因。英國的亞當斯和法國的維內爾(verrier)獨立地發現了吸引天王星偏離軌道的海王星。

講座結束前,我和 google 中國的工程師們一同總結了這麼幾個結論:

1. 乙個正確的數學模型應當在形式上是簡單的。(托勒密的模型顯然太複雜。)

2. 乙個正確的模型在它開始的時候可能還不如乙個精雕細琢過的錯誤的模型來的準確,但是,如果我們認定大方向是對的,就應該堅持下去。(日心說開始並沒有地心說準確。)

3. 大量準確的資料對研發很重要。

4. 正確的模型也可能受噪音干擾,而顯得不準確;這時我們不應該用一種湊合的修正方法來彌補它,而是要找到噪音的根源,這也許能通往重大發現。

在網路搜尋的研發中,我們在前面提到的單文字詞頻/逆文字頻率指數(tf/idf) 和網頁排名(page rank)都相當於是網路搜尋中的「橢圓模型」,它們都很簡單易懂。

談談數學模型中的自由度

這裡,我們簡單談談建立乙個數學模型時,乙個最關鍵的問題。即什麼樣的模型是好的,或者說怎麼評價模型的準確性。我們僅僅給出乙個基本的概念,具體操作方法將在後面進一步詳述。但是千萬不要認為基本概念的理解不重要,沒有基礎概念的理解,對所有方法的使用都將是邯鄲學步,不能夠靈活準確的使用。在構建數學模型解決實際...

數學模型演算法實現之種群競爭模型

fun.m function dx fun t,x,r1,r2,n1,n2,s1,s2 r1 1 r2 1 n1 100 n2 100 s1 0.5 s2 2 dx r1 x 1 1 x 1 n1 s1 x 2 n2 r2 x 2 1 s2 x 1 n1 x 2 n2 p3.m h 0.1 所取時間...

數學模型演算法實現之Dijkstra演算法

dijkstra演算法能求乙個頂點到另一頂點最短路徑。它是由dijkstra於1959年提出的。實際它能求出初始點到其它所有頂點的最短路徑。dijkstra演算法是一種標號法 給賦權圖的每乙個頂點記乙個數,稱為頂點的標號 臨時標號,稱t標 號,或者固定標號,稱為p標號 t標號表示從始頂點到該標點的最...