数学建模——蒙特卡罗算法(Monte Carlo Method)
數學建模——蒙特卡羅算法
- 概覽
- 引例
- 基本思想
- 特點
- 主要應用范圍:
- 蒙特卡洛方法步驟如下:
- 蒙特卡洛求解積分
- 2.兩個應用例子
- 3. 與拉斯維加斯方法的比較
- 5.更深度的應用
https://blog.csdn.net/narcissus2_/article/details/99647407
概覽
蒙特卡羅方法又稱統計模擬法、隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數(或偽隨機數)來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯系,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象征性地表明這一方法的概率統計特征,故借用賭城蒙特卡羅命名。
引例
為了求得圓周率π值,在十九世紀后期,有很多人作了這樣的試驗:將長為2l的一根針任意投到地面上,用針與一組相間距離為2a( l<a)的平行線相交的頻率代替概率P,再利用準確的關系式:
求出π值
基本思想
當所求問題的解是某個事件的概率,或者是某個隨機變量的數學期望,或者是與概率,數學期望有關的量時,通過某種試驗的方法,得出該事件發生的概率,或者該隨機變量若干個具體觀察值的算術平均值,通過它得到問題的解。 當隨機變量的取值僅為1或0時,它的數學期望就是某個事件的概率。或者說,某種事件的概率也是隨機變量(僅取值為1或0)的數學期望。特點
優點:(可以求解復雜圖形的積分、定積分,多維數據也可以很快收斂)
1、能夠比較逼真地描述具有隨機性質的事物的特點及物理實驗過程
2、受幾何條件限制小
3、收斂速度與問題的維數無關
4、具有同時計算多個方案與多個未知量的能力
5、誤差容易確定
6、程序結構簡單,易于實現
缺點:
1收斂速度慢
2誤差具有概率性
3在粒子輸運問題中,計算結果與系統大小有關
所以在使用蒙特卡羅方法時,要“揚長避短”,只對問題中難以用解析(或數值)方法處理的部分,使用蒙特卡羅方法計算,對那些能用解析(或數值)方法處理的部分,應當盡量使用解析方法。
主要應用范圍:
粒子輸運問題(實驗物理,反應堆物理) 統計物理 典型數學問題 真空技術 激光技術 醫學 生物 探礦等蒙特卡洛方法步驟如下:
1在區間[a,b]上利用計算機均勻產生n個隨機數x1,x2…xn,使用matlab軟件的unifrnd命令實現。2計算每一個隨機數想對應的被積函數值f(x1),f(x2),f(xn)計算被積函數值的平均值。蒙特卡洛求解積分
求解定積分相當于計算一個圖形的面積。
按照牛頓和萊布尼茲的方法,我們是把區間劃分成無限份,每份長為△t,高為f(a+z△t),f(a+z△t),這樣來計算面積。
無論圖形的形狀如何,圖形面積一定能被轉化成一個以ab為底,y為高(y可以是負數)的長方形面積高,我們只需要用蒙特卡洛算法求y即可。
那么y怎么求,其實非常簡單,我們只需要在a~b之間生成n個隨機點,計算相應的f(x1),f(x2)…
https://blog.csdn.net/qq_40605167/article/details/100031833
https://www.cnblogs.com/youngsea/p/7457683.html
2.兩個應用例子
例子1:求π的值。
正方形內部有一個相切的圓,它們的面積之比是π/4。現在,在這個正方形內部,隨機產生1000000個點(即1000000個坐標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。如果這些點均勻分布,那么圓內的點應該占到所有點的 π/4,因此將這個比值乘以4,就是π的值。
N=1000000; %隨機點的數目 x=rand(N,1); %rand 生成均勻分布的偽隨機數。分布在(0~1)之間 y=rand(N,1); %矩陣的維數為N×1 count=0; for i=1:Nif (x(i)^2+y(i)^2<=1)count=count+1;end end PI=4*count/N例子2:計算積分
計算函數 y = x^2 在 [0, 1] 區間的積分,就是求出紅色曲線下面的面積。這個函數在 (1,1) 點的取值為1,所以整個紅色區域在一個面積為1的正方形里面。在該正方形內部,產生大量隨機點,可以計算出有多少點落在紅色區域(判斷條件 y < x^2)。這個比重就是所要求的積分值。
clear clc N=10000; x=rand(N,1); y=rand(N,1); count=0; for i=1:Nif (y(i)<=x(i)^2)count=count+1;end end result=count/N3. 與拉斯維加斯方法的比較
(1)蒙特卡羅算法:假如筐里有100個蘋果,讓我每次閉眼拿1個,挑出最大的。于是我隨機拿1個,再隨機拿1個跟它比,留下大的,再隨機拿1個……我每拿一次,留下的蘋果都至少不比上次的小。拿的次數越多,挑出的蘋果就越大,但我除非拿100次,否則無法肯定挑出了最大的。——盡量找好的,但不保證是最好的。
特點:采樣越多,越近似最優解;
(2)拉斯維加斯方法:假如有一把鎖,給我100把鑰匙,只有1把是對的。于是我每次隨機拿1把鑰匙去試,打不開就再換1把。我試的次數越多,打開(最優解)的機會就越大,但在打開之前,那些錯的鑰匙都是沒有用的。——盡量找最好的,但不保證能找到。
特點:采樣越多,越有機會找到最優解。
4.利用蒙特卡羅算法求機器人的工作空間
思想:設置機器人每個關節角的運動范圍,利用蒙特卡羅算法求機器人工作空間。
%**************************蒙特卡洛法求解機器人工作空間*********************%定義變量 deg=pi/180; num=0.001;%定義關節角范圍 theta1=[-180,180]*deg; theta2=[-90,90]*deg; theta3=[-150,150]*deg; theta4=[-150,150]*deg; theta5=[-180,180]*deg; theta6=[-180,180]*deg;%定義連桿變量 a2=612.7*num; a3=571.6*num; d2=163.9*num; d5=115.7*num;%生成一個數組來保存隨機變量 i=1:20000; PX=zeros(size(i)); PY=zeros(size(i)); PZ=zeros(size(i)); %設置隨機點 for j=1:1:10000%randNum=rand();theta1=(-180+360*rand());theta2=(-90+180*rand());theta3=(-150+300*rand());theta4=(-150+300*rand());theta5=(-180+360*rand());theta6=(-180+180*rand());%根據運動學方程,求出機械臂末端執行器在基坐標中的位置向量表達式PX(j)=cos(theta1)*(d5*sin(theta2+theta3+theta4)+a2*cos(theta2)+...a3*cos(theta2+theta3))+d2*sin(theta1);PY(j)=sin(theta1)*(d5*sin(theta2+theta3+theta4)+a2*cos(theta2)+...a3*cos(theta2+theta3))-d2*cos(theta1);PZ(j)=d5*sin(theta2+theta3+theta4)+a3*sin(theta2+theta3)+a2*sin(theta2); end%求解坐標值并且輸出三視圖 subplot(2,2,1); plot3(PX,PY,PZ,'.'); hold on; subplot(2,2,2); plot3(PX,PY,PZ,'.'); view([0 0]); hold on; subplot(2,2,3); plot3(PX,PY,PZ,'.'); view(2); hold on;5.更深度的應用
蒙特卡洛樹搜索—深度學習,強化學習
總結
以上是生活随笔為你收集整理的数学建模——蒙特卡罗算法(Monte Carlo Method)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天勤数据结构代码——排序
- 下一篇: Flash CS4 Profession