You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python与Matlab求解S参数误差校正方程组结果不同,Python代码是否有误?

S参数误差校正:方程组求解的Python代码问题

我正在做S参数误差校正的相关工作,需要通过三个方程组求解a、b、c三个值,相关的方程组示意图如下:
方程组示意图

我用Matlab实现的代码及结果

先给大家看看我用Matlab写的代码,这个版本的结果是我预期的参考:

syms a b c
eqn1 = (G_A1*a)+(b)-(G_A1*G_M1*c) == G_M1; %short
eqn2 = (G_A2*a)+(b)-(G_A2*G_M2*c) == G_M2; %load
eqn3 = (G_A3*a)+(b)-(G_A3*G_M3*c) == G_M3; %open
%[A,B] = equationsToMatrix([eq1, eq2, eq3], [a, b, c]);
%res = linsolve(A,B);
sol = solve([eqn1, eqn2, eq3], [a, b, c]);
aSol = sol.a;
bSol = sol.b;
cSol = sol.c;

运行后得到的结果:

  • a的解:4.9284 - 2.8505i
  • b的解:-11.1951 -37.7373i
  • c的解:-31.2705 -64.5481i

我用Python实现的代码及结果

之后我用Python尝试同样的求解,代码如下:

import numpy as np

a = np.array([[G_A1,G_A2,G_A3], [1,1,1], [(-G_A1*G_M1),(-G_A2*G_M2),(-G_A3*G_M3)]])
b = np.array([G_M1,G_M2,G_M3])
x = np.linalg.solve(a, b)

但得到的结果和Matlab完全不一样:

  • 第一个值(对应a):-0.24421332 -0.021397452j
  • 第二个值(对应b):-10.1681071 -37.679968ej
  • 第三个值(对应c):-0.77652264 -0.0377357202j

我的疑问

明显两个工具的结果差异很大,我怀疑是Python代码里的矩阵构造出了问题,想请教大家:上述Python代码是否存在错误?

内容的提问来源于stack exchange,提问作者C Vith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:32:23