2012-03-10 3 views
11

における発現を集めます。ファクター/ Iのような式を有するSympy

その結果、私は

 -R₃      (R₂ + R₃) 
i₁ = V₂⋅───────────────────── + V₁⋅───────────────────── 
     R₁⋅R₂ + R₁⋅R₃ + R₂⋅R₃  R₁⋅R₂ + R₁⋅R₃ + R₂⋅R₃ 

を期待しかし、私はこれまで得ることができる最高はequation.factor(V1,V2)を使用して

 -R₃⋅V₂ + V₁⋅(R₂ + R₃) 
i₁ = ───────────────────── 
    R₁⋅R₂ + R₁⋅R₃ + R₂⋅R₃ 

です。変数を分離する別の方法や要因を決定するオプションがありますか?

答えて

6

因子アルゴリズム(この場合は分母)から何かを除外することができたなら、それは簡単だったでしょう。あなたは手動でもそれらの式を構築するための追加やムル中=を評価Falseのオプション、見てもよい

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₃ 

:私は手動のソリューションですので、ここでは、これを行う方法を知りません。私は素敵な一般的な解決策を知らない。

[3]では、多くの用語を使用している場合はリストの理解になります。

これをv1とv2の多変量多項式として扱うことができるかどうかを確認することもできます。より良い解決策を提供するかもしれません。

3

ここで私はsympy 0.7.2がインストールされていると、この目的のためにsympy.collect()作品:

import sympy 
i1 = (r2*v1 + r3*v1 - r3*v2)/(r1*r2 + r1*r3 + r2*r3) 

sympy.pretty_print(sympy.collect(i1, (v1, v2))) 

# -r3*v2 + v1*(r2 + r3) 
# --------------------- 
# r1*r2 + r1*r3 + r2*r3 
関連する問題