import math
k = 0
def factorial(k):
if k == 0:
return 1
else:
return k * factorial(k - 1)
formula = (((factorial(4 * k)) * (1103 + 26390 * k)) / ((factorial(k) ** 4)) * (396 ** (4 * k)))
while k > (1e − 15):
for k in range ():
if k == 0:
return k
else:
return k + formula
print(summation(k, formula))
value_wanted = ((2* math.sqrt(2)) / 9801) * summation(k)
print('1/pi equals' , value_wanted )
这是一个代码,它试图使公式近似pi的值。它给了我一行中的错误'而k> 1e - 15' ,我不知道为什么。我希望代码返回我在公式变量中写入的公式的总和,每次将k值更改为1,直到最后一个项小于1e - 15.
答案 0 :(得分:1)
您无法创建无穷远的范围 - 为了让计算机保持开启状态,您可以使用while循环:
k = 0
while True:
k += 1
...
但是,正如您所看到的,此代码具有永远不会结束的缺点,因为计算机将忙于指望和打开: 普通数值方法不能算作“无穷大” - 在继续实验之前,你应该先看看无穷大的数学概念。
如果您想要数值计算,只需选择“足够大”的数字。对于可以考虑无穷大的代数分辨率,请检查sympy包。