蒙特卡罗方法介绍(一)
一、蒙特卡罗方法的基本思想和解题步骤
1.1 蒙特卡罗方法的基本思想
蒙特卡罗方法也称随机模拟法、随机抽样技术或统计实验发,其基本思想是:为了求解数学、物理、工程技术或生产管理等方面的问题。首先,建立一个与求解有关的概率模型或随机过程,使他的参数等于所求问题的解;然后通过对模型或过程的观察或者抽样试验来计算所求参数的统计特征;最后给出所求解的近似值。
概率统计是蒙特卡罗方法的理论基础,其基本手段是随机抽样或者随机变量抽样,对于那些难以进行的或者条件不满足的试验而言,是一种极好的替代方法。
1.2 蒙特卡罗的解题步骤
蒙特卡罗方法可以解决随机性问题和确定性问题,基本步骤如下:
- 建立一个与求解有关的概率模型,使求解为所构建模型的概率分布或数学期望
- 对模型进行随机抽样观察,即产生随机变量
- 用算法平均数作为所求解的近似平均值,给出所求解的统计估计值的方差或标准差,即解的精度。
二、蒙特卡罗求解π\piπ
2.1原理
有一个圆心为(0,0)(0,0)(0,0),半径为rrr的圆。
圆的面积和正方形面积之比如下:
πr2(2r)2=π4\frac {\pi r^2}{(2r)^2}=\frac{\pi}{4} (2r)2πr2=4π
我们对正方形随机投点,圆的面积和正方形面积之比可以近似为圆内的点数比上所有的点数。
记所有点数为nnn,圆内点数为ccc:
cn=π4⟹π=4cn\frac{c}{n}=\frac{\pi}{4} \Longrightarrow \pi=\frac{4c}{n} nc=4π⟹π=n4c
随着nnn的增大,π\piπ值会越来越接近真实值
2.2实现
采用java实现
public static float getPi(){float result = 0;float r = 1;long n = 100000000;long count = 0;for (int i = 0; i<n; i++) {float x = (float) (Math.random()*2 -1);float y = (float) (Math.random()*2 -1);if (x*x + y*y < r*r) {count ++;}}result = (float) 4*count/n;return result;}
结果为:
参考文献
- 蒙特卡罗方法的基本思想与解题步骤
- 蒙特卡洛方法的理解、推导和应用