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