如何在Python中实现从1到无限的求和
我想计算一个无限的总和
比如这样:从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