如何在python中从0到无穷大求和?

时间:2017-03-16 13:13:56

标签: python-3.x

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.

1 个答案:

答案 0 :(得分:1)

您无法创建无穷远的范围 - 为了让计算机保持开启状态,您可以使用while循环:

k = 0
while True:
    k += 1
    ...

但是,正如您所看到的,此代码具有永远不会结束的缺点,因为计算机将忙于指望和打开: 普通数值方法不能算作“无穷大” - 在继续实验之前,你应该先看看无穷大的数学概念。

如果您想要数值计算,只需选择“足够大”的数字。对于可以考虑无穷大的代数分辨率,请检查sympy包。