繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM