其实蒙特卡洛方法的原理十分的简单,本文主要从两方面来解答上述问题,其一是蒙塔卡洛方法的原理,其二是列举蒙特卡洛方法的具体应用。原理与应用相结合,以期能够有一个更好的理解。
1.蒙特卡洛方法大家知道在实际生活中有很多事情都是随机发生的,无论是在现实社会中还是在工程实践中都存在大量的不确定性关系,这种不确定性关系在数学中可以被称为随机事件,描绘这种随机事件发生的可能性大小的变量就称之为概率。当大家遇到这种不确定性关系求解的时候(即求解随机事件的概率的时候),可以通过某种实验的方式,以某种事件发生的频率值来代替这种事件发生的概率值。大家可以想象当大家做了大量的实验的时候这个频率值就会无限接近于事件发生的真实概率值。总之一句话,偶理解的蒙特卡洛方法的精髓就是通过实验的方法来用频率代替概率。前人总结了蒙特卡洛方法工作的三个步骤,在这里列些如下,以供参考:(1)构造或描述概率过程,(2)实现从已知概率分布抽样,(3)建立各种估计量。
2.应用举例蒙特卡洛方法在很多领域都有广泛的应用,比如金融学、计算机科学、生物医学等。在这里大家举一个简单的小例子,来感受一下,蒙特卡洛方法工作的具体流程。
例子:估计圆周率pi的数值。
大家知道圆周率是比较难计算的,大家可以转换一下思想,通过实验的方法近似的估计一下pi的数值大小。如下图所示是一个边长为2的正方形内接了一个单位圆,单位圆的面积为pi*r^2=pi(r=1),正方形的面积为d^2=4。两者的比值记为P,即P=pi/4,则pi=4P。大家需要做的就是通过蒙特卡洛方法来求得P的近似值,从而得出pi的近似值。可以想象现在大家手拿一把豆子,均匀随机的撒向这个正方形的区域,那么豆子落在每个点的概率都是相等的。只要数一下落在单位圆内的豆子有多少和落在整体正方形内的豆子有多少,两者的比值就近似等于P(豆子足够多的情况下)。这就是蒙特卡洛方法的具体实现。
笔者在python上模拟了上述过程,只不过在python上撒豆子的动作是通过在相应区域内生成随机点(在正方形内一共生成了10^5个点)来完成的。
python代码链接如下:https://github.com/JXZe/learn/blob/master/pi/pi.py
实验的结果如下:
近似的pi是 3.14712