我正在尝试使用sympy.solve()来解决一个包含6个方程和6个未知数的问题系统:
import sympy as sp
S11A,S21A,S22A = sp.symbols('S11A S21A S22A')
S11B,S21B,S22B = sp.symbols('S11B S21B S22B')
s11,s21,s31,s22,s31,s32,s33,G3 = sp.symbols('s11 s21 s31 s22 s31 s32 s33 G3')
eq1 = S11A - s11 + s31*G3*s31/(1-s33*G3)
eq2 = S22A - s22 + s32*G3*s32/(1-s22*G3)
eq3 = S21A - s21 + s31*G3*s32/(1-s33*G3)
eq5 = S11B - s11 + s21*G3*s21/(1-s22*G3)
eq6 = S22B - s33 + s32*G3*s32/(1-s33*G3)
eq7 = S21B - s31 + s21*G3*s32/(1-s22*G3)
soln = sp.solve([eq1,eq2,eq3,eq5,eq6,eq7],(s11,s31,s33,s22,s32,s21))
但是,几个小时后,计算机仍在使用该解决方案。也许它太复杂了?
答案 0 :(得分:0)
是的,即使是明智的方程式求解也无法逃脱最终伴随伴随的高阶方程式求解而最终发生的符号爆炸。例如,您可以分别求解s11,s21和s31的eq1,eq2和eq5(它们是线性的),然后将这些解决方案替换为其余方程式。有两个平方,但是当它们被代入剩余方程式时,便无能为力了。表达式并不会简化,您会看到一个非常庞大且笨拙的方程式,其中包含许多部首,即使删除了这些部首,也会留下一个不允许通用解的高阶方程。
在这种情况下,最好插入已知值并仅在6个变量中使用6个方程。