蒙特卡羅演算法的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)演算法隨機演算法
- 你也能看懂的:蒙特卡羅方法
- 使用蒙特卡羅模擬期權定價
- 強化學習(四)用蒙特卡羅法(MC)求解強化學習
- 六西格瑪與商業分析:蒙特卡羅模擬
- 蒙特卡羅方法:當丟失確定性時的處理辦法
- DQN(Deep Q-learning)入門教程(三)之蒙特卡羅法演算法與Q-learning演算法演算法
- 排隊論演算法的matlab實現演算法Matlab
- FFT演算法實現與分析MATLABFFT演算法Matlab
- Matlab與自己實現的平滑演算法對比Matlab演算法
- 蟻群演算法原理及Matlab實現演算法Matlab
- 強化學習(十八) 基於模擬的搜尋與蒙特卡羅樹搜尋(MCTS)強化學習
- 量子圖形加密演算法的MATLAB程式碼實現加密演算法Matlab
- Python運用蒙特卡洛演算法模擬植物生長Python演算法
- DeepMind開發用於量子化學計算的神經網路變分蒙特卡羅神經網路
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- 基於粒子群演算法的分組揹包MATLAB實現演算法Matlab
- 資源 | 跟著Sutton經典教材學強化學習中的蒙特卡羅方法(程式碼例項)強化學習
- 差分進化演算法介紹及matlab實現演算法Matlab
- 蒙特卡洛方法(Monte-Carlo Simulation)
- 比特幣的價格今年會達到10萬美元嗎?有人用蒙特卡羅方法預測了一下比特幣
- 蒙特卡洛模擬(1)————三門問題
- 蒙特卡洛積分——非均勻取樣
- 開啟MCMC(馬爾科夫蒙特卡洛)的黑盒子 - Pymc貝葉斯推理底層實現原理初探馬爾科夫
- 數值積分公式及龍貝格(Romberg)演算法實現matlab公式演算法Matlab
- sobel運算元,matlab實現Matlab
- 水晶藍蓮花(Matlab實現)Matlab
- MATLAB實戰系列(十一)-多種群遺傳演算法的函式優化演算法(附MATLAB程式碼)Matlab演算法函式優化
- 【AlphaGo】AlphaGo背後的力量:蒙特卡洛樹搜尋入門指南Go
- Matlab 實現介面相應滑鼠事件Matlab事件
- 主成分分析及其matlab實現Matlab
- 奇異值分解以及matlab實現Matlab
- 粒子群優化演算法對BP神經網路優化 Matlab實現優化演算法神經網路Matlab
- matlab實現調整圖片的對比度Matlab
- 結合貪心搜尋和蒙特卡洛隨機遊走的面向DBpedia的實體連結方法隨機
- AlphaGo的制勝祕訣:蒙特卡洛樹搜尋初學者指南Go
- canvas實現俄羅斯方塊Canvas