設萬維讀者為首頁 廣告服務 技術服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:諍友
萬維讀者網 > 教育學術 > 帖子
科學計算 (Scientific Computing)
送交者: 木樁 2020年08月09日16:58:31 於 [教育學術] 發送悄悄話

 常常碰到網友問我,什麼是計算數學?什麼是科學計算?這篇文章企圖闡明數學在“科學計算”里的作用。

首先,什麼是科學計算?在這方面有着不同的定義。在我看來,這應該是用數學作為工具,設計有效的算法,然後在計算機上實現。的確,科學計算和計算機科學有着緊密的聯繫,但不是一回事。科學計算着重於數學的角色,強調數學的作用。通過數學,保證設計方法的有效性,有足夠的精確度,足夠的穩定性,而且提高效率。

還是通過幾個有名的例子來說明問題吧。

例一:快速傅立葉變換 (Fast Fourier transform, FFT)

我想,這個方法大家都不陌生吧?在很多科學技術領域裡,應用的那個部分里,都需要做傅立葉變換,事實上,當今世界上的計算機在運算的時侯,很多都在作快速傅立葉變換。這裡,你就可以看到數學對它的貢獻了。其實,這僅僅是初等數學,而且還是比較簡單的數學。

一維空間:從0  之間,均勻地分布個點。

頻譜空間:傅立葉級數展開。 

傅立葉級數的係數和點空間之間是有關係的。這樣說吧,如果你知道了這些點值,就能算出這些係數,反之,知道了這些係數,也能算出那些點值。 

計算機在點值和係數的空間來回計算,這是要有代價的。如果已知係數,要算一個點值,這是 N 數量級的工作量;把所有N個點值全算出來  則是 N2 數量級的工作量。反之,如果已知點值,要把所有N個係數全算出來,也  N2  數量級的工作量。當 N 很大時,這是相當大的計算量,這不,如果 N = 100000,再平方一下,這數字太可怕了,而且,計算機的大量運算會產生誤差積累,導致算出的結果不夠精確。

能不能把 N降下來?能。快速傅立葉變換 ( FFT) 的思想其實很簡單:仔細觀察公式,發現有很多重複計算。在算點值時,打個比方(純粹胡說):第一個點,第四個點,第七個點。。。有重複計算。FFT 把重複計算的部分,一次性算好,然後在第一個點,第四個點,第七個點。。。同時使用。就這麼點簡單的思想,你只要把它做到極致,一個 N2  數量級的工作量就降到了N log N 數量級了,相比於 Nlog N 是一個很小的數,幾乎等同於常數。這,是一個革命性的創舉。

可以這麼說,如果沒有得益於快速傅立葉變換( FFT)的應用,各種信號處理,電子工程,絕對不會變得像今天這麼廣泛。FFT 在數學上是一個很簡單的東西,這件事情之所以做得非常漂亮,就是在數學上並沒有做新的事情,也沒有改變原來的公式,思路也是簡單的,只是把傅立葉公式算得很快,多快好省幹革命。

FFT的第一篇文章,1965年發表在Mathematics of Computation , 這是美國數學學會的頂級雜誌,也是非常古老的計算數學雜誌。這篇FFT 論文的影響力是巨大的。 

例二:快速多極法 fast multi-pole method 

這種方法是用來快速計算 N 個粒子之間兩兩相互作用的效果。 比如,兩兩粒子間的引力作用。對一個固定的粒子來說,它的運動取決於它和其他所有粒子兩兩相互作用的效果之和。把這些相互作用都算清楚,需要 N 數量級的工作量。那麼,要算好所有 N 個粒子的運動規律,則需要 N2  數量級的工作量。

這次運氣不好,和 FFT 不同,我們似乎找不到明顯的重複運算 (除了兩兩相互作用只需算一次,這只能減少一半運算量,沒法在數量級上減少)。但這難不倒數學家。數學家們發現,一個粒子和距離它較遠的一堆粒子的相互作用,不用兩兩算清楚,只需要算這個粒子和這一堆粒子(看成一個大粒子)的相互作用,也就八九不離十了。當然,誤差是多少,一堆粒子到底可以多大,如何定義 “較遠”,這些都要分析清楚。這次沒有辦法像 FFT 一樣得到和原來公式一樣的數學效果,但是,如果給定能容忍的誤差,比如千分之一,則上述的辦法只需要 N log N 數量級的工作量。實際上,如果把算法和分析再做得精細些,工作量能降到 N 數量級。這種方法叫做 “快速多極法”。 

快速多極法的發明,歸功於 耶魯大學的 V. Rokhlin L. Greengard1985 年,他們發表在 Journal of Computational Physics 的一篇文章中,首創性地提出和分析了快速多極法。和FFT 類似,這個方法也在科學和工程中得到廣泛的應用。因為這個工作,這兩位數學家得到了美國數學學會 2001 年的 一個重量級獎項 (the Leroy P. Steele Prize)。這項獎通常都是授予純粹數學家的,應用數學家極少得到該獎,這也說明了快速多極法在數學和應用中的雙重重要性。

例三:多重網格法 multigrid method

怎樣解大型的線性方程組

                         Ax = b 

A N x N矩陣,是向量。這個問題看上去十分簡單,用中學學到的Cramer’s Rule 就能得到解。不過,用Cramer’s Rule 的計算量是 N 的階乘(N!)的數量級。當矩陣很大的時候,比如, N=1000 N! 是個非常龐大的數,不信你在計算器上摁一摁,會發現計算器都無法顯示出這麼龐大的結果。不管今天的計算機有多快,都無法在短時間內實現這樣的計算。所以,Cramer’s Rule 在解大型的線性方程組時,只有理論上的意義,沒有實際意義,紙上談兵也。

用高斯消除法(Gaussian elimination)求解,可以將工作量從 N! 數量級降到N3數量級。這已經大大提高了計算效率。對一般的線性方程組,這經常是實際計算中唯一可行的方法。不過, N3  還是實在太大了,數學家希望再進一步降低工作量。對於一些實際應用中的矩陣,有些特殊的性質,比如對稱正定矩陣,何不利用一下?應用數學知識可以設計 N 數量級的算法,如果能如願以賞,的確是美事一樁,故而發明了“多重網格法”。要知道,不是所有的矩陣都能採用多重網格法,矩陣需要滿足特殊的性質。因為哪怕A是對角矩陣,求解也需要 N 數量級的計算,再也沒有油水可榨了,N數量級已經達到了極限。

多重網格法的主要貢獻者是以色列數學家Achi Brandt , 為此,2005 年,他得到了美國工業與應用數學學會(SIAM)和美國計算機學會 (ACM) 共同授予的 “計算科學和工程獎”  (Prize in Computational Science and Engineering ) 這是個非常了不起的大獎。


向科學家們致以崇高的敬禮!

 


0%(0)
0%(0)
  好文,謝謝介紹,讚一個!  /無內容 - 五十肩 08/09/20 (275)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制
一周點擊熱帖 更多>>
一周回復熱帖
歷史上的今天:回復熱帖
2019: 外国在中国创ࡃ
2019: ▲費加羅報:習近平香港失算
2016: 思想的形成 宇宙圖書館
2016: 如來一心有三身(三)
2015: 作為精神家園的希臘羅馬社會規範
2015: bunny2 :“高級範例”的辨析:思維的