对圆的面积执行Python函数
如何编写执行以下操作的Python函数:从运行的总和S=0开始。然后,对于N次迭代:对圆的面积执行Python函数,python,Python,如何编写执行以下操作的Python函数:从运行的总和S=0开始。然后,对于N次迭代: 在单位平方中生成一个随机点(0
def区域(N=1000):
“使用蒙特卡罗方法计算四分之一圆的近似面积”
S=0
av=np.零(N)
对于范围(N)内的j:
r=np.随机。随机(2)
如果r[0]**2+r[1]**2<1:
S=S+1
av[j]=浮点数/(j+1)
返回av
但是,我不确定如何执行此操作-我可以输入此操作,并且没有错误,但我不确定如何获得pi。您不需要存储迭代中的所有值。如果运行N的高值,这将导致非常高的内存开销:
def area(N):
'''Approximate area of quarter-circle using a Monte Carlo Method'''
S = 0
for j in range(N):
r = np.random.random(2)
if np.dot(r,r) < 1:
S += 1
return S/N
产量约:0.784734
print ((S/N)*4)
对于非常多的点(N>10000)
就是
(pi/4)/1 = s/N => pi = 4 * (s/N)
仅限Numpy的解决方案:
def f(N):
x = np.random.random(N)
y = np.random.random(N)
return (x*x + y*y < 1).mean()
def(N):
x=np.random.random(N)
y=np.随机。随机(N)
返回值(x*x+y*y<1)。平均值()
您的总和应接近$\frac{\pi}{4}$。由于半径为1的圆的面积为$\pi$,并且您只关心该圆的四分之一,并且您在1x1正方形(完全包含圆的四分之一)的区域内随机拾取,因此您拾取四分之一圆内某点的总次数将为$\frac{\frac{\pi}{4}{1}=\frac{\pi 4}{4}4}$。请查看返回值的最后值av
,它们应该是最佳估计值。感谢您的帮助。我应该指出我以前实现过:importnumpyasnp
area of the circle/area of the square = No:of points inside the circle/No:of points inside the square
(pi/4)/1 = s/N => pi = 4 * (s/N)
def f(N):
x = np.random.random(N)
y = np.random.random(N)
return (x*x + y*y < 1).mean()