我正在尝试使用 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))

但是,几个小时后,计算机仍在研究解决方案。也许它太复杂了?

最佳答案

是的,即使是对方程的明智求解也无法逃脱伴随着最终要求解的高阶方程而最终发生的符号爆炸。例如,您可以分别求解 s11、s21 和 s31 的 eq1、eq2 和 eq5——它们是线性的——并将这些解代入其余方程。有两个是二次的,但是当将它们代入剩余的方程时,就无能为力了。该表达式并没有简化,您将得到一个非常庞大且笨拙的方程,该方程有许多根部,即使删除这些根部,也会为您留下一个不允许通用解的高阶方程。

在这些情况下,最好插入已知值并仅使用 6 个变量中的 6 个方程。

10-06 10:30