清华数学实验实验五蒙特卡罗方法
- 格式:ppt
- 大小:93.00 KB
- 文档页数:10
第三章蒙特卡罗方法简介3.1 Monte Carlo方法简介Monte Carlo方法是诺斯阿拉莫斯实验室在总结其二战期间工作(曼哈顿计划)的基础上提出来的。
Monte Carlo的发明,主要归功于Enrico Fermi、Von Neumann和Stanislaw Ulam等。
自二战以来,Monte Carlo方法由于其在解决粒子输运问题上特有的优势而得到了迅速发展,并在核物理、辐射物理、数学、电子学等方面得到了广泛的应用。
Monte Carlo的基本思想就是基于随机数选择的统计抽样,这和赌博中掷色子很类似,故取名Monte Carlo。
Monte Carlo方法非常适于解决复杂的三维问题,对于不能用确定性方法解决的问题尤其有用,可以用来模拟核子与物质的相互作用。
在粒子输运中,Monte Carlo技术就是跟踪来自源的每个粒子,从粒子产生开始,直到其消亡(吸收或逃逸等)。
在跟踪过程中,利用有关传输数据经随机抽样来决定粒子每一步的结果[6]。
3.2 Monte Carlo发展历程MCNP程序全名为Monte Carlo Neutron and Photon Transport Code (蒙特卡罗中子-光子输运程序)。
Monte Carlo模拟程序是在1940年美国实施“发展核武器计划”时,由洛斯阿拉莫斯实验室(LANL)提出的,为其所投入的研究、发展、程序编写及参数制作超过了500人年。
1950年Monte Carlo方法的机器语言出现, 1963年通用性的Monte Carlo方法语言推出,在此基础上,20世纪70年代中期由中子程序和光子程序合并,形成了最初的MCNP程序。
自那时起,每2—3年MCNP更新一次, 版本不断发展,功能不断增加,适应面也越来越广。
已知的MCNP程序研制版本的更新时间表如下:MCNP-3:1983年写成,为标准的FORTRAN-77版本,截面采用ENDF /B2III。
蒙特卡罗(Monte Carlo)方法简介蒙特卡罗(Monte Carlo)方法简介蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。
一起源这一方法源于美国在第二次世界大战进研制原子弹的"曼哈顿计划"。
Monte Carlo方法创始人主要是这四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(学计算机的肯定都认识这个牛人吧)和Nicholas Metropolis。
Stanislaw Marcin Ulam是波兰裔美籍数学家,早年是研究拓扑的,后因参与曼哈顿工程,兴趣遂转向应用数学,他首先提出用Monte Carlo方法解决计算数学中的一些问题,然后又将其应用到解决链式反应的理论中去,可以说是MC方法的奠基人;Enrico Fermi是个物理大牛,理论和实验同时都是大牛,这在物理界很少见,在“物理大牛的八卦”那篇文章里提到这个人很多次,对于这么牛的人只能是英年早逝了(别说我嘴损啊,上帝都嫉妒!);John von Neumann可以说是计算机界的牛顿吧,太牛了,结果和Fermi一样,被上帝嫉妒了;Nicholas Metropolis,希腊裔美籍数学家,物理学家,计算机科学家,这个人对Monte Carlo方法做的贡献相当大,正式由于他提出的一种什么算法(名字忘了),才使得Monte Carlo方法能够得到如此广泛的应用,这人现在还活着,与前几位牛人不同,Metropolis很专一,他一生主要的贡献就是Monte Carlo方法。
蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特•罗方法正是以概率为基础的方法。
与它对应的是确定性算法。
二解决问题的基本思路Monte Carlo方法的基本思想很早以前就被人们所发现和利用。
早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。
蒙特卡罗算法及简单应用蒙特卡罗算法是一种基于统计的计算方法,主要用于估计数学、物理和工程领域中难以直接求解的问题。
它通过随机采样和统计分析的方法,可以近似地得到问题的解或概率分布。
蒙特卡罗算法的核心思想是利用随机性来代替确定性,通过重复进行大量的随机实验,从而得到问题的近似解。
蒙特卡罗算法的主要步骤如下:1. 定义问题:将问题转化为数学模型,并明确待求解的量。
2. 随机采样:根据问题的特点,选择合适的随机采样方法,生成一系列的随机样本。
3. 计算估计值:根据随机样本计算待求解量的统计量,如均值、方差等。
4. 得到结果:根据统计量得出问题的近似解或概率分布,并根据需求进行分析和应用。
蒙特卡罗算法的简单应用非常广泛,下面以两个例子来说明。
1. 计算圆周率π的近似值:假设有一个边长为2的正方形,并在其中画一个半径为1的圆,那么这个圆的面积就是π/4。
现在我们需要通过蒙特卡罗算法估计圆周率的近似值。
步骤如下:1. 在正方形内随机生成大量的点。
2. 统计落在圆内的点的个数。
3. 通过统计量计算圆的面积,进而估计π的值。
这里的关键在于随机点的生成和统计量的计算,通过重复进行大量的实验,我们可以得到π的近似值。
2. 金融风险评估:蒙特卡罗算法可以用于金融领域中的风险评估。
以股票投资为例,我们希望知道在不同的投资策略下,投资组合的收益和风险的分布情况。
假设我们有若干个股票的历史数据,包括每日的收益率和波动率。
利用蒙特卡罗算法可以模拟出若干个未来的可能情景,然后根据投资策略计算每个情景下的投资组合收益和波动率,最终得到收益和风险的概率分布。
通过分析这些分布,投资者可以评估不同策略的风险和回报情况,制定合理的投资决策。
蒙特卡罗算法不仅可以应用于上述两个简单问题,还可以应用于复杂的问题,如模拟核反应堆的裂变过程、计算复杂的多维积分和求解偏微分方程等。
蒙特卡罗算法的优点是适用于求解各种类型的问题,无论是确定性问题还是概率性问题,只要问题可以建模为数学模型,并且可以通过随机采样进行估计,就可以使用蒙特卡罗算法进行求解。
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.。
蒙特卡罗方法的原理介绍蒙特卡罗方法是一种基于随机抽样的数值计算方法,广泛应用于各个领域,如物理学、金融学、计算机科学等。
它的原理是通过随机抽样来模拟实验,从而得到近似的结果。
本文将介绍蒙特卡罗方法的原理及其应用。
一、蒙特卡罗方法的原理蒙特卡罗方法的原理可以简单概括为以下几个步骤:1. 定义问题:首先需要明确要解决的问题是什么,例如计算某个函数的积分、求解某个方程的解等。
2. 建立模型:根据问题的特点,建立相应的数学模型。
模型可以是一个函数、一个方程或者一个概率分布等。
3. 随机抽样:通过随机抽样的方法,生成符合模型要求的随机数。
这些随机数可以是服从某个特定分布的随机数,也可以是均匀分布的随机数。
4. 计算结果:利用生成的随机数,根据模型进行计算,得到近似的结果。
通常需要进行多次抽样和计算,以提高结果的准确性。
5. 分析结果:对得到的结果进行统计分析,计算均值、方差等统计量,评估结果的可靠性。
二、蒙特卡罗方法的应用蒙特卡罗方法在各个领域都有广泛的应用,下面以几个具体的例子来介绍。
1. 积分计算:蒙特卡罗方法可以用来计算复杂函数的积分。
通过在函数的定义域内进行随机抽样,然后根据抽样点的函数值和概率密度函数的值进行计算,最后求得积分的近似值。
2. 随机模拟:蒙特卡罗方法可以用来模拟随机事件的概率分布。
例如在金融学中,可以用蒙特卡罗方法来模拟股票价格的变动,从而评估投资组合的风险。
3. 数值求解:蒙特卡罗方法可以用来求解复杂的方程或优化问题。
通过随机抽样和计算,可以得到问题的近似解。
4. 图像渲染:蒙特卡罗方法可以用来进行图像渲染。
通过在图像上进行随机抽样,然后根据抽样点的颜色和概率密度函数的值进行计算,最后得到图像的近似渲染结果。
总结:蒙特卡罗方法是一种基于随机抽样的数值计算方法,通过模拟实验来得到近似的结果。
它的原理是通过定义问题、建立模型、随机抽样、计算结果和分析结果等步骤来解决问题。
蒙特卡罗方法在各个领域都有广泛的应用,如积分计算、随机模拟、数值求解和图像渲染等。