繁体   English   中英

sympify之后的sympy.sqrt(string)

[英]Sympy.sqrt after sympify(string)

我在sympy中有平方根方法的问题。 当我使用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)?

由于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM