數值分析在現實中有哪些應用?

感覺單純的數值分析學習比較枯燥,於是想要問問數值分析在現實中有哪些應用?剛好最近這門課的老師要求我們就這個科目做一個大作業,題目自擬,於是問問大家。


我覺得沒有數值分析方法的話或許就沒有知乎存在,各位大概也看不到我寫的這句話……

說正經的呢,舉幾個但願通俗易懂的例子:

1. 固體結構中孔洞、裂紋附近產生的應力集中是一個大家很感興趣的問題。最簡單的幾種情況如下圖,分別已被Kirsch,Inglis,Williams等人求出解析解(analytical solution)

可是,如果孔洞不是橢圓形,而是某種奇怪的多邊形怎麼辦?如果裂紋的中軸線並不垂直於邊界怎麼辦?如果裂紋長度與結構的長度的比例並不是非常小的話怎麼辦?反正我不會解……

這時候就可以高呼「數值大法好!」。你可以寫個有限元求解器,小心翼翼地妥當畫出單元的網格,就可以得到近似的答案了!而且我說的不是什麼abaqus,ansys,也不是知乎上做計算力學的大牛做的先進模型。上一門有限元的入門課,一學期下來你就可以自己用matlab寫程序探索這種小變形的線性彈性問題了。不用解什麼花哨的邊界值問題,無痛出答案。

2. 有關概率分布的問題。材料的強度並不是一個固定值,而是有強有弱的。聯繫上個例子繼續腦洞大開,如果一個有強有弱的材料製成的板,它的邊界上分布了有深有淺的很多裂紋,我們對它施加某種外力,某處的應力大於材料強度的概率是多少?即使我們可以用某種函數描述強度的累積分布,同樣描述裂紋大小的累積分布,但合在一起再算下去就未免有些蛋疼。如果用數值積分的話這個問題引刃而解,而且結果應當蠻準的。

3. 上面第三張圖中的Williams Solution,描述一個三角形裂紋(notch/wedge)的頂端附近的應力場與開口角度(也就是三角形頂角)的關係。公式長這樣:

(請原諒懶惰的手機黨)

某夾角值對應的lambda貌似只能靠數值方法找。(也許是我數學功底太弱)如果需要總結一張alpha-lambda的表,只能拜託計算機大爺跑loop吧。

所以呢,這個世界上的很多問題還是需要靠數值方法解決的。儘管並不一定能提供嚴格意義上完美的答案,但對於工程師來說:close enough is good enough ...


在力學領域,微分方程很常見,它反映的是物體內部遵循的物理規律(比如力、力矩平衡、本構關係等),而對一個實際問題,就是在遵循內部基本規律的同時滿足具體的邊界條件,然而,悲劇的是基本很少的實際問題能夠得到理論解析解(傳說中的公式),大部分問題邊界條件複雜,加之材料本身的複雜,解析解很難得到。 這個時候數值分析就派上用場了!!


《數值分析》這門課從某種程度上可以說決定了我以後的學習,對她有很深的感情,所以我想談談自己的拙見~~

====================

去年這會兒我們也上數值分析,剛好也有大作業要做。和題主不一樣的是,第一節課我就喜歡這門課了。還記得老師舉了一些計算思維的例子,印象最深的就是迭代(iteration)了,一個方程可以通過x=f(x)這種方式進行迭代求解不是很巧妙嗎?再比如局部近似里的以直代曲其實就是數值積分的思想,而不斷的局部以直代曲,就是非線性方程牛頓法的思想。還有其他一些思想,比如外推法等等...那次課讓我覺得計算數學也很神奇~~

科學研究方法可以分為理論分析、科學實驗、科學計算。理論分析和科學實驗大家比較熟知,那什麼是科學計算呢?許多複雜的問題需要藉助計算機快速準確的數據處理能力,用計算機處理數值問題的方法就是所謂的科學計算。數值分析這門課的主旨就是將分析問題代數化,培養計算思維,研究如何藉助計算工具求得數值問題(問題本身反映了初始數據和要求的數值型數據之間的某種確定性關係)的數值解。其實有數學以來就有數值計算,只是在計算機出現前它的理論和發展很緩慢而已。

題主問到數值分析在現實中有哪些應用?那我們先整理下用數學解決實際問題的步驟,一般有以下幾步:

1.根據實際問題建立數學模型——應用數學

2.數學模型分析(比如模型解的存在、唯一、適定性)——基礎數學

3.針對相應的數值問題設計可靠高效的演算法

4.計算結果可視化

5.計算結果分析

我覺得後面三步其實都可以劃分到數值分析里,而這門課的核心即是設計高效可靠的演算法。

下面說些題主想知道的實際應用吧~

凡是涉及到計算的地方几乎都需要數值分析,比如天氣預報,比如工程設計,比如樓上很多人說的流體固體計算,比如核武器的研製,比如導彈和火箭的發射等等。(有沒有覺得很有用呢^o^)真的沒有誇大其詞,因為這些問題大都會涉及方程組(線性,非線性,微分)的求解,而多數情況下是無法給出解析解的。所以需要考慮近似解析法(級數解法,逐次逼近法)和數值解法(給出一些離散點處解的近似值),而這不正是數值分析研究的內容么?

具體說下我比較感興趣的兩個應用~

1)天氣預報:天氣會受各種因素的影響,稍微一些因素髮生改變就會產生很大的變化,所以天氣預報其實是一件比較困難的工作(我們就不要太抱怨天氣預報不準了哦O(∩_∩)O)古代人們用占卜或者經驗總結等方式來預計天氣狀況,這倒更像是統計學。而有了計算機,我們就可以通過數值模擬來預報天氣。具體過程就是:首先根據大氣運動列出數學物理方程(偏微分),其次對空間進行網格劃分,然後通過觀測數據給出初值條件,最後通過數值方法求解這些偏微分方程得到網格點處的數值解。這也是為什麼主持人總是說大概在...地區,大致在...時段,可能有...量級的降水...因為時空是連續的,而網格劃分不可能無限密,所得的數值解也存在誤差~

2)等離子體:對等離子體現有的理論描述中,磁流體力學、符拉索夫方程、福克-普朗克方程等都是微分方程,包含很多參量,如果要求出解析解,物理模型往往需要過分簡化以至於無法精確和全面的包羅各種效應,所以需要數值計算,這也是等離子體物理學研究中很重要的一個方面。比如最簡單的單粒子模型,它的牛頓洛倫茲方程是這樣:

你看,這不就是一個二階微分方程么?所以你可以用數值分析里的隱式歐拉,顯式歐拉,中點格式,龍格庫塔等方法來求解。當然你也可以設計自己的演算法~~我一直認為,每門數學課都像是一個個栩栩如生的人物,都有自己鮮明的個性,他們之間也有著很多聯繫。要想學好一門課,首先要了解他的特點。整本數值分析書看上去充斥著一個個數值算例,活生生的一本應用數學教材,可其中也有很多有價值的思想。說幾個我感悟到的吧(*^__^*) ……

1&>主要矛盾和次要矛盾之間的關係;現實問題中有很多約束條件,需要我們有側重的保留摒棄,辨析主要矛盾和次要矛盾,從而提出合理假設~

2&>尺有所短寸有所長;沒有完美無缺的演算法,雖然我們看到有不斷地改進優化演算法,但這些往往都是以犧牲某些優點為代價的。比如提高精度,往往會導致格式複雜,產生較大運算量~

3&>原則不能變;演算法也是要講原則的,比如要談演算法的優劣性前提是要保證演算法的可靠性(相容、收斂、穩定等)~

其實,只要用心體會,會有很多收穫,不僅僅是數學上的,有時何嘗不是一種人生感悟呢~~

====================

不積跬步,無以至千里;不積小流,無以成江海。厚積方能薄發,再高深的應用都源自於一道道不起眼的練習題。感覺枯燥並不可怕,可怕的是耐不住這份枯燥,所以認真推導每一個格式,認真思考每一個演算法,認真編寫每一段代碼,會發現不僅僅是數值分析,所有數學課都有他的用武之地。與題主共勉~~


來來來,我又要安利我的一個不成器的小東西了

搞基計算器!

可算積分微分一階任意的微分方程!其實改進空間還很大,為什麼不改進了呢?

因為有matlab以後我就懶了。

但是作為一個計算核心嵌入一些控制系統,解一些需要微分和積分的問題還是很好的,省的自己手擼代碼,現在只要一句sprintf和調用一下我的庫就行了,某種意義上算是把matlab的很小一部分功能裝入單片機吧!

核心代碼在此:

https://github.com/YuanyifanUsefulCodes/Advanced-Calculater

(這是linux下的版本)

以下是我用C++ Builder 6加了GUI的樣子(這個沒發布,要的可以私信我)

還在51單片機上跑過,用標準鍵盤輸入:

不知道ans怎麼寫成com了,捂臉

我甚至在iPad2(越獄)上跑過,圖片找不到就不多說了。

太特么好玩了。

以上。


實名反對沒數值分析可以打遊戲看電影的說法。


有限元離散元差分法有限體積abaqus matlab ansys adams adina nastran 3dec udec midas pkpm fluent flac3d


說一個大家不太容易知道的。現代做薄膜的方法一般是材料加一個「輸入條件。」具體的生長過程(原子尺度的)我們一般是無法管的。這也是材料物理里有一個超級難搞但是一旦做出來會超級重要的東西,薄膜生長動力學。這個主要是研究薄膜是如何長出來的,研究那個過程。假如能夠把鍍膜的過程動態化那麼很顯然研究薄膜的難度會降低很多。自然對集成電路和計算機硬體產業可以強力助推。

但是這個東西單純去做實驗研發是幾乎做不成的。薄膜生長的條件(高溫,電磁,化學氣)已經決定了在這個情況下用分析測試儀器做檢測是不太現實的。當然。也並非完全做不成。那麼自然,用數值分析去模擬,就是一個很好的選擇。這個東西一般是用Atomic scale modeling的方法去搞。1980年開始有很多報道和成功的案例。但目前缺乏一個更general的方法(類似做出像密度泛函那樣的,非常優雅的理論)。其實個人猜測這個更general的方法應該是存在的。畢竟薄膜生長也就是那幾種路徑(層,島,層+島)罷了。

數值分析結合表面凝聚態物理很有可能搞出這種演算法。可惜本人能力有限。


很多應用啊,工程中很多東西都可以簡化成一個公式,這個公式如果用計算機來計算必須轉換為程序,這個時候就主要數值分析,比如數值積分,數值微分,解方程。常見的應用很多,比如各種數值模擬,幾何曲面曲線構造。。。


期權定價,乃至所有衍生品定價中也會用到數值方法。其本質在於求解布萊克斯科爾斯微分方程。


這門課的重要性不言而喻,整個模擬界都用這門課知識,整個沒有解析解的地方都用它,極度重要


幾乎所有問題都要歸結為解線性方程組,也是問題中計算量最大的所在


說簡單點 數值分析=虛擬實驗室 吧現實生活中的事 用軟體 用演算法在電腦上跑出來 看看是啥樣


有數值分析, 計算機就做科學研究和工程設計. 沒有數學分析, 計算機就上癮打遊戲, 無聊看影視劇, 有民主就兩黨扯淡, 沒民主就兩派罵娘. 要不要學數值分析, 你自己看著辦吧!


很多實用性很強的演算法到最後都是數值計算的東西啊~

那本是一節無聊的網路課。

老師看我們昏昏欲睡就從WWW協議畫風一轉講到谷歌大名鼎鼎的PageRank演算法,講了簡單思路之後,神奇的轉化為了求矩陣特徵值的問題!~Amazing!~

Σ( ° △ °|||)︴

全班一起在底下喊乘冪法啊~後來還探討了加鬆弛因子和引入帶平移的乘冪法等等。

莫名有種學了這麼久的數值計算終於媳婦熬成婆的熱淚盈眶感ヽ(*′з`*)

順便給網路課老師點贊!在數科院教書也是蠻不容易的……⊙﹏⊙

咦?突然發現我講的是數值計算方法的東西,不知道數值分析是不是一個東西(⊙o⊙)


計算流體力學(CFD)相關的領域,這個領域應該是數值分析的最典型的應用吧。從流場分析到傳熱計算都是應用數值分析方法近似求解偏微分方程組,隨著高速計算機的發展,計算流體力學數值模擬已經和實驗驗證處於同樣地位,在實際工程的應用十分廣泛,高大上的例如幾乎當今飛行器設計過程中全都應用了CFD進行快速迭代。甚至一些日常生活中的小型電子設備的散熱結構設計都有應用CFD技術進行優化。

以流場分析為例,流場分析的控制方程主要是無粘流動的歐拉方程和有粘流動的納維斯托克斯方程的基礎上,結合不同實際流場情況進行相應的改變。進行數值分析的時候就要轉變為差分方程,進行離散化。離散化方法有有限差分,有限體積和有限元,包括時域的顯式求解和隱式求解方法,這裡就涉及到數值分析的經典問題就是在盡量減小的計算量的條件下得到理想的結果,對不同性質的偏微分方程組的(二次 橢圓型,拋物線型,雙曲線型,混合型)的求解方法也不同,前輩們早在上世紀六十年代就提出了很多演算法,麥考馬克法就是1969年提出的顯式有限差分方法,這種方法十分容易理解且適合編程題主有興趣可以去找個瞧瞧。

在確定了流場類型和求解方法之後就要將實際物理模型網格化了,網格化就是將要進行數值分析的區域分成好多小格子,求解就是在這些小格子上進行的,進行網格化的方法也有好多好多,主要分兩大類結構化網格和非結構化網格,對於運動的幾何體還有動網格法,結合不同的應用情況網格的劃分也不同,比如繞流的邊界層數值分析中邊界層的厚度很薄,均勻劃分網格的話可能落在邊界層里的很少,又可能在邊界層內部的網格數足夠但邊界層外的網格太多,計算起來又沒什麼用計算量很大,這裡就要將邊界層內的網格劃分的密些,邊界層外的網格疏些。這裡僅僅是個簡單的例子哈。

傳熱計算與這個類似就是把流場控制方程換為傳熱方程,記得Matlab上是有CFD的工具箱的,題主感興趣可以了解下


有什麼應用,你想體驗數值分析帶來的快感,我覺著應該先嘗嘗 在求解域很規則,很簡單的情況下 推導解析解的苦楚,比如高票答案舉的帶圓孔的薄板,板很大,孔很小,解析解就和實驗比較精確,如果形狀亂七八糟,也就是求解域很不規則,沒法推解析解,我看知乎上有人看到推解析解太恐怖,去做流體,有的人學流體力學時,覺得數學推導也恐怖,去做固估。當然工程上做結構時,也盡量要做的規則一點,和我們的假設比較符合,這樣得到的結果比較精確。現在在打基礎階段,你先掌握最基本的演算法,寫一寫代碼就好,到了後續的課程中,如果你之前學得不錯,你會發現,哦,原來它是這麼用的,這時你可以返回去,把專業課里的東西代進去,做一點點高級一些的東西,像什麼偏微分方程之類的,有限元程序等等。

你看,人家說得很清楚,為建設社會主義培養人才的,那是要花錢的,有成本的,要讓學生在最短的時間吸收。所以大學課程設計都是有梯度的,你別以為什麼函數連續性沒什麼用,比如在彈性力學裡,要求位移是三階可導的,有限元里,連續就行了,為什麼是這樣,怎麼樣選試函數,數值解比較精確,這些都要前面的課程,還有凸函數,極值,所有的東西在後面都會用到。好好鑽研,別有點梗就煩燥了,習題刷一點。數學就是這樣,實在沒什麼興趣和動力,水60分就好,看知乎大神回答


天氣預報!


知道Abaqus嗎,它的非線性求解比較厲害。主要包括求解大型稀疏矩陣A(u)*u=P,其中P已知,u是需要求解的未知量,A是用u構建出的方陣。如果你能高效求解這類大型矩陣,你的工作基本不用愁了!


應用層面上講,防止將來用軟體的時候rubbish in rubbish out


推薦閱讀:

有哪些數學理論看上去肯定沒有應用價值,但其實應用價值很大?
A=B一定能推出B=A嗎?
如何證明一個同時以1和π為周期的函數無最小正周期?
如何只用圓規作給定線段的中點?
數論中的 BSD 猜想是指什麼?

TAG:數學 | MATLAB | 有限元分析FEA | 數值分析 |