1
私はこの種の単純化を実現したい: e+ac+ad+bc+bd = e+(a+b)(c+d)
。 SymPyの単純化関数のどれもがこのように働かなかった。 SymPyやPythonの他のどこかに、この種の単純化を行う方法がありますか?SymPyの式の簡素化
私はこの種の単純化を実現したい: e+ac+ad+bc+bd = e+(a+b)(c+d)
。 SymPyの単純化関数のどれもがこのように働かなかった。 SymPyやPythonの他のどこかに、この種の単純化を行う方法がありますか?SymPyの式の簡素化
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」であることがわからない場合あるいは、変数の名前がわからないのですか? –
一般に、この「部分的な」因数分解を行う方法について何かを知る必要があります。そのようなことはよく定義されていません。なぜなら、異なる部分に式を因数分解できる多くの方法があるからです(表現全体を因数分解するのではなく、常に一意です)。 – asmeurer
"e"の代わりに他の式の部分からの記号があれば、同じ種類の簡略化を行うことはできますか?例えば、a + a * c + a * d + b * c + b * d = a +(a + b)・(c + d)。この場合、上記の方法は機能しません。 –