gpt4 book ai didi

python - 如何检查 sympy 关系是否适用于某些值

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:01 25 4
gpt4 key购买 nike

我已经使用关系 GreaterThan 定义了一些约束 -

x = sympy.Symbol('x')
constraint1 = (x >= 0)

我现在想检查约束是否适用于任意值“x”。我尝试使用 sympy.checksol,但出现属性错误,所以我猜这不是正确的方法 -

In [7]: sympy.checksol(constraint1, {x: 3})
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-cc41bd5986e3> in <module>()
----> 1 sympy.checksol(constraint1, {x: 3})

/Library/Python/2.7/site-packages/sympy/solvers/solvers.pyc in checksol(f, symbol, sol, **flags)
200 if attempt == 0:
201 val = f.subs(sol)
--> 202 if val.atoms() & illegal:
203 return False
204 elif attempt == 1:

AttributeError: 'bool' object has no attribute 'atoms'

我什至尝试过 constraint1.evalf 但它总是返回自身 -

In [10]: constraint1.evalf(subs={x: 3})
Out[10]: x >= 0

In [11]: constraint1.evalf(subs={x: -3})
Out[11]: x >= 0

那么我如何评估其符号的给定值的关系约束?

最佳答案

evalf 用于表达式的数值计算,这不是您想要的。正如您所发现的,只需使用 subs

>>> constraint1.subs(x, -3)
False

请注意,如果您插入一些它无法识别的内容,它将保持未计算状态:

>>> contraint1.subs(x, y)
y >= 0

另外,subs 只做基本的检查。如果你想要更高级的检查,你应该使用 ask(ask 目前不转换不等式,所以你需要将它们转换为 Q.positiveQ.nonnegative 手动)。

关于python - 如何检查 sympy 关系是否适用于某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20025238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com