第八章 Monte Carlo 法
§8.1 概述
Monte Carlo 法不同于前面几章所介绍的确定性数值方法,它是用来解决数学和物理问
题的非确定性的(概率统计的或随机的)数值方法。Monte Carlo 方法(MCM),也称为
统
计试验方法
,是理论物理学两大主要学科的合并:即随机过程的概率统计理论(用于处理布
朗运动或随机游动实验)和位势理论,主要是研究均匀介质的稳定状态
[1]
。它是用一系列随
机数来近似解决问题的一种方法,是通过寻找一个概率统计的相似体并用实验取样过程来获
得该相似体的近似解的处理数学问题的一种手段。运用该近似方法所获得的问题的解 in
spirit 更接近于物理实验结果,而不是经典数值计算结果。
普遍认为我们当前所应用的 MC 技术,其发展约可追溯至 1944 年,尽管在早些时候仍
有许多未解决的实例。MCM 的发展归功于核武器早期工作期间 Los Alamos(美国国家实验
室中子散射研究中心)的一批科学家。Los Alamos 小组的基础工作刺激了一次巨大的学科
文化的迸发,并鼓励了 MCM 在各种问题中的应用
[2]-[4]
。“Monte Carlo”的名称取自于
Monaco(摩纳哥)内以赌博娱乐而闻名的一座城市。
Monte Carlo 方法的应用有两种途径:仿真和取样。仿真是指提供实际随机现象的数学
上的模仿的方法。一个典型的例子就是对中子进入反应堆屏障的运动进行仿真,用随机游动
来模仿中子的锯齿形路径。取样是指通过研究少量的随机的子集来演绎大量元素的特性的方
法。例如,
)(xf
在
bxa ��
上的平均值可以通过间歇性随机选取的有限个数的点的平均值
来进行估计。这就是数值积分的 Monte Carlo 方法。MCM 已被成功地用于求解微分方程和
积分方程,求解本征值,矩阵转置,以及尤其用于计算多重积分。
任何本质上属随机组员的过程或系统的仿真都需要一种产生或获得随机数的方法。这种
仿真的例子在中子随机碰撞,数值统计,队列模型,战略游戏,以及其它竞赛活动中都会出
现。Monte Carlo 计算方法需要有可得的、服从特定概率分布的、随机选取的数值序列。
§8.2 随机数和随机变量的产生
[5]-[10]全面的论述了产生随机数的各类方法。其中较为普遍应用的产生随机数的方法
是选取一个函数
)(xg
,使其将整数变换为随机数。以某种方法选取
0
x
,并按照
)(
1 kk
xgx �
�
产生下一个随机数。最一般的方程
)(xg
具有如下形式:
mcaxxg mod)()( ��
(8.1)
其中
�
0
x
初始值或种子(
0
0
�x
)
�a
乘法器(
0�a
)
�c
增值(
0�c
)
�m
模数
对于
t
数位的二进制整数,其模数通常为
t
2
。例如,对于 31 位的计算机
m
即可取
131
2
�
。这
里
ax ,
0
和
c
都是整数,且具有相同的取值范围
0
,, xmcmam ���
。所需的随机数序
� �
n
x
便可由下式得
评论8