如何在Python中实现从1到无限的求和

0 投票
2 回答
4846 浏览
提问于 2025-04-18 05:36

我想计算一个无限的总和

比如这样:从k=1到无穷大,计算(0.9^k) * r + k+1的和 //或者其他类似的

我最初的想法是这样的:

def infiniteCalc(r):
    result = r
    for k in range(10000000):
        result += 0.9**k + r + k +1 +1 //k is starting at 0, so another +1

    return result

另一个想法是检查一下,在每次迭代中结果是否会变化,但我不确定这样做是否有帮助。

还有一个想法是使用类似极限的概念,但我不知道Python有没有这个功能(如果有的话,这真的是我的解决方案吗?)

2 个回答

1

这里有一个使用SymPy的例子,跟你的表达式有关:

>>> from sympy import *
>>> var('r k')
(r, k)
>>> Sum((0.9**k) * r + k + 1,(k,1,oo))
Sum(0.9**k*r + k + 1, (k, 1, oo))
>>> _.doit()
Sum(0.9**k*r + k + 1, (k, 1, oo))
>>> nsimplify(_, rational=True)
Sum((9/10)**k*r + k + 1, (k, 1, oo))
>>> _.doit()
9*r + oo
2

听起来你的目标是对表达式进行符号执行,而不是想要实际计算出数值。为了实现这个目标,你可以使用一个叫做 SymPy 的库。关于求和的具体参考资料在这里: http://docs.sympy.org/dev/modules/concrete.html#sympy.concrete.summations.Sum

撰写回答