用蒙特卡洛方法计算π,e和欧拉常数γ,并可视化
算法设计与分析的作业,还挺有意思的,给大家分享下
1.用蒙特卡洛方法计算π
import numpy as np
import math
import matplotlib.pyplot as plt
list=[]
N=[]
for n in range(9999990,10000000): #为了看清楚概率的变化,可以做一个循环,n自动取整数
x=np.random.uniform(-0.5,0.5,n) #产生的随机点的坐标定位。产生随机点的功能在numpy里
y=np.random.uniform(-0.5,0.5,n) #产生的随机点的坐标定位。产生随机点的功能在numpy里
#统计落在圆形里面的点
pos=sum(np.where(x**2+y**2<0.25,1,0))#通过求和来得到落在圆里面的点的总数,条件写在where里面,如果满足条件返回1,不满足返回0
pis=pos/n/0.25#计算π
res=abs(pis-math.pi) #可以通过计算误差来看一下真实值和计算值的差距,在math库中有π,所以要引入math库
list.append(res)
N.append(n)
print(pis)
print(list)
print(N)
plt.plot(N,list)
2.计算e的代码(这个来源于同济子豪兄,后续我的作业计算欧拉常数γ的代码就是参考的这位仁兄的代码)
# 蒙特卡洛法计算自然常数e——python编程及可视化
> 张子豪 同济大学
蒙特卡洛方法是一种用野蛮粗暴的蛮力对抗精致数学的一种计算思维,能够将复杂数学问题转化为简单粗暴的重复步骤,在工程上有很多应用。我还用蒙特卡洛方法计算了圆周率,请看我另一篇博客。


# 原理
![曲面四边形面积即为积分之后的值](https://upload-images.jianshu.io/upload_images/13714448-89504a4f4ce5f7a5.png?imageMogr2/auto-orient/strip