2.3 网络方程与计算机辅助分析


2.3 网络方程与计算机分析

节点电压法以节点电位为未知量,利用 KCL 把电路整理成线性方程组 AU=I,配合稀疏矩阵求解器即可分析上千节点的网络。本节从手术台的最后一步出发,手工推导一个小网络的节点方程,再用 NumPy 求解并验证,展示"电路分析即线性代数"的完整工作流,并讨论集中参数模型的适用边界。

拆到第三层板子,手术台案件只剩一个疑问:整板上百家器件的直流偏置到底分布如何?逐级手测太慢,运维希望有一张"全局电压地图"。这需求把电路分析从"单回路手工"推向"网络化建模"——正是电路 CAD 的核心思想。

节点电压法:KCL 的矩阵化

选一个参考节点(地),对其余 n-1 个节点列 KCL:流出节点的电流之和为零。每个电阻支路的电流用节点电位差除以电阻表达,整理后得到一个对称正定的电导矩阵方程 G·V = I,右端是注入各节点的电流源。这一步没有任何新物理,纯粹是 KCL 的重新排版,但它带来质变:电路求解从"技巧活"变成"填表活"。

以一个五节点梯形电阻网络为例(电源 12V 经三级 RC 去耦网络给两级负载供电),手工写方程容易出错,直接交给程序:

import numpy as np # 网络描述:节点0=地;节点1 接 12V 源(经 0.5 欧内阻 R0) # R1: 1-2, R2: 2-0, R3: 2-3, R4: 3-0, R5: 3-4, R6: 4-0 Vs, R0 = 12.0, 0.5 R = {('1','2'):2.0, ('2','0'):40.0, ('2','3'):1.5, ('3','0'):30.0, ('3','4'):1.0, ('4','0'):20.0} nodes = ['1','2','3','4'] idx = {n:i for i,n in enumerate(nodes)} G = np.zeros((4,4)) I = np.zeros(4) def stamp(a, b, val): ia, ib = idx[a], idx[b] G[ia,ia] += val; G[ib,ib] += val G[ia,ib] -= val; G[ib,ia] -= val for (a,b), r in R.items(): stamp(a, b, 1/r) # 源支路:节点1 经 R0 接到 12V —— 等效为注入电流 Vs/R0 与自导纳 1/R0 G[idx['1'],idx['1']] += 1/R0 I[idx['1']] += Vs/R0 V = np.linalg.solve(G, I) for n, v in zip(nodes, V): print(f"节点 {n} 电位 = {v:7.4f} V") print(f"电源实际输出电流 = {(Vs - V[0]) / R0:.4f} A")

四行求解结果就是整板的"电压地图":各级去耦后的电位跌落、每个电阻上的功率(电位差平方除以电阻)都能顺手算出。如果把 R 换成复阻抗,同样代码直接支持正弦稳态(NumPy 复数原生支持);这正是商业电路仿真器直流/交流分析的骨架——所谓 SPICE,本质是把 stamp 函数扩展到各类器件模型。

支路、回路、节点三法对比

方法 未知量 方程规模 适用
支路电流法 每支路电流 支路数 b 小网络、教学推导
回路/网孔法 回路电流 b-n+1 平面网络、电流源少
节点电压法 节点电位 n-1 通用、易编程、稀疏

节点法胜在通用与规整:方程数只随节点数增长,矩阵高度稀疏(每行只有相邻节点非零),大型稀疏求解器可以处理十万节点级网络。改进节点法再补充电流未知量处理电压源与电感,就是现代仿真器的标准配方。

💡 关键直觉:读懂一段电路分析代码,看的不是语法而是"stamp"——每个器件如何往矩阵的四个位置加减自己的贡献。器件模型再复杂,也只是贡献的数值不同。

图:从电路到矩阵的映射

图:从电路到矩阵的映射

集中参数的边界:什么时候矩阵不够用

节点法的前提是"集中参数"——元件尺寸远小于工作波长,电流在元件内"同时"到达。第 1.3 节的波长换算给出了判据:特征尺寸小于波长十分之一时误差通常可接受。50 Hz 电网完全满足;2.4 GHz 电路里一段 3 cm 走线是 0.24 个波长,必须改用分布参数(传输线方程),电压电流变成位置与时间的二元函数。

import numpy as np c = 3e8 vp = 0.6 * c # PCB 微带线的典型相速(有效介电常数折算) L_trace = 0.03 # 30 mm 走线 for f in [1e6, 1e8, 1e9, 2.4e9]: lam = vp / f ratio = L_trace / lam verdict = "集中参数OK" if ratio < 0.1 else "需传输线模型" print(f"f={f/1e9:5.2f} GHz 走线/波长={ratio:6.3f} {verdict}")

1 MHz 时走线只占波长的万分之六,随便等效;2.4 GHz 时占到 0.24,阻抗匹配、反射、振铃全部登场。这条边界同时解释了两件日常事:低速板布线"怎么走都行"、高速板布线是"几何即电路"。

非线性与直流工作点

真实器件(二极管、晶体管)是非线性的,线性方程组不能直接吃。SPICE 的做法是牛顿-拉夫逊迭代:在每个猜的工作点上线性化,解线性方程组,更新工作点,收敛即得解。理解这一点的价值在诊断:仿真不收敛往往意味着电路存在强正反馈或初始工作点离解太远——这本身就是一个电路信息,而不是单纯的"软件毛病"。

常见疑问

手工算和程序算,误差差在哪里? 物理上没有差别——程序用的正是同样的 KCL 与欧姆定律。差别在数值条件:若网络里同时存在兆欧级偏置电阻与毫欧级采样电阻,电导矩阵的条件数会变得巨大,双精度浮点也未必保住有效数字。工程对策是把量纲归一化(比如电阻都用千欧、电流都用毫安),或对病态网络改用稀疏 LU 分解并监控主元大小。看到仿真结果"违背能量守恒"(某电阻功率为负得离谱)时,第一反应应当是数值问题,其次才是模型问题。

本节要点回顾

  • 节点电压法把 KCL 排版成矩阵方程 G·V=I,电路分析从技巧变成填表,是所有电路仿真器的骨架;
  • stamp(往矩阵加减贡献)是读懂仿真内核的钥匙,电阻、电流源、电压源各有固定写法;
  • 节点法方程数随节点增长、矩阵稀疏,配合稀疏求解器可达十万节点级;
  • 阻抗换成复数,同一框架直接支持正弦稳态与频响扫描;
  • 集中参数边界约在"尺寸 < 波长/10",越过它必须上传输线模型——高速数字板的几何就是电路;
  • 非线性电路靠逐点线性化迭代求解,仿真不收敛本身携带电路信息。

第 2 章到此收官。第 3 章钻进器件内部:图纸上那个抽象的"受控源",实物是 PN 结与晶体管。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U