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