蒙特卡羅模擬簡介
蒙特·卡羅方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性算法。蒙特·卡羅方法在金融工程學,宏觀經濟學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。
蒙特卡羅模擬因摩納哥著名的賭場而得名。它能夠幫助人們從數學上表述物理、化學、工程、經濟學以及環境動力學中一些非常復雜的相互作用。
數學家們稱這種表述為“模式”,而當一種模式足夠精確時, 他能產生與實際操作中對同一條件相同的反應。但蒙特卡羅模擬有一個危險的缺陷: 如果必須輸入一個模式中的隨機數并不像設想的那樣是隨機數, 而卻構成一些微妙的非隨機模式, 那么整個的模擬(及其預測結果)都可能是錯的。
蒙特卡羅法優點:
1.方法的誤差與問題的維數無關。
2.對于具有統計性質問題可以直接進行解決。
3.對于連續性的問題不必進行離散化處理
蒙特卡羅法缺點:
1.對于確定性問題需要轉化成隨機性問題。
2.誤差是概率誤差。
3.通常需要較多的計算步數N.
蒙特卡羅方法的缺點及其改進
我們知道,蒙特卡羅方法是非常好用來做積分的。如果要算一個函數f(x)在區間[a,b]內的積分,我們可通過計算機利用蒙特卡羅方法來計算出積分近似值。即先估計一個比f(x)在區間[a,b]內最大值還要大的c,(必須保證f(x)在區間[a,b]不小于0)然后不斷地在二維矩形區域[a,b]×[0,c]內隨機產生隨機數對(e,f),判斷f與f(e)的大小,并統計f《f(e)的數量n,當產生點的數量N足夠大時,計算出n/N*(b-a)*c,這就是函數f(x)在區間[a,b]內的積分值。
對蒙特卡羅方法的改進:如果要算一個函數f(x)在區間[a,b]內的積分,令s=0,我們可以在區間[a,b]內產生N個隨機數e,賦值:s+=f(e)/N(之所以這樣做是為了防止溢出),當N足夠大時,計算s*(b-a),這就是函數f(x)在區間[a,b]內的積分值。 改進方法的優點:
1.維度降低,節省一半產生隨機數的時間,
2.相對精度更高,由于蒙特卡羅方法矩形上界需要估計,因此帶來了一定的不確定性,估計值取得過大,顯著提升計算時間,估計值取得過小,就會出現計算錯誤。而改進方法不需要估計!
3.改進方法可以求解蒙特卡羅方法所不能計算的積分,求解范圍更大,如果積分函數f(x)在區間[a,b]內是無界的,或者積分函數f(x)在區間[a,b]內有負值,蒙特卡羅方法就無法求解。
蒙特卡羅模擬基本原理及思想
當所要求解的問題是某種事件出現的概率,或者是某個隨機變量的期望值時,它們可以通過某種“試驗”的方法,得到這種事件出現的頻率,或者這個隨機變數的平均值,并用它們作為問題的解。這就是蒙特卡羅方法的基本思想。蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特征,利用數學方法來加以模擬,即進行一種數字模擬實驗。它是以一個概率模型為基礎,按照這個模型所描繪的過程,通過模擬實驗的結果,作為問題的近似解。可以把蒙特卡羅解題歸結為三個主要步驟:構造或描述概率過程;實現從已知概率分布抽樣;建立各種估計量。
蒙特卡羅模擬的應用
通常蒙特卡羅模擬通過構造符合一定規則的隨機數來解決數學上的各種問題。對于那些由于計算過于復雜而難以得到解析解或者根本沒有解析解的問題,蒙特卡羅模擬是一種有效的求出數值解的方法。一般蒙特卡羅模擬在數學中最常見的應用就是蒙特卡羅積分。
蒙特卡羅算法表示采樣越多,越近似最優解。舉個例子,假如筐里有100個蘋果,讓我每次閉眼拿1個,挑出最大的。于是我隨機拿1個,再隨機拿1個跟它比,留下大的,再隨機拿1個……我每拿一次,留下的蘋果都至少不比上次的小。拿的次數越多,挑出的蘋果就越大,但我除非拿100次,否則無法肯定挑出了最大的。這個挑蘋果的算法,就屬于蒙特卡羅算法。告訴我們樣本容量足夠大,則最接近所要求解的概率。
蒙特卡羅模擬在金融工程學,宏觀經濟學,生物醫學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域也應用廣泛。
計算機技術的發展,使得蒙特卡羅模擬在最近10年得到快速的普及。現代的蒙特卡羅模擬,已經不必親自動手做實驗,而是借助計算機的高速運轉能力,使得原本費時費力的實驗過程,變成了快速和輕而易舉的事情。它不但用于解決許多復雜的科學方面的問題,也被項目管理人員經常使用。
借助計算機技術,蒙特卡羅模擬實現了兩大優點:
一是簡單,省卻了繁復的數學報導和演算過程,使得一般人也能夠理解和掌握;
二是快速。簡單和快速,是蒙特卡羅方法在現代項目管理中獲得應用的技術基礎
蒙特卡洛法之MATLAB實現
蒙特卡洛法(隨機取樣法)也稱為計算機隨機模擬方法,它源于世界著名的賭城——Monte Carlo。它是基于對大量事件的統計結果來實現一些確定性問題的計算。使用蒙特卡洛法必須使用計算機生成相關分布的隨機數。
eg:
y = x^2 ,y = 12 - x與X軸在第一象限與X軸圍成一個曲邊三角形。設計一個隨機試驗,求該圖形的近似值。
其圖形如下圖所示:
x=0:0.25:12
y1=x.^2;
y2=12-x;
plot(x,y1,x,y2)
xlabel(‘x’);ylabel(‘y’);
legend(‘y1=x^2’,‘y2=12-x’);
title(‘王晨繪制’);
axis([0 15 0 15]);
text(3,9,‘交點’);
grid on12345678910
設計的隨機試驗的思想如下:在矩形區域[0,12]*[0.9]上產生服從均與分布的10^7個隨機點,統計隨機點落在曲邊三角形內的個數,則曲邊三角形的面積近似于上述矩形的面積乘以頻率
x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
frequency=sum(y《x.^2 & x《=3)+sum(y《12-x & x》=3)
area=12*9*frequency/10^71234
其結果如下圖所示:
評論
查看更多