gpt4 book ai didi

python - 如何让 sympy 承认 0/0 是除以零

转载 作者:行者123 更新时间:2023-11-28 18:13:02 28 4
gpt4 key购买 nike

我试图让 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com