SymPy中的表达式简化

6

我希望能够实现这种简化形式:e+ac+ad+bc+bd = e+(a+b)(c+d)。SymPy的简化函数都不能以这种方式工作。在SymPy或Python的其他地方是否有其他方法可以获得这种简化形式?

1个回答

7
您可以使用collect(expr, e, func=factor)
In [5]: expr = e + a*c + a*d + b*c + b*d

In [6]: collect(expr, e, func=factor)
Out[6]: e + (a + b)⋅(c + d)

可以对一般情况进行操作吗?例如,如果我们不知道第一个变量的名称是“e”?或者如果我们不知道任何变量的名称呢? - Giorgi Bakhtadze
一般来说,你需要了解一些关于如何进行“部分”因式分解的方式。这样的事情并没有明确定义,因为通常有许多不同的方法可以因式分解表达式的不同部分(与因式分解整个表达式相反,后者总是唯一的)。 - asmeurer
如果我们的表达式中不是“e”,而是其他符号,是否可以进行同样的简化呢?例如a + ac + ad + bc + bd = a + (a + b)⋅(c + d)。但是上述方法在这种情况下不起作用。 - Giorgi Bakhtadze
@GiorgiBakhtadze 我认为你需要将 c + d 替换成一个符号,比如 expr.subs(c, x - d) ,然后再对其进行收集。 - asmeurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接