作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 sympy 在值 x = 0 处计算表达式 x/x,从而引发异常或返回 NaN。
例如下面的代码:
x = sympy.Symbol("x")
expr = (x/x).subs({x:0}).evalf()
print(expr)
返回 1。这完全是错误的。的确,当 x 趋近于零时 x/x 的极限是 1,但就其在 x = 0 时的实际值而言,它是不确定的。我希望 sympy 引发被零除异常或返回 NaN,这是数学上正确的答案。
其实问题在我代入x = 0之前就已经存在了:
x = sympy.Symbol("x")
expr = x/x
print(expr)
返回 1。
感谢您提供的任何帮助。
最佳答案
正如您所注意到的,问题在于 x/x
的计算结果立即为 1,因此实际上并没有随后将 x 替换为 0。
避免评估的一种方法是将 evaluate=False 标志传递给 x 与 1/x 的乘积:
>>> expr = Mul(x, 1/x, evaluate=False)
>>> expr
x/x
>>> expr.subs(x, 0)
nan
结果是“Not A Number”,这意味着它的计算结果不是数字。
(在 SymPy 中,所有除法都是乘以倒数:有 Add、Mul、Pow 但没有 Div 或 Sub)。
关于python - 如何让 sympy 承认 0/0 是除以零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078968/
我正在使用intellij v2019.03,gradle 5.2.1和lombok 1.18.12我安装了lombok插件,并且正在运行并构建良好的服务。什么都没改变,但是ide开始失败,编译说找不
我试图让 sympy 在值 x = 0 处计算表达式 x/x,从而引发异常或返回 NaN。 例如下面的代码: x = sympy.Symbol("x") expr = (x/x).subs({x:0}
我是一名优秀的程序员,十分优秀!