一、蒙特卡罗方法简介
蒙特卡罗(Monte Carlo)方法:简单来说,蒙特卡洛的基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果,精髓就是:用统计结果去计算频率,从而得到真实值的近似值。蒙特卡洛方法可以应用在很多场合,但求的是近似解,在模拟样本数越大的情况下,越接近与真实值,但样本数增加会带来计算量的大幅上升。
二、实例
1.求圆周率pi的近似值:
(1)正方形内部有一个相切的圆,它们的面积之比是π/4。现在,在这个正方形内部,随机产生10000个点,计算它们与中心点的距离,从而判断是否落在圆的内部,若这些点均匀分布,则圆周率 pi=res/npi=res/n。
其中res:表示落到圆内投点数 n:表示总的投点数
(2)代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
# 投点次数
n = 10000
# 圆的半径、圆心
r = 1.0
a,b = (0.,0.)
# 正方形区域
x_min, x_max = a-r, a+r
y_min, y_max = b-r, b+r
# 在正方形区域内随机投点
x = np.random.uniform(x_min, x_max, n) #均匀分布
y = np.r