如何让Python sympy在计算或返回无穷大时引发异常?

0 投票
1 回答
2086 浏览
提问于 2025-04-17 20:31

我正在使用 sympy 这个 Python 库来进行微分、积分和函数评估。不过,当遇到一些特殊情况,比如除以 0 的时候,自然会出现一些结果是无穷大(Infinity)或者直接出错。

在这些容易出错的情况下,我见过出现 InfinityNaN 的情况。我希望能让 sympy 在处理这些情况时自动抛出异常,也就是报错。

基本上,我有两种不同的评估方式,一种非常简单:

fp = fx.subs(x,p)

这里的 fx 是一个符号表达式(fx=S(fx)),而 p 是一个浮点数。

另外,我还用这种语法来评估:

for x_i in xs:
    ys.append(float(fx.subs(x,x_i)))

在这里,xsys 是列表,而 x_i 是一个浮点数。

在第一种情况下,抛出异常是在评估得到的值之后,而在第二种情况下也是如此。但是,怎么才能避免手动去做这个呢?我觉得最好是设置 sympy 或者 Python 环境,让它特别处理 InfinityNaN 的情况。

1 个回答

2

我不太明白你在问什么,不过你可以用 expr.has(oo, -oo, zoo, nan) 来检查一个表达式是否包含无穷大。

撰写回答