Monte Carlo方法简介(转载)

时间:2022-05-04 23:27:03

Monte Carlo方法简介(转载)
       今天向大家介绍一下我现在主要做的这个东东。 Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代中期,为适应当时的曼哈顿计划需求而在美国Los Alamos实验室发展起来的,说白了就是美国为了造原子弹才逼出来的。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方法简介(转载)Monte Carlo方法简介(转载)Monte Carlo方法简介(转载)Monte Carlo方法简介(转载)

 
       Monte Carol方法这个名字比较有意思,为什么叫Monte Carlo呢?这得从Monte Carlo方法的历史讲起。原来卓卓跟我吹牛b的时候提到过一个地方叫摩纳哥,在法国(不是摩洛哥哦,这个在北非),Monte Carlo是摩纳哥的一个地名,有人说摩纳哥只有两个地方,除了皇宫就是Monte Carlo……MonteCarlo与拉斯维加斯、澳门并称为世界三大赌城。Ulam说之所以叫做Monte Carlo方法,是为了纪念他的舅舅,而他的舅舅是个赌徒,经常去Monte Carlo赌钱,所以就叫做Monte Carlo方法,这个理由确实比较诡异,不过如果了解Monte Carlo方法原理的话,我们会发现Monte Carlo方法其实就是个赌博游戏,叫这个名字还是很贴切的。 
  
      现在来看一下为什么说MC方法是赌博游戏,这要从它的基本思想入手。MC方法的基本思想是:当所要求解的问题是某种事件出现的概率或者是某个随机变量的期望时,可以通过某种实验的方法得到该事件出现的概率,或者这个随机变量的平均值,并用它们作为问题的解。应用MC方法解决实际问题时,并不是像通常的数理统计方法那样通过真实的实验来完成的,而是抓住事物运动过程的数量和几何特征,利用数学方法加以模拟,即进行一种数字模拟实验,模拟实验的次数越多,其模拟结果就越接近于真实值。对于特定的数学或物理问题,若要得到较为准确的模拟结果,往往需要上万次,甚至数十万、数百万次的数字模拟实验,其运算量相当庞大,因此在电子计算机没有发明以前,MC方法本身并没有多大的发展与应用。在电子计算机出现和飞速发展以后,利用MC方法进行大量的数字模拟实验成为可能,MC方法终于迎来了发展的春天。由此可见,MC方法是与电子计算机的发展紧密的联系在一起的,是数理统计与电子计算机相结合的产物。 
  
上一段说的比较抽象,下面可以举个简单的例子:比如说要计算圆周率pi,用MC方法解决此问题的思路如下: 
  
x=(random#)*r 
y=(random#)*r 
dist=sqrt(x^2 + y^2) 
if dist.from.origin (less.than.or.equal.to) r 
let hits=hits+1 
  
      上面这段话可以这样理解:在一个边长为r的正方形内均匀投点,然后判断所投点是否落在与此正方形内切的半径为r的圆内,若点落在圆内,则记录之,否则不记录。那么,如果所投的点足够多且足够均匀的话,落在圆内的点的数目除以总投点数既为圆面积与正方形面积之比,知道了这个值,我们就能够得出pi的值了。 
  
      上面这个例子只是为了说明MC方法的原理,并不能体现出MC方法的优越性,我们来想想下面这个稍微复杂点的例子:扑克摆别扭大家都玩过吧?如果操作无误的话,问一副扑克摆别扭能解开的几率有多少?这个只要制定好规则,用MC方法解就非常easy,别的方法就无法想象了………………………………………… 
  
      由此可见,MC方法说白了其实就是暴力破解法,用咱们的话讲就叫做“简单粗暴”!所以有人把MC方法叫做“最后的方法”。但往往就是这种简单粗暴的方法在处理复杂问题时是非常有效的,上面讲的只是一个最简单的例子,类似的,我们还可以通过MC方法计算各种复杂变态的定积分,方法与上面算pi的手段完全一样。 
  
      现在MC方法已经应用于许多领域,在物理方面,通过MC方法可以模拟粒子与物质相互作用时,发生的各种反应,并对我们感兴趣的物理量进行统计,这里面许多物理量是通过实验手段无法测量的;在金融学领域,好多大公司都用MC方法计算风险投资的风险系数;前几天还看到一篇埃及人的文章是用MC方法模拟埃及的洪灾,然后指导如何修水坝的……总之,只要建立的模型足够好,MC得出的结论就非常可信,还能模拟出统计涨落呢,太逼真了。
    Monte Carlo方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。19世纪人们用投针试验的方法来决定圆周率π。本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。
为了说明Monte Carlo方法的基本思想,让我们先来看一个简单的例子,从此例中你可以感受如何用Monte Carlo方法考虑问题。
例:比如y=x^2(对x)从0积到1,结果就是下图红色部分的面积:
Monte Carlo方法简介(转载)

函数图像

注意到函数在(1,1)点的取值为1,所以整个红色区域在一个面积为1的正方形里面。所以所求区域的面积即为在正方形区域内任取点,点落在所求区域的概率。这个限制条件是y<x^2。用matlab模拟,做一百万次(即共取1000000个点),结果为0.3328,与用积分法算出来的三分之一非常接近。

4三个主要步骤

1。构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。
2。实现从已知概率分布抽样: 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。 建立各种估计量: 一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。
3。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。常用的估计量有无偏估计,最大似然估计,渐进有偏估计等,使用最多的是无偏估计。

5模拟的特点

蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:
· 直接追踪粒子,物理思路清晰,易于理解。
· 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。
· 不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。
· MC程序结构清晰简单。
· 研究人员采用MC方法编写程序来解决粒子输运问题,比较容易得到自己想得到的任意中间结果,应用灵活性强。
· MC方法主要弱点是收敛速度较慢和误差的概率性质,其概率误差正比于,如果单纯以增大抽样粒子个数N来减小误差,就要增加很大的计算量。
近十年来,蒙特卡罗方法发展很快,从1983年到1988年期刊论文数量增长了五倍,有几本好书是关于电子? 光子蒙特卡罗问题的[注1],蒙特卡罗方法的代码被认为是黑匣子,它已成为计算数学中不可缺少的组成部分,这主要是因为以下原因:
· 传统的分析方法受到了问题复杂性的限制。
· MC方法直观,对实验者很有吸引力。
· 计算机变得更快更便宜。
· 量子理论的发展为我们提供了辐射与物质相互作用的截面数据。

Monte Carlo方法简介(转载)的更多相关文章

  1. 蒙特卡罗&lpar;Monte Carlo&rpar;方法简介

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 二 解决问题的基本思路 Monte Carlo方法的基本思想很早以前就被人们所发 ...

  2. 利用蒙特卡洛&lpar;Monte Carlo&rpar;方法计算π值&lbrack; 转载&rsqb;

    部分转载自:https://blog.csdn.net/daniel960601/article/details/79121055 圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能 ...

  3. 基于Monte Carlo方法的2048 A&period;I&period;

    2048 A.I. 在 * 上有个讨论:http://*.com/questions/22342854/what-is-the-optimal-algo ...

  4. 增强学习(四) ----- 蒙特卡罗方法&lpar;Monte Carlo Methods&rpar;

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  5. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

  6. 马尔科夫链蒙特卡洛&lpar;Markov chain Monte Carlo&rpar;

    (学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...

  7. Monte carlo

    转载 http://blog.sciencenet.cn/blog-324394-292355.html 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数 ...

  8. Monte Carlo与TD算法

    RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from= ...

  9. 简析Monte Carlo与TD算法的相关问题

    Monte Carlo算法是否能够做到一步更新,即在线学习? 答案显然是不能,如果可以的话,TD算法还有何存在的意义?MC算法必须要等到episode结束后才可以进行值估计的主要原因在于对Return ...

随机推荐

  1. 【codevs1170】 双栈排序

    http://codevs.cn/problem/1170/ (题目链接) 题意 给出一个初始序列,判断能否通过两个栈的入栈和出栈操作构造出一个有序序列.若可以,输出字典序最小的方案. Solutio ...

  2. Web性能优化之动态合并JS&sol;CSS文件并缓存客户端

    来源:微信公众号CodeL 在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来 ...

  3. iOS 日历类&lpar;NSCalendar&rpar;

    对于时间的操作在开发中很常见,但有时候我们需要获取到一年后的时间,或者一周后的时间.靠通过秒数计算是不行的.那就牵扯到另外一个日历类(NSCalendar).下面先简单看一下 NSDate let d ...

  4. APP-PAY-06153 When Trying To Open Organization Definition Form &lpar;文档 ID 1323165&period;1&rpar;

    In this Document Symptoms Cause Solution Applies to: Oracle Inventory Management - Version 11.5.10.2 ...

  5. 新鲜出炉的Using Qt 3D to visualize music

    http://blog.qt.io/blog/2016/01/27/using-qt-3d-visualize-music/

  6. java&period;lang&period;ClassNotFoundException&colon; org&period;apache&period;commons&period;pool2&period;impl&period;GenericObjectPoolConfig

    问题描述: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with n ...

  7. S2&lowbar;OOP第三章

    第一章 多态 概念 多态是具有表现多种型生态的能力的特征,同一个实现接口,使用不同的实例而执行不同的操作 子类转换父类(向上转型) 用父类接受子类,向上转型 向上转型的规则: 讲一个父类的引用志向一个 ...

  8. SqlServer批量备份多个数据库且删除3天前的备份

    /******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...

  9. token简单的使用

    这里对token的简单的使用进行测试和描述 其原理就不在这里描述了! 具体测试流程:用户在前端请求登录——>在后台验证通过后根据用户ID生成token——>请求返回时将token带给前端并 ...

  10. 给PXC集群加密

    MySQL的复制时明文的,不管是集群的复制还是IST/SST,直接通过抓包就可以抓取数据. 生成证书 直接使用 mysql_ssl_rsa_setup mysql_ssl_rsa_setup --da ...