Ich versuche, eine einfache Einschränkung in Sympy zu lösen, die den Or
Logik Operator enthält:arithmetische Constraints mit logischen Operatoren in Sympy Solving
from sympy import *
a,b = symbols("a b")
print(solve(Or(Eq(3, b*2), Eq(3, b*3))))
# In other words: (3 equals b*2) or (3 equals b*3)
# [1,3/2] was the answer that I expected
Überraschenderweise führt dies zu einem Fehler statt:
TypeError: unsupported operand type(s) for -: 'Or' and 'int'
ich kann dieses Problem umgehen Piecewise
verwenden, aber das ist viel ausführlicher:
from sympy import *
a,b = symbols("a b")
print(solve(Piecewise((Eq(3, b*2),Eq(3, b*2)), (Eq(3, b*3),Eq(3, b*3)))))
#prints [1,3/2], as expected
Überraschenderweise
, diese Behelfslösung schlägt fehl, wenn ich versuche, für zwei Variablen zu lösen, anstatt ein:
from sympy import *
a,b = symbols("a b")
print(solve([Eq(a,3+b),Piecewise((Eq(b,3),Eq(b,3)), (Eq(b,4),Eq(b,4)))]))
#AttributeError: 'BooleanTrue' object has no attribute 'n'
Gibt es eine zuverlässige Art und Weise zu lösen Einschränkungen wie diese in Sympy?