标签:
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 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得出的结论就非常可信,还能模拟出统计涨落呢,太逼真了。
标签:
原文地址:http://www.cnblogs.com/Evil-Rebe/p/5774322.html