资源描述:
《Matlab学习系列18-蒙特卡罗方法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、18.蒙特卡罗方法(一)概述一、原理蒙特卡罗(MonteCarlo)方法,是一种基于“随机数”的计算机随机模拟方法,通过大量随机试验,利用概率统计理论解决问题的一种数值方法。其理论依据是:大数定律、中心极限定理(估计误差)。常用来解决如下问题:1.求某个事件的概率,基于“频率的极限是概率”;2.可以描述为“随机变量的函数的数学期望”的问题,用随机变量若干个具体观察值的函数的算术平均值代替。一般形式为求积分:X为自变量(随机变量),定义域为[a,b],f(x)为被积函数,为概率密度函数。蒙特卡罗法步骤为:(1)依据概率分布不断生成N个随机数x,依次记为x1,…,
2、xN,并计算f(xi);(2)用f(xi)的算术平均值近似估计上述积分类比:“积分”同“求和”,“dx”同“1/N”,“”同“服从分布的随机数”;(3)停止条件:至足够大的N停止;或者误差小于某值停止。3.利用随机数模拟各种分布的随机现象,进而解决实际问题。二、优缺点优点:能够比较逼真地描述具有随机性质的事物的特点及物理实验过程;受几何条件限制小;收敛速度与问题的维数无关;误差容易确定。缺点:收敛速度慢;误差具有概率性;进行模拟的前提是各输入变量是相互独立的。三、应用随机模拟实验,随机最优化问题,含有大量不确定因素的复杂决策系统进行风险模拟分析(金融产品定价、
3、期权)。(二)用蒙特卡罗法求事件概率一、著名的“三门问题”源自博弈论的一个数学游戏:参赛者面前有三扇关闭的门,其中一扇门的后面藏有一辆汽车,而两扇门的后面各藏有一只山羊。参赛者从三扇门中随机选取一扇,若选中后面有车的那扇门就可以赢得该汽车。当参赛者选定了一扇门,但尚未开启它的时候,节目主持人会从剩下的两扇门中打开一扇藏有山羊的门,然后问参赛者要不要更换自己的选择,选取另一扇仍然关着的门。该问题涉及到的问题是:参赛者更换自己的选择是否会增加赢得汽车的概率?解:这是全概率问题。记结果事件B=“赢得汽车”,造成结果的原因事件有两个:A1=“第一次选到汽车”,A2=“
4、第一次选到山羊”则P(A1)=1/3,P(A2)=2/3;P(B
5、A1)=0,P(B
6、A2)=1.利用全概率公式,P(B)=P(A1)×P(B
7、A1)+P(A2)×P(B
8、A2)=2/3而参赛者不更换选择,抽中汽车的概率为1/3.可见,参赛者更换选择可以增加一倍的获奖几率。下面用蒙特卡罗方法来模拟验证上面的理论结果:将问题“随机数”化,对羊编号为1,2;对汽车编号为3.先从1,2,3中随机选取一个数,若开始选中1或2,则更换选择后选中3,即赢得汽车;若开始选中3,则更换选择后选中1或2,即得不到汽车。这样的试验重复n次,记录开始选中1或2的次数m(即更换选择后
9、赢得汽车的次数),从而可以确定更换选择后赢得汽车的频率m/n.由伯努利大数定律,当试验次数n增大时,频率m/n将趋于更换选择后赢得汽车的概率。代码:先编写SheepAndCar.m函数functionp=SheepAndCar(n)%n可以是正整数,也可以是正整数的向量fori=1:length(n)x=randsample(3,n(i),'true');%从1,2,3中随机抽取n(i)个数,'true'表示可以重复p(i)=sum(x~=3)/n(i);end再执行代码:(分别模拟10次、100次、……、次)p=SheepAndCar([10,100,100
10、0,10000,,])运行结果:p=0.60000.72000.69100.66410.66710.6666二、用蒲丰投针法求圆周率π【蒲丰投针问题】:平面上画有间隔为d的等距平行线,向平面内任意投掷一枚长为h(h11、求.P(A)可以通过蒙特卡罗方法随机模拟获得:在区域Ω随机均匀投点,落在区域A中的点的频率fA,随着投点次数的增大,就趋于概率P(A).从而代码:先编写BuffonMonteCarlo.m函数function[p0,pm,piv]=BuffonMonteCarlo(d,h,N)%返回p0为理论概率,pm为基于蒙特卡罗法的模拟概率,piv为pi的模拟值.%输入参数d为相邻两条平行线的间距,h为针的长度,N为模拟投针的次数.ifh>=derror('针的长度应小于相邻平行线的间距')endp0=2*h/(d*pi);%计算针与任一平行线相交的理论概率x=0;y=0
12、;m=length(N);pm=zer