蒙特卡羅演算法的matlab實現
蒙特卡羅(Monte Carlo)方法,也稱為計算機隨機模擬方法,是一種基於"隨機數"的計算方法。
假設我們有個y=x^2的表示式,如何用MC方法求得函式在[0,1]區間的定積分呢?
定積分可以用面積來求解,也就是通過求箭頭下的面積
為了銜接方便,照顧新手,給出作圖程式吧
x=0:0.01:1;y=x.^2;plot(x,y);
MC方法實現非常簡單,通過下面的程式碼就可以
staus=10;
for i=1:4 %4次模擬
point=staus.^i; %模擬的隨機點數
RandData=rand(2,point); %根據隨機點數,產生隨機的(x,y)散點,不明白可以試試 %scatter(RandData(1,:),RandData(2,:))
Below=find(RandData(1,:).^2>RandData(2,:));%尋找位於曲線下的散點
Outcome(i)=length(Below)/length(RandData);%最終結果的表示
end
Outcome =
0.3000 0.3600 0.3180 0.3311
從Outcome看,通過不斷增加隨即點數,結果越與真實值相符
當散點數為10^4時,所得圖見下
BelowData=RandData(:,Below);
hold on
scatter(BelowData(1,:),BelowData(2,:))
如果我們選取的散點數為10^5,則定積分值為0.3335,所得圖形見下(程式碼略,同上)
以上是對MC方法最簡單的理解,不過思想上是融會貫通的,適合新手學習。所以很明確,MC是基於概率的隨機模擬方法
http://blog.sciencenet.cn/blog-316653-375888.html
假設我們有個y=x^2的表示式,如何用MC方法求得函式在[0,1]區間的定積分呢?
定積分可以用面積來求解,也就是通過求箭頭下的面積
為了銜接方便,照顧新手,給出作圖程式吧
x=0:0.01:1;y=x.^2;plot(x,y);
MC方法實現非常簡單,通過下面的程式碼就可以
staus=10;
for i=1:4 %4次模擬
point=staus.^i; %模擬的隨機點數
RandData=rand(2,point); %根據隨機點數,產生隨機的(x,y)散點,不明白可以試試 %scatter(RandData(1,:),RandData(2,:))
Below=find(RandData(1,:).^2>RandData(2,:));%尋找位於曲線下的散點
Outcome(i)=length(Below)/length(RandData);%最終結果的表示
end
Outcome =
0.3000 0.3600 0.3180 0.3311
從Outcome看,通過不斷增加隨即點數,結果越與真實值相符
當散點數為10^4時,所得圖見下
BelowData=RandData(:,Below);
hold on
scatter(BelowData(1,:),BelowData(2,:))
如果我們選取的散點數為10^5,則定積分值為0.3335,所得圖形見下(程式碼略,同上)
以上是對MC方法最簡單的理解,不過思想上是融會貫通的,適合新手學習。所以很明確,MC是基於概率的隨機模擬方法
http://blog.sciencenet.cn/blog-316653-375888.html
相關文章
- 蒙特卡羅演算法求圓周率Pi的值演算法
- 蒙特卡羅方法入門
- 蒙特卡羅模型(轉載)模型
- 蒙特卡羅法求圓周率
- 隨機化演算法(5) — 蒙特卡羅(Monte Carlo)演算法隨機演算法
- 蒙特卡羅模擬技術 (轉載)
- 專案風險管理與蒙特卡羅方法(轉)
- AlphaGo相關技術:蒙特卡羅方法簡介Go
- 強化學習(四)用蒙特卡羅法(MC)求解強化學習
- 六西格瑪與商業分析:蒙特卡羅模擬
- 蒙特卡羅方法:當丟失確定性時的處理辦法
- DQN(Deep Q-learning)入門教程(三)之蒙特卡羅法演算法與Q-learning演算法演算法
- 粒子物理蒙特卡羅模擬庫Geant4開發之一個例項
- 強化學習(十八) 基於模擬的搜尋與蒙特卡羅樹搜尋(MCTS)強化學習
- 有人測試LLVM5.0的蒙特卡羅程式比MSVC2017快15%LVM
- DeepMind開發用於量子化學計算的神經網路變分蒙特卡羅神經網路
- Java演算法 概率演算法(蒙特卡洛概率演算法求圓周率)Java演算法
- 排隊論演算法的matlab實現演算法Matlab
- 使用Matlab實現AHP演算法Matlab演算法
- 資源 | 跟著Sutton經典教材學強化學習中的蒙特卡羅方法(程式碼例項)強化學習
- FFT演算法實現與分析MATLABFFT演算法Matlab
- NSGA2 演算法Matlab實現演算法Matlab
- Python運用蒙特卡洛演算法模擬植物生長Python演算法
- Matlab與自己實現的平滑演算法對比Matlab演算法
- 蟻群演算法原理及Matlab實現演算法Matlab
- kmeans聚類演算法matlab實現聚類演算法Matlab
- 量子圖形加密演算法的MATLAB程式碼實現加密演算法Matlab
- 模擬退火演算法舉例及其matlab實現演算法Matlab
- 比特幣的價格今年會達到10萬美元嗎?有人用蒙特卡羅方法預測了一下比特幣
- 基於粒子群演算法的分組揹包MATLAB實現演算法Matlab
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- [譯]什麼是蒙特卡洛樹搜尋
- 蒙特卡洛模擬(1)————三門問題
- 差分進化演算法介紹及matlab實現演算法Matlab
- Matlab GUI選項卡MatlabGUI
- KPCA的matlab實現Matlab
- svpwm的matlab模擬實現Matlab
- 開啟MCMC(馬爾科夫蒙特卡洛)的黑盒子 - Pymc貝葉斯推理底層實現原理初探馬爾科夫