欢迎来到天天文库
浏览记录
ID:34518878
大小:532.60 KB
页数:27页
时间:2019-03-07
《解析montecarlo算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1解析Monte‐Carlo算法张洋北京航空航天大学计算机学院软件工程研究所EricZhang.buaa@gmail.com解析Monte-Carlo算法(张洋北京航空航天大学计算机学院软件工程研究所EricZhang.buaa@gmail.com)引言最近在和同学讨论研究SixSigma(六西格玛)软件开发方法及CMMI相关问题时,遇到了需要使用Monte-Carlo算法模拟分布未知的多元一次概率密度分布问题。于是花了几天时间,通过查询相关文献资料,深入研究了一下Monte-Carlo算法,并以实际应用为背景进行了一些实验。在研究和实验过程中,发现M
2、onte-Carlo算法是一个非常有用的算法,在许多实际问题中,都有用武之地。目前,这个算法已经在金融学、经济学、工程学、物理学、计算科学及计算机科学等多个领域广泛应用。而且这个算法本身并不复杂,只要掌握概率论及数理统计的基本知识,就可以学会并加以应用。由于这种算法与传统的确定性算法在解决问题的思路方面截然不同,作为计算机科学与技术相关人员以及程序员,掌握此算法,可以开阔思维,为解决问题增加一条新的思路。基于以上原因,我有了写这篇文章的打算,一是回顾总结这几天的研究和实验,加深印象,二是和朋友们分享此算法以及我的一些经验。这篇文章将首先从直观的角度,介
3、绍Monte-Carlo算法,然后介绍算法基本原理及数理基础,最后将会和大家分享几个基于Monte-Carlo方法的有意思的实验。所以程序将使用C#实现。阅读本文需要有一些概率论、数理统计、微积分和计算复杂性的基本知识,不过不用太担心,我将尽量避免过多的数学描述,并在适当的地方对于用到的数学知识进行简要的说明。2解析Monte‐Carlo算法张洋北京航空航天大学计算机学院软件工程研究所EricZhang.buaa@gmail.comMonte-Carlo算法引导首先,我们来看一个有意思的问题:在一个1平方米的正方形木板上,随意画一个圈,求这个圈的面积。
4、我们知道,如果圆圈是标准的,我们可以通过测量半径r,然后用S=pi*r^2来求出面积。可是,我们画的圆圈一般是不标准的,有时还特别不规则,如下图是我画的巨难看的圆圈。图1、不规则圆圈显然,这个图形不太可能有面积公式可以套用,也不太可能用解析的方法给出准确解。不过,我们可以用如下方法求这个图形的面积:假设我手里有一支飞镖,我将飞镖掷向木板。并且,我们假定每一次都能掷在木板上,不会偏出木板,但每一次掷在木板的什么地方,是完全随机的。即,每一次掷飞镖,飞镖扎进木板的任何一点的概率的相等的。这样,我们投掷多次,例如100次,然后我们统计这3解析Monte‐Ca
5、rlo算法张洋北京航空航天大学计算机学院软件工程研究所EricZhang.buaa@gmail.com100次中,扎入不规则图形内部的次数,假设为k,那么,我们就可以用k/100*1近似估计不规则图形的面积,例如100次有32次掷入图形内,我们就可以估计图形的面积为0.32平方米。以上这个过程,就是Monte-Carlo算法直观应用例子。非形式化地说,Monte-Carlo算法泛指一类算法。在这些算法中,要求解的问题是某随机事件的概率或某随机变量的期望。这时,通过“实验”方法,用频率代替概率或得到随机变量的某些数字特征,以此作为问题的解。上述问题中,如
6、果将“投掷一次飞镖并掷入不规则图形内部”作为事件,那么图形的面积在数学上等价于这个事件发生的概率(稍后证明),为了估计这个概率,我们用多次重复实验的方法,得到事件发生的频率k/100,以此频率估计概率,从而得到问题的解。从上述可以看出,Monte-Carlo算法区别于确定性算法,它的解不一定是准确或正确的,其准确或正确性依赖于概率和统计,但在某些问题上,当重复实验次数足够大时,可以从很大概率上(这个概率是可以在数学上证明的,但依赖于具体问题)确保解的准确或正确性,所以,我们可以根据具体的概率分析,设定实验的次数,从而将误差或错误率降到一个可容忍的程度。
7、上述问题中,设总面积为S,不规则图形面积为s,共投掷n次,其中掷在不规则图形内部的次数为k。根据伯努利大数定理,当试验次数增多时,k/n依概率收敛于事件的概率s/S。下面给出严格证明:4解析Monte‐Carlo算法张洋北京航空航天大学计算机学院软件工程研究所EricZhang.buaa@gmail.com上述证明从数学上说明用频率估计不规则图形面积的合理性,进一步可以给出误差分析,从而选择合适的实验次数n,以将误差控制在可以容忍的范围内,此处从略。从上面的分析可以看出,Monte-Carlo算法虽然不能保证结果一定是准确和正确,但并不是“撞大运”,其
8、正确性和准确性依赖概率论,有严格的数学基础,并且通过数学分析手段对实验加以控制,可以将误差和错
此文档下载收益归作者所有