導航:首頁 > 源碼編譯 > 蒙特卡洛演算法實現實驗總結

蒙特卡洛演算法實現實驗總結

發布時間:2022-10-03 01:48:24

⑴ 什麼是蒙特卡洛分析

‍‍

蒙特卡羅分析法,是一種容差分析方法,以電子電路為例,在給定元器件的值和容差范圍時,對電路進行直流特性,交流小信號特性,瞬態特性分析,得出整個電路的性能的統計規律。

換言之,也就是從一個系統的組成部分的變動范圍來分析整個系統的性能、動態范圍的統計規律的方法。

總之,是一種利用概率統計理論的模擬方法。通過容差分析,可以斷定整個系統是否滿足設計要求,從而判斷某些元器件是否符合要求。

在電路設計中,實際元件的參數值和標稱之間總存在著隨機誤差,了解和掌握各個元件參數值對電路性能的影響程度,是電路設計人員所關心的。因此在電路設計時,需考慮容差問題,並進行容差分析。

所謂容差分析是為設定方案確定電路元器件的容許變化范圍,即元件的容差。它可分為兩類:一是分析問題,給定元器件、電路及溫度的容差,計算電路特性的容差,以驗證是否符合設計要求;二是設計問題,給定電路特性指標的范圍,求出所用元器件及電源等的容差,驗證設計方案等是否適宜。但容差設計問題沒有惟一解,所以在電路模擬中要解決這一問題,往往通過容差分析問題進行反求,對電路進行容差分析。

目前,在電子電路的可靠性設計中,蒙特卡羅分析法是進行容差分析的主要方法之一。電子電路中的蒙特卡羅分析法是一種基於概率統計模擬方法,它是在給定電路元器件參數容差的統計分布規律的情況下,用一組組偽隨機數求得元器件參數的隨機抽樣序列,對這些隨機抽樣的電路進行直流、交流小信號和瞬態分析,並通過多次分析結果估算出電路性能的統計分布規律,如電路性能的中心值、方差,以及電路合格率、成本等。

‍‍

⑵ 蒙特卡洛方法的詳細過程

在控制方面,蒙特卡洛方法就是通過大量隨機過程,類似於窮舉法,驗證控制系統的性能,主要是檢驗系統的魯棒性,比方說:PID控制器參數已經整定完畢,但是被控對象的參數在某個范圍內發生變化,這時,將系統的輸出,比方說調整時間和超調亮在坐標圖上以點的形式畫出,那麼如果進行100次試驗,就會在圖上形成一百個點,如果這些點排列相對集中,那麼系統的魯棒性就相對較好,並且,如果這些點離坐標原點的距離都很近,那麼,這個PID控制器的調節時間和超調量性能也就比較好,這是我在控制領域見到的一種蒙特卡洛方法的運用,在經濟領域,蒙特卡洛也有運用,可以簡化過去的演算法,將積分變為直接的隨機試驗,這樣可以降低系統的運行時間,提高效率。

⑶ 蒙特卡洛演算法的實際應用舉例

比較簡單的有隨機抽樣,通過坐標的變換產生球面,圓面,正方體面等等所需要的抽樣。在某些計算機模擬過程中,可以隨機產生雜訊,比如說水中花粉隨機行走之類的問題,可以用來隨機產生外界水分子的作用力,用來模擬現實情況。當然也可以用這種方式來近似某些科學計算,最簡單的例子就是近似計算積分。對於某些計算機無法完全枚舉的優化問題,也可以用蒙特卡洛方法得到較好的解,常見的比如模擬退火,量子退火等優化方法,都用到了蒙特卡洛演算法。

⑷ 一文讀懂MCMC演算法(馬爾科夫鏈蒙特卡洛)

理解本文需要一些貝葉斯基礎,小白可移步 https://www.jianshu.com/p/c942f8783b97

為了理解MCMC,我們依然是從一個具體的事例出發:假設當我們來到了一個小人國,我們感興趣的是小人國的國民的 身高分布情況 ,即有多少人高1米,有多少人高0.5米,又有多少人像我們正常人一樣高。一種解決這個問題的暴力方法是找遍這個小人國的所有人,然後都測量身高,但顯然,這是一個愚公移山式的方法,在很多情況下都是不可能的。

所以,由於精力有限,我們只找到了10個小人國的人民,這十個人的高度分別是:
1.14,1.02,1.08,0.96,0.79,0.94,1.00,0.93,1.13,1.02

聰明的我們的直覺是,這大概符合一個 正態分布 ,然後我們碰到了一個開掛了的長老,他說:「沒錯,就是正態分布,而且標准差sd=0.1,現在讓我看看你們這些愚蠢的人類能不能知道這個正態分布的平均值μ是多少!」。

一對分別名為馬爾科夫和蒙特卡洛的名偵探組合就此登場,他們說:「首先,我們先隨便猜一個平均值μ,比如μ(1) = 0.8好了。」

*我這里用μ(n)表示第n個提出的μ值,所以μ(1)是提出的第一個μ值,μ(2)是第二個提出的μ值。

接著他們要做的事,是要確定另一個值μ(2),通常我們要謹慎一點去選擇一個和之前提出來的值μ(1)差別不大的值,比如μ(2) = 0.7。

接著的問題就是,我們需要判斷:究竟是μ(1) 更符合實際情況,還是μ(2) 更符合實際情況呢?但要如何作出這個判斷呢,這里就要用到前面的貝葉斯公式了。

判斷哪個值更好,實際上是在問,基於目前觀察到的數據,得到這個參數μ的可能性哪個更大? 即:
已知D = {1.14,1.02,1.08,0.96,0.79,0.94,1.00,0.93,1.13,1.02}
p(μ(2)|D) 大於還是小於還是等於 p(μ(1)|D) ?

這不就是在問誰的後驗概率更大嘛?

為了解決這件事,一種思路是我們要把p(μ(2)|D) 和 p(μ(1)|D) 都用前面的貝葉斯公式解出來。但你很快就會發現在這種情況下證據概率p(D)會很難算。

但如果我們轉念一想,我們要做的是比較p(μ(2)|D) 和p(μ(1)|D) ,那麼 我們其實只要求p(μ(2)|D) / p(μ(1)|D) 就可以了,如果這個比值大於1,則說明μ2的後驗概率更大,更符合實際情況

而實際上,
p(μ(2)|D) / p(μ(1)|D)
= (p(μ(2))p(D|μ(2)) / p(D)) / (p(μ(1))p(D|μ(1)) / p(D))
= p(μ(2))p(D|μ(2)) / p(μ(1))p(D|μ(1))

可以看到,由於分子和分母上的P(D)被相互抵消了,剩下來需要知道的值就只剩下μ(1)和μ(2)的 先驗概率 ,以及分別在μ=μ(1)和μ=μ(2)時得到數據D的 似然概率 了。

現在,我們面臨的問題要比之前簡化了一些。但實際上我們還需要處理似然概率的計算和先驗概率的問題。

先說說似然概率p(D|μ(2)) 和p(D|μ(1)),此時的似然概率是完全可以算出來的。因為我們已經假設了數據D符合的是正態分布模型了,且已知sd=0.1(前面大師說的),所以當我們假設μ=μ(1)時,就確定了一個平均值為μ(1)和標准差為0.1的正態分布,也就確定了這個正態分布的概率密度函數f(x),接著基於我們的數據D計算x = 1.14,1.02,1.08...等值的概率密度,再將這些值相乘,便得到了似然概率*。

** 可以這樣理解這一似然概率的計算:如果我們此時假定的正態分布與數據實際對應的正態分布越接近,就自然 可能 有越多的數據落在高概率密度函數的區域(即分布的平均值附近),如此,作為概率密度函數的連乘的似然概率自然也會更高。相比之下,如果你現在確定的正態分布的平均值為1500,標准差為1,那麼它在x = 1.14的概率密度(概率密度的具體數值不等於概率,但是兩者的數學意味是接近的)就會高度趨近於0,將這樣一個數作為因子去計算似然概率,似然概率也顯然將會比較低。

說完了似然概率,就輪到先驗概率p(μ(2))和p(μ(1))的問題了。先驗概率要怎麼去算呢?答案是不用算!我們自己來定。但是先驗概率毫無疑問對MCMC演算法是有影響的,就像我們之前從之前貝爺的故事裡看到的那樣,後驗概率是受到先驗概率影響的。之所以一枚90%擊中率的硬幣幾乎不能預測一個人是否得病,是因為得這種病本身的先驗概率就超級低。 一個你需要記住的簡單事實是,我們設定的先驗概率越是背離真實的情況,就需要越多的數據去將先驗概率修正,讓後驗概率符合實際的情況。 從這個意義上說, 貝葉斯推理不是無中生有,而是要先對數據背後的結果有一個信念(belief)的基礎上,根據所見的數據,不斷地修正原本的信念,使之逐漸接近數據背後對應的真實情況 。 (貝葉斯公式本身就帶有學習、更新的意味,所以學界現在還有種說法是我們的大腦是貝葉斯式的)

當我們看到數據的時候,通過觀察數據,我們最開始會猜想μ=1的概率比較高,因此我們可以假定μ的先驗概率是服從平均值為1,sd為0.5的概率分布,有了這樣的先驗概率分布,我們就可以計算得到當μ=μ1,μ2時分別對應的概率密度了。

搞定了先驗概率和似然概率,就可以計算前面的公式p(μ(2))p(D|μ(2)) / p(μ(1))p(D|μ(1))了。當這個比值大於等於1時,我們就接受μ(2),而如果這個比值小於1,我們就以這個比值為概率接受μ(2)。比如比值為0.5時,我們只有50%的概率接受μ(2)。當不接受的時候,我們得重新尋找一個μ(2),再進行同樣的後驗概率比較。

反復進行這樣的步驟之後, 我們可以想像,我們自然會更大程度地訪問那些後驗概率更高的μ值。我們訪問不同的μ值的頻率分布,就是關於μ值的後驗概率分布(的近似)。 至於這背後具體的數學推導,我們就不談了。但注意,參數的近似後驗分布並不是我們想要擬合的模型「即最開始的問題:小人國的國民的 身高分布情況 」。還記得我們最開始假設小人國的身高分布情況符合正態分布,且我們已經得知這個正態分布的標准差sd=1,而MCMC最終會告訴我們根據現有的數據,我們推斷小人國身高分布的平均值μ,符合某個概率分布(比如平均值為1,sd為5),如果我們覺得合適,我們可以將μ的後驗分布的平均值作為μ的最可能值。即,「小人國的國民的 身高分布情況 最有可能符合μ=1,sd=1的概率分布」。

最後總結一下MCMC演算法:
(1)確定參數值的先驗分布。
(2)先確定第一個訪問(或者說采樣)的參數的數值,作為當前參數數值
(3)根據當前訪問的參數的數值,以一定的方式(比如 Metropolis sampler )提出下一個待考慮訪問的參數的數值。
(4)以比值的形式,比較當前參數數值和待考慮訪問的參數數值的後驗概率,計算後驗概率涉及到先驗概率和後驗概率的概率密度。根據這個比值的大小,接受或拒絕該待考慮采樣的參數數值。接受後則將該參數數值視為當前參數數值。
(5)重復(3)和(4),直到符合某種終止條件(比如說訪問了10000個參數數值)

最終,將被采樣的參數數值的頻率分布作為對該參數的後驗概率分布的近似。

看完以後,你是不是想說這么復雜的事,是人乾的嗎!?

廢話,這種事當然是計算機來干啊,你還想手算不成?

⑸ 蒙特卡洛方法

蒙特卡羅方法又稱統計模擬法、隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。

應用領域:

蒙特卡羅方法在金融工程學,宏觀經濟學,生物醫學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算、核工程)等領域應用廣泛。

⑹ matlab如何實現蒙特卡洛演算法

1、打開MATLAB軟體,如圖所示,輸入一下指令。

⑺ matlab如何實現蒙特卡洛演算法

1、首先我們啟動matlab,新建一個函數文件。

⑻ 蒙特卡洛演算法是什麼

是二十世紀提出的數值計算方法。

蒙特·卡羅方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。

是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性演算法。蒙特·卡羅方法在金融工程學,宏觀經濟學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。

基本原理:

蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特徵,利用數學方法來加以模擬,即進行一種數字模擬實驗。它以一個概率模型為基礎,按照這個模型所描繪的過程,通過模擬實驗的結果,作為問題的近似解。

蒙特卡羅解題可歸結為三個主要步驟。

構造或描述概率過程。

實現從已知概率分布抽樣。

建立各種評估量。

⑼ Matlab蒙特卡洛演算法的設計和實現

%%假設前10個分值為5,後10個分值為10
income=0; %% 收入
n=10000; %% 模擬次數,即有n個人參加游戲
for i=1:n
a=randperm(20);
a=a(1:10);
b=find(a>10); %%10分分值的
sumb=length(b)*10+(10-length(b))*5;
if sumb==50||sumb==100
income=income-100;
elseif sumb==55||sumb==95
income=income-10;
elseif sumb==70||sumb==75||sumb==80
income=income+1;
end
end
income

運行的結果表示莊家的收入,我測試很多次的結果都在8000以上,說明莊家是賺錢的。若有什麼疑問繼續追問

閱讀全文

與蒙特卡洛演算法實現實驗總結相關的資料

熱點內容
換硬幣演算法遞歸 瀏覽:121
四級電影推薦 瀏覽:847
女主手臂處有射精管理局臂章的電影 瀏覽:328
從哪找韓國電影 瀏覽:313
pdf轉換成ppt如何轉換 瀏覽:146
國內越南戰爭的電影 瀏覽:246
台灣好看的倫理電影 瀏覽:525
外遇的妻子2李采潭 瀏覽:954
365電影網站免費 瀏覽:785
網頁看電影不卡的網站 瀏覽:528
山西壓縮天然氣集團晉城有限公司 瀏覽:732
穿越到紅軍長征時期開超市 瀏覽:667
免費看電影無廣告網站 瀏覽:579
十降頭師電影 瀏覽:928
閱讀源碼真的有價值嗎 瀏覽:182
linux強制退出命令 瀏覽:322
韓國高分電影愛情推理片 瀏覽:445
同截面梁箍筋加密 瀏覽:220
肉一點的有聲小說 瀏覽:457
程序員情感語錄 瀏覽:901