#%% 蒙特卡洛积分
n=5000
s1=0
s=0
for i in range(0,n):
a=np.random.uniform(-1,1,1)
b=np.random.uniform(-1,1,1)
if((a**2+b**2)<=1):
plt.scatter(a,b,c = 'r',marker = '+')
s1=s1+a**2+b**2
else:
plt.scatter(a,b,c = 'b',marker = '+')
s=s+a**2+b**2
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.gca().set_aspect('equal', adjustable='box')#此语句非常有用 也很关键 和上面两条语句相结合
print('True value=pi/4=0.7854')
print('g(x)=%f'%((s1+s)/n))
蒙特卡洛数值积分
最新推荐文章于 2024-05-23 21:34:38 发布