Skip to main content
 首页 » 编程设计

python之为什么 SymPy 不能正确处理实数

2025年05月04日28zhengyun_ustc

我正在尝试在 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