我正在尝试使用 Sympy显示当变量 t
趋于无穷大时矩阵中的项会发生什么情况。
例如。
from sympy import *
t = Symbol('t')
exp(-t).subs({t: oo})
返回 0
这是正确的并且
exp(t).subs({t: oo})
返回oo
(无穷大),这也是正确的。
但是,某些表达式会返回 nan
。例如:
(t*exp(-t)).subs({t: oo})
我很确定上面的表达式应该返回0
。 (N(100*exp(-100))
返回 3.72007597602084e-42
)。
这是一个错误还是它真的“不是数字”?
最佳答案
当您有 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
函数/方法。否则 0*oo
未明确定义,因此它将计算为 NaN。
关于python - Sympy 将无穷大替换为表达式时返回 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58210158/