我有一个关于 sympy 的小问题。 我确实加载了库:
from sympy import *
在程序的某个时刻,我想评估一个函数。
x=Symbol('x', real=True)
sqrt(1-x).subs(x, 9).evalf()
>>> 2.82842712474619*I
Sympy 回答我复杂的值,但我想要一个基本 python 中的错误:
sqrt(-1)
>>> ValueError: math domain error
有人知道如何使用 sympy 来做到这一点吗?
最佳答案
我可能是错的,但我不认为你可以让它那样大喊大叫,因为那是一个科学库,所以它是为了支持虚数而设计的,但你可以稍微改变一下:
x=Symbol('x', real=True)
v = sqrt(1-x).subs(x, 9).evalf()
if not v.is_real:
raise ValueError, "math domain error"
或者您可以创建一个函数:
def assert_real(v):
if not v.is_real:
raise ValueError, "math domain error"
return v
所以你可以这样做:
x = Symbol('x', real=True)
v = assert_real(sqrt(1-x).subs(x, 9).evalf())
关于python - Sympy函数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090073/