我在同情中遇到了方根法的问题。当我使用方法 sympify(my_str)时,我的程序返回一个带sqrt的值:
>>> y = Symbol('y', positive=True)
>>> a = 'y**2'
>>> a = sympify(a)
>>> a
y**2
>>> a = sympy.sqrt(a)
>>> a
sqrt(y**2)
当我不使用方法 sympify(my_str)时,我的程序会返回预期的值:
>>> y = Symbol('y', positive=True)
>>> a = y**2
>>> a
y**2
>>> a = sympy.sqrt(a)
>>> a
y
在我同意我的字符串之后,如何返回所需的值(使用sqrt)?
答案 0 :(得分:2)
由于sympify
函数使用eval
,函数的默认local
参数始终设置为None
:
警告请注意,此函数使用eval,因此不应使用 未经证实的输入。
如果您希望sympify
获取对已定义符号的访问权限,则可以明确传递locals()
字典:
>>> a = 'y**2'
>>> a = sympy.sympify(a, locals=locals())
>>> a
y**2
>>> sympy.sqrt(a)
y
或者使用更安全的缩小dict,其中只包含您需要的符号:
>>> a = 'y**2'
>>> a = sympy.sympify(a, locals={'y': y})
>>> sympy.sqrt(a)
y