查看本系列文章合集,请点击这里。
为了对蒙特卡罗方法有一个直观的印象,我们先举一个实例(计算圆周率 \(\pi \) ),让从来没有接触过蒙特卡罗方法的人产生“原来这就是Monte Carlo”的感觉,以减少刚开始学习的困惑。
- 非蒙特卡罗方法
圆周率 \(\pi \) 可以怎么计算?其中一个“常规”的方法就是利用 \(\pi \) 的莱布尼茨公式:
\(\frac{\pi }{4} = \sum\limits_{n = 0}^\infty {\frac{{{{\left( { - 1} \right)}^n}}}{{2n + 1}}} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \cdots \)
不断增大 \(n\) 的值,就能越来越逼近 \(\frac{\pi }{4}\)
当 \(n\) 的最大值取30000时,可以计算得 \(\pi = 3.141559320256462\)
- 蒙特卡罗方法
相比之下,用蒙特卡罗方法来计算 \(\pi \) ,可能就是一个比较“另类”的途径了。
假设圆外部有一个相切的正方形,如下图所示:

文章来源:https://www.codelast.com/
设圆面积为C,正方形面积为S,则利用面积公式可以轻易算得: \(\frac{C}{S} = \frac{{\pi {r^2}}}{{{{(2r)}^2}}} = \frac{\pi }{4}\)
然后,我们在正方形内随机生成30000个点(当然可以生成更多,这里只是用30000举个例子),分别计算这些点与圆心的距离,距离<r 表示点在圆内部:

文章来源:https://www.codelast.com/
从面积之比可知:如果点是均匀分布的,则圆内的点的数量应该占所有点数量的 \(\frac{\pi }{4}\) ,计算数量之比,再乘以4,即可得圆周率。
在某一次实验中,模拟30000个点, \(\pi \) 的估算值与真实值相差0.07%
所以,这里正是巧妙地利用了“随机”这个技术,来计算了圆周率,这种方法就属于蒙特卡罗方法。
- 参考文献
► 维基百科: \(\pi \) 的莱布尼茨公式
► 蒙特卡罗方法入门
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):
