数学建模算法之蒙特卡罗方法——原理、编程及应用

数学建模算法之蒙特卡罗方法——原理、编程及应用

ID:9174941

大小:38.12 KB

页数:10页

时间:2018-04-20

数学建模算法之蒙特卡罗方法——原理、编程及应用_第1页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第2页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第3页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第4页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第5页
资源描述:

《数学建模算法之蒙特卡罗方法——原理、编程及应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、数学建模算法之蒙特卡罗方法——原理、编程及应用一、前言1946年,美国拉斯阿莫斯国家实验室的三位科学家JohnvonNeumann,StanUlam和NickMetropolis共同发明了蒙特卡罗方法。此算法被评为20世纪最伟大的十大算法之一。蒙特卡罗方法(MonteCarlomethod),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方

2、法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。二、蒙特卡罗方法的基本原理以及思想1、蒲丰投针实验其基本思想源于法国数学家蒲丰提出著名的蒲丰投针实验,并以该方法求圆周率。为了求得圆周率π值,在十九世纪后期,有很多人作了这样的试验:将长为2l的一根针任意投到地面上,用针与一组相间距离为2a(l<a)的平行线相交的频率代替概率P,再利用准确的关系式:求出π值。其中N为投针次数,n为针与平行线相交次数。这就是古典概率论中著名的蒲丰氏问题。2、射击问题设r表示射击运动员的弹着点到靶心的距离

3、,g(r)表示击中r处相应的得分数(环数),f(r)为该运动员的弹着点的分布密度函数,它反映运动员的射击水平。则该运动员的射击成绩为用概率语言来说,是随机变量g(r)的数学期望,即当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使你比较直观地了解蒙特卡洛方法:假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成

4、正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,

5、而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下: 直接追踪粒子,物理思路清晰,易于理解。 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。三、蒙特卡罗方法的编程计算阴影部分面积。一个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面积。两种编程思路来计算这个面积:方法一:将整个坐标轴看成一个

6、边长为12的正方形,然后均匀的这个正方形分成N(N的大小取决于划分的步长)个点,然后找出N个点中有多少个点是属于阴影部分中,假设这个值为k,则阴影部分的面积为:k/N*12^2方法二:将整个坐标轴看成一个边长为12的正方形,然后在(-6,6)中随机出N(N越大越好,至少超过1000)个点,然后找出这N个点中有多少个点在阴影区域内,假设这个值为k,则阴影部分的面积为:k/N*12^2。然后重复这个过程100次,求出100次面积计算结果的均值,这个均值为阴影部分面积。对比分析:以上两个方法都是利用蒙特卡罗方法计算阴影部

7、分面积,只是在处理的细节有一点区别。前者是把豆子均匀分布在布上;后者则是随机把豆子仍在布上。就计算结果的精度而言,前者取决点的分割是否够密,即N是否够大;后者不仅仅通过N来控制精度,因为随机的因素会造成单次计算结果偏高和偏小,所以进行反复多次计算最后以均值来衡量阴影部分面积。附上MATLAB程序:方法一:clearx=-6:0.01:6;y=x;s=size(x);zs=s(1,2)^2;k=0;fori=1:s(1,2)forj=1:s(1,2)a1=(x(i)^2)/9+(y(j)^2)/36;a2=(x(i)

8、^2)/36+y(j)^2;a3=(x(i)-2)^2+(y(j)+1)^2;ifa1<1ifa2<1ifa3<9k=k+1;endendendendendmj=(12^2)*k/zs;运行结果:mj=7.2150方法二:clearN=10000;n=100;forj=1:nk=0;fori=1:Na=12*rand(1,2)-6;x(i)=a(1,1);y

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。