蒙特卡罗法在近似计算中的应用

(整期优先)网络出版时间:2023-11-07
/ 1

蒙特卡罗法在近似计算中的应用

李玉荣

武警警官学院,四川省成都市,610213,

摘要:本文利用Matlab通过计算机模拟实验计算出了圆周率及定积分的近似值,说明了蒙特卡罗方法的实施过程,最后分析了蒙特卡罗方法的优缺点。

关键词:蒙特卡罗法 近似 计算机模拟

蒙特卡罗法是一种应用随机数来进行模拟实验的方法,它以概率统计理论为基础,能解决一些用解析方法或者数值方法难以解决的问题。其基本思想是:把随机事件(变量)的概率特征与数学分析的解联系起来。随着计算机技术的发展,蒙特卡罗法在近似计算中的应用越来越广泛。

利用蒙特卡罗方法进行模拟,首先要设计一个模拟模型,其次是如何利用计算机来模拟。如果问题当中的随机现象是等概率的,可以用掷硬币和掷骰子的方法来模拟抽样。

下面通过两个简单的问题来说明蒙特卡罗方法的实施过程。

问题一:求圆周率的近似值。

分析设计模拟实验:如下图,在边长为的正方形内均匀投掷点数,落入圆内的点数记为

则有

计算机模拟:

设二维随机变量在正方形内服从均匀分布,在计算机上做次掷点试验,产生组二维随机点,检查每组随机数是否满足:,相当于第个随机点落在圆内。若有个点落在圆内,则随机事件“点落入圆内”的频率为,从而得到圆周率的近似值为

MATLAB程序如下:

n=1000;%试验次数,即总投点个数

k=0;

for i=1:n

    x=-1+2*rand;y=-1+2*rand;

    if x^2+y^2<=1

        k=k+1;

    end

end

fprintf('%s%g\n','圆周率pi的估计值为:',4*k/n)

输出结果:圆周率pi的估计值为:3.148。

问题二:计算定积分的近似值。

分析:将求面积转化为——求落在函数下方的点数与一边长为(b-a),另一边长为H的长方形内的点数之比。

计算机模拟:

在该矩形区域内取点,记随机事件“该点落在图中阴影部分”的概率为P,则有

MATLAB程序如下:

a=0;b=1;m=1000;

s=0;H=exp(1);%设置点数及矩形的长宽

for i=1:m

    xi=rand();yi=H*rand();

    if yi

        s=s+1;

    end %如果随机点落在曲边梯形内,s增加1

end

fprintf('%s%g\n','exp(x)在[0,1]上的积分约等于',H*(b-a)*s/m)

输出结果:exp(x)在[0,1]上的积分约等于1.75601。

由以上两个例子可以看出,当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率、数学期望有关的量时,通过某种试验的方法,得出该事件发生的频率,或者该随机变量若干个具体观察值的算术平均值,从而通过它得到问题的解。

为了得到具有一定精度的近似解,所需试验的次数应该很多,通过人工方法做大量的试验相当困难,甚至是不可能的。因此,蒙特卡罗方法的基本思想虽然早已被人们提出,却很少被使用。自1940年代以来,由于计算机的出现,可以通过计算机来模拟随机试验过程,把巨大数目的随机试验交由计算机完成,才使得蒙特卡罗方法得以广泛地应用,在现代科学技术中发挥其应有的作用。

用蒙特卡罗方法解决实际问题,可以直接从实际问题本身出发,而不从方程或数学表达式出发,它有直观、形象的特点。在计算机上进行蒙特卡罗计算时,程序结构简单,分块性强,易于实现。

但是它的收敛速度慢,如前所述,蒙特卡罗方法一般不容易得到精确度较高的近似结果。且其误差具有概率性,不是一般意义下的误差。

因此,在使用蒙特卡罗方法时,可以考虑把蒙特卡罗方法与解析(或数值)方法相结合,取长补短,既能解决解析(或数值)方法难以解决的问题,也可以解决单纯使用蒙特卡罗方法难以解决的问题。这样,可以发挥蒙特卡罗方法的特长,拓展应用范围。

参考文献

  1. 同济大学数学系.高等数学[M].北京:高等教育出版社,2016.
  2. 赵静,但琦.数学建模与数学实验[M]. 北京:高等教育出版社,2020.