第三章 蒙特卡洛方法的若干应用
蒙特卡洛方法是利用随机变量的一个数值序列来得到特定
问题的近似解的数值计算方法。
蒙特卡洛方法的应用可以大致分为两类:第一类是所求问题
具有严格确定的数学形式,另一类是本身就是具有统计性质的问
题。
3. 1 蒙特卡洛方法在积分计算中的应用
一、一维定积分计算的平均值法(期望值估计法)。
一维积分计算
0
∫
=
1
0
,)( dxxfI 1≤≤ x
,1)(0 ≤≤ xf .
在x的定义域[0,1]上均匀地随机取点,该均匀分布的随机变量
记为ξ。我们定义一个随机变量
1
η为
)(
1
ξη f=
.
则显然有
{} { } IfEE == )(
1
ξη .
1
η的期望值等于积分值I。只要抽取足够多的随机点,即取随机
点数足够大时,n的平均值 )(ξf
)(
1
1
∑
=
=
n
i
in
f
n
I ξ
就是积分I的一个无偏估计值。
1
η的方差。
V . {} []dxIxf
2
1
0
1
)(
∫
?=η
显然
{}
1
ηV
依赖于被积函数( )f x在积分域上的方差。当在)(xf x的定
义域内变化平坦,即和I的差处处都较小时,方差也小;反之,
则方差较大。
f(x)
0
1
x
y
1
I
f(x)
0
1
x
y
1
I
从这里可以看出:尽量减小被积函数在积分域上的方差,可以减
小积分估计值的方差,加速收敛。推而广之来说,就是要减少模
拟量在模拟范围内的方差。
根据这样的原则,当被积函数在积分域内的方差较大时,
可以采用各种抽样技巧。如采用重要抽样法,将的方差吸收
到中去,这样模拟量—记录函数在定义域内相
当平坦,则我们将(3.1.1)式的计算变为
)(xf
*
f
)(xf
)x)(xg (/)()( gxfx =
∫∫∫
===
1
0
1
0
*
1
0
)()()(
)(
)(
)( dxxgxfdxxg
xg
xf
dxxfI
若选取
η′
为服从分布密度函数的函数的抽样值。这里称
为偏倚分布密度函数。我们得到
)(xg )(xf
?
)(xg
{ }I
.
η′= E
因此它的平均值
∑∑
==
=′=
n
i
i
n
i
in
xf
nn
I
1
*
1
)(
11
η .
给出了I的一个无偏估计值。这时的方差为:
{} []
∫∫∫
?=
?
?
?
?
?
?
?=?=′
1
0
2
2
1
0
2
1
0
2
*
)(
)(
)(
)(
)(
)()( Idx
xg
xf
dxxgI
xg
xf
dxxgIxfV η
.
在实际计算中,方差通过下式得到计算结果:
2
2
2* *
11
() ()
nn
ii
ii
fx fxσ
==
????
=?
????
????
∑∑
.
式中角型括号表示对括号内所有可能的[0,1]区间,按分
布的随机坐标数序列{对应的数值求平均。方程右边第一项对
)(xg
}
i
x
{ }
*2
()
i
f x
求平均
( )
*2
f,第二项表示求{ }
*
()
i
f x
平均值的平方
2
__
*
f
??
?
??
?。上
式可以经推导得到:
()
{ }
*
2*2*2
1
Vf
ff
nn
σ =?=.
由此我们看出其误差平方与
*
f在[0,1]区间的方差成正比,并且
n1∝σ。这与中心极限定理所得到的结果一致。
二、 一维定积分计算的掷点法
计算积分也可以这样来做:
在单位正方形内均匀投点,每个点的坐标为(,共做N
个投点。如果投点满足不等式
),
ii
yx
,即点落在曲线下,则记
录下投点次数(认为试验成功);反之,则认为试验失败。
)(xf)(
ii
xfy ≤
用蒙特卡洛的语言来讲,就是产生随机数
21
,ξξ。如果,
则认为试验成功;如果
)(
21
ξξ f≤
)(
21
ξξ f>,则试验失败。若在N次试验中有
m次成功,则比值就给出Nm/ I的一个无偏估计值:
N
m
I ≈
.
引入随机变量
()
?
?
?
>
≤
=
)(,0
)(,1
,
21
21
21
ξξ
ξξ
ξξη
f
f
则 (){},
21
ξξηEI = .
它在N次试验下的一个I的无偏估计值为
()
21 2
1
1
,
N
Ni
i
m
I
NN
ηξ ξ
?
=
==
∑
.
这是I的一个近似值,它的方差为
{} {} { }[ ]
222
IIEE ?=?= ηηηV .
容易证明掷点法的方差比平均值法的方差大
{} {} []
2
111
222
1
000
() () 2 ()VV II fxIdxIIfxdxIfxdxηη? =?? ? =?? + ?
∫∫∫
2
I
. []0)(1)(
1
0
≥?=
∫
dxxfxf
证明:
() ()
()
()
()
)(,,,
2
1
2
0
2
1
0
2
2
2
ξξηξηξη
ξ
ξ
fdxxdxxdxx
f
f
=+=
∫∫∫
而在平均值法中{} { })(
1
ξη fEEI ==,恰恰用了( )
21
,ξξη对
1
ξ的期望值代
替了()
21
,ξξη。
这里可以反应出减小方差,加快收敛的又一个原则。这就是
要尽量使用理论分析得到的期望值来代替模拟估计值。这个原则
也同样适用于所有的蒙特卡洛模拟过程。
实际上使用这个原则可以减小方差、加快收敛的原因是显然
的。因为一切随机模拟量总会有误差的,如果以精确的理论值来
代替(, )
21
ξξη,就必然会减小方差。所以在一切模拟过程中,能使
用理论计算值的地方应当尽量使用。
以上我们介绍的这两个减小方差,加速收敛的原则,也正是
重要抽样法、分层抽样法、对偶变量法、相关抽样法等的基本出
发点。
三、 多重定积分的计算
物理上的许多问题都会涉及多重定积分。例如,一个粒子衰
变到n体末态的相空间积分,由于每个末态粒子都有动量和能量
四个分量,考虑到每个粒子满足质能公式和所有粒子的总能、动
量守恒,则总的相空间积分重数为3 4?n
)
。这样的物理问题往往都
需要做数值积分。
?
s
dx
??,,(
21
xx
前面讲的一维定积分计算的平均值法和掷点法都可以推而
广之,应用于多重定积分的计算。
对于s 维多重积分,我们也可以用前面讲述的“归一化”方
法,使得积分变量,]1,0[∈
i
x ,...,1( si =,被积函数在积分范围内满足
。然后再做积分 1),...,,(0
21
≤≤
s
xxxf
∫∫ ∫
?????=
1
0
1
0
1
0
2121
),,,(...
s
dxdxxxxfI .
在实际蒙特卡洛积分计算中,在积分的超立方体内不同区域的积
分贡献可能强烈地变化。如果我们在积分的超立方体内均匀抽
样,积分的贡献可能主要来自少数仅仅只有几个蒙特卡洛投点的
小区域,这就会导致很大的统计误差。
当在积分域内的方差很大时,就会产生这个效
应。为了减少这些对误差的贡献,我们将随机投点更多地投在
),...,,(
21 s
xxxf
),...,,(
21 s
xxxf取值大的区间。这就是说,采用重要抽样的蒙特卡
洛积分方法。
具体操作步骤是:
(1)选一个抽样比较简单的概率分布密度函数,
并定义
),,,(
21 s
xxxg ???
?
?
?
?
?
=???
≠?
???
???
=???
0),,,(,0
0),,
),,,(
),,,(
),,,(
21
21
21
21
*
s
s
s
s
s
xxxg
xg
xxxg
xxxf
xxxf
使得在积分域内的方差较小,则、 ),,,(
21
*
s
xxxf ???
.
{}
∫∫∫
?????????=???=
1
0
1
0
212121
*
1
0
21
*
),,,(),,,(...),,,(
ssss
dxdxdxxxxgxxxfxxxfEI
按照偏倚密度函数在
),,,(
21 s
xxxg ??? 10 ≤≤
i
x
,
( ),...,1 si =
空间中抽取N 个子样
,则记录函数的平均值为 N,ixxx
isii
,2,1),,,,(
21
???=??? ),
*
s
x??,,(
21
xx ?f
∑
=
???=
N
i
isiiN
xxxf
N
I
1
21
*
),,,(
1
.
它给出了I的一个无偏估计值,并可以作为I的近似值。
如果在s 维体积?内做多重积分时,
如果在积分域
∫∫
?
??????=
ss
dxdxdxxxxfI
2121
),,,(...
?内的方差并不大,为了简化抽样,就
取
),...,,
21 s
xxf (x
?
?
? ?∈????
=???
其它,0
),,,(,/1
),,,(
21
21
s
s
xxx
xxxg
这时记录函数为
),,,(
),,,(
),,,(
),,,(
21
21
21
21
*
s
s
s
s
xxxf
xxxg
xxxf
xxxf ????=
???
???
=???
.
在s 维体积内抽取随机样本? ),,,( xxx
21 isii
???是容易的,若抽得N 个
样本之后,
∑
=
???
?
=
N
i
isiiN
xxxf
N
I
1
21
),,,( .
就给出了I的近似值。
从前面介绍的减小方差的第二个原则可以看出:在采用蒙特卡
洛方法计算多重积分时,如果能够将其中的某几重积分解析地求
出时,应当尽量地使用解析方法。这样便能减小方差,加速收敛。
为了使在积分的高维体积内的投点更加均匀,我们可以将积分
空间分成许多相同体积的子空间,在每个子空间中都投以相同数
目的随机点,从而减少蒙特卡洛积分误差。这就是采用前面第2.4
节中介绍的“分层抽样方法”。这种积分方法也叫做分层蒙特卡
洛积分法。
蒙特卡洛方法用于计算定积分时的特点:
(1)蒙特卡洛方法计算定积分的收敛速度与积分的重数无关。
(2)蒙特卡洛方法求定积分的误差仅仅与方差{ }fV和子样容量n
有关,而与子样中的元素所在的集合空间?的组成无关。
(3)被求定积分的维数变化,除了引起抽样及计算时间有变化
外,对计算结果的精度没有影响。
优点:
(1) 利用该方法处理多重积分问题时,维数越高,其优越性
越明显。
(2)利用蒙特卡洛计算定积分问题时受积分域的限制较小。只
要积分空间可以用数学形式描述出其范围,不论它的形状
如何复杂,我们都可以用该方法给出该积分的估计值。因而
蒙特卡洛方法是解决复杂几何空间定积分的有效方法。
?