概率统计中的MonteCarlo方法及其建模应用PPT课件
- 格式:ppt
- 大小:1.83 MB
- 文档页数:95
MonteCarlo方法及其简单应用(图文)论文导读:本文介绍了Monte Carlo方法的思想,主要从在定积分计算方面介绍了随机投点法和平均值法,并将其推广到二重积分、三重积分和多重积分情形,最后以棋手分奖金问题介绍了Monte Carlo方法在古典概率问题中的应用.分析了误差,介绍了减少误差的方法. 给出这些方法的实例及其Mathematica实现程序.关键词:MonteCarlo方法,积分计算,古典概率,模拟1 引言Monte Carlo方法,源于第二次世界大战美国关于研制原子弹的“曼哈顿计划”.该计划的主持人之一、数学家冯·诺伊曼用驰名世界的赌城——摩纳哥的Monte Carlo——来命名这种方法,为它蒙上了一层神秘色彩.Monte Carlo方法的基本思想很早以前就被人们所发现和利用.19世纪人们用投针试验的方法来确定圆周率.20世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能.Monte Carlo方法研究的问题大致可分为两种类型:一种是问题本身就是随机的,另一种本身属于确定性问题,但可以建立它的解与特定随机变量或随机过程的数字特征或分布函数之间的联系,因而也可用随机模拟方法解决.文[1]-[7] 介绍了Monte Carlo方法的思想,但没有给出具体的实例及实现过程。
发表论文。
本文介绍了MonteCarlo方法的思想,从计算定积分和古典概率两方面的应用进行研究,给出了实例及其Mathematica实现程序.2 Monte Carlo方法2.1 Monte Carlo方法思想概述Monte Carlo方法,有时也称随机模拟(RandomSimulation)方法或统计试验(Statistical Testing)方法.它的基本思想是:首先建立一个概率模型或随机过程,使它的参数等于问题的解;然后通过对模型或过程的观察、抽样来计算所求参数的统计特征;最后给出所求解的近似值,而解的精度可用估计值的标准误差来表示.假设所求的量是随机变量的数学期望,那么近似确定的方法是对进行重复抽样,产生相互独立的值的序列并计算其算术平均值:根据大数定理,当充分大时,以概率1成立,即可用作为的估计值.Monte Carlo方法以概率统计理论为基础,以随机抽样(随机变量的抽样)为手段,在很多方面有重要的应用.它的优点表现在三个方面:方法和程序的结构简单,易分析、易理解;收敛的概率性和收敛速度与问题的维数无关,很好的避免了维数问题;受问题条件限制的影响较小,很好的提高可行性.使用Monte Carlo方法的步骤如下:(l)构造或描述概率过程(2)实现从已知概率分布中抽样(3)建立各种估计量2.2 Monte Carlo方法的可行性从Monte Carlo方法的基本思想可以得到它通常的做法,利用数学或物理方法产生[0,1]中均匀分布的随机数,在变换得到任意分布的随机数.随机数个数很大时,可以由大数定理,求出事件的概率值.这种做法的可行性主要依据下面的事实:(1)如果随机变量的分布函数是,由于非降.对于任意的,(),可以定义:作为的反函数.我们考虑随机变量的分布,这里假定是连续函数,则对于有:(1)即服从上的均匀分布.(2)反之,如果服从上的均匀分布,则对于任意的分布函数,令,则:(2)因此是服从分布函数的随机变量.所以我们只要能够产生中均匀分布的随机变量的子样,那么通过(2)式我们就可以得到任意分布函数的随机变量的子样.再结合大数定理、就可以运用Monte Carlo方法进行随机模拟,解决一些实际的问题.3 Monte Carlo方法在定积分中的应用3.1随机投点法对于定积分.为使计算机模拟简单起见,设,有限,,令,并设是在上均匀分布的二维随机变量,其联合密度函数为.则是中曲线下方的面积(如图2).图2假设我们向中进行随机投点.若点落在下方(即)称为中的,否则称不中.则点中的概率为,若我们进行次投点,其中次中的.则可以得到的一个估计(3)该方法的具体计算步骤为:①独立地产生2个随机数,,i=1,…,n;②计算,,和;③统计的个数;④用(3)估计.例1 1777年,法国学者Buffon提出用试验方法求圆周率的值.原理如下:假设平面上有无数条距离为1的等距平行线,现向该平面随机地投掷一根长度为的针.则我们可以计算该针与任一平行线相交的概率.此处随机投针可以这样理解:针中心与最近的平行线间的距离x均匀地分布在区间上,针与平行线间的夹角(不管相交与否)均匀地分布在区间上(如图1).于是,针与线相交的充要条件是,从而针线相交概率为:图1而由大数定律可以估计出针线相交的概率,其中为掷针次数,为针线相交次数,从而圆周率.其mathematica实现语句见附录1.3.2 样本平均值法对积分,设是上的一个密度函数,改写(4)由矩法,若有个来自的观测值,则可给出的一个矩估计,这便是样本平均值法的基本原理.若,有限,可取.设是来自的随机数,则的一个估计为(5)该方法的具体计算步骤为:①独立地产生个随机数;②计算和,;③用(5)估计.后面将给出一个例子说明此方法的应用.4 Monte Carlo方法在计算多重积分中的应用方法一:(重积分)(7)其中为S维单位立方体,,在上有:.很明显.此时积分(5)可以看作为求维空间长方体V:的体积.即:(8)对于这种较为一般形式的多重积分计算问题,采用的还是随机投点.具体步骤如下:首先产生个随机数(i=1,2,…,)及,构造维随机向量,然后检验是否落后在V中,同理可以推论.检验是否成立,如果在构成的个随机向量中,有个随机向量落于V中,那么取作为积分的近似值,即,如果积分区域及被积函数不满足上述条件,那么可以通过变换便可达到所希望的条件.方法二:其中积分区域包含在维多面体中,此多面体决定于个不等式.设函数在内连续且满足条件:,是在维多面体中均匀分布的随机质点的个数,是在个随机点之中落入以维区域V为底以为顶之曲顶柱体内的随机点的个数.这里表示由不等式和决定的维多面体.则重积分的Monte Carlo近似计算公式为:=(9)例 2 在三维空间中,由三个圆柱面:,,围成一个立体,利用Monte Carlo方法求它的体积.分析:据题意,所求体积,其中{,,且,,}.记,,},考虑在空间内随机的产生个点,落在空间内有个,则.在Mathematica中模拟程序见附录2.5 在古典概率问题中的应用下面的例子说明了Monte Carlo方法在古典概率中的应用.例3 甲乙两位棋手棋艺相当,现他们在一项奖金为1000元的比赛中相遇,比赛为五局三胜制,已经进行了三局的比赛,结果为甲三胜一负,现因故要停止比赛,问应该如何分配这1000元比赛奖金才算公平?分析:平均分对甲欠公平,全归甲则对乙欠公平.合理的分法是按一定的比例分配.现在我们用计算机模拟两位棋手后面的比赛,是否就可以知道奖金分配方案.由于两位棋手的棋艺相当,可以假定他们在以下每局的比赛胜负的机会各半.Mathematica中函数产生随机数0或1,0与1出现的机会各占一半,可以用随机数1表示甲棋手胜,而随机数0表示乙胜.(也可以用中的随机实数来模拟两人的胜负,随机数大于0.5表示甲胜,否则乙胜)连续模拟1000次(或更多次数)每次模拟到甲乙两方乙有一方胜了三局为止.按所说方案分配奖金,1000次模拟结束后,计算两棋手每次的平均奖金,就是该棋手应得的奖金.模拟结果:甲:750,乙:250(程序见附录1)最终以甲分到;乙分到.即甲750元,乙250元.实际上,因为比赛只需进行两局.则可分出胜负.结果无非是以下四种情况之一:甲甲、甲乙、乙甲、乙乙.上面四种情况可看出,甲获胜的概率为,乙获胜的概率为.在Mathematica 中模拟程序见附录3.6 误差分析6.1 收敛性蒙特卡罗方法是由随机变量的简单子样的算术平均值:作为所求解的近似值.由大数定律可知,如独立同分布,且具有有限期望值(<∞),则.即随机变量的简单子样的算术平均值,当子样数N充分大时,以概率1收敛于它的期望值.6.2 误差蒙特卡罗方法的近似值与真值的误差问题,概率论的中心极限定理给出了答案.该定理指出,如果随机变量序列,,…,独立同分布,且具有有限非零的方差,即是的分布密度函数.则当N充分大时,有如下的近似式其中称为置信度,1-称为置信水平.这表明,不等式近似地以概率1-成立,且误差收敛速度的阶为.通常,Monte Carlo方法的误差ε定义为上式中与置信度α是一一对应的,根据问题的要求确定出置信水平后,查标准正态分布表,就可以确定出.关于蒙特卡罗方法的误差需说明两点:第一,蒙特卡罗方法的误差为概率误差,这与其他数值计算方法是有区别的.第二,误差中的均方差是未知的,必须使用其估计值来代替,在计算所求量的同时,可计算出.例4 求用平均值法估计圆周率,并考虑置信度为5%,精度要求为0.01的情况下所需的试验次数.解:易知,故考虑令~,令,其期望值为,因此=,其中是[0,1]区间上均匀分布的随机数.此时,,,,所以(次).6.3 减小方差的各种技巧显然,当给定置信度α后,误差ε由σ和N决定.要减小ε,或者是增大N,或者是减小方差.在固定的情况下,要把精度提高一个数量级,试验次数N 需增加两个数量级.因此,单纯增大N不是一个有效的办法.另一方面,如能减小估计的均方差σ,比如降低一半,那误差就减小一半,这相当于N增大四倍的效果.因此降低方差的各种技巧,引起了人们的普遍注意.一般来说,降低方差的技巧,往往会使观察一个子样的时间增加.在固定时间内,使观察的样本数减少.所以,一种方法的优劣,需要由方差和观察一个子样的费用(使用计算机的时间)两者来衡量.这就是蒙特卡罗方法中效率的概念.它定义为,其中c 是观察一个子样的平均费用.显然越小,方法越有效.总的来说,增大样本的值对计算机要求较高;减小方差的技巧都只具有指导思想上的意义.对于实际的计算问题,往往要求对涉及的随机变量有先验的了解,或者对发生的物理过程的性态有一定的认识.通过利用这些预知的信息采取相应的手段减小误差,提高精度.附录1.(1)n=1000;p={}Do[m=0;Do[x=Random[];y=Random[];If[x+y<=1,m++],{k,1,n}];AppendTo[p,N[4m/n]],{t,1,10}];Print[p];Sum[p[[t]],{t,1,10}]/10(2)n=10000;p={}Do[m=0;Do[x=Random[];y=Random[];If[x+y<=1,m++],{k,1,n}];AppendTo[p,N[4m/n]],{t,1,10}];Print[p];Sum[p[[t]],{t,1,10}]/10(3)n=100000;p={}Do[m=0;Do[x=Random[];y=Random[];If[x+y<=1,m++],{k,1,n}];AppendTo[p,N[4m/n]],{t,1,10}];Print[p];Sum[p[[t]],{t,1,10}]/102. n=1000;p={}Do[m=0;Do[x=Random[];y=Random[];z=Random[];If[x+y<=1&&x+z<=1&&y+z<=1,m++],{k,1,n}]; AppendTo[p,N[8m/n]],{t,1,10}];Print[p];Sum[p[[t]],{t,1,10}]/103. n=1000;p={}Do[m=0;Do[x=Random[Integer]+2;y=Random[Integer]+1;If[x>y,m++],{k,1,n}];AppendTo[p,N[m]],{t,1,20}]Print[m];{Sum[p[[t]],{t,1,20}]/20,1000-Sum[p[[t]],{t1,20}]/20}参考文献[1] 徐钟济.蒙特卡罗方法[M].上海:上海科学技术出版社,1985:171-188.[2] 茆诗松,王静龙,濮晓龙.高等数理统计[M].北京:高等教育出版社,2006:415-454.[3] 周铁,徐树方,张平文等.计算方法[M].吉林:清华大学出版社,2006:299-353.[4] 李尚志,陈发来,张韵华等.数学实验[M].北京:高等教育出版社,2004:23-30.[5] 王岩.Monte Carlo方法应用研究[J].云南大学学报(自然科学版),2006,28(S1): 23-26.[6] 薛毅,陈立萍.统计建模与R软件[M].北京:清华大学出版社,2008:476-485.[7] 杨自强.你也需要蒙特卡罗方法———提高应用水平的若干技巧[J]. 数理统计与管理, 2007,27(2):355-376.。