问题描述
p = x & ~y
q = x & y
现在,我想根据系统中其他变量(如果可能,是LHS变量)来获取x
的表达式,或者发现无法获得它。
import sympy as s
p,q = s.symbols('p,q')
x,y = s.symbols('x,y')
v = s.And(s.Eq(p,x & y),s.Eq(q,x & ~y))
我看过solve()
和solveset()
,但它们似乎在处理线性方程。
>>> s.solveset(v,x)
raise ValueError("%s is not a valid SymPy expression" % f)
ValueError: Eq(p,x & y) & Eq(q,x & ~y) is not a valid SymPy expression
还有其他选择吗?
我真的不明白documentation。据此,以下内容应该有效,因为它清楚地表明在sympy.solvers.solvers.solve(f,*symbols,**flags)
中,f可以是关系表达式或 boolean 。
>>> s.And(s.Equivalent(p,x &y),s.Equivalent(q,x&~y)).simplify()
(x | ~p) & (x | ~q) & (y | ~p) & (~p | ~q) & (~q | ~y) & (p | q | ~x) & (q | y | ~x) & (p | ~x | ~y)
>>> s.solve(s.And(s.Equivalent(p,x&~y)),x)
TypeError: unsupported operand type(s) for -: 'And' and 'int'
>>> s.solveset(s.And(s.Equivalent(p,x)
ValueError: (Equivalent(p,x & y)) & (Equivalent(q,x & ~y)) is not a valid SymPy expression
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)