蒙特卡罗方法

russilong 2006-10-16 09:24:07
最近需要蒙特卡罗方法建立模型,解决问题,而我对蒙特卡罗方法一窍不通,请哪位详细解释下。

最好有相关程序段。谢谢!
...全文
978 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lj860603 2006-10-17
  • 打赏
  • 举报
回复
里面有很多经典资料,也有例子。
lj860603 2006-10-17
  • 打赏
  • 举报
回复
去这个论坛看看,里面关于这蒙特卡罗有很多介绍。

http://52mc.nuaa.edu.cn/bbs/index.htm
pcboyxhy 2006-10-17
  • 打赏
  • 举报
回复
蒙特卡落只是种思想
没有具体的算法
飞哥 2006-10-17
  • 打赏
  • 举报
回复
有看到,但是没找到C语言的程序

russilong 2006-10-17
  • 打赏
  • 举报
回复
有没有相应的程序段啊?
bohlee 2006-10-16
  • 打赏
  • 举报
回复
mark
飞哥 2006-10-16
  • 打赏
  • 举报
回复
蒙特卡罗方法
[发布时间:20010830]
[来源:http://www.bjkp.gov.cn/gkjqy/rkx, "蒙特卡罗方法"]




蒙特卡罗(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于"随机数"的计算方法。这一方法源于美国在第一次世界大战进研制原子弹的" 曼哈顿计划"。该计划的主持人之一、数学家冯?诺伊曼用驰名世界的赌城-摩纳哥的Monte Carlo-来命名这种方法,为它蒙上了一层神秘色彩。
  Monte Carlo方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。19世纪人们用投针试验的方法来决定圆周率π。本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。
  考虑平面上的一个边长为1的正方形及其内部的一个形状不规则的"图形",如何求出这个"图形"的面积呢?Monte Carlo方法是这样一种"随机化"的方法:向该正方形"随机地"投掷N个点落于"图形"内,则该"图形"的面积近似为M/N。
  可用民意测验来作一个不严格的比喻。民意测验的人不是征询每一个登记选民的意见,而是通过对选民进行小规模的抽样调查来确定可能的优胜者。其基本思想是一样的。
  科技计算中的问题比这要复杂得多。比如金融衍生产品(期权、期货、掉期等)的定价及交易风险估算,问题的维数(即变量的个数)可能高达数百甚至数千。对这类问题,难度随维数的增加呈指数增长,这就是所谓的"维数的灾难"(Course Dimensionality),传统的数值方法难以对付(即使使用速度最快的计算机)。Monte Carlo方法能很好地用来对付维数的灾难,因为该方法的计算复杂性不再依赖于维数。以前那些本来是无法计算的问题现在也能够计算量。为提高方法的效率,科学家们提出了许多所谓的"方差缩减"技巧。
  另一类形式与Monte Carlo方法相似,但理论基础不同的方法-"拟蒙特卡罗方法"(Quasi -Monte Carlo方法)-近年来也获得迅速发展。我国数学家华罗庚、王元提出的"华-王"方法即是其中的一例。这种方法的基本思想是"用确定性的超均匀分布序列(数学上称为Low Discrepancy Sequences)代替Monte Carlo方法中的随机数序列。对某些问题该方法的实际速度一般可比Monte Carlo方法提出高数百倍,并可计算精确度。

飞哥 2006-10-16
  • 打赏
  • 举报
回复
蒙特卡罗方法(MC)- -



蒙特卡罗(Monte Carlo)方法:



蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。



传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。这也是我们采用该方法的原因。



蒙特卡罗方法的基本原理及思想如下:



当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。



蒙特卡罗解题三个主要步骤:





构造或描述概率过程:



对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。





实现从已知概率分布抽样:



构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。





建立各种估计量:



一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。



蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:



? 直接追踪粒子,物理思路清晰,易于理解。



? 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。



? 不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。



? MC程序结构清晰简单。



? 研究人员采用MC方法编写程序来解决粒子输运问题,比较容易得到自己想得到的任意中间结果,应用灵活性强。



? MC方法主要弱点是收敛速度较慢和误差的概率性质,其概率误差正比于,如果单纯以增大抽样粒子个数N来减小误差,就要增加很大的计算量。



近十年来,蒙特卡罗方法发展很快,从1983年到1988年期刊论文数量增长了五倍,有几本好书是关于电子¾ 光子蒙特卡罗问题的[注1],蒙特卡罗方法的代码被认为是黑匣子,它已成为计算数学中不可缺少的组成部分,这主要是因为以下原因:



? 传统的分析方法受到了问题复杂性的限制。



? MC方法直观,对实验者很有吸引力。



? 计算机变得更快更便宜。



? 量子理论的发展为我们提供了辐射与物质相互作用的截面数据。



[注1]:

? I.Lux and L.Koblinger,MONTE CARLO PARTICLE TRANSPORT METHODS:MEUTRON AND PHOTO CALCULATIONS (CRC Press,1991).

? R.L.Morin(Editor),MONTE CARLO SIMULATION IN THE RADIOLOGICAL SCIENCES (CRC Press,1988).[Contributors: H.-P. Chan, K.Doi, J.E.Goin, R.L.Morin, R.Nath, D.E.Raeside,J.C.Widman and J.F.Williamson]

? T.M.Jenkins, W.R.Nelson, A.Rindi, A.E.Nahum and D.W.O.Rogers (Editors), MONTE CARLO TRANSPORT OF ELECTRONS AND PHOTOS (Plenum Press,1988). [Contributors: P.Andro, M.J.Berger, A.F.Bielajew, A.Del Guerra, B.Grosswendt, J.Halbleib, A.Ito, T.M.Jenkins, R.Monhan, A.E.Nahum, W.R.Nelson, D.W.O.Rogers, S.Seltzer and R.Wang]

蒙特卡罗方法的计算程序:



关于蒙特卡罗方法的计算程序已经有很多,如:EGS4、FLUKA、ETRAN、ITS、MCNP、GEANT等。这些程序大多经过了多年的发展,花费了几百人年的工作量。除欧洲核子研究中心(CERN)发行的GEANT主要用于高能物理探测器响应和粒子径迹的模拟外,其它程序都深入到低能领域,并被广泛应用。就电子和光子输运的模拟而言,这些程序可被分为两个系列:

1.EGS4、FLUKA、GRANT

2.ETRAN、ITS、MCNP



这两个系列的区别在于:对于电子输运过程的模拟根据不同的理论采用了不同的算法。EGS4和ETRAN分别为两个系列的基础,其它程序都采用了它们的核心算法。



ETRAN(for Electron Transport)由美国国家标准局辐射研究中心开发,主要模拟光子和电子,能量范围可从1KeV到1GeV。



ITS(The integrated TIGER Series of Coupled Electron/Photon Monte Carlo Transport Codes )是由美国圣地亚哥(Sandia)国家实验室在ETRAN的基础上开发的一系列模拟计算程序,包括TIGER 、CYLTRAN 、ACCEPT等,它们的主要差别在于几何模型的不同。TIGER研究的是一维多层的问题,CYLTRAN研究的是粒子在圆柱形介质中的输运问题,ACCEPT是解决粒子在三维空间输运的通用程序。



NCNP(Monte Carlo Neutron and Photo Transport Code)由美国橡树林国家实验室(Oak Ridge National Laboratory)开发的一套模拟中子、光子和电子在物质中输运过程的通用MC 计算程序,在它早期的版本中并不包含对电子输运过程的模拟,只模拟中子和光子,较新的版本(如MCNP4A)则引进了ETRAN,加入了对电子的模拟。



FLUKA 是一个可以模拟包括中子、电子、光子和质子等30余种粒子的大型MC计算程序,它把EGS4容纳进来以完成对光子和电子输运过程的模拟,并且对低能电子的输运算法进行了改进。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧