2024年1月23日发(作者:4年级数学试卷批改)
H
数学建模算法之蒙特卡罗方法——原理、编程及应用
一、前言
1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan
Ulam和Nick Metropolis共同发明了蒙特卡罗方法。此算法被评为20世纪最伟大的十大算法之一。
蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
二、蒙特卡罗方法的基本原理以及思想
1、蒲丰投针实验
其基本思想源于法国数学家蒲丰提出著名的蒲丰投针实验,并以该方法求圆周率。
为了求得圆周率π值,在十九世纪后期,有很多人作了这样的试验:将长为2l的一根针任意投到地面上,用针与一组相间距离为2a(l<a)的平行线相交的频率代替概率P,再利用准确的关系式:H
H
P2l2l2lN()aaPan
求出π值。其中N为投针次数,n为针与平行线相交次数。这就是古典概率论中著名的蒲丰氏问题。
2、射击问题
设r表示射击运动员的弹着点到靶心的距离,g(r)表示击中r处相应的得分数(环数),f(r)为该运动员的弹着点的分布密度函数,它反映运动员的射击水平。则该运动员的射击成绩为
gg(r)f(r)dr0
用概率语言来说,
gEg(r)
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使你比较直观地了解蒙特卡洛方法:
假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。H
H
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。
蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:
直接追踪粒子,物理思路清晰,易于理解。
采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。
不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。
三、蒙特卡罗方法的编程
计算阴影部分面积。
一个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面积。H
H
两种编程思路来计算这个面积:
方法一:将整个坐标轴看成一个边长为12的正方形,然后均匀的这个正方形分成N(N的大小取决于划分的步长)个点,然后找出N个点中有多少个点是属于阴影部分中,假设这个值为k,则阴影部分的面积为:k/N*12^2
方法二:将整个坐标轴看成一个边长为12的正方形,然后在(-6,6)中随机出N(N越大越好,至少超过1000)个点,然后找出这N个点中有多少个点在阴影区域内,假设这个值为k,则阴影部分的面积为:k/N*12^2。然后重复这个过程100次,求出100次面积计算结果的均值,这个均值为阴影部分面积。
对比分析:以上两个方法都是利用蒙特卡罗方法计算阴影部分面积,只是在处理的细节有一点区别。前者是把豆子均匀分布在布上;后者则是随机把豆子仍在布上。就计算结果的精度而言,前者取决点的分割是否够密,即N是否够大;后者不仅仅通过N来控制精度,因为随机的因素会造成单次计算结果偏高和偏小,所以进行反复多次计算最后以均值来衡量阴影部分面积。H
H
附上MATLAB程序:
方法一:
clear
x=-6:0.01:6;
y=x;
s=size(x);
zs=s(1,2)^2;
k=0;
for i=1:s(1,2)
for j=1:s(1,2)
a1=(x(i)^2)/9+(y(j)^2)/36;
a2=(x(i)^2)/36+y(j)^2;
a3=(x(i)-2)^2+(y(j)+1)^2;
if a1<1
if a2<1
if a3<9H
H
k=k+1;
end
end
end
end
end
mj=(12^2)*k/zs;
运行结果:
mj =
7.2150
方法二:
clear
N=10000;
n=100;
for j=1:n
k=0;H
H
for i=1:N
a=12*rand(1,2)-6;
x(i)=a(1,1);
y(i)=a(1,2);
a1=(x(i)^2)/9+(y(i)^2)/36;
a2=(x(i)^2)/36+y(i)^2;
a3=(x(i)-2)^2+(y(i)+1)^2;
if a1<1
if a2<1
if a3<9
k=k+1;
end
end
end
end
m(j)=(12^2)*k/N;
endH
H
mj=mean(m);
运行结果:
mj =
7.2500
四、蒙特卡罗方法在数学建模中的应用举例
1.问题的提出
某食品加工厂主要生产即食产品,一般当天生产的产品必须当天售出,否则就会出现不能保质、或变质、造成一定的经济损失,如果市场需求量大而生产量不足,则也会影响工厂的销售收入,该产品的单位成本为1.5元,单位产品售价为4元。工厂为了避免产品滞销存货过多而造成的经济损失,提出了如何制定合理的生产与库存数量的方案问题,能够使得工厂能有尽可能多的收益,经初步考虑拟从以下两种生产与库存方案中选出一个较好的方案:
方案(1):按前一天的销售量作为当天的生产库存量。
方案(2):按前两天的平均销售量作为当天的生产库存量。
2.问题的分析与假设及参数定义
实际中的问题,生产与库存多了,销售不出去会造成经济损失,生产与库存少了不能满足需求也会造成一定的损失,工厂需要依据实际不确定的需求量来制定合理的生产与库存方案,使得能有尽量大的经济收益。
解决问题的基本思路:利用蒙特卡罗方法随机模拟市场对该产品需求量,统计计算出按照两种不同方案T天后工厂的经济值,比较不同方案经济效益的大小,选出一个较好的方案。H
H
假设市场对该产品的每天需求数量是一个随机变量,从统计学的角度分析得知,该随机变量服从正态分布。
为了编程实现问题的目标,引入如下的变量:本文中参数符号定义:T表示模拟天数;C表示每天的需求量;KC1表示方案(1)当天的生产与库存量;KC2表示方案(2)当天的生产与库存量;S1表示方案(1)前一天的销售量;S21表示方案(2)前一天的销售量;S22表示方案(2)前二天的销售量;ST1表示方案(1)当天的实际销售量;ST2表示方案(2)当天的实际销售量;L1表示方案(1)当天的实际利润;L2表示方案(2)当天的实际利润;LS1表示方案(1)实际累计总利润;LS2表示方案(2)实际累计总利润。
3.模型的建立与求解
根据上面的分析,利用蒙特卡罗方法编程实现,主要随机模拟前一天和前两天的各种不同的销售量,来确定当天的生产与库存量,依据可能的实际销售量,计算出当天的销售利润,选择使连续几天利润尽可能大的方案,下面给MATLAB程序。
(1)建立蒙特卡罗方法的M文件,函数名:mcun.m
Function [LS1,LS2]=mcun(T,S1,S21,S22)
LS1=0;LS2=0;k=1;
While k
H
KC1=S1;
KC2=(S21+S22)/2;
C=normrnd(1500,30*30)
if C ST1=KC1; Else ST1=C; end if C ST2=KC2; else ST2=C; end L1=4*ST1—1.5*KC1; L2=4*ST2—1.5*KC2; LS1=LS1+L1; LS2=LS2+L2;H H k=k+1; end S1=ST1:S22=S21;S21=ST2; (2)调用函数mcun(T,S1,S21,S22) 4.模型的结果分析与推广 在MATLAB命令窗口多次输入参数T,S1,S21和S22数值,分别调用函数meun(T,S1,S21,S22),进行求解计算,并对结果进行分析,由若干次模拟实演的结果可以看出,方案(1)的利润总是小于方案(2)的利润,所以该工厂实际按方案(2)进行组织生产与库存,工厂会有更好的经济效益。 五、参考文献 [1]蒙特卡罗方法及应用[J]. 尹增谦,管景峰,张晓宏,曹春梅. 物理与工程. 2002(03).45-49. [2]蒙特卡罗方法应用研究[J]. 王岩,尹海丽,窦在祥. 青岛理工大学学报. 2006(02).111-113. [3]高职数学中蒙特卡罗方法的应用[J]. 陈杨林,罗婷. 九江职业技术学院学报. 2013(02).22-23. [4]蒙特卡罗方法在教学中的应用[J]. 康件丽,黄俊杰. 电脑学习. 2008(02).46-47. [5]蒙特卡罗方法与问题的维数[J]. 裴鹿成. 数学的实践与认识. 1994(02).35-40. H H 六、结语 由于科学技术的发展和电子计算机的发明,这种方法作为一种独立的方法被提出来,并首先在核武器的试验与研制中得到了应用。 蒙特卡罗方法是一种计算方法,但与一般数值计算方法有很大区别。它是以概率统计理论为基础的一种方法。 由于蒙特卡罗方法能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决的问题,因而该方法的应用领域日趋广泛。 欢迎下载,资料仅供参考!!! H 更多推荐 方法,方案,问题,表示,面积
发布评论