考虑以下计划。
import math
import random
def inside_unit_circle(point):
"""
Compute distance of point from origin
"""
distance = math.sqrt(point[0] ** 2 + point[1] ** 2)
return distance < 1
def estimate_mystery(num_trials):
"""
Main function
"""
num_inside = 0
for dumm_idx in range(num_trials):
new_point = [2 * random.random() - 1, 2 * random.random() - 1]
if inside_unit_circle(new_point):
num_inside += 1
return float(num_inside) / num_trials
print estimate_mystery(10000)
此程序使用random.random()
生成一组随机点,这些点均匀分布在正方形上,角点位于
(1, 1) (−1, 1)
(1,−1) (−1,−1)
这里,均匀分布意味着正方形中的每个点具有相等的生成机会。然后,该方法测试这些点是否位于单位圆内。
随着试验次数的增加,estimate_mystery
返回的值趋于特定值,该值具有涉及众所周知常数的简单表达式。在下面输入此值作为数学表达式。 (不要输入浮点数。)
答案 0 :(得分:1)
因此,您需要使用越来越多的试验来运行estimate_mystery。当您这样做时,很明显该值会增加到以下简单表达式:
(\sum_{k=1}^{\infty} \frac{e^{i\pi(k+1)}}{2k-1}
)
然而,应该指出,这不是唯一正确的答案。以下也是有效的,\zeta
是Riemann zeta函数:
但是,这不包括众所周知的常量e
。
我不确定为什么这会令人困惑。很明显,和表达式是正确的,并且写得非常清楚:图像下面的代码是数学表达式的非常标准的LaTeX格式。但是为了说明它的正确性,这里有一个图表显示了将总和带到n时的收敛,以及将estimate_mystery运行到n:
嗯...也许这不是你想要的问题?它也应该收敛到以下内容,其中\gamma
是复平面上z=0
周围的单位圆:
(-i\oint_\gamma z^{-3}e^{\frac{z}{2}}dz
)