用 Vibe Coding 分析系统灵敏度——SGpTS_{G_p}^TSGpT函数
基于胥布工《自动控制原理(第二版)》例3-10,展示 Vibe Coding 下编写灵敏度函数、分析闭环稳定性的完整实践
1. Vibe Coding 与灵敏度分析
1.1 问题描述
灵敏度函数衡量的是系统输出对参数变化的敏感程度。在不稳定的系统中,灵敏度函数本身也失去了工程意义。本例展示如何编写并调用灵敏度函数,并全功能分析闭环系统的稳定性。
考虑图1所示的典型反馈控制系统:
图1反馈控制系统的典型结构(图3-1)
已知各环节传递函数:
Gp(s)=3(s+6)s(s+1)(s+8)(s+3)=3s+18s4+12s3+35s2+24sGc(s)=5s+46s+2H(s)=0.01s+62s+4\begin{aligned} G_p(s) &= \frac{3(s+6)}{s(s+1)(s+8)(s+3)} = \frac{3s+18}{s^4+12s^3+35s^2+24s} \\[4pt] G_c(s) &= \frac{5s+4}{6s+2} \\[4pt] H(s) &= \frac{0.01s+6}{2s+4} \end{aligned}Gp(s)Gc(s)H(s)=s(s+1)(s+8)(s+3)3(s+6)=s4+12s3+35s2+24s3s+18=6s+25s+4=2s+40.01s+6
试用 MATLAB 编写灵敏度函数SGpTS_{G_p}^TSGpT的M文件并调用求解。
1.2 灵敏度函数定义
对Gp(s)G_p(s)Gp(s)的灵敏度函数定义为:
SGpT=∂T(s)∂Gp(s)⋅Gp(s)T(s)=11+GL(s)(1)\boxed{S_{G_p}^T = \frac{\partial T(s)}{\partial G_p(s)} \cdot \frac{G_p(s)}{T(s)} = \frac{1}{1 + G_L(s)}} \tag{1}SGpT=∂Gp(s)∂T(s)⋅T(s)Gp(s)=1+GL(s)1(1)
其中GL(s)=Gc(s)Gp(s)H(s)G_L(s) = G_c(s)G_p(s)H(s)GL(s)=Gc(s)Gp(s)H(s)为开环传递函数。
1.3 Vibe Coding 对话概览
| 轮次 | 用户指令 | 产出 |
|---|---|---|
| 第1轮 | “编写灵敏度函数 M 文件” | S = feedback(1, Gc*Gp*H) |
| 第2轮 | “roots()+零极点图分析稳定性” | RHP 极点 → 不稳定 |
| 第3轮 | “阶跃响应验证” | 发散响应 |
2. 第1轮:编写灵敏度函数
2.1 核心实现
function[S]=sensifcn1(Gp,Gc,H)S=feedback(1,Gc*Gp*H);% S = 1/(1+GL)end2.2 调用代码
Gp=tf([3,18],[1,12,35,24,0]);Gc=tf([5,4],[6,2]);H=tf([0.01,6],[2,4]);[S]=sensifcn1(Gp,Gc,H);2.3 运行结果
S 的零极点形式显示分母中含s2−0.09253s+0.6548s^2 - 0.09253s + 0.6548s2−0.09253s+0.6548→ RHP 极点!
3. 第2轮:稳定性分析
3.1 roots() 求闭环极点
所有极点来自灵敏度函数S(s)=1/(1+GL(s))S(s) = 1/(1+G_L(s))S(s)=1/(1+GL(s))的分母:
Δcl(s)=12s6+172s5+764s4+1364s3+1043s2+804.7s+432 \Delta_{cl}(s) = 12s^6 + 172s^5 + 764s^4 + 1364s^3 + 1043s^2 + 804.7s + 432Δcl(s)=12s6+172s5+764s4+1364s3+1043s2+804.7s+432
3.2 稳定裕量
存在 RHP 极点 → 系统不稳定 →无稳定裕量。
4. 第3轮:多维度可视化
4.1 零极点图
图2灵敏度函数S(s)S(s)S(s)零极点分布图 — RHP 极点清晰可见
4.2 闭环阶跃响应
图4闭环系统单位阶跃响应 — RHP 极点主导发散
5. 总结
5.1 本例核心发现
| 维度 | 内容 |
|---|---|
| 新方法 | feedback(1, GL)直接求S=1/(1+GL)S = 1/(1+G_L)S=1/(1+GL) |
| 闭环稳定性 | RHP 极点 → 不稳定 |
| 稳定裕量 | 不存在(不稳定系统) |
| 灵敏度意义 | 不稳定系统的灵敏度分析无工程价值 |
5.2 灵敏度函数的双重作用
| 作用 | 说明 | 本例结果 |
|---|---|---|
| 鲁棒性指标 | ∣S(jω)∣|S(j\omega)|∣S(jω)∣小 → 对参数扰动不敏感 | 因不稳定而失效 |
| 稳定性判据 | S(s) 的分母即闭环特征多项式 | 含 RHP 极点 |
5.3 全功能检查表
| 功能 | 状态 |
|---|---|
| 图3-1 + Gc/Gp/H(给定) | ✅ |
| roots() 求特征根 | ✅ |
| 零极点图(×极点 ○零点) | ✅ |
| 灵敏度 Bode 图 | ✅新增 |
| 阶跃响应 | ✅ 发散 |
| 稳定裕量 | ✅ 无 |
5.4 代码模块
| 模块 | 功能 | 产出 |
|---|---|---|
| 1 | 灵敏度函数S=1/(1+GL)S=1/(1+G_L)S=1/(1+GL) | zpk(S)输出 |
| 2 | roots()稳定性判定 | 极点列表 |
| 3 | 零极点分布图 + Bode 图 | fig3_ex3_10_pzmap/bode.png |
| 4 | 闭环阶跃响应 | fig3_ex3_10_step.png |