我有一个关于渐变的小问题。我用以下命令加载了这个库:
from sympy import *在我的程序的某个点上,我想评估一个函数。
x=Symbol('x', real=True)
sqrt(1-x).subs(x, 9).evalf()
>>> 2.82842712474619*ISympy回答我复数值,但我希望像在basic python中那样出现错误:
sqrt(-1)
>>> ValueError: math domain error有人知道如何使用sympy来做这件事吗?
发布于 2013-06-13 22:58:21
我可能是错的,但我不认为你可以让它这样叫喊,因为那是一个科学库,所以它是为支持虚数而设计的,但你可以稍微改变一下:
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())https://stackoverflow.com/questions/17090073
复制相似问题