前言
數學建模比賽是本科生和研究生階段最重要的比賽之一,包括全國大學生數學建模競賽(俗稱“國賽”)和美國大學生數學建模競賽(俗稱“美賽”),在這些比賽中取得好成績,不僅有助于保研、有助于找作業,更重要的是形成科學的思維模式,以下是博主精心整理的兩個matlab專欄,包含入門到精通及實戰內容,需要的小伙伴可根據自己需求自行訂閱,
MATLAB-30天帶你從入門到精通
https://blog.csdn.net/wenyusuran/category_10614422.html
MATLAB深入理解高級教程(附原始碼)
https://blog.csdn.net/wenyusuran/category_2239265.html
在博主的資源中也有各種演算法的應用實體源代碼,需要的小伙伴自取喲,

01 蒙特卡羅演算法
1946 年,美國拉斯阿莫斯國家實驗室的三位科學家 JohnvonNeumann, Stan Ulam和 Nick Metropolis 共同發明了蒙特卡羅方法,
蒙特卡羅方法(Monte Carlo method),又稱隨機抽樣或統計模擬方法,是一種以概率統計理論為指導的一類非常重要的數值計算方法,此方法使用亂數(或更常見的偽亂數)來解決很多計算問題的方法,
由于傳統的經驗方法由于不能逼近真實的物理程序,很難得到滿意的結果,而蒙特卡羅方法由于能夠真實地模擬實際物理程序,故解決問題與實際非常符合,可以得到很圓滿的結果,
蒙特卡羅方法的基本原理及思想如下:
當所求解問題是某種隨機事件出現的概率,或者是某個隨機變數的期望值時,通過某種“實驗”的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變數的某些數字特征,并將其作為問題的解,
舉個栗子,直觀了解蒙特卡洛方法:
假設我們要計算一個不規則圖形的面積,那么圖形的不規則程度和分析性計算(比如:積分)的復雜程度是成正比的,蒙特卡洛方法是怎么計算的呢?假想你有一袋豆子,把豆子均勻地朝這個圖形上撒,然后數這個圖形之中有多少顆豆子,這個豆子的數目就是圖形的面積,當你的豆子越小,撒的越多的時候,結果就越精確,在這里我們要假定豆子都在一個平面上,相互之間沒有重疊,

蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特征,利用數學方法來加以模擬,即進行一種數字模擬實驗,它是以一個概率模型為基礎,按照這個模型所描繪的程序,通過模擬實驗的結果,作為問題的近似解,
蒙特卡羅方法與一般計算方法有很大區別,一般計算方法對于解決多維或因素復雜的問題非常困難,而蒙特卡羅方法對于解決這方面的問題卻比較簡單,其特點如下:
a、直接追蹤粒子,物理思路清晰,易于理解;
b、采用隨機抽樣的方法,較真切的模擬粒子輸運的程序,反映了統計漲落的規律;
c、不受系統多維、多因素等復雜性的限制,是解決復雜系統粒子輸運問題的好方法
等等
02 資料擬合、引數估計、插值等資料處理演算法
我們通常會遇到大量的資料需要處理,而處理資料的關鍵就在于這些演算法,通常使用 Matlab 作為工具,
資料擬合在數學建模比賽中中有應用,與圖形處理有關的問題很多與擬合有關系,一個例子就是 98 年數學建模美國賽 A 題,生物組織切片的三維插值處理,94 年 A 題逢山開路,山體海拔高度的插值計算,還有吵的沸沸揚揚可能會考的“非典”問題也要用到資料擬合演算法,觀察資料的走向進行處理,

此類問題在 MATLAB 中有很多現成的函式可以呼叫,熟悉 MATLAB,這些方法都能游刃有余的用好,
03 線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題
數學建模競賽中很多問題都和數學規劃有關,可以說不少的模型都可以歸結為一組不等式作為約束條件、幾個函式運算式作為目標函式的問題,
遇到這類問題,求解就是關鍵了,比如 98 年 B 題,用很多不等式完全可以把問題刻畫清楚,因此列舉出規劃后用 Lindo、Lingo 等軟體來進行解決比較方便,所以還需要熟悉這兩個軟體,
04 圖論演算法
這類問題演算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等問題,
關于此類圖論演算法,可參考 IntroductiontoAlgorithms--演算法導論,關于圖演算法的第22章-第26章,

05 動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法
在數學建模競賽中,如:92 年 B 題用分枝定界法,97年 B 題是典型的動態規劃問題,此外 98 年 B 題體現了分治演算法,

這方面問題和 ACM 程式設計競賽中的問題類似,推薦看一下演算法導論,與《計算機演算法設計與分析》(電子工業出版社)等與計算機演算法有關的書,
06 最優化理論的三大經典演算法:模擬退火法、神經網路、遺傳演算法
這十幾年來最優化理論有了飛速發展,模擬退火法、神經網路、遺傳演算法這三類演算法發展很快,
在數學建模競賽中:比如 97 年 A 題的模擬退火演算法,00 年 B 題的神經網路分類演算法,01 年 B 題這種難題也可以使用神經網路,
還有美國競賽 89 年 A 題也和 BP 演算法有關系,當時是 86 年剛提出 BP 演算法,89 年就考了,說明賽題可能是當今前沿科技的抽象體現,
03 年 B 題伽馬刀問題也是目前研究的課題,目前演算法最佳的是遺傳演算法,

07 網格演算法和窮舉法
網格演算法和窮舉法一樣,只是網格法是連續問題的窮舉,
比如要求在 N 個變數情況下的最優化問題,那么對這些變數可取的空間進行采點,比如在 [a;b] 區間內取 M+1 個點,那么這樣回圈就需要進行 (M+1)N 次運算,所以計算量很大,
在數學建模競賽中:比如 97 年 A 題、99 年 B 題都可以用網格法搜索,這種方法最好在運算速度較快的計算機中進行,還有要用高級語言來做,最好不要用MATLAB 做網格,否則會算很久,
窮舉法大家都熟悉,自不用多說了,
08 一些連續離散化方法
大部分物理問題的編程解決,都和這種方法有一定的聯系,物理問題是反映我們生活在一個連續的世界中,計算機只能處理離散的量,所以需要對連續量進行離散處理,
這種方法應用很廣,而且和上面的很多演算法有關,事實上,網格演算法、蒙特卡羅演算法、模擬退火都用了這個思想,
09 數值分析演算法
數值分析(numericalanalysis),是數學的一個分支,主要研究連續數學(區別于離散數學)問題的演算法,
如果在比賽中采用高級語言進行編程的話,那一些數值分析中常用的演算法比如方程組求解、矩陣運算、函式積分等演算法就需要額外撰寫庫函式進行呼叫,
這類演算法是針對高級語言而專門設的,如果你用的是 MATLAB、Mathematica,大可不必準備,因為像數值分析中有很多函式一般的數學軟體是具備的,
10 圖象處理演算法
在數學建模競賽中:比如 01 年 A 題中需要你會讀 BMP 圖象、美國賽 98 年 A 題需要你知道三維插值計算,03 年 B 題要求更高,不但需要編程計算還要進行處理,而數模論文中也有很多圖片需要展示,因此圖象處理就是關鍵,做好這類問題,重要的是把 MATLAB 學好,特別是圖象處理的部分,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274158.html
標籤:AI
下一篇:百萬年薪程式員必會的五種技術
