蒙特卡罗随机模拟投点法

蒙特卡罗随机模拟投点法
蒙特卡罗随机模拟投点法

蒙特卡罗随机模拟投点法在数字积分中的

应用

数学与应用数学0901班:张瑞宸

指导老师:任明慧

摘要:本文首先介绍了蒙特卡罗方法的产生和发展,然后分析了蒙特卡罗方法计算数值积分的理论原理,最后给出了蒙特卡罗方法计算数值积分的MATLAB编程实现,全文主要是讨论了蒙特卡罗方法在定积分计算的应用。而蒙特卡罗的优点:可以计算被积函数非常复杂的定积分、重积分,并且维数没有限制,这是别的数值积分方法还未达到的。蒙特卡罗的缺点:收敛速度慢,误差一般较大,且是概率的误差,不是真正的误差。

关键词:蒙特卡罗方法,均值估计法,数值积分,Matlab编程

Abstract:This paper first introduces the emergence and development of the Monte Carlo method, and then analyze the theoretical principles of Monte Carlo numerical integration method, Full-text mainly discussed the application of the Monte Carlo method in the definite integral. The advantages of Monte Carlo: can be calculated the integrable functions very complex definite integral, Multiple integrals, and dimension no limit, other numerical integration methods have not yet reached. Monte Carlo Disadvantages: slow convergence speed, error generally higher, and the probability of error, not a real error.

Keywords: Monte Carlo method,Mean estimation method,numerical integral,Matlab programming

0 引言

历史上有记载的蒙特卡罗试验始于十八世纪末期(约1777年),当时布丰(Buffon)为了计算圆周率,设计了一个“投针试验”,后文会给出。虽然方法已经存在了200多年,此方法命名为蒙特卡罗则是在二十世纪四十年,美国原子弹计划的一个子项目需要使用蒙特卡罗方法模拟中子对某种特殊材料的穿透作用。出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一von Neumann灵犀一点选择摩洛哥著名赌城蒙特卡罗(Monte Carlo)作为该项目名称,自此这种方法也就被命名为Monte Carlo方法广为流传。

蒙特卡罗方法,又名随机模拟法或统计实验法它是以概率统计理论为基础,依据大数定律(样本均值替代总体均值)利用电子计算机数字模拟技术,解

决一些很难直接用数学运算求解或用其他方法不能解决的复杂问题的一种近似计算法。本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。通常蒙特卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特卡罗方法是一种有效的求出数值解的方法。一般蒙特卡罗法在数学中最常见的应用就是蒙特卡罗随机投点和蒙特卡罗数值积分。

1 蒙特卡罗方法的产生与发展

蒙特卡罗方法是在二战期间产生和发展起来的他的奠基者是美籍匈牙利人数学家冯诺伊曼(J.Von Neumann 1903-1957)由于通常计算量相当大而电子计算机在当时还没有出现,所有运算只能用手工进行,故而相当长的时间里蒙特卡罗方法难以推广。

1.1 蒙特卡罗方法的产生

作为蒙特卡罗方法的最初应用,是解决蒲丰氏问题1777 年,法国数学家Buffon 提出利用投针实验求解的问题:

设平面上有无数多条距离为 1 的等距平行线,现向该平面随机的投掷一根长度为()1l l ≤的针。随机投针是指针的中心点于最近的平行线间的距离x 均匀分布在[0,1/2]上,针与平行线的夹角?(不管相交与否)均匀分布在[]0,π上,如图一所示,故而,故其1~(0,)2

x U ,~(0,)U ?π概率密度函数分别为11(),()2p x p ?π

==。 故我们得到针与线相交的充要条件是2

sin l x ≤?

图1.1 针与线相交的几种情况

则针与线相交的概率是(sin )2

l p x ?≤ =sin sin 2200002()()l l p x p dxd π

?π???π=???? =2

22.sin 2l l d π??ππ=? 所以得到圆周率222(sin )l l l p x p

π?==≤。 假如我们能做大量的投针实验并记录下针与线的相交次数,则可以根据大数定律估计出针线相交的概率P 。投针实验N 次可能有n 次使针与任意平行线相交, 那么n p N

,显然,试验次数N 越多,P 的近似程度越好。历史上曾有几位学者做过这样的投针试验,并用手工计算出π值,结果参见表1。 表 1

应该指出,上述试验的精度一般不会很高。譬如,假设1,p l π==

则。则由中心极限定理,如果试验次数为N ,则p 的估计值?p 渐进服从(1)(,)p p N p N

-,近似为0.2313(0.6366,)N N

。因此,若要以95%的概率保证p 的精确到三位有效数字,即?p 与p 的差距小于0.001,则N 必须满足N ≥2251.960.2313/0.0018.8910?≈?。 重复进行上千次的投针实验和手工计算,要消耗大量的人力、财力,蒙特卡罗方法虽然能解决此类问题,但得不到推广应用。

1.2 蒙特卡罗方法的发展

20世纪40年代以后,随着电子计算机的出现和发展,人们有可能用计算机来模拟这类实验和计算。计算机具有计算速度高和存储容量大的特点,采用数字模拟技术可以代替许多实际上非常庞大而复杂的实验,并迅速将实验结果进行运算

处理,于是Monte Carlo 方法重新被提起,引起世人重视,应用日渐广泛。实际上,采用Monte Carlo 方法在计算机上建立模型来解决Buffon 问题是非常简单的。

我们在计算机上进行模拟试验,给定l ,我们可以在计算机上随机产生x 和φ,然后判断2

sin l x ≤?是否成立。若成立,则针线相交,否则不交。假如我们在计算机上独立的产生N 对这样的x 和?,并记录下

2sin l x ≤?成立的次数,记为n 。则π估计值可取为2

2l N ??,这就是随机模拟计算的结果。 借助Matlab 在计算机上进行投针实验,(相应程序见附录1)

所取得的计算结果参见表2。

表 2

不难看出,利用计算机运算不仅结果精确,而且迅速。

随着电子计算机的普及,蒙特卡罗方法作为一种独到的方法得到开发,并首先应用到核武器的试验与研制中。尤其是各种可是编程方法的不断涌现,更显示出蒙特卡罗方法的最独到的优点,即形象直观地用数学方法在电子计算机上实现数字模拟实验。

2 蒙特卡罗方法计算数值积分的理论原理

随机模拟是一种随机试验的方法,也称为蒙特卡罗方法(Monte Carlo )]1[。这种方法利用随机试验,根据频率与概率、平均值与期望值等之间的关系,推断出预期的结果。

2.1 蒙特卡罗算法的理论原理

随机模拟法的基本原理非常简单,下面给以直观的说明。 首先构造一个定积分π=-?10214dx x ,其中积分?-=1

021dx x S (即1/4单位圆的面积)用随机模拟方法求得。

图2.1中粗线是1/4单位圆,如果向图2.1

中边长为1的正方形里随机投n 块小石头,当n

很大时小石头会大致均匀地分布在正方形中,

数一下落在1/4单位圆内的小石头,假定有k

个,那么k /n 就可以看作1/4单位圆面积π/4

的近似值。 小石头的位置坐标可以用产生均匀分布随机数的程序得到,记为),...,2,1(,n i y x i i =是[0,1]区间均匀分布随机数(i i y x ,相互独立),记录满足),...,2,1(122n i y x i i =≤+的数量k ,即得π=4k /n 。

我们用概率论中的大数定律来说明这个直观认识的原理。

大数定律(伯努利(Bernoull )定理)]2[ 设k 是n 次独立重复试验中事件A 发生的次数,p 是事件A 每次试验中发生的概率,则对任意的正数ε,有

1lim =?

?????<-∞→εp n k P n (1) 若规定“向图中正方形随机投一块小石头落在四分之一单位圆里”为事件A 发生,则A 发生的概率p 应该等于四分之一单位圆面积,随机投n 块石头就是独立重复做n 次试验,事件A 发生k 次,由(1)式,n 无限变大时k /n 与p 之差小于任意一个数ε的概率趋于1。

用计算机算一下就会发现,即使n 很大结果也不好,并且很不稳定,远不如常规数值积分的几种方法。实际上,随机模拟法很少用来做定积分,它的特点是能够方便地推广到计算多重积分,而不少多重积分是其他方法很难或者根本无法计算的。

2.2 蒙特卡罗方法计算定积分的理论原理

通常有两类办法计算定积分。

(1)随机投点法

在“投石算面积”的例子中,事件A 在每次试验中发生的概率p 是四分之一单位圆面积,即

dx x dydx p x ???-==-1021

01012 (2)

n 次试验由计算机完成,采用[0,1]区间上的均匀分布产生相互独立的随机数。记这样产生的n 个点的坐标为),...,2,1),(n i y x i i =。事件A 发生等价于),(i i y x 满足21i i x y -≤,A 发生的次数是满足21i i x y -≤),...,2,1(n i =点的个数k 。由伯努利定理,p 可以用k /n 近似替代。

这种方法可以推广如下。对任意区间],[b a 内的连续函数)(x f ,满足d x f c ≤≤)(,(c )0≥d ,为计算定积分?b

a dx x f )(,先由计算机产生n 个点的坐标),(i i y x ),...,2,1(n i =,

其中i i y x ,分别为],[b a 和],[d c 区间上的均匀分布随机数,然后记录n 个点中满足)(i i x f y ≤的数目k ,则

c a b n

k c d a b dx x f b a )())(()(-+--≈?

(3)

(2)均值估计法 这种方法依据概率论的一下两个定理:

大数定理(辛钦定理)]2[ 若随机变量n Y Y Y ,...,,21相互独立,服从同一个分布,且具有数学期望μ=i EY ),...,2,1(n i =,则对任意的正数ε,有

11lim 1=?

?????<-∑=∞→εμn i i n Y n P (4) 随机变量函数的期望]2[ 若随机变量X 的概率分布密度是))((b x a x p ≤≤,则随机变量的函数)(X f Y =的期望为

dx x p x f X f E b

a ?=)()())(( (5)

于是,当X 为],[b a 区间均匀分布的随机变量时,)/(1)(a b x p -=)(b x a ≤≤,(5)式给出

))(()()(x f E a b dx x f b

a -=? (6)

只要产生],[b a 区间相互独立、均匀分布的随机数i x ),...,2,1(n i =,)(i i x f y =就相互独立。根据辛钦定理,当n 很大时期望))((X f E EY =就可以用)(i x f 的平均值近似,所以由(6)式得到

∑?=-≈n i i b

a x f n a

b dx x f 1

)()()( (7) 与随机投点法相比,均值估计法没有d x f c ≤≤)(,(c )0≥d 的限制,只需计算)(i x f ,不需要产生随机数i y ,也不需要作i y ≤)(i x f 的比较,显然大为方便。

2.3 蒙特卡罗方法计算重积分的理论原理

用随机模拟作数值积分的优点不仅在于计算简单,尤其是它可以方便地推广到计算多重积分,而不少多重积分是其他方法很难或者根本无法计算的。而通过上文对蒙特卡罗计算定积分的两种方法的比较,我们可知均值估计法比投点法更好操作,经过计算还可知均值估计法精确度(若选择的密度函数适合)会更高。重积分本文讨论均值估计法。

考虑k 维积分:

k k dx dx dx x x x f I ...),...,,(...2121??Ω

=

其中Ω为k 维积分区域,V ?Ω(i i i b x a V ≤≤:,k i ,...,2,1=)。

选取Ω上的一个概率密度函数),...,,(21k x x x p ,V ?Ω(i i i b x a V ≤≤:,

k i ,...,2,1=),且),...,,(21k x x x p 满足1...

),...,,(...2121=??Ω

k k dx dx dx x x x p ,Ω∈),...,,(21k x x x ,故:

k k k k dx dx dx x x x p x x x p x x x f I ...),...,,()

,...,,(),...,,(...21212121??Ω= ))

,...,,(),...,,((2121k k x x x p x x x f E = 其中,Ω∈),...,,(21k x x x ∑=≈m i k k x x x p x x x f m 12121)

,...,,(),...,,(1 其中,Ω∈),...,,(21k x x x (8) 这里m 是落在Ω区域中的随机投点数。

对于二重积分:

??Ω

=dxdy y x f I ),(

其中b x a ≤≤Ω:,d x g y x g c ≤≤≤≤)()(21。记],[],[d c b a V ?=,设ΩS ,V S 分

别是Ω,V 的测度,若选取Ω是),(y x g 上的均匀分布,则Ω∈=Ω

y)(x, , 1),(S y x g 。由几何概率得n

m S S V ≈Ω,即n S m S V ≈Ω,于是: ??Ω=dxdy y x g y x g y x f I ),()

,(),( ∑==m i y x g y x f m 1)

,(),(1 ∑=Ω

=m i y x f m S 1

),(∑==m i V y x f n S 1),( 综上可得, ∑==m

i V y x f n

S I 1),( (9)

3蒙特卡罗方法MATLAB编程实例

用随机模拟作数值积分主要利用均匀分布产生的随机数及相应的判断、计算和简单运算。MATLAB提供的命令

unifrnd(a,b,m,n)

产生m行n列]

a区间上均匀分布随机数。当0

[b

,

=

b时,可用rand(m,n)。

=

a,1

例1用蒙特卡罗方法计算π。

解(1) 随机投点法。MATLAB程序如下:

n=10000;

x=rand(2,n);

k=0;

for i=1:n

if x(1,i)^2+x(2,i)^2<=1

k=k+1;

end

end

p=4*k/n

重复计算4次,计算结果分别为:

p=3.1244 P=3.1420 P=3.1780 P= 3.1592

当n提高到50000时,重复计算4次,计算结果为:

p=3.1372 P=3.1456 P=3.1442 P=3.1426

解(2) 均值估计法,此时2

x

f-

=,MA TLAB程序如下:

(x

)

1

n=50000;

x=rand(1,n);

y=0;

for i=1:n

y=y+sqrt(1-x(i)^2);

end

p=4*y/n

重复计算4次,计算结果分别为:

p= 3.1439 P= 3.1510 P= 3.1474 P= 3.1449

当n提高到50000时,重复计算4次,计算结果为:

p= 3.1471 P=3.1419 P=3.1423 P= 3.1430

可以看出它的缺点是计算量大,结果具有随机性,精度较低。一般说来精度为2/1-

n阶,n增加时精度提高较慢。但是用随机模拟方法可以计算被积函数非常复杂的定积分、重积分,并且维数没有限制。如下介绍多重积分的MALTAB实现。

3.1 多重积分的蒙特卡罗方法MATLAB 编程实现

以二重积分为例,运用算法(8)编程,一个是通常的for 循环编程,文件名为mtc.m ,另一个是向量化编程,文件名为mtcx.m ,后者运行速度要快很多。

function s=mtc(f,fai1,fai2,a,b,c,d,n)

if nargin<8 n=10000;end

x=unifrnd(a,b,1,n);y=unifrnd(c,d,1,n);

s=0;

for k=1:n

if and(y(k)>=feval(fai1,x(k)),y(k)<=feval(fai2,x(k)))

s=s+feval(f,x(k),y(k));

end

end

s=s/n*(b-a)*(d-c);

return

function s=mtcx(f,fai1,fai2,a,b,c,d,n)

if nargin<8 n=10000;end

x=unifrnd(a,b,1,n);y=unifrnd(c,d,1,n);

s=sum(feval(f,x,y)).*and(y>=feval(fai1,x),y<=feval(fai2,x)));

s=s/n*(b-a)*(d-c);

return

三重或三重以上积分只须增加若干个输入参数,即新增积分变量的上、下限,方法不变,对程序稍作修改即可。

例 2 计算??-----+1212121222

22)sin(dydx y x e x x x

积分的精确值为0.41192954617630,在命令窗口调用函数M 文件mtc.m 和mtcx.m 情况如下:

>>tic;s1=mtc(inline(‘exp(-x.^2/2).*sin(x.^2+y)’),

inline(‘-sqrt(1-x.^2/2)’),inline(‘sqrt(1-x.^2/2)’),-0.5,1,-1,1,100000),toc

s1=

0.409 010 343 471 83

Elapsed time is 40.094 000 seconds.

>>tic;s2=mtcx(inline(‘exp(-x.^2/2).*sin(x.^2+y)’),

inline(‘-sqrt(1-x.^2/2)’),inline(‘sqrt(1-x.^2/2)’),-0.5,1,-1,1,100000),toc s2=

0.411 839 625 630 18

Elapsed time is 0.047 000 seconds.

在运用了向量化编程后运行时间从40.094s缩短到0.047s,是原来的1/853,效果好;误差为0.00 008 992 054 612 000 366,也比前者好。

若将上面程序稍作如下修改,即输入参数减少2个,那么当n=1 000 000时,运行时间大约增加0.45s,精度不变。

function s=mtcxg(f,fai1,fai2,a,b,c,d,n)

if nargin<6 n=10000;end

x=unifrnd(a,b,1,n);

c=min(feval(fai1,x));d=max(feval(fai2,x));

y=unifrnd(c,d,1,n);

s=sum(feval(f,x,y)).*and(y>=feval(fai1,x),y<=feval(fai2,x)));

s=s/n*(b-a)*(d-c);

return

>>tic;s3=mtcxg(inline(‘exp(-x.^2/2).*sin(x.^2+y)’),

inline(‘-sqrt(1-x.^2/2)’),inline(‘sqrt(1-x.^2/2)’),-0.5,1,-1,1,100000),toc s3=

0.412 005 502 840 08

Elapsed time is 0.922 000 seconds.

对比常规数值积分和蒙特卡罗方法数值积分,同样数量的n值——也就意味这几乎相同的计算量——常规数值积分结果的精确度要高于蒙特卡罗数值积分的结果。那么,我们为何还需要用蒙特卡罗来算数值积分呢?答案的关键在于,常规数值积分的精度直接取决于每个维度上取点数量,维度增加了,但是每个维

度上要取的点却不能减少。在多重积分中,随着被积函数维度增加,需要计算的函数值数量以指数速度递增。

例如在一重积分?a

b dx x x f )()(ψ中,只要沿着x 轴取n 个点;要达到相同大小的精确度,在k 重积分k n k dx dx dx x x x x x x f ...)...()...(...212121???ψ中,仍然需要在每个维度上取n 个点,k 个纬度的坐标相组合,共需要计算n ×k 个坐标对应的)(x f 函数值。取点越多,会占用计算机大量内存,也需要更长运算时间,最终导致这种计算方法不可行!

蒙特卡罗方法却不同,不管是积分有多少重,取n 个点计算的结果精确度都差不多。因此,即使在一重积分的情形下,蒙特卡罗方法的效率比不过常规数值积分,但随着积分维度增加,常规数值积分的速度呈指数下降,蒙特卡罗方法的效率却基本不变。经验表明,当积分重数达到4重积分甚至更高时,蒙特卡罗方法将远远优于常规数值积分方法。

4 总结

归纳起来本论文主要论述了:蒙特卡罗算法在数值积分中的运用。本篇论文给出了蒙特卡罗方法应用在数值积分中的原理,讨论蒙特卡罗算法运用在数值积分中的两种计算方法,随机投点法和均值估计法,具体蒙特卡罗算法的实现给出了MATLAB 编程的实例。最后对蒙特卡罗算法的优缺点进行了讨论。

蒙特卡罗理论的应用非常广泛,两种蒙特卡罗数值计算方法的应用也很全面,由于作者的知识水平,研究能力有限,蒙特卡罗理论在各行各业中都有广泛使用,思想、理论等方面仍存在欠缺之处,但这些都是以后的努力研究的方向,有侍继续发掘。

参考文献:

[1]曲双石,王会娟.MonteCarlo方法及其应用[J].统计教育,2009.1.

[2]茆诗松,程依明,濮晓龙.概率论与数理统计教程[M].高等教育出版社,2004年7月.

[3]高雷阜.Monte-Carlo理论与优化方法的研究[J].辽宁工程技术大学学报(自然科学版).2002年03期.

[4]李世刚,刘辉,陈标华.素数的一个特殊性质及其用于伪随机数生成的方法[J].北京化工大学学报(自然科学版).2003年03期.

[5]张韵华,奚梅成,陈效群.数值计算方法与计算[J]---2版.--北京科学出版社,2006.

[6]孙维君,秦华.Monte Carlo方法在三重积分中的应用[J].山东理工大学学报(自然科学报),2008第1期.

[7]柴中林,银俊成.蒙特卡罗方法计算定积分的进一步讨论[J].应用数学与计算数学学报.2008.第1期.

[8]张韵华,奚梅成,陈效群.数值计算方法与算法[M].科学出版社2006.第2版.

[9] JONATHANJ.FORSTER ,JOHNW.M CDONALD and PETERW.F.SMITH.Monte Carlo methods to calculate[J].2005.42,37-46.spring-verlag.

致谢:首先要感谢以梅院长等领导对我们的精心统筹安排,科学培养,使我们能够完成所学的知识积累,完成论文。我更要感谢在论文完成过程中一直给与悉心指导的任老师,任老师在指导论文的过程中,耐心的讲解和教诲,使我能掌握写作本文的基础知识并理解掌握参考文献的写作的框架思路,尤其感谢姚芬芳等多位同学,是你们的帮助让我顺利完成论文的完善和校对。

再一次对给予我帮助的老师、同学们表示最诚挚的感谢!

附录

附录1:

a=1; % 设置两条平行线之间的距离

l=0.6; % 投针的长度

counter=0; % 针与平行线相交的次数

n=10000000; % 投掷次数

x=unifrnd(0,a/2,1,n); %产生n个(0,a/2)之间均匀分布的随机数,这里

a/2是投针的中点到最近的平行线的距离phi=unifrnd(0,pi,1,n); % 产生n个(0,pi)之间均匀分布的随机数,这里

pi是投针到最近的平行线的角度for i=1:n

if x(i)

end

end

frequency=counter/n; % 计算相交的频率,即相交次数比总次数

Pi=2*l/(a*frequency) % 从相交的频率总求的pi

%运行结果

蒙特卡洛(Monte Carlo)模拟法

当科学家们使用计算机来试图预测复杂的趋势和事件时, 他们通常应用一类需要长串的随机数的复杂计算。设计这种用来预测复杂趋势和事件的数字模型越来越依赖于一种称为蒙特卡罗模似的统计手段, 而这种模拟进一步又要取决于可靠的无穷尽的随机数目来源。 蒙特卡罗模拟因摩纳哥著名的赌场而得名。它能够帮助人们从数学上表述物理、化学、工程、经济学以及环境动力学中一些非常复杂的相互作用。数学家们称这种表述为“模式”, 而当一种模式足够精确时, 他能产生与实际操作中对同一条件相同的反应。但蒙特卡罗模拟有一个危险的缺陷: 如果必须输入一个模式中的随机数并不像设想的那样是随机数, 而却构成一些微妙的非随机模式, 那么整个的模拟(及其预测结果)都可能是错的。 最近, 由美国佐治亚大学的费伦博格博士作出的一分报告证明了最普遍用以产生随机数串 的计算机程序中有5个在用于一个简单的模拟磁性晶体中原子行为的数学模型时出现错误。科学家们发现, 出现这些错误的根源在于这5个程序产生的数串其实并不随机, 它们实际上隐藏了一些相互关系和样式, 这一点只是在这种微小的非随机性歪曲了晶体模型的已知特 性时才表露出来。贝尔实验室的里德博士告诫人们记住伟大的诺伊曼的忠告:“任何人如果相信计算机能够产生出真正的随机的数序组都是疯子。” 蒙特卡罗方法(MC) 蒙特卡罗(Monte Carlo)方法: 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。这也是我们采用该方法的原因。 蒙特卡罗方法的基本原理及思想如下: 当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。 蒙特卡罗解题三个主要步骤: 构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 实现从已知概率分布抽样: 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样

一、蒙特卡洛随机模拟

系列一 蒙特卡洛随机模拟 实验目的:学会用计算机随机模拟方法来解决随机性问题 蒙特卡洛模拟法简介 蒙特卡洛(Monte Carlo)方法是一种应用随机数来进行计算机摸你的方法。此方法对研究对象进行随机抽样,通过对样本值的观察统计,求得所研究系统的某些参数。作为随机模拟方法,起源可追溯到18世纪下半叶蒲峰实验。 蒙特卡洛模拟法的应用领域 蒙特卡洛模拟法的应用领域主要有: 1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。 2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。 蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。 一. 预备知识: 随机数的产生 提示:均匀分布(0, 1)U 的随机数可由C 语言或Matlab 自动产生,在此基础上可产生其他分布的随机数. 1.逆变换法: 设随机变量U 服从(0,1)上的均匀分布,则)(1U F X -=的分布函数为)(x F . 步骤:(1) 产生)1,0(U 的随机数U ;(2) 计算)(1 U F X -=, 则X 服从)(x F 分布. 问题:练习用此方法产生常见分布随机数.例如“指数分布,均匀分布),(b a U ”.还有其它哪种常见分布的随机数可用此方法方便产生?

蒙特卡洛方法

蒙特卡洛方法 1、蒙特卡洛方法的由来 蒙特卡罗分析法(Monte Carlo method),又称为统计模拟法,是一种采用随机抽样(Random Sampling)统计来估算结果的计算方法。由于计算结果的精确度很大程度上取决于抽取样本的数量,一般需要大量的样本数据,因此在没有计算机的时代并没有受到重视。 第二次世界大战时期,美国曼哈顿原子弹计划的主要科学家之一,匈牙利美藉数学家约翰·冯·诺伊曼(现代电子计算机创始人之一)在研究物质裂变时中子扩散的实验中采用了随机抽样统计的手法,因为当时随机数的想法来自掷色子及轮盘等赌博用具,因此他采用摩洛哥著名赌城蒙特卡罗来命名这种计算方法,为这种算法增加了一层神秘色彩。 蒙特卡罗方法提出的初衷是用于物理数值模拟问题, 后来随着计算机的快速发展, 这一方法很快在函数值极小化、计算几何、组合计数等方面得到应用, 于是它作为一种独立的方法被提出来, 并发展成为一门新兴的计算科学, 属于计算数学的一个分支。如今MC方法已是求解科学、工程和科学技术领域大量应用问题的常用数值方法。 2、蒙特卡洛方法的核心—随机数 蒙特卡洛方法的基本理论就是通过对大量的随机数样本进行统计分析,从而得到我们所需要的变量。因此蒙特卡洛方法的核心就是随机数,只有样本中的随机数具有随机性,所得到的变量值才具有可信性和科学性。

在连续型随机变量的分布中, 最基本的分布是[0, 1]区间上的均匀分布, 也称单位均匀分布。由该分布抽取的简单子样ξ1,ξ2ξ3……称为随机数序列, 其中每一个体称为随机数, 有时称为标准随机数或真随机数, 独立性和均匀性是其必备的两个特点。真随机数是数学上的抽象, 真随机数序列是不可预计的, 因而也不可能重复产生两个相同的真随机数序列。真随机数只能用某些随机物理过程来产生, 如放射性衰变、电子设备的热噪音、宇宙射线的触发时间等。 实际使用的随机数通常都是采用某些数学公式产生的,称为伪随机数。真随机数只是一种数学的理想化概念,实际中我们所接触到的和使用的都是伪随机数。要把伪随机数当成真随机数来使用, 必须要通过随机数的一系列的统计检验。 无论伪随机数用什么方法产生,它的局限性都在于这些随机数总是一个有限长的循环集合, 而且序列偏差的上确界达到最大值。所以若能产生低偏差的确定性序列是很有用的,产生的序列应该具有这样的性质, 即任意长的子序列都能均匀地填充函数空间。 人们已经产生了若干种满足这个要求的序列,如Halton序列、Faure序列、Sobol序列和Niederreiter序列等。称这些序列为拟随机数序列。伪随机序列是为了模拟随机性, 而拟随机序列更致力于均匀性。 3、蒙特卡洛方法的原理 当问题可以抽象为某个确定的数学问题时,应当首先建立一个恰当的概率模型,即确定某个随机事件A或随机变量X,使得待求的解等

蒙特卡洛模拟方法作业及答案(附程序)

蒙特卡洛习题 1.利用蒙特卡洛计算数值积分 () ()() 1280ln 1tan x x x xe dx +++? clear all ;clc;close all ; n=1000; count=0; x=0:0.01:1; y=log((1+x).^2+(tan(x).^8)+x.*exp(x)); plot(x,y,'linewidth',2) hold on for i=1:n x1=rand; y1=rand*y(end); plot(x1,y1,'g*') pause(0.01) if y1

2.分别用理论计算和计算机模拟计算,求连续掷两颗骰子,点数之和大于6且第一次掷出的点数大于第二次掷出点数的概率。 clear all;clc;close all; count=0; n=100000; for i=1:n x=floor(rand*6+1); y=ceil(rand*6); if x+y>6&&x>y count=count+1; end end P=count/n 3.

clear all;clc;close all; count=0; n=2000; ezplot('x^2/9+y^2/36=1'); hold on ezplot('x^2/36+y^2=1'); hold on ezplot('(x-2)^2+(y+1)^2=9') for i=1:n x=rand*12-6; y=rand*12-6; plot(x,y,'gh','linewidth',2) pause(0.01) if x^2/9+y^2/36<1&&x^2/36+y^2<1&&(x-2)^2+(y+1)^2<9

R软件 蒙特卡罗模拟

R使用指南 打开R 下图是R软件的主窗口,R软件的界面与Windows的其他编程软件类似,由一些菜单和快捷按钮组成。快捷按钮下面的窗口便是命令输入窗口,它也是部分运算结果的输出窗口,有些运算结果则会在新建的窗口中输出。 当一个R 程序需要你输入命令时,它会显示命令提示符。默认的提示符是>。技术上来说,R 是一种语法非常简单的表达式语言(expression language)。它大小写敏感,因此A 和a 是不同的符号且指向不同的变量。可以在R 环境下使用的命名字符集依赖于R 所运行的系统和国家(就是系统的locale 设置)。通常,数字,字母,. 和都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以. 或者字母开头,并且以. 开头时第二个字符不允许是数字。基本命令要么是表达式(expressions)要么就是赋值(assignments)。如果一条命令是表达式,那么它将会被解析(evaluate),并将结果显示在屏幕上,同时清空该命令所占内存。赋值同样会解析表达式并且把值传给变量但结果不会自动显示在屏幕上。命令可以被(;)隔开,或者另起一行。基本命令可以通过大括弧(f和g) 放在一起构成一个复合表达式(compound expression)。注释几乎可以放在任何地方7。一行中,从井号(#)开始到句子收尾之间的语句就是注释。如果一条命令在一行结束的时候在语法上还不完整,R 会给出一个不同的提示符,默认是+。该提示符会出现在第二行和随后的行中,它持续等待输入直到一条命令在语法上是完整的。该提示符可以被用户修改。在后面的文档中,我们常常省略延续提示符(continuation prompt),以简单的缩进表示这种延续。 R的帮助

蒙特卡罗也称统计模拟方法

蒙特卡罗也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·罗方法正是以概率为基础的方法。与它对应的是确定性算法。 蒙特卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 基本思想 当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使你比较直观地了解蒙特卡罗方法:假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡罗方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。 工作过程 在解决实际问题的时候应用蒙特卡罗方法主要有两部分工作: 用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。 用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。 计算步骤 使用蒙特卡罗方法进行分子模拟计算是按照以下步骤进行的: ① 使用随机数发生器产生一个随机的分子构型。 ②对此分子构型的其中粒子坐标做无规则的改变,产生一个新的分子构型。 ③计算新的分子构型的能量。 ④比较新的分子构型于改变前的分子构型的能量变化,判断是否接受该构型。 若新的分子构型能量低于原分子构型的能量,则接受新的构型,使用这个构型重复再做下一次迭代。 若新的分子构型能量高于原分子构型的能量,则计算玻尔兹曼常数,同时产生一个随机数。

蒙特卡罗方法的解题过程可以归结为三个主要步骤

蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。 蒙特卡罗方法解题过程的三个主要步骤: (1)构造或描述概率过程 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 (2)实现从已知概率分布抽样 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。 (3)建立各种估计量 一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。 蒙特卡洛法模拟蒲丰(Buffon)投针实验-使用Matlab 2010年03月31日星期三8:47 蒲丰投针实验是一个著名的概率实验,其原理请参见此页: https://www.360docs.net/doc/388327898.html,/reese/buffon/buffon.html 现在我们利用Matlab来做模拟,顺便说一下,这种随机模拟方法便是传说中的“蒙特-

蒙特卡洛模拟原理及步骤

二、蒙特卡洛模拟原理及步骤 (一)蒙特卡洛模拟原理:经济生活中存在大量的不确定与风险问题,很多确定性问题实际上是不确定与风险型问题的特例与简化,财务管理、管理会计中同样也存在大量的不确定与风险型问题,由于该问题比较复杂,一般教材对此问题涉及较少,但利用蒙特卡洛模拟可以揭示不确定与风险型问题的统计规律,还原一个真实的经济与管理客观面貌。 与常用确定性的数值计算方法不同,蒙特卡洛模拟是用来解决工程和经济中的非确定性问题,通过成千上万次的模拟,涵盖相应的可能概率分布空间,从而获得一定概率下的不同数据和频度分布,通过对大量样本值的统计分析,得到满足一定精度的结果,因此蒙特卡洛模拟是进行不确定与风险型问题的有力武器。 1、由于蒙特卡洛模拟是以实验为基础的,因此可以成为财务人员进行风险分析的“实验库”,获得大量有关财务风险等方面的信息,弥补确定型分析手段的不足,避免对不确定与风险决策问题的误导; 2、财务管理、管理会计中存在大量的不确定与风险型问题,目前大多数教材很少涉及这类问题,通过蒙特卡洛模拟,可以对其进行有效分析,解决常用决策方法所无法解决的难题,更加全面深入地分析不确定与风险型问题。 (二)蒙特卡洛模拟步骤以概率型量本利分析为例,蒙特卡洛模拟的分析步骤如下: 1、分析评价参数的特征,如企业经营中的销售数量、销售价格、产品生产的变动成本以及固定成本等,并根据历史资料或专家意见,确定随机变量的某些统计参数; 2、按照一定的参数分布规律,在计算机上产生随机数,如利用EXCEL提供的RAND函数,模拟量本利分析的概率分布,并利用VLOOKUP寻找对应概率分布下的销售数量、销售价格、产品生产的变动成本以及固定成本等参数; 3、建立管理会计的数学模型,对于概率型量本利分析有如下关系式,产品利润=产品销售数量×(产品单位销售价格-单位变动成本)-固定成本,这里需要说明的是以上分析参数不是确定型的,是依据某些概率分布存在的; 4、通过足够数量的计算机仿真,如文章利用RAND、VLOOKUP等函数进行30000次的模拟,得到30000组不同概率分布的各参数的排列与组合,由于模拟的数量比较大,所取得的实验数据具有一定的规律性; 5、根据计算机仿真的参数样本值,利用函数MAX、MIN、A VERAGE等,求出概率型量本利分析评价需要的指标值,通过对大量的评价指标值的样本分析,得到量本利分析中的利润点可能的概率分布,从而掌握企业经营与财务中的风险,为财务决策提供重要的参考。三、概率型量本利分析与比较 (一)期望值分析方法假设某企业为生产与销售单一产品的企业,经过全面分析与研究,预计未来年度的单位销售价格、销售数量、单位变动成本和固定成本的估计值及相应的概率如表1,其中销售数量单位为件,其余反映价值的指标单位为元,试计算该企业的生产利润。表1概率型量本利分析参数 项目概率数值 单位销售价格0.3 40 0.4 43 0.3 45 单位变动成本0.4 16 0.2 18 0.4 20 固定成本0.6 28000 0.4 30000

蒙特卡罗随机模拟投点法

蒙特卡罗随机模拟投点法在数字积分中的 应用 数学与应用数学0901班:张瑞宸 指导老师:任明慧 摘要:本文首先介绍了蒙特卡罗方法的产生和发展,然后分析了蒙特卡罗方法计算数值积分的理论原理,最后给出了蒙特卡罗方法计算数值积分的MATLAB编程实现,全文主要是讨论了蒙特卡罗方法在定积分计算的应用。而蒙特卡罗的优点:可以计算被积函数非常复杂的定积分、重积分,并且维数没有限制,这是别的数值积分方法还未达到的。蒙特卡罗的缺点:收敛速度慢,误差一般较大,且是概率的误差,不是真正的误差。 关键词:蒙特卡罗方法,均值估计法,数值积分,Matlab编程 Abstract:This paper first introduces the emergence and development of the Monte Carlo method, and then analyze the theoretical principles of Monte Carlo numerical integration method, Full-text mainly discussed the application of the Monte Carlo method in the definite integral. The advantages of Monte Carlo: can be calculated the integrable functions very complex definite integral, Multiple integrals, and dimension no limit, other numerical integration methods have not yet reached. Monte Carlo Disadvantages: slow convergence speed, error generally higher, and the probability of error, not a real error. Keywords: Monte Carlo method,Mean estimation method,numerical integral,Matlab programming 0 引言 历史上有记载的蒙特卡罗试验始于十八世纪末期(约1777年),当时布丰(Buffon)为了计算圆周率,设计了一个“投针试验”,后文会给出。虽然方法已经存在了200多年,此方法命名为蒙特卡罗则是在二十世纪四十年,美国原子弹计划的一个子项目需要使用蒙特卡罗方法模拟中子对某种特殊材料的穿透作用。出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一von Neumann灵犀一点选择摩洛哥著名赌城蒙特卡罗(Monte Carlo)作为该项目名称,自此这种方法也就被命名为Monte Carlo方法广为流传。 蒙特卡罗方法,又名随机模拟法或统计实验法它是以概率统计理论为基础,依据大数定律(样本均值替代总体均值)利用电子计算机数字模拟技术,解

蒙特卡洛方法模拟小例子

例在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点. 经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部毁伤敌人火炮. 现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。 使用蒙特卡洛方法模拟50次打击结果: function [out1 out2 out3 out4]=Msc(N) % N开炮次数 % out1射中概率 % out2平均每次击中次数 % out3击中敌人一门火炮的射击总数 % out4击中敌人2门火炮的射击总数 k1=0; k2=0; k3=0; for i=1:N x0=randperm(2)-1; y0=x0(1); if y0==1 fprintf('第%d次:指示正确||',i); x1=randperm(6); y1=x1(1); if y1==1|y1==2|y1==3 fprintf('第%d次:击中0炮||',i); k1=k1+1; elseif y1==4|y1==5 fprintf('第%d次:击中1炮||',i); k2=k2+1; else

fprintf('第%d次:击中2炮||',i); k3=k3+1; end else fprintf('第%d次:指示错误,击中0炮||',i); k1+1; end fprintf('\n'); end out1=(k2+k3)/N; out2=(0*k1+k2+2*k3)/20; out3=k2/N; out4=k3/N; 运行: 1.[out1 out2 out3 out4]=Msc(50) 结果: 1.第1次:指示正确||第1次:击中2炮|| 2.第2次:指示错误,击中0炮|| 3.第3次:指示错误,击中0炮|| 4.第4次:指示正确||第4次:击中0炮|| 5.第5次:指示错误,击中0炮|| 6.第6次:指示正确||第6次:击中1炮|| 7.第7次:指示正确||第7次:击中0炮|| 8.第8次:指示错误,击中0炮|| 9.第9次:指示正确||第9次:击中2炮|| 10.第10次:指示正确||第10次:击中1炮|| 11.第11次:指示正确||第11次:击中1炮|| 12.第12次:指示正确||第12次:击中2炮|| 13.第13次:指示错误,击中0炮|| 14.第14次:指示正确||第14次:击中1炮|| 15.第15次:指示错误,击中0炮|| 16.第16次:指示错误,击中0炮|| 17.第17次:指示正确||第17次:击中0炮|| 18.第18次:指示错误,击中0炮||

运用蒙特卡罗模拟进行风险分析

运用蒙特卡罗模拟进行风险分析 蒙特卡罗模拟由著名的摩纳哥赌城而得名,他是一种非常强有力的方法学。对专业人员来说,这种模拟为方便的解决困难而复杂的实际问题开启了一扇大门。估计蒙特卡罗模拟最著名的早期使用是诺贝尔奖物理学家Enrico Fermi(有时也说是原子弹之父)在1930年的应用,那时他用一种随机方法来计算刚发现的中子的性质。蒙特卡罗模拟是曼哈顿计划所用到的模拟的核心部分,在20世纪50年代蒙特卡罗模拟就用在Los Alamos国家实验室发展氢弹的早期工作中,并流行于物理学和运筹学研究领域。兰德公司和美国空军是这个时期主要的两个负责资助和传播蒙特卡罗方法的组织,今天蒙特卡罗模拟也被广泛应用于不同的领域,包括工程,物理学,研发,商业和金融。 简而言之,蒙特卡罗模拟创造了一种假设的未来,它是通过产生数以千计甚至成千上万的样本结果并分析他们的共性实现的。在实践中,蒙特卡罗模拟法用于风险分析,风险鉴定,敏感度分析和预测。模拟的一个替代方法是极其复杂的随机闭合数学模型。对一个公司的分析,使用研究生层次的高等数学和统计学显然不合逻辑和实际。一个出色的分析家会使用所有他或她可得的工具以最简单和最实际的方式去得到相同的结果。任何情况下,建模正确时,蒙特卡罗模拟可以提供与更完美的数学方法相似的答案。此外,有许多实际生活应用中不存在闭合模型并且唯一的途径就是应用模拟法。那么,到底什么是蒙特卡罗模拟以及它是怎么工作的? 什么是蒙特卡罗模拟? 今天,高速计算机使许多过去看来棘手的复杂计算成为可能。对科学家,工程师,统计学家,管理者,商业分析家和其他人来说,计算机使创建一个模拟现实的模型成为可能,这有助于做出预测,其中一种方法应用于模拟真实系统,它通过调查数以百计甚至数以千计的可能情况来解释随机性和未来不确定性。结果通过编译后用于决策。这就是蒙特卡罗模拟的全部内容。 形式最简单的蒙特卡罗模拟是一个随机数字生成器,它对预测,估计和风险分析都很有用。一个模拟计算模型的许多情况,这通过反复地从预先定义的特定变量概率分布中采集数据并将之应用于模型来实现。因为所有的情况都产生相应的结果,每种情况都可以蕴含一种预测。预测的是你定义为重要模型结果的事项(通常含有公式或函数)。 将蒙特卡罗模拟法想象为从一个大篮子里可放回的反复拿出高尔夫球。拦在的大小和形

蒙特卡洛模拟原理及步骤

二、蒙特卡洛模拟原理及步骤 (一)蒙特卡洛模拟原理:经济生活中存在大量的不确定与风险问题,很多确定性问题实际上就是不确定与风险型问题的特例与简化,财务管理、管理会计中同样也存在大量的不确定与风险型问题,由于该问题比较复杂,一般教材对此问题涉及较少,但利用蒙特卡洛模拟可以揭示不确定与风险型问题的统计规律,还原一个真实的经济与管理客观面貌。 与常用确定性的数值计算方法不同,蒙特卡洛模拟就是用来解决工程与经济中的非确定性问题,通过成千上万次的模拟,涵盖相应的可能概率分布空间,从而获得一定概率下的不同数据与频度分布,通过对大量样本值的统计分析,得到满足一定精度的结果,因此蒙特卡洛模拟就是进行不确定与风险型问题的有力武器。 1、由于蒙特卡洛模拟就是以实验为基础的,因此可以成为财务人员进行风险分析的“实验库”,获得大量有关财务风险等方面的信息,弥补确定型分析手段的不足,避免对不确定与风险决策问题的误导; 2、财务管理、管理会计中存在大量的不确定与风险型问题,目前大多数教材很少涉及这类问题,通过蒙特卡洛模拟,可以对其进行有效分析,解决常用决策方法所无法解决的难题,更加全面深入地分析不确定与风险型问题。 (二)蒙特卡洛模拟步骤以概率型量本利分析为例,蒙特卡洛模拟的分析步骤如下: 1、分析评价参数的特征,如企业经营中的销售数量、销售价格、产品生产的变动成本以及固定成本等,并根据历史资料或专家意见,确定随机变量的某些统计参数; 2、按照一定的参数分布规律,在计算机上产生随机数,如利用EXCEL提供的RAND函数,模拟量本利分析的概率分布,并利用VLOOKUP寻找对应概率分布下的销售数量、销售价格、产品生产的变动成本以及固定成本等参数; 3、建立管理会计的数学模型,对于概率型量本利分析有如下关系式,产品利润=产品销售数量×(产品单位销售价格-单位变动成本)-固定成本,这里需要说明的就是以上分析参数不就是确定型的,就是依据某些概率分布存在的; 4、通过足够数量的计算机仿真,如文章利用RAND、VLOOKUP等函数进行30000次的模拟,得到30000组不同概率分布的各参数的排列与组合,由于模拟的数量比较大,所取得的实验数据具有一定的规律性; 5、根据计算机仿真的参数样本值,利用函数MAX、MIN、A VERAGE等,求出概率型量本利分析评价需要的指标值,通过对大量的评价指标值的样本分析,得到量本利分析中的利润点可能的概率分布,从而掌握企业经营与财务中的风险,为财务决策提供重要的参考。 三、概率型量本利分析与比较 (一)期望值分析方法假设某企业为生产与销售单一产品的企业,经过全面分析与研究,预计未来年度的单位销售价格、销售数量、单位变动成本与固定成本的估计值及相应的概率如表1,其中销售数量单位为件,其余反映价值的指标单位为元,试计算该企业的生产利润。 表1概率型量本利分析参数 项目概率数值 单位销售价格0、3 40 0、4 43 0、3 45 单位变动成本0、4 16 0、2 18 0、4 20 固定成本0、6 28000 0、4 30000

课题:随机模拟(蒙特卡洛)方法

课题:随机模拟(蒙特卡洛)方法 授课教师:北京101中学-何棋 【教学目标】 学生经过利用图形计算器进行数学实验,体验用随机模拟的方法对随机事件 的概率进行估计,进一步体会用频率的稳定值来刻画概率的思想,理解随机模拟 方法是解决一类问题的必要方法;通过数学实验将数学对象进行多元联系表示, 培养数感和识图能力,提高应用信息技术学习数学的能力,激发数学学习热情, 培养数学探索的精神,提高数学应用意识. 【教学重点】随机模拟的方法。 【教学难点】概率模型的建立、随机模拟的方法的原理和应用。 【教学资源】TI Nspire CAS图形计算器 【教学方法】教师引导学生使用图形计算器进行探究发现学习 【教学环节】组织方式截图热身练习将一枚均匀的硬币,抛掷100次恰好有50次正面朝上的概率p 的范围是() A 0

蒙特卡洛模拟法简介

蒙特卡洛模拟法简介 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。 这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。 蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。 蒙特卡洛模拟法的应用领域 蒙特卡洛模拟法的应用领域主要有: 1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。 2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。 3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。 蒙特卡洛模拟法的概念 (也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用则可用随机模拟法近似计算出系统可靠性的预计值。随着模拟次数的增多,其预计精度也逐渐增高。由于需要大量反复的计算,一般均用计算机来完成。

蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。 蒙特卡洛模拟法的实例 资产组合模拟: 假设有五种资产,其日收益率(%)分别为 0.02460.0189 0.0273 0.0141 0.0311 标准差分别为 0.95091.4259, 1.5227, 1.1062, 1.0877 相关系数矩阵为 1.0000 0.4403 0.4735 0.4334 0.6855 0.4403 1.00000.7597 0.7809 0.4343 0.4735 0.75971.0000 0.6978 0.4926 0.4334 0.78090.6978 1.0000 0.4289 0.6855 0.43430.4926 0.4289 1.0000 假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下%run.m

23(蒙特卡罗模拟)

专题5 蒙特卡罗模拟的有关问题 大家知道,只有当经典回归模型满足所有的假定条件时,参数的估计量才具有最佳线性无偏特性,即有限样本特性,同时也具有渐近特性。当假定条件不成立时(比如存在异方差、自相关等),所采用的广义最小二乘法,以及对联立方程模型的估计,动态分布滞后模型的估计,向量自回归模型的估计所得参数的估计量只具有渐近特性。也就是说,只有当样本容量相当大时,渐近特性才起作用。而当样本容量不是很大,甚至很小时,仍然不知道估计量的有限样本分布特征。 另外通过对非平稳过程的研究知单位根检验式和非平稳变量之间回归参数和t统计量不服从正态分布。他们都是渐近地服从Wiener过程函数的分布。参数估计量和统计量的有限样本特性不能用解析的方法求解。 对于上述两种情形,若要研究这些估计量和统计量的有限样本分布特征,通常采用两种方法。一种为数值计算法。也称为有限样本近似法(finite-sample approximation)。这种方法要用到许多数学知识,专业性很强,使没有受过专门训练的人员运用此方法受到限制。(2)蒙特卡罗模拟方法。又称随机模拟法。Boot strap 1.蒙特卡罗(Monte Carlo)模拟和自举(Boost trap)发展过程 这是一种通过设定随机过程(数据生成系统),反复生成时间序列,并计算参数估计量和统计量,进而研究其分布特征的方法。蒙特卡罗在欧洲的摩那哥,以著名赌城而得名。据说这个术语是Metropolis 在1949年提出的。若再晚些时候,蒙特卡罗模拟也许就称作Las Vegas(在美国的Nevada州,著名赌城)模拟方法了。 自举模拟与蒙特卡罗模拟既有联系,又不相同。自举(Boost trap,亦称靴襻)这个名词是Efron在1979年提出的。“自举”一词来源于儿童故事。指一个人落水时,试图用自提鞋扣儿的方法自救。20世纪80,90年代发展很快。自举,即采用从总体中反复抽取样本的方法计算参数估计量的值,置信区间或相应统计量的值并估计这些量的分布。这里介绍的远不是自举模拟的全貌,而是参数估计方面的应用。 因为这些方法的实现是以高容量和高速度的计算机为前提条件,所以只是在近年才得到广泛推广。 2.蒙特卡罗模拟和自举模拟原理 进行蒙特卡罗模拟和自举模拟首先要设定数据生成系统。而设定数据生成系统的关键是要产生大量的随机数。例如模拟样本为100的随机趋势过程的DF统计量的分布,若试验1万次,则需要生成200万个随机数。 计算机所生成的随机数并不是“纯随机数”,而是具有某种相同统计性质的随机数。计量经济学中蒙特卡罗模拟和自举模拟所用到的随机数一般是服从N(0,1)分布的随机数。计算机生成的随机数称作“伪随机数”(pseudo-random number)。生成的随机数的程序称作“伪随机数生成系统”。实际上计算机不可能生成纯随机数。 在进行蒙特卡罗模拟时一般要给定多种条件。例如样本容量要选择50,100,200等多种。有时模型形式也要选择多种。从而研究参数估计量和统计量在各种条件下的分布特征。当只需要这几个特定条件下的模拟结果时,把结果纪录下来就可以了。当需要很多条件下的模拟结果时,一般采用估计响应面函数(response surface function)的方法研究之。例如Dicky-Fuller的DF检验表中只给出了样本容量为25,50,100,250,500几个点的DF分布特征。显然对25至500间每个样本容量都进行DF分布模拟是不实际的,也是无必要的。

蒙特卡洛模拟法及其Matlab案例

一蒙特卡洛模拟法简介 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。 这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。 蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。 二蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。 解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 三蒙特卡洛模拟法的应用领域 蒙特卡洛模拟法的应用领域主要有: 1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。 2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。 3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。 四资产组合模拟 假设有五种资产,其日收益率(%)分别为 0.0246 0.0189 0.0273 0.0141 0.0311 标准差分别为 0.9509 1.4259, 1.5227, 1.1062, 1.0877 相关系数矩阵为 1.0000 0.4403 0.4735 0.4334 0.6855 0.4403 1.0000 0.7597 0.7809 0.4343 0.4735 0.7597 1.0000 0.6978 0.4926 0.4334 0.7809 0.6978 1.0000 0.4289 0.6855 0.4343 0.4926 0.4289 1.0000 假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下 %run.m ExpReturn = [0.0246 0.0189 0.0273 0.0141 0.0311]/100; %期望收益

相关文档
最新文档