我正在尝试在 SymPy 中计算无限总和。虽然第一个表达式的计算方式符合我的预期,但 SymPy 似乎无法处理第二个表达式。
from sympy import *
n = symbols('n')
print Sum((2)**(-n), (n, 1, oo)).doit()
print Sum((0.5)**(n), (n, 1, oo)).doit()
结果:
1
Sum(0.5**n, (n, 1, oo))
我假设原因是我使用的是 float 而不是整数值。
有没有办法近似求和?
请您参考如下方法:
来自docs:
If it cannot compute the sum, it returns an unevaluated Sum object.
另一种方法是:
In [40]: Sum((Rational(1,2))**(n), (n, 1, oo)).doit()
Out[40]: 1
另一种方法:
In [43]: Sum((0.5)**(n), (n, 1, float('inf'))).doit()
Out[43]: 1.00000000000000
为了近似,您可以取足够大的数而不是无穷大:
In [51]: import sys
In [52]: Sum((0.5)**(n), (n, 1, sys.maxint)).doit()
Out[52]: 1.00000000000000
