蒙特卡罗方法概述及其基本思想
蒙特卡罗方法又称随机抽样技巧或统计实验方法,其基本思想为当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率、数学期望有关的量时,通过某种试验的方法,得出该事件发生的频率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。特殊的,当随机变量的取值仅为1或0时,它的数学期望就是某个事件的概率。
通俗来讲,蒙特卡罗方法使用随机试验的方式计算积分。即将所要计算的积分看作服从某种分布密度函数
f
(
r
)
f(r)
f(r)的随机变量
g
(
r
)
g(r)
g(r)的数学期望
<
g
>
=
∫
0
∞
g
(
r
)
f
(
r
)
d
r
<g>=\int_0^\infty {g(r)f(r)} \,{\rm d}r
<g>=∫0∞g(r)f(r)dr通过某种试验,得到N个观察值
r
1
,
r
2
,
…
,
r
N
r1,r2,…,rN
r1,r2,…,rN将相应的N个随机变量的值
g
(
r
1
)
,
g
(
r
2
)
,
…
,
g
(
r
N
)
g(r1),g(r2),…,g(rN)
g(r1),g(r2),…,g(rN)的算术平均值
g
=
1
N
∑
i
=
1
n
g
(
r
i
)
g=\frac 1N\sum_{i=1}^n g(ri)
g=N1i=1∑ng(ri)作为积分的估计值。
蒙特卡罗方法的收敛性、误差及效率
收敛性
由于蒙特卡罗方法是由随机变量X的简单子样
X
1
,
X
2
,
…
,
X
N
X1,X2,…,XN
X1,X2,…,XN的算术平均值,则有大数定律可知随机变量X的简单子样的算术平均值,当子样数充分大是,以概率1收敛于其期望值。
误差
由中心极限定理可知,蒙特卡罗方法的误差 ϵ \epsilon ϵ定义为 ϵ = λ α σ N \epsilon = \frac {\lambda_\alpha \sigma} {\sqrt{N}} ϵ=Nλασ
其中, λ α {\lambda_\alpha} λα与置信度 α \alpha α一一对应,根据问题的要求确定出置信水平后,查标准正态分布表即可。 σ \sigma σ为样本有限非零的均方差,其估计值为 σ = 1 N ∑ i = 1 N X i 2 − ( 1 N ∑ i = 1 N X i ) 2 \sigma = \sqrt{\frac 1N\sum_{i=1}^{N}{X_i}^2-(\frac 1N{\sum_{i=1}^{N}{X_i})}^2} σ=N1i=1∑NXi2−(N1i=1∑NXi)2
效率
一般来说,降低方差的技巧,往往会使观察一个子样的时间增加。在固定时间内,使观察的样本数减少。所以,一种方法的优劣,需要由方差和观察一个子样的费用(使用计算机的时间)两者来衡量,这是蒙特卡洛方法中效率的概念,定义为 σ 2 ∗ c {\sigma}^2*c σ2∗c其中, c c c为观察一个子样的平均费用。
蒙特卡罗方法特点
优点
- 能够比较逼真地描述具有随机性质的事物的特点及物理实验过程
-
从这个意义上讲,蒙特卡罗方法可以部分代替物理实验,甚至可以得到物理实验难以得到的结果。用蒙特卡罗方法解决实际问题,可以直接从实际问题本身出发,而不从方程或数学表达式出发。它有直观、形象的特点。
-
- 受几何条件限制小
-
在计算s维空间中的任一区域上的积分时,无论区域形状多么特殊,只要能给出描述区域的几何特征条件,就可以从区域中均匀产生N个点,从而得到积分近似值。
-
- 收敛速度与问题的维数无关
-
维数的变化,只引起抽样时间及估计量计算时间的变化,不影响误差。也就是说,使用蒙特卡罗方法时,抽取的子样总数N与维数s无关。维数的增加,除了增加相应的计算量外,不影响问题的误差。这一特点,决定了蒙特卡罗方法对多维问题的适应性。
-
- 具有同时计算多个方案与多个未知量的能力
-
对于那些需要计算多个方案的问题,使用蒙特卡罗方法有时不需要像常规方法那样逐个计算,而可以同时计算所有的方案,其全部计算量几乎与计算一个方案的计算量相当。另外,使用蒙特卡罗方法还可以同时得到若干个所求量。
-
- 误差容易确定
-
根据蒙特卡罗方法的误差公式,可以在计算所求量的同时计算出误差。同时也不存在有效位数损失的问题。
-
- 程序结构简单,易于实现
缺点
-
收敛速度慢
-
如前所述,蒙特卡罗方法的收敛速度为O(N^(1/2)),一般不容易得到精确度较高的近似结果。对于维数少(三维以下)的问题,不如其他方法好。
-
-
项目误差具有概率性
-
由于蒙特卡罗方法的误差是在一定置信水平下估计的,所以它的误差具有概率性,而不是一般意义下的误差。
-
-
在粒子输运问题中,计算结果与系统大小有关
蒙特卡罗方法的主要应用范围
蒙特卡罗方法所特有的优点,使得它的应用范围越来越广。它的主要应用范围包括:
- 粒子输运问题
- 实验核物理
- 反应堆物理
- 高能物理
- 统计物理
- 典型数学问题
- 真空技术
- 激光技术以及医学
- 生物
- 探矿
利用蒙特卡罗法计算定积分
针对定积分
θ
=
∫
a
b
f
(
x
)
d
x
\theta = \int_a^b f(x) \,{\rm d}x
θ=∫abf(x)dx求解定积分相当于计算一个图形的面积,而无论图形的形状如何,图形面积一定能被转化成一个以ab为底,y为高(y可以是负数)的长方形面积高,我们只需要用蒙特卡洛算法求y即可。
所以我们可以在
[
a
,
b
]
[a,b]
[a,b]之间生成n个随机点,并计算相应的函数值,再计算被积函数值得平均值
∑
i
=
1
n
f
(
x
i
)
n
\frac{\sum_{i=1}^n f(x_i)}n
n∑i=1nf(xi)则定积分应为
∑
i
=
1
n
f
(
x
i
)
n
∗
(
b
−
a
)
\frac{\sum_{i=1}^n f(x_i)}n*(b-a)
n∑i=1nf(xi)∗(b−a)