Sympy 在将无穷大代入表达式时返回 NaN 值

Sympy returning NaN values when substituting infinity into expression

我正在尝试使用 Sympy 来说明矩阵中的项在变量 t 趋于无穷大时会发生什么。

例如

from sympy import *
t = Symbol('t')
exp(-t).subs({t: oo})

returns 0 哪个是正确的

exp(t).subs({t: oo})

returns oo(无穷大)这也是正确的。

但是,有些表达式returnnan。例如:

(t*exp(-t)).subs({t: oo})

我很确定上面的表达式应该 return 0。 (N(100*exp(-100)) returns 3.72007597602084e-42).

这是错误还是真的'Not a Number'?

当您有 oo*0 时,结果将为 NaN。对于像 x**2*exp(-x) 这样的一些表达式,当 x 趋于无穷大时,可以有一个明确定义的限制。但是如果 SymPy 不知道表达式是什么,那么它就不知道如何计算 oo*0。考虑以下(0*oo 的所有示例):

In [1]: (x*exp(-x)).limit(x, oo)                                                                                                                              
Out[1]: 0

In [2]: (x**2*exp(-x)).limit(x, oo)                                                                                                                           
Out[2]: 0

In [3]: (factorial(x)*exp(-x)).limit(x, oo)                                                                                                                   
Out[3]: ∞

In [4]: (exp(x)*exp(-x)).limit(x, oo)                                                                                                                         
Out[4]: 1

如果您想计算一个明确定义的极限,请使用 limit function/method。否则 0*oo 没有明确定义,因此它的计算结果将是 NaN。