[英]Sympy returning NaN values when substituting infinity into expression
我正在尝试使用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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.