私は、AZのセットからX、Y、Zのサブセットを取得するという非常に単純な確率計算を行っています(対応する確率x、y、zを使用)。
そして、数式が非常に重いため、それらを処理するために、sympyを使用してこれらの多項式を単純化しようとしています(または収集または因数分解します-正確な定義はわかりません) 。
だから..これを持っている(対応する確率x、y、zを持つAZのセットからX、Y、Zのサブセットを取得する非常に単純な確率計算式)
import sympy as sp
x, y, z = sp.symbols('x y z')
expression = (
x * (1 - x) * y * (1 - x - y) * z +
x * (1 - x) * z * (1 - x - z) * y +
y * (1 - y) * x * (1 - y - x) * z +
y * (1 - y) * z * (1 - y - z) * x +
z * (1 - z) * y * (1 - z - y) * x +
z * (1 - z) * x * (1 - z - x) * y
)
こんなものが欲しい
x * y * z * (6 * (1 - x - y - z) + (x + y) ** 2 + (y + z) ** 2 + (x + z) ** 2)
可能な限り少ない操作( 、、、、、 ...)を持つよう+
に書き直されたポリ-
*
**
、、、してみましfactor()
た。しかし、結果は私の期待とは異なります。ほとんど私は得るcollect()
simplify()
2*x*y*z*(x**2 + x*y + x*z - 3*x + y**2 + y*z - 3*y + z**2 - 3*z + 3)
sympyは多項式を単純な形に組み合わせることができることを私は知っています:
sp.factor(x**2 + 2*x*y + y**2) # gives (x + y)**2
しかし、上記の式から多項式を組み合わせるためにsympyを作成するにはどうすればよいですか?
これがsympyで不可能なタスクである場合、他のオプションはありますか?