第三章 蒙特卡洛方法的若干应用 蒙特卡洛方法是利用随机变量的一个数值序列来得到特定 问题的近似解的数值计算方法。 蒙特卡洛方法的应用可以大致分为两类:第一类是所求问题 具有严格确定的数学形式,另一类是本身就是具有统计性质的问 题。 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)利用蒙特卡洛计算定积分问题时受积分域的限制较小。只 要积分空间可以用数学形式描述出其范围,不论它的形状 如何复杂,我们都可以用该方法给出该积分的估计值。因而 蒙特卡洛方法是解决复杂几何空间定积分的有效方法。 ?