文档介绍:蒙特卡罗算法 Monte Carlo
一、Monte Carlo 历史渊源
Monte Carlo 方法的实质是通过大量随机试验,利用概率论解决问题的一种
数值方法,基本思想是基于概率和体积间的相似性。它和 中的ψ(x)可类比为依据ψ(x)生成随机数
4.误差分析
Monte Carlo 方法得到的结果是随机变量,因此,在给出点估计后,还需要
给出此估计值的波动程度及区间估计。严格的误差分析首先要从证明收敛性出发,
再计算理论方差,最后用样本方差来替代理论方差。在本课程中我们假定此方法收敛,同时得到的结果服从正态分布,因此可以直接用样本方差作区间估计。详
细过程在例子中解释。
这个步骤的理论意义很重要,但在实际应用中,它的重要性有所淡化,倘若
你的老板不太懂这些知识,你报告计算结果时可以只告诉他点估计即可。
注意,前两大步骤还可以继续细分,例如某些五大步骤就是将此处的前两步
细分成四步。
四、最简单的例子
举个例子:
计算从 函数从 0 到 2 的定积分值 。
数学方法:我们已知 的原函数是 ,那么定积分值就是:
= 。计算这个数值可以在 Matlab 中输入代码:
exp(2)-exp(0)
上面得到的值是此不定积分的真实值。
常规数值积分:在 区间内取 N 个点,计算各个点上的函数值,然后用
函数值乘以每个区间宽度,最后相加。Matlab 代码:
N=100;x=linspace(0,2,N);sum(exp(x).*2/N)
试着调大 N 的值,你会发现,最后的结果将更接近真实值。Monte Carlo 数值积分法:在 内随机取 N 个点,计算各个点上的函数
值,最后求这些函数值的平均值再乘以 2(为何要乘以 2 在后面小节详细讲)。
看 Matlab 代码:
N=100;x=unifrnd(0,2,N,1);mean(2*exp(x))
同样的,通过增大 N,这种方法得到的结果也将越来越接近真实值。
解释
这个例子要求的积分形式是: , 还不完全是 形式,我们
先做变换, ,这里 是 f(x);1/2 是ψ(x),它表示,在取值范围
(0,2)区间内,x 服从均匀分布。
前一例子共三条语句,逐句解释如下:
N=100;
设定停止条件,共做 N 次 Monte Carlo 模拟。
x=unifrnd(0,2,N,1);
按照(0,2)区间均匀分布概率密度对 x 随机抽样,共抽取 N 个 x i。此句相当
于第一个步骤中的前半部分。
mean(2*exp(x))2*exp(x)作用是对每个 x