Sympy中的因子/收集表达

vir*_*tor 11 python symbolic-math sympy symbolic-computation

我有一个等式:

     R??V? + R??V? - R??V?
i? = ?????????????????????
     R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

已定义,我想将其拆分为仅包含单个变量的因子 - 在本例中为V1和V2.

所以我希望如此

        -R?                        (R? + R?)
i? = V??????????????????????? + V???????????????????????
        R??R? + R??R? + R??R?      R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

但到目前为止我能做到的最好的是

     -R??V? + V??(R? + R?)
i? = ?????????????????????
     R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

使用equation.factor(V1,V2).因果或其他方法还有一些其他选项可以进一步分离变量吗?

Kra*_*nov 6

如果可以从因子算法(在这种情况下是分母)中排除某些东西,那将很容易.我不知道如何做到这一点,所以这是一个手动解决方案:

In [1]: a
Out[1]: 

r??v? + r??v? + r??v?
?????????????????????
r??r? + r??r? + r??r?

In [2]: b,c = factor(a,v2).as_numer_denom()

In [3]: b.args[0]/c + b.args[1]/c
Out[3]: 

        r??v?                v??(r? + r?)    
????????????????????? + ?????????????????????
r??r? + r??r? + r??r?   r??r? + r??r? + r??r?
Run Code Online (Sandbox Code Playgroud)

您还可以查看Add和Mul中的evaluate = False选项,以手动构建这些表达式.我不知道一个很好的通用解决方案.

如果你有很多术语,在[3]中可以是列表理解.

您还可以检查是否可以将其视为v1和v2中的多元多项式.它可能会提供更好的解决方案.