python - Sympy 将无穷大替换为表达式时返回 NaN 值

标签 python sympy nan exponent infinity

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

相关文章:

python pandas dataframe线程安全吗?

python - "2+2=5"Python版

python - matplotlib 中的球面坐标图

python - 如何过滤 NaN( Pandas )?

c++ - C/C++ NaN 解析

python - 如何设置列表框中项目的颜色

python - Django 事务管理 block 以未决的 COMMIT/ROLLBACK 结束

python - 想用 sympy 做多变最小化

python - 在 SymPy 中用矩阵替换标量

python - 来自带有 NaN 的 Pandas 数据框的 seaborn 热图