美文网首页深度学习
蒙特卡洛算法随笔

蒙特卡洛算法随笔

作者: zidea | 来源:发表于2020-01-10 21:40 被阅读0次

蒙特卡洛

蒙特卡洛可以用随机数的应用来解释,是通过随机采样来计算或模拟给定过程。
经典实例就是用蒙特卡洛估计 pi

  1. 在边长为 2R 的正方形内随机撒 N 点
  2. 在正方形内画一个半径为 R 的圆,计算在圆内的点的个数
  3. 得出\hat \pi的估计值\frac{4 \times inside}{N}
    注意如果一个点满足下面条件,我们就认为点位于圆内
    \sqrt{(x^2 + y^2)} \le R
    正方形的面积是(2R)^2,圆的面积是\pi R^2 因此两者的面积之比 \frac{4}{\pi} 而圆和正方形面积分别正比圆内点的个数和总的点数 N。
    下面我们通过代码来实现蒙特卡洛计算\pi值的过程,同时计算估计值和实际值之间的误差。
N = 10000
x,y = np.random.uniform(-1,1,size=(2,N))
inside = (x**2 + y**2) <=1
pi = inside.sum()*4/N
error = abs((pi - np.pi)/pi) * 100

outside = np.invert(inside)

plt.plot(x[inside],y[inside],'b.')
plt.plot(x[outside],y[outside],'r.')

plt.plot(0,0,label='$\hat \pi$ = {:4.3f} \n error={:4.3f}%'.format(pi,error),alpha=0)
plt.axis('square')

plt.legend(frameon=True, framealpha=0.9,fontsize=16)

相关文章

网友评论

    本文标题:蒙特卡洛算法随笔

    本文链接:https://www.haomeiwen.com/subject/gkwmactx.html