蒙特卡洛方法在积分求解中的应用

2017-03-29 12:50卢嘉澍
数学学习与研究 2017年5期

卢嘉澍

【摘要】 本文基于蒙特卡洛方法的定义,给出使用其进行近似积分的一般步骤,并以均匀分布为例讲解了具体操作步骤.积分算例表明,这种方法概念简单、编程容易,可应用于工程实际问题中重要的数值积分计算.

【关键词】 积分计算;蒙特卡洛法;区间估计

一、引 言

蒙特卡洛法,也称统计模拟方法,是一种计算机化的数学方法.20世纪40年代中叶出现了电子计算机,使得用数学方法模拟大量试验成为可能.另外,随着科学技术不断发展,出现了越来越多的复杂问题,用通常的解析方法或数值方法都难解决.蒙特卡洛法(包括求积分、微分以及线性、非线性方程组等)就是在這些情况下,作为一种可行的,且是不可缺少的计算方法被提出和迅速发展起来的.以概率论为理论基础,其可靠性与收敛性也能得到很好地说明.在通常积分的求解中,常用数值积分公式对积分进行求解.然而数值求积公式的精度将受到积分维数的影响,同时,对于无穷积分,将其近似地看作定积分本身也会丧失一定的精度.

二、算法思想

对于积分若能选取连续型随机变量X,其概率密度函数p(x)满足如下条件:

1.p(x)>0,x∈ R n.

2.p(x)及其上侧分位数已知.

则便可对上述积分作统计模拟并进行误差估计.特别地,若取概率分布为D上的均匀分布,则其概率密度

g(x)= 1 m(D) .

其中m(D)为积分区域D的测度.则原积分可转化为

即相当于求随机变量X在函数

下的数学期望,这就将积分问题转化为期望估计问题,至此便可运用数理统计相关理论,如点估计、区间估计对其进行求解.

三、公式推导

考虑一般情形,对于所求期望E(h(x)),我们运用数理统计的相关理论对其进行区间估计.首先,假设

为一束均匀分布族,把上式代入积分表达式,可得

根据此式,可以得到n重积分的估计式

根据上式即可使用基于均匀分布的样本对所求积分进行数值估计.

四、实 例

(1)考虑一维情形.根据随机分布g(x)随机选取样本(x1,x2,…,xn),

则可以给出积分

的估计式

同时,也可以给出基于区间估计的误差,置信度为1-α的误差为

其中Kα为同置信度有关的常数,并满足|Kα|<1.故误差满足

我们可以得到,积分值的估计量θ ^ →∫baf(x)dx,误差的大小不随维数而显著改变,故这种估计方法是合理的.若取f(x)=ex,考虑其在[0,1]上的积分.选取n=10 000,生成10 000个[0,1]内的随机数,再根据上式进行求解.使用MATLAB编程求解其在[0,1]内积分的近似值,运行代码如下:

f=@(x)exp(x);xx=rand(1,10000);S=sum(f(xx))/

10000

输出结果

S=1.718220782967407

对于任意区间[a,b]的均匀分布随机数,总可以通过[0,1]内随机数进行线性映射得到

r′k=(b-a)rk+a.

综上所述,使用蒙特卡罗法进行积分计算的一般步骤为:

(1)根据概率密度函数,确定一组基于密度函数的容量为n的样本(x1,x2,…,xn).

(2)根据每层积分上下限的表达式,确定每一层相应积分样本的上下限.特别的,若积分为矩形区域上的积分,则样本上下限即为相应层积分区间的上下限[ai,bi].

(3)使用公式

对原积分进行数值估计.

五、结 语

使用蒙特卡洛方法进行积分计算,理论上可以通过选取合适的随机分布来提高蒙特卡洛方法的精度.

由于蒙特卡洛方法思想简单,易于编程实现,且一般的程序语言如C++,MATLAB,Mathematica都有生成各类常用分布随机数的命令,更加方便了程序设计.并且,其精度不会随着积分维数增大而显著增长,对于计算一些复杂的高维积分有明显的优势.因此,可以推断,蒙特卡洛方法将作为一种数值积分工具而得到广泛应用.