日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用蒙特卡洛求pi_蒙特卡洛算法(MCS)及其MATLAB实现

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用蒙特卡洛求pi_蒙特卡洛算法(MCS)及其MATLAB实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基本概念

????蒙特卡洛模擬(Monte Carlo Simulation, MCS)是科學(xué)家馮·諾伊曼等人在1940年代發(fā)明的一種以概率為基礎(chǔ)的方法,它以一座賭城命名——蒙特卡洛。如果用一句話來概括它的本質(zhì),那么就是基于重復(fù)隨機抽樣的模擬方法,與它對應(yīng)的是確定性算法。或者說,任何通過生成合適的隨機數(shù)來解決問題,并觀察遵循某些屬性的數(shù)字部分的方法都可以歸類為蒙特卡羅方法,它是一類方法而不是一種方法。

????蒙特卡羅方法基于這樣的想法:假設(shè)你有一袋豆子,把豆子均勻地朝這個圖形上撒,然后數(shù)這個圖形之中有多少顆豆子,這個豆子的數(shù)目就是圖形的面積。當你的豆子越小,撒的越多的時候,結(jié)果就越精確。借助計算機程序可以生成大量均勻分布坐標點,然后統(tǒng)計出圖形內(nèi)的點數(shù),通過它們占總點數(shù)的比例和坐標點生成范圍的面積就可以求出圖形面積。

(來自維基百科)

MCS求積分

????最初的蒙特卡羅方法是用來求解高維積分問題,舉一個簡單的例子,比如求下方的定積分:

????如果很難求得原函數(shù),那用解析的方法去求定積分是非常困難的。

????針對上述積分,一個簡單的近似求解方法是在[a,b]之間隨機采樣一個點,比如x0,然后用f(x0)代表f(x)在[a,b]區(qū)間上所有的值(矩形公式),那么上面定積分的近似值便為

????顯然取一個點是不精確的,但是也沒有關(guān)系,我們可以多取一些點求平均大數(shù)定律中心極限定理告訴我們,當點的數(shù)量足夠多的時,會以越來越高的概率逼近真實值(期望)。

????但是上述的做法隱含了一個假設(shè),即x在[a,b]之間是均勻分布的(在該案例求積分問題中,x在[a,b]之間確實是均勻分布的)。而大多數(shù)情況下,x在[a,b]之間不是均勻分布的,如果繼續(xù)用上面的方法,模擬求出的結(jié)果很可能和結(jié)果相差甚遠,那怎么解決這個問題呢?如果我們可以得到x在[a,b]的概率分布函數(shù)p(x),那么我們的定積分求和可以轉(zhuǎn)換為:

解釋:


*f(x)/p(x)相當于消除由于x的分布律所引起的采樣不均勻效應(yīng);

*最后一個約等號其實利用的是期望求解公式,將期望的精確值用n次觀測值的均值來代替。


????最后,如果我們采用均勻分布的p(x),那么

從而求出了定積分。

MATLAB實現(xiàn)MCS積分

????先看一個求積分的案例:求y=x*log(1+x)在[0 4]上的精確積分。

%% 求精確積分

close all;clc

syms x

expr = x*log(1+x);%被積函數(shù)

fplot(expr);hold on

a=0;%積分上限

b=4;%積分下限

F = double(int(expr,[a b]))

%==結(jié)果

%F = 10.0708

再利用MCS進行積分,先只進行10次采樣。

N=10;%蒙特卡洛采樣次數(shù)

SUM=0;

for i = 1:N

? ? randtemp=a+rand*(b-a);

? ? SUM=SUM+double(subs(expr,x,randtemp));

? ? %rand生成[0 1]之間均勻分布隨機數(shù)

? ? plot([randtemp randtemp],...

? ? ? ? [0 double(subs(expr,x,randtemp))],'b');

end

I=SUM/N*(b-a)

N=50;

N=1000;

????可以看到,隨著采樣次數(shù)增加,MCS的積分值越來越靠近精確值(以更高的概率靠近,而不是確定性靠近);但是MCS也有缺點,就是采樣的次數(shù)越來越多,采樣的時間也越來越長。

MATLAB求面積

????最后再來看一下MCS求重疊部分圖形面積的例子:

????此時采樣次數(shù)N=1000,求得的重疊面積為Area=0.3(紅點區(qū)域)。當增加采樣點到10000時,Area=0.3030,將越來越逼近真實值。

????以上就是蒙特卡洛的簡單介紹,你GET了嘛?兩個例子的源代碼可以后臺回復(fù)“MCS”獲取哦~

總結(jié)

以上是生活随笔為你收集整理的用蒙特卡洛求pi_蒙特卡洛算法(MCS)及其MATLAB实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。