2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现
隨機模擬—蒙特卡洛方法 Matlab代碼實現
蒙特卡洛方法
蒙特卡洛方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。
基本思想
當所求解問題是某種隨機事件出現的概率,或者是某個隨機變量的期望值時,通過某種“實驗”的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數字特征,并將其作為問題的解。
應用及matlab代碼
我們以面積計算的問題講解蒙特卡洛算法的實現步驟如下:
1.畫出圖像
求要計算圖像的基本形狀。此處以y1=3x;y2=8-x為例,畫出圖像如下:
2.確定邊界
通常為矩形,要求矩形必須完整包括所求圖像。
如上圖,因為圖像交點為(2,6),因此,確定邊界如紅框所示:(0,0),(8,0),(8,6),(0,6)
3.隨機統計
在(矩形)邊界范圍內隨機產生點,并統計落在所求圖像中的點。所用到的函數為unifrnd函數。本例子以10^7(7次方在保證運行速度的情況下,基本可以滿足準確度)為例。
4.確定面積
用比值法求面積,即落在圖像上的點:整個范圍內的點=所求圖像面積:矩形邊界面積。
即所有圖像I面積=矩形邊界面積*落在圖像上的點/整個范圍內的點。
?
相關的知識
本例中使用到的unifrnd函數的相關知識。
R = unifrnd(A,B,M,N,...) or R = unifrnd(A,B,[M,N,...])
即產生m*n階[a,b]均勻分布U(a,b)的隨機數矩陣:unifrnd (a,b,m, n)
如y=(0,8,[1,10000000]),即產生1*10000000階位于(0,8)之間的數。
?
5.代碼實現
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
?
6.結果測驗
由函數圖像可知,所求區域面積為:24。
算法運行結果如下:
?
?
由結果可知,算法每次運行結果都不一樣,這是有概率統計的特性所致。但是結果都穩定在24左右,這與理論值是一樣的。
以上實例以規則圖形為例,對于不規則圖像,本算法同樣適用,且更便利。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-04-08 Python通过f
- 下一篇: 2021-04-12 电机滑模控制 Lu