当矩阵系数中出现多个符号时,使用SymPy求解线性方程组

时间:2016-02-07 01:24:22

标签: python sympy

我正在尝试解决看起来像这样的电子网络:

   un             uf
o-->-----[zb]------<---o
+     |         |      +
pn   [yn]      [yf]    pf
-     |         |      -
o----------------------o

我进行节点分析并得到一个等效的方程组,看起来像这两个独特的p和s组。

un1, un2, uf1, uf2, pn1, pn2, pf1, pf2, yn, yf, zp = symbols('un1 un2 uf1 uf2 pn1 pn2 pf1 pf2 yn yf zp')
eqns=[un1 -pn1*(yn + 1/zp) - pf1*(-1/zp), 
      uf1 - pn1*(-1/zp) + pf1*(yf+1/zp),
      un2 - pn2*(yn + 1/zp) - pf2*(-1/zp),
      uf2 - pn2*(-1/zp) - pf2*(yf + 1/zp)]

我想用u和p项求解yn,zp和yf,因为给出了u和p项。 (由u和p表示un1,un2,uf1,uf2,pn1,pn2,pf1,pf2)。

我在底部找到了响应并尝试使用linsolve函数,但我得到了null集:

In: linsolve(eqns, [yn, yf, zp])
Out: EmytySet()

如果我为方程式输入虚拟系数,那么它的行为与预期相符

In: Y11, Y12, Y21, Y22 = symbols('Y11, Y12, Y21, Y22')
In: eqns_test = [un1 -pn1*Y11 - pf1*Y12, 
                 uf1 - pn1*Y21 - pf1*Y22,
                 un2 - pn2*Y11 - pf2*Y12,
                 uf2 - pn2*Y21 - pf2*Y22]
In: linsolve(eqns_test, Y11, Y12, Y21, Y22)
Out:{((pf1*un2 - pf2*un1)/(pf1*pn2 - pf2*pn1), (-pn1*un2 + pn2*un1)/(pf1*pn2 - pf2*pn1), (pf1*uf2 - pf2*uf1)/(pf1*pn2 - pf2*pn1), (-pn1*uf2 + pn2*uf1)/(pf1*pn2 - pf2*pn1))}

我该如何解决这个方程组?

https://stackoverflow.com/questions/31547657/how-can-i-solve-system-of-linear-equations-in-sympy#=

1 个答案:

答案 0 :(得分:0)

您的系统是非线性的,因此您需要使用sympy的nonlinsolve()求解器。

printing.init_printing(use_latex='mathjax')
from sympy import *
import sympy as sp
un1, un2, uf1, uf2, pn1, pn2, pf1, pf2, yn, yf, zp = symbols('un1 un2 uf1 uf2 pn1 pn2 pf1 pf2 yn yf zp')
eqns=[un1 -pn1*(yn + 1/zp) - pf1*(-1/zp), 
    uf1 - pn1*(-1/zp) + pf1*(yf+1/zp),
    un2 - pn2*(yn + 1/zp) - pf2*(-1/zp),
    uf2 - pn2*(-1/zp) - pf2*(yf + 1/zp)]
sol=nonlinsolve(eqns, [yn, yf, zp])
pprint(sol)

输出:

⎧⎛pf₁⋅un₂ - pf₂⋅un₁ - pn₁⋅un₂ + pn₂⋅un₁  -(uf₁⋅(pf₁⋅pn₂ - pf₂⋅pn₁) + (pf₁ + pn
⎨⎜─────────────────────────────────────, ─────────────────────────────────────
⎩⎝          pf₁⋅pn₂ - pf₂⋅pn₁                               pf₁⋅(pf₁⋅pn₂ - pf₂

₁)⋅(pn₁⋅un₂ - pn₂⋅un₁))   pf₁⋅pn₂ - pf₂⋅pn₁⎞⎫
────────────────────────, ─────────────────⎟⎬
⋅pn₁)                     pn₁⋅un₂ - pn₂⋅un₁⎠⎭
​


enter image description here