我有一些关于同情的问题。 我确实加载了库:
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做到这一点吗?
答案 0 :(得分:3)
我可能错了,但我不认为你可以让它大喊大叫,因为那是一个科学的图书馆所以它是为了支持虚数,但你可以稍微改变一下:
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())