根轨迹 Root Locus

根轨迹刻画增益 从 增至 时闭环极点在 s 平面上的迁移路径:一张图同时回答”系统何时失稳、增益取多大、动态有多快”,是经典控制里从分析走向设计的图解桥梁。

闭环极点随增益迁移

单位负反馈下,闭环特征方程为

时闭环极点就是开环极点; 时趋向开环零点,零点不够则奔向无穷远。于是开环传递函数 Transfer Function的零极点布局完全决定闭环极点的全部去向——这条迁移路径就是根轨迹。轨迹是否越过虚轴进入右半平面,直接给出使闭环稳定的增益范围。

相角条件与幅值条件

特征方程拆成两个条件:

  • 相角条件(属于轨迹的充要判据):
  • 幅值条件(确定轨迹上一点的增益):

相角条件不含 ——轨迹形状只由零极点的几何分布决定, 只是沿轨迹的参数。这是整个图解法的根基。

Evans 绘制法则

法则内容
分支数等于开环极点数 (设 )
端点始于开环极点(),终于开环零点或沿渐近线趋于
对称性关于实轴对称
实轴段某段右侧的实零点与实极点总数为奇数,则该段属于轨迹
渐近线 条,角度 ,实轴交点
分离点满足 ,即 的极值点
虚轴交点令 或查 Routh 表,得临界增益

以 为例:三条分支从 出发;渐近线中心 、角度 与 ;两条复数分支沿渐近线折向右半平面,在 处穿过虚轴点 (Routh 表直接给出)。数值绘制只需对闭环多项式扫 求根:

import numpy as np
import matplotlib.pyplot as plt
 
# G(s)H(s) = 1/(s(s+1)(s+2)),特征方程 s^3 + 3s^2 + 2s + K = 0
poles = np.roots([1, 3, 2, 0])                      # K=0:轨迹起点即开环极点
roots = np.array([np.roots([1, 3, 2, K])            # 每个 K 求闭环极点
                  for K in np.linspace(0, 20, 800)])
 
plt.figure(figsize=(6, 5))
plt.axhline(0, color="gray", lw=0.5)                # 实轴
plt.axvline(0, color="gray", lw=0.5)                # 虚轴:稳定边界
plt.plot(roots.real, roots.imag, ".", ms=1)         # 根轨迹
plt.plot(poles.real, poles.imag, "rx", ms=10, label="open-loop poles")
plt.xlabel("Re(s)"); plt.ylabel("Im(s)")
plt.legend(); plt.tight_layout()
plt.savefig("root_locus.png", dpi=150)

零极点对轨迹的牵引

极点是轨迹的源,零点是轨迹的汇:分支离开极点、奔向零点。由此得到牵引直觉:

  • 加左半平面零点:把附近轨迹拉向左——增大阻尼、改善稳定裕度(PD 控制与超前补偿的本质)
  • 加极点:把轨迹推向右——相位滞后,逼近失稳
  • 原点极点 + 邻近零点(PI 结构):抬高低频增益消除静差,而零极点对远处的轨迹形状几乎无影响

补偿器设计因此有清晰的几何图像:移动零极点就是在掰轨迹的走向。

用根轨迹做控制器设计

设计流程:

  1. 由性能指标换算期望闭环极点区域:超调 ↔ 等阻尼线( 常数),调节时间 ↔ 等固有频率线,映射关系见时域响应 Time Response
  2. 看未补偿轨迹是否穿过该区域
  3. 不穿过则加补偿零极点,把主导极点掰进区域;沿轨迹读出对应 ,再复核稳态误差

PID 控制三个作用在此完全图解化:比例项沿轨迹滑动选取增益,积分项置原点极点消静差,微分项置左半平面零点增阻尼。根轨迹是单参数图解设计;若改用状态反馈,可在能控前提下任意放置全部极点——极点配置是其解析推广,自由度不同而目标一致。

训练动力学:学习率即增益

梯度下降迭代 在最优点附近线性化为 ,其中 为 Hessian。学习率 扮演增益 :矩阵 的特征值 随 沿”轨迹”迁移,越出单位圆(离散系统的稳定边界)即震荡发散—— 过大导致训练爆掉,与根轨迹上增益越过临界值 完全同构。特征值位置决定收敛速率与振荡模式的直觉,在控制器整定与优化器调参两边通用。