节点电压法中 G 矩阵的性质

前面几篇文章已经把 R、L、C、RLC 串联支路和源类元件陆续写进了节点电压法。写到这里,读者很容易产生一个新的问题:程序里反复求解的那个GG矩阵,到底有什么结构?

这个问题不只是数学洁癖。电磁暂态仿真每一个时间步都要求解网络方程。如果矩阵有对称性、稀疏性、正定性,程序就可以用更省内存、更快的分解方法;如果矩阵固定不变,程序还可以在实时运行前提前把矩阵处理好。反过来,如果矩阵奇异、不对称,或者每一步都在变,求解器要付出的代价就完全不同。

这一篇先不写具体稀疏矩阵程序,只把几个最重要的性质讲清楚:对称性、正定性、奇异性,以及它们在 EMT 计算里的工程意义。

先看几种会在节点电压法里反复遇到的矩阵形状。这里先不急着给它们下结论,因为单个支路的局部矩阵和完整网络的全局矩阵不是一回事。局部矩阵可能对称,也可能不对称;它还常常是奇异的。真正能不能求解,要看它被装配进什么样的完整网络。

第一种形状来自普通无源支路。把上一篇文章里的 RLC 串联支路拿回来,先不接任何电压源,只看这条支路本身。梯形离散以后,它可以整体看成一个等效导纳GeqG_{\mathrm{eq}}和一个历史项IhisI_{\mathrm{his}}

RLC 串联支路的节点电压
无源 RLC 串联支路本身会贡献上下镜像的导纳项

只看 RLC 这条支路对节点a,ba,b的贡献,它进入节点方程时会出现这种上下镜像的小矩阵:

[iaib]=[GeqGeqGeqGeq][uaub]+[IhisIhis]\begin{bmatrix}i_a\\i_b\end{bmatrix}=\begin{bmatrix}G_{\mathrm{eq}}&-G_{\mathrm{eq}}\\-G_{\mathrm{eq}}&G_{\mathrm{eq}}\end{bmatrix}\begin{bmatrix}u_a\\u_b\end{bmatrix}+\begin{bmatrix}I_{\mathrm{his}}\\-I_{\mathrm{his}}\end{bmatrix}

这里的“无源”说的是物理支路仍然只是 R、L、C;IhisI_{\mathrm{his}}是离散递推带来的历史项,它进右端向量,不是外部电压源或外部电流源。

但这类上下镜像的小矩阵还有另一个特点:只看它自己,往往也是奇异的。最简单的电阻支路就是这样。如果整个网络只有节点a,ba,b,而且没有任何一个节点接参考地,那么矩阵是:

没有参考地的电阻支路
浮地电阻支路只规定电压差,不规定整体参考电位
Yfloat=[GGGG]Y_{\mathrm{float}}=\begin{bmatrix}G&-G\\-G&G\end{bmatrix}

它看起来很正常,也仍然是对称的,但它的两行相加为零:

[GG]+[GG]=[00]\begin{bmatrix}G&-G\end{bmatrix}+\begin{bmatrix}-G&G\end{bmatrix}=\begin{bmatrix}0&0\end{bmatrix}

所以:

det(Yfloat)=0\det(Y_{\mathrm{float}})=0

这时矩阵奇异。问题不是电阻错了,而是网络缺少参考点:ua=100,ub=0u_a=100,u_b=0ua=110,ub=10u_a=110,u_b=10对这条支路来说压差一样,支路电流也一样。

所以这个例子想观察的不是“一个无源局部块已经能单独求解”,而是两件事:它会给全局GG矩阵贡献一种对称结构;如果完整网络没有参考点,这种结构也可能留下整体电位平移的自由度。

第二种形状来自受控源。上一篇讲过压控电流源 VCCS。它的输出端接在节点a,ba,b之间,控制量来自节点c,dc,d的电压差:

受控源的输出端口和控制端口
受控源的输出端口和控制端口不一定是同一组节点
i=gm(ucud)i=g_m(u_c-u_d)

它对矩阵的局部贡献可以写成:

Yvccs=[00gmgm00gmgm00000000]Y_{\mathrm{vccs}}=\begin{bmatrix}0&0&g_m&-g_m\\0&0&-g_m&g_m\\0&0&0&0\\0&0&0&0\end{bmatrix}

这个局部矩阵看起来更别扭:例如a,ca,c位置有gmg_m,但c,ac,a位置是00。同时它有大量零行、零列,单独拿出来当然也不能代表一个完整可解网络。这里想观察的是另一件事:受控源会把“输出端”和“控制端”交叉耦合起来,使局部导纳贡献一般不再满足转置对称性。

从一个支路的装配开始

先回到最熟悉的无源电阻支路。设电阻接在节点aa和节点bb之间,电流参考方向从aabb,支路电流为:

i=G(uaub)i=G(u_a-u_b)

按“流出节点为正”的约定,对两个端点写成矩阵就是:

[iaib]=[GGGG][uaub]\begin{bmatrix}i_a\\i_b\end{bmatrix}=\begin{bmatrix}G&-G\\-G&G\end{bmatrix}\begin{bmatrix}u_a\\u_b\end{bmatrix}

这个小矩阵就是支路对全局GG矩阵的局部贡献。装配时,程序只是把这四个数加到全局矩阵中节点a,ba,b对应的位置:

GaaGaa+G,GabGabG,GbaGbaG,GbbGbb+GG_{aa}\leftarrow G_{aa}+G,\quad G_{ab}\leftarrow G_{ab}-G,\quad G_{ba}\leftarrow G_{ba}-G,\quad G_{bb}\leftarrow G_{bb}+G

电感、电容经过 Dommel 形式离散以后,只要当前步能写成:

i=Geq(uaub)+Ihisi=G_{\mathrm{eq}}(u_a-u_b)+I_{\mathrm{his}}

它们进入矩阵的方式也是同一个结构。区别只是GG变成GeqG_{\mathrm{eq}},历史项IhisI_{\mathrm{his}}进入右端向量,而不是进入GG矩阵。

为什么无源网络通常是对称的

无源 R、L、C 支路离散后,每条支路给出的局部矩阵都是:

[GGGG]\begin{bmatrix}G&-G\\-G&G\end{bmatrix}

它天然满足转置不变:

Ybranch=YbranchTY_{\mathrm{branch}}=Y_{\mathrm{branch}}^T

很多这样的对称小矩阵装配到一起,全局矩阵仍然对称。所以,对只含线性无源支路的网络,节点导纳矩阵通常是对称的。

这里还会遇到一个词:互易性。粗略地说,互易就是把激励位置和响应位置互换以后,传递关系不变。用导纳矩阵写,就是节点mm的电压对节点nn电流的影响,和节点nn的电压对节点mm电流的影响是成对相等的:

Ymn=YnmY_{mn}=Y_{nm}

推广到整个矩阵,就是:

Y=YTY=Y^T

普通 R、L、C 无源网络通常具有这种互易性,所以它们装配出来的导纳矩阵容易是对称的。理想变压器这类元件本身也可以是互易的,但它往往不是一个简单的“导纳支路”,而是电压、电流约束关系,实际求解时常常要进入 MNA;这会让矩阵形式变得更复杂,不再是单纯的普通节点导纳矩阵。

这个对称性可以从两个角度理解。

第一个角度是 KCL 和支路电流关系。支路电流只由两端电压差决定:从aa看出去是G(uaub)G(u_a-u_b),从bb看出去就是G(ubua)G(u_b-u_a)。同一条支路对两个端点的影响大小相等、符号相反,于是矩阵中a,ba,b两个位置会成对出现G-G

第二个角度是功率或能量。对一个电阻支路,瞬时耗散功率为:

p=G(uaub)2p=G(u_a-u_b)^2

这是一个平方项,不会因为把节点a,ba,b的名字交换一下就改变。对整个无源网络,所有支路贡献加起来可以写成类似:

uTGu=G(umun)2u^TGu=\sum_{\ell}G_\ell(u_m-u_n)^2

这里\ell表示第\ell条支路,m,nm,n是这条支路的两个端点。这个式子告诉我们:无源导纳矩阵的二次型来自各条支路电压差的平方和。它反映的是耗散或离散后的等效储能关系,因此自然带有很强的对称结构。

所以,说“无源网络的GG矩阵对称”时,不必把原因只归结成一句“能量守恒”。更准确地说:无源、互易、只由两端电压差决定的支路,在 KCL 装配时会给出成对的对称贡献;从功率二次型看,这种贡献又对应电压差平方项。

正定和半正定

对称不等于正定。一个矩阵对称,只说明:

G=GTG=G^T

正定讨论的是:

uTGu>0u^TGu>0

是否对所有非零向量uu都成立。

对无源电阻网络或 Dommel 等效导纳网络来说,通常可以得到:

uTGu=G(umun)20u^TGu=\sum_{\ell}G_\ell(u_m-u_n)^2\ge 0

因此它至少有半正定的味道。只要所有GG_\ell都是正数,任何支路电压差都会贡献非负项。

但“非负”还不是“正”。如果整个网络完全浮起来,没有任何参考地,那么所有节点电压一起加上同一个常数,所有支路电压差都不变:

umun不变u_m-u_n\quad\text{不变}

于是uTGuu^TGu也不变。更具体地说,对一个只靠支路互相连接、没有参考点的网络,向量:

1=[111]T\mathbf{1}=\begin{bmatrix}1&1&\cdots&1\end{bmatrix}^T

通常会落在零空间里:

G1=0G\mathbf{1}=0

这时矩阵不是正定,而是半正定,并且是奇异的。

真正让矩阵变成正定的,往往不是“无源”本身,而是参考点和网络连通性。选定参考地以后,如果每个待求节点都通过某些导纳路径和参考点连通,那么非零节点电压通常会造成至少一条支路电压差不为零,于是:

uTGu>0u^TGu>0

这时GG才更接近我们在线性代数里喜欢的对称正定矩阵。

奇异性从哪里来

奇异的意思很直接:矩阵不能唯一求解。数学上可以看行列式:

det(G)=0\det(G)=0

工程上更常见的感觉是:节点电压没有唯一参考,或者某些节点没有被足够的方程约束住。

最典型的例子就是上一篇反复提到的浮地网络。两个节点之间只有一个电阻:

[iaib]=[GGGG][uaub]\begin{bmatrix}i_a\\i_b\end{bmatrix}=\begin{bmatrix}G&-G\\-G&G\end{bmatrix}\begin{bmatrix}u_a\\u_b\end{bmatrix}

这个矩阵的两行相加为零:

[GG]+[GG]=[00]\begin{bmatrix}G&-G\end{bmatrix}+\begin{bmatrix}-G&G\end{bmatrix}=\begin{bmatrix}0&0\end{bmatrix}

所以它的秩不满。只要uaubu_a-u_b相同,支路状态就相同。例如:

ua=100,ub=0u_a=100,\quad u_b=0

和:

ua=110,ub=10u_a=110,\quad u_b=10

对这个电阻支路来说没有区别。差值都是100100,电流也一样。问题是节点电压法要求的是每个节点相对于参考地的电压,而不是只求支路压差。因此没有参考点时,矩阵会留下一个“整体平移”的自由度。

除了浮地,奇异还可能来自:

  • 孤立节点或孤立子网络没有接到参考点。
  • 只有理想电流源,没有并联导纳或其他约束路径。
  • 理想电压源、受控电压源等约束没有用 MNA 正确引入额外未知量。
  • 开关断开后,网络被切成了多个没有参考的电气孤岛。

这些情况本质上都在说同一件事:矩阵里某些自由度没有被方程真正钉住。

对称矩阵为什么对 EMT 有用

在 EMT 程序里,每一个时间步常见的线性方程形如:

Gu=bG u = b

这里uu是当前步节点电压,bb是右端向量,里面包含电流源、历史项和外部注入。

如果GG是对称的,程序在存储和求解时都能占便宜。最直观的好处是:矩阵上下三角互为镜像,理论上只需要存储一半的非零结构。更重要的是,对称正定矩阵可以使用 Cholesky 这类分解;对称但不正定的 MNA 矩阵,也可以使用适合对称不定矩阵的分解方法。

这里要注意一个说法:工程程序一般不会真的先求出G1G^{-1},再每一步做:

u=G1bu=G^{-1}b

显式求逆通常又慢又不稳定。更常见的做法是对GG做分解,例如:

G=LLTG=LL^T

或者其他适合稀疏矩阵的分解形式。分解以后,每个时间步只需要更新右端bb,再做前代、回代求出uu

这就是为什么 EMT 程序非常喜欢固定步长和固定拓扑。以 Dommel 形式为例,电感和电容的等效导纳分别含有时间步长TT

GL=T2L,GC=2CTG_L=\frac{T}{2L},\qquad G_C=\frac{2C}{T}

如果TT不变,元件参数不变,开关拓扑也不变,那么全局GG矩阵就不变。实时运行前,程序可以先完成:

  • 节点编号。
  • 矩阵非零结构分析。
  • GG矩阵装配。
  • 矩阵分解。

实时运行时,每一拍主要做:

  • 更新历史项和源注入。
  • 组装右端向量bb
  • 用已经分解好的矩阵求解节点电压。
  • 回算支路电流和新的历史项。

这对实时仿真尤其关键。因为实时程序最怕每一步都重新分析矩阵结构、重新分解矩阵,那会让计算耗时变得不可控。

什么时候 G 不再对称

上一篇讲受控源时已经看到一个典型情况:压控电流源 VCCS 的输出端在a,ba,b,控制量却来自c,dc,d。例如:

i=gm(ucud)i=g_m(u_c-u_d)

它对节点a,ba,b的 KCL 有贡献,但这个贡献写在c,dc,d对应的列上。装配时,矩阵里会出现类似这样的局部贡献:

[00gmgm00gmgm00000000]\begin{bmatrix}0&0&g_m&-g_m\\0&0&-g_m&g_m\\0&0&0&0\\0&0&0&0\end{bmatrix}

这类局部贡献会把全局矩阵推向非对称。原因也很清楚:输出端和控制端不是同一对节点。控制电压影响输出电流,但输出节点电压不一定反过来以同样方式影响控制端电流。这是非互易关系,不再是普通无源两端支路那种“你影响我,我也以同样大小影响你”的结构。

除了受控源,下面这些情况也可能让矩阵性质变复杂:

  • 理想电压源、受控电压源、理想变压器等需要 MNA,引入额外支路电流未知量。
  • 电力电子开关改变拓扑,使矩阵结构随时间变化。
  • 非线性元件在线性化后,等效导纳随工作点变化。
  • 变步长积分会让电感、电容的GeqG_{\mathrm{eq}}随时间步变化。
  • 某些数值稳定化、小电阻、小电导处理会改变矩阵条件数。

所以“无源网络对称”是一个很有用的基础直觉,但不能把它当成所有电路矩阵的默认真理。

小结

这一篇真正想整理的是几个容易混在一起的词:

  • 对称:矩阵满足G=GTG=G^T。无源、互易、线性支路通常给出对称装配。
  • 半正定uTGu0u^TGu\ge 0。无源支路的电压差平方和通常具有这个性质。
  • 正定:对所有非零uu都有uTGu>0u^TGu>0。这通常还需要参考点和足够的导纳连通性。
  • 奇异:矩阵不能给出唯一解。常见原因是浮地、孤岛、缺少约束或理想源处理不完整。
  • 固定矩阵:如果步长、拓扑和参数不变,GG可以提前装配和分解,实时计算时主要更新右端向量。
  • 非对称矩阵:受控源和非互易关系会让输出端与控制端交叉耦合,从而破坏普通无源网络的对称结构。

从 EMT 的角度看,理解这些性质不是为了炫耀线性代数,而是为了知道程序为什么要选参考地,为什么要避免奇异网络,为什么喜欢固定步长,为什么开关和受控源会让求解器更麻烦。矩阵不是凭空冒出来的,它只是把每条支路的物理关系,按节点电压法装配到了一起。


相关内容

Buy me a coffee~
RLC侠 支付宝支付宝
RLC侠 微信微信