如何在python中从0到无穷大求和?
问题描述:
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。如何在python中从0到无穷大求和?
答
您不能创建一个范围到无限 - 保持电脑计数上,你可以使用while循环:
k = 0
while True:
k += 1
...
然而,正如你可以看到,这段代码有它永远不会结束的缺点,因为电脑会忙着数on和on: 正常的数字方法不能算作“无穷大” - 在继续实验之前,你应该看看无穷大的数学概念。
如果您需要数字计算,只需选择一个“足够大”的数字。对于考虑无穷大的代数分辨率,请检查sympy包。
什么错误?请阅读[如何提问](https://stackoverflow.com/help/how-to-ask)并改进问题。另外请注意,缩进在python中很重要,而你的方式就不行了。 –
你在用什么编辑器?由于'(1e-15)'中的减号不是一个普通的连字符,而是unicode char MINUS SIGN,所以你得到'SyntaxError:标识符中的无效字符'。 'unicodedata.name(' - ')'会告诉你这个。 –
请修复您的缩进 – jsbueno