蒙特卡罗法是什么? 蒙特卡罗(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战中研制原子弹的“曼哈顿计划”。该计划的主持人之一、数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。 1
第二章 蒙特卡罗方法 蒙特卡罗方法又称随机抽样技巧或统计试验方法。半个多世纪以来,由于科学技术的发展和电子计算机的发明 ,这种方法作为一种独立的方法被提出来,并首先在核武器的试验与研制中得到了应用。 蒙特卡罗方法是一种计算方法,但与一般数值计算方法有很大区别。它是以概率统计理论为基础的一种方法。 由于蒙特卡罗方法能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决的问题,因而该方法的应用领域日趋广泛。
2.1 蒙特卡罗方法基础知识 直接蒙特卡罗模拟方法 求解的物理问题本身就具有概率和统计性的情况,例如:中子在介质中的传播,核衰变过程。 间接蒙特卡罗模拟方法 求解问题本身不直接具有随机性,这时可以人为地构造出一个合适的概率模型,依照该模型进行大量的统计实验,使它的某些统计参量正好是待求物理问题的解。
概率论中的大数法则和中心极限定理是蒙特卡罗方法的基础
态
蒙特卡罗方法的基本思想: 间接蒙特卡罗模拟
例1. 用投点法求圆周率 方法:随机、均匀地在正方形范围内投点,若共投了N个点,而落在圆内的点数为M,当N足够大时,有: 其中: 所以:
例2. Buffon投针实验求π(1777年) 该试验方案是:在平滑桌面上划一组相距为s的平行线,向此桌面随意地投掷长度l=s的细针,设N 次抛针,M 次相交,那末从针与平行线相交的频率,即:P=M/N,就可以得到π的数值。 1)平行线间距 = 针长 = l; 2)设针某一端点A距相交的一条平行线的距离为x,针与平行线方向夹角 , 参数x和 可以确定针所处的状态,因此( ,x)就是一个样本点。 =样本空间, 事件A={针与某一平行线相交} 事件A的概率: 而在N充分大时: 故:
Buffon投针实验求π(计算方案2) 该试验方案是:在平滑桌面上划一组相距为s的平行线,向此桌面随意地投掷长度l=s的细针,设N 次抛针,M 次相交,那末从针与平行线相交的频率,即:P=M/N,就可以得到π的数值。 1)平行线间距=针长=l; 2)针与平行线垂线方向夹角 , 则相交概率为: 3)各向同性均匀抛针,夹角 在[0,π]均匀分布: 4) 即为相交概率的期望值,在N充分大时:
随机地向 正方形内投点N,统计落在曲线下的点数M,当总掷点数N充分大时, 例2. 用投点法求积分 待求积分: 1 随机地向 正方形内投点N,统计落在曲线下的点数M,当总掷点数N充分大时, M N - M
间接蒙特卡罗方法的基本思想总结: 当问题可以抽象为某个确定的数学问题时,应当首先建立一个恰当的概率模型,即确定某个随机事件A或随机变量X,使得待求的解等于随机事件出现的概率或随机变量的数学期望值。然后进行模拟实验,即重复多次地模拟随机事件A或随机变量X。最后对随机实验结果进行统计平均,求出A出现的频数或X的平均值作为问题的近似解。这种方法也叫做间接蒙特卡罗模拟。
为了得到具有一定精确度的近似解,所需试验的次数是很多的,通过人工方法作大量的试验相当困难,甚至是不可能的。因此,蒙特卡罗方法的基本思想虽然早已被人们提出,却很少被使用。本世纪四十年代以来,由于电子计算机的出现,使得人们可以通过电子计算机来模拟随机试验过程,把巨大数目的随机试验交由计算机完成,使得蒙特卡罗方法得以广泛地应用。 13
用投点法求圆周率Mathematica程序:
2.2 随机数与伪随机数
二、伪随机数
1、伪随机数的产生方法
[0,1]区间的伪随机数
线性同余法产生伪随机数: 取a=5,c=1,m=16和x0=1。记录下产生出的前20个数。
2、伪随机数的统计检验
(1)均匀性检验——频率检验 显著水平:
[0,1]区间均匀分布随机数统计分布直方图 [0,1]区间均匀分布随机数
(2)独立性检验——无重复联列检验
2.3 任意分布的伪随机变量的抽样
A. 离散型分布随机变量的直接抽样 随机变量的取值: 取值的概率: 归一化 分布函数 则取[0,1]均匀分布随机数ξ,按分布函数不等式抽样η 随机变量η满足 分布函数F(x)
是[0,1]区间均匀、连续分布的随机数,反复的产生随机数,并考察 落于区间 的概率 这是由于我们人为构造了一个随机试验: 是[0,1]区间均匀、连续分布的随机数,反复的产生随机数,并考察 落于区间 的概率 即: 随机取一个值 取值 的概率
B. 连续分布的随机变量抽样 求出F(x)的反函数F -1 (x) (其中 是在[0,1]区间均匀分布的随机数)
解: 其反函数为: (其中 是在[0,1]区间均匀分布的随机数) or
指数分布直接抽样Mathematica程序:
作业:采用直接抽样法对满足以下分布的连续随机变量进行抽样,
如果存在另一个随机变量δ,它的分布密度函数为φ(y),其抽样方法已经掌握,并且也比较简单. 我们可以设法寻找一个适当的变换关系x=g(y) 抽样步骤:首先对分布密度函数φ(y)抽样得到值δ,然后通过变换η=g(δ)得到满足分布密度函数f(x)的抽样值。
重复上面三个步骤,就可以产生出随机数序列 ,它满足分布密度函数 。
如图所示,舍选抽样步骤(b)的判断不等式 ,是为了保证随机点 落在曲线 的下面。 而x取值在[x,x+dx]内的概率等于对应区间曲线下的面积: 由于随机点落在曲线以下才被接受,上述抽样步骤得到的随机数数列η=δ是以分布密度函数 f(x) 分布的。 (注意: )
由于随机点落在曲线 f(x) 以下才被接受,并且所有产生的点都落在面积 L(b – a )的范围内,
但是开方运算量较大,可改用舍选法来做。
第一类舍选法抽样Mathematica程序: 分布密度函数:
注:f(x)和h(x)要在其抽样取值区间内满足归一化。
(2)再产生一个随机[0,1]区间上的均匀分布的随机数 ,判别不等式 是否成立,如果不成立,则返回到步骤(1);若成立,则执行步骤(3)。 1按h(x)抽样 N ( ) (2)再产生一个随机[0,1]区间上的均匀分布的随机数 ,判别不等式 是否成立,如果不成立,则返回到步骤(1);若成立,则执行步骤(3)。 η是在满足概率密度h(x)基础上又满足概率密度g(x),即随机变量满足两者乘积所对应的概率密度,也就是满足概率密度f(x)=Lg(x)h(x)。
解: 注意:f(x)在[0,+∞)满足归一化
积分公式: 则:
此时在[0,+∞)区间上对f(x)=Lg(x)h(x)的抽样如下:
作业:采用第二类舍选法对满足以下分布的连续随机变量进行抽样, 其中取辅助函数为:
分估计值。 如果适当选择子区间的大小和随机点数,就可以使计算结果的方差得以减小 其方差为:
由上面公式可知
满足分布密度函数g(x)的随机点
例:利用分布密度函数 做重要抽样来求积分 解:令 ,则 求积分步骤如下: (1)对 进行直接抽样得, 为 区间均匀随机数。 (2)求出各抽样点的函数值 (3) 的平均值 即为 积分的近似结果。
一个有名的概率问题 ——一维“随机游走(Random walk)”问题 [例]一条笔直的东西走向的狭街上立着一电线杆,杆下有一醉汉沿街踉踉跄跄忽东忽西地走路。假定他每一步的步长都是l,但各步朝东还是朝西不受上一步影响,是完全随机的。试求他从电线杆处出发走了N步之后,离电线杆距离为x的概率。
[解]:基本随机事件只有两个:朝东和朝西。设他朝东、朝西走的概率分别是p和q。p等于不等于q皆可。 先来看在他走过的N步中有n1步是朝东走的可能性有多大,取n1为随机变量,这正是要求得一维无规行走问题的概率分布函数PN(n1),而它应是二项式分布:
(N-n1)是他向西走的步数,我们视之为n2。取x轴平行于街道,原点在电线杆所在处,从原点向东为正轴方向。既然走了N步之后距原点x远,那么必有: 容易解出
将所得的n1代入分布函数,便得到以x为随机变量的概率分布函数: 即本题所要求的概率。
Metropolis方法 在随机游走的蒙特卡洛方法中,有一种最常用方法称为Metropolis 方法。采用此方法可以产生任意分布的随机数,包括无法归一化的分布密度函数。 可以证明:只要游走所选的“过渡几率”满足如下的细致平衡条件,
过渡几率公式
例:用Metropolis方法产生按分布密度函数 的随机点,其中 解:引入过渡概率: Metropolis计算步骤: 1)选择初始位置: 2)取 定义步长: 3)取 判断: 4)如果是,则 然后返回步骤1 5)如果否,则返回步骤2
指数分布Metropolis抽样Mathematica程序: