我正在尝试找到一种体面的方法(使用 sympy)来规范化右侧常数的线性等式。例如:
x + 1 = y
变成:
x - y = -1
这是我相当老套的解决方案:
def canonical_linear(f):
""" canonicalise a linear equality """
lhs = f.lhs - f.rhs
const_l = [ x for x in lhs.as_ordered_terms() if x.is_number ]
if len(const_l) == 0:
const = 0
elif len(const_l) == 1:
const = const_l[0]
else:
raise NotImplementedError("SHIT")
return sympy.Eq(lhs - const, -const)
这可以改进吗?干杯?