2012-03-10 2 views
11

에서 식을 수집합니다.팩터는/내가 좋아 방정식을 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

요인 알고리즘 (이 경우에는 분모)에서 제외 할 수 있다면 쉽습니다.

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