用提示词实现单位阶跃响应

用提示词实现单位阶跃响应 用 Vibe Coding 实现单位阶跃响应基于《自动控制原理第2版》胥布工 主编及配套MATLAB代码1. 引言单位阶跃响应是控制系统时域分析中最基础也最重要的工具。它直观地反映了系统在输入突变时的动态行为是评估控制系统性能的第一张名片。传统的实现方式是手动编写MATLAB代码——定义传递函数、调用step()函数、设置绘图参数。而借助Vibe Coding技术开发者只需用自然语言描述需求与AI进行多轮迭代对话即可自动生成完整的单位阶跃响应分析代码。什么是 Vibe CodingVibe Coding 是由 Andrej Karpathy 提出的一种编程范式。其核心理念是开发者用自然语言描述想要实现的功能AI 生成代码然后通过多轮对话不断迭代优化。开发者可以沉浸在编程的节奏感中而不必逐行手写所有代码。Vibe Coding 与传统提示词的关键区别在于传统提示词Vibe Coding交互方式一次性提交需求多轮迭代对话工作流程写 prompt → 等结果 → 结束描述 → 生成 → 反馈 → 修改 → 循环控制粒度期望一步到位逐步精化每次改进一个方面容错机制输出不好就重写 prompt“这里不对改成这样”——自然纠偏开发者角色prompt 编写者设计决策者 审查者本文将展示如何通过 Vibe Coding 的迭代工作流让AI自动完成从反馈系统建模到阶跃响应仿真再到出版级图表优化的全过程。2. 反馈控制系统的基本结构2.1 第一轮 Vibe描述系统结构要理解单位阶跃响应的实现首先需要让AI了解反馈控制系统的典型结构。这是 Vibe Coding 的第一步——用自然语言描述问题域Vibe 对话 #1你“反馈控制系统由哪些基本环节组成请画出典型结构图。”AI“反馈控制系统由控制器 Gc(s)、被控对象 Gp(s) 和传感器 H(s) 三大环节组成通过负反馈构成闭环…”AI 应给出如图1所示的系统结构描述图1反馈控制系统的典型结构图2.2 背后的数学原理基于该结构可引导AI推导出关键的闭环传递函数。在 Vibe Coding 中不需要手动推导公式只需告诉AIVibe 对话 #2你“从这个结构图推导闭环传递函数我要用于后面的阶跃响应分析。”AI令 D(s)0参考输入作用下闭环传递函数为TR(s)Y(s)R(s)Gc(s)Gp(s)1Gc(s)Gp(s)H(s)GF(s)1GL(s)T_R(s) \frac{Y(s)}{R(s)} \frac{G_c(s)G_p(s)}{1 G_c(s)G_p(s)H(s)} \frac{G_F(s)}{1 G_L(s)}TR​(s)R(s)Y(s)​1Gc​(s)Gp​(s)H(s)Gc​(s)Gp​(s)​1GL​(s)GF​(s)​其中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)为开环传递函数。所有闭环传递函数的共同特征分母均为1GL(s)1 G_L(s)1GL​(s)即系统的动态特性由特征方程1GL(s)01 G_L(s) 01GL​(s)0的根决定。3. 从反馈结构到二阶系统Vibe 迭代过程3.1 逐步精化从通用到具体Vibe Coding 的核心是迭代。让我们一步步从通用反馈结构聚焦到具体的二阶系统。第一轮简化反馈结构你“假设传感器 H(s)1单位反馈忽略干扰 D(s)0。”AI闭环传递函数简化为T(s)Y(s)R(s)Gc(s)Gp(s)1Gc(s)Gp(s)T(s) \frac{Y(s)}{R(s)} \frac{G_c(s)G_p(s)}{1 G_c(s)G_p(s)}T(s)R(s)Y(s)​1Gc​(s)Gp​(s)Gc​(s)Gp​(s)​第二轮引入具体模型你“假设前向通道是二阶振荡环节。那传递函数变成什么”AI代入Gc(s)Gp(s)ωn2s(s2ζωn)G_c(s)G_p(s) \frac{\omega_n^2}{s(s 2\zeta\omega_n)}Gc​(s)Gp​(s)s(s2ζωn​)ωn2​​得到T(s)ωn2s22ζωnsωn2(1)T(s) \frac{\omega_n^2}{s^2 2\zeta\omega_n s \omega_n^2} \tag{1}T(s)s22ζωn​sωn2​ωn2​​(1)其中ωn\omega_nωn​为无阻尼自然振荡角频率ζ\zetaζ为阻尼比。这就是 Vibe Coding 的典型过程——不是一次性给出所有信息而是通过对话逐步引导AI理解问题。每一步AI都基于上下文推理开发者只需把控方向。3.2 生成MATLAB代码一旦模型建立就可以让AI生成代码了Vibe 对话 #3你“取 wn1zeta 分别取 [0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.5, 2.0]用MATLAB写代码计算单位阶跃响应所有曲线画在一张图上。仿真20秒。”AI生成代码你“加上图例x轴标’时间 (s)‘y轴标’幅值 (pu)’。”AI修改代码你“图例放右上角加一条 y1 的稳态虚线。”AI再次修改每一轮对话只改一个方面AI在上下文中逐步积累改动最终形成完整代码。4. Vibe Coding 工作流详解4.1 Vibe Coding 的核心工作流┌─────────────────────────────────────────────────┐ │ Vibe Coding 循环 │ │ │ │ ① 自然语言描述需求 │ │ ↓ │ │ ② AI生成/修改代码 │ │ ↓ │ │ ③ 审查输出结果 │ │ ↓ │ │ ④ 满意吗───是───▶ 进入下一功能 │ │ │ │ │ 否 │ │ ↓ │ │ ⑤ 给出具体反馈 │ │ ↕ │ │ ① 回到描述迭代 │ └─────────────────────────────────────────────────┘这个循环的节奏感就是Vibe的来源——开发者专注于想要什么效果AI负责怎么实现。4.2 完整 Vibe Coding 对话实录以下是一个真实的 Vibe Coding 会话记录展示了从零到生成出版级图表的完整过程第1轮基础代码你“用MATLAB画二阶系统 G(s)1/(s²2ζs1) 的阶跃响应ζ取0,0.2,0.6,1,2。”AIzeta[0,0.2,0.6,1,2];fori1:5num1;den[1,2*zeta(i),1];[y,t]step(num,den);plot(t,y);hold on;end第2轮增加阻尼比值你“多加几个 ζ 值0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.5, 2.0。用不同颜色区分。”AI生成更新后的循环代码第3轮规范图表格式你“加上图例、坐标轴标签。线宽设0.75pt。”AI添加 legend、xlabel、ylabel、LineWidth 参数第4轮添加参考线和调整图幅你“加一条 y1 的黑色虚线作为稳态参考线。图幅改成8cm宽、6cm高适合出版排版。”AIplot([0,20],[1,1],k--,LineWidth,0.5);figure(Units,centimeters,Position,[2,2,8,6]);第5轮字体和刻度要求你“英文和数字用 Times New Roman坐标轴刻度向内四周实线框。”AI设置 FontName、TickDir、Box 属性第6轮最终输出格式你“保存为300dpi的PNG。”AI添加 print(gcf, filename, ‘-dpng’, ‘-r300’)最终生成的完整代码如下% Vibe Coding 生成的单位阶跃响应分析代码zeta_values[0,0.2,0.4,0.6,0.8,1.0,1.5,2.0];wn1;simulation_time20;figure(Units,centimeters,Position,[2,2,8,6]);hold on;foridx1:length(zeta_values)zetazeta_values(idx);numwn^2;den[1,2*zeta*wn,wn^2];systf(num,den);[y,t]step(sys,simulation_time);plot(t,y,LineWidth,0.75,...DisplayName,sprintf(\\zeta %.1f,zeta));end% 稳态参考线plot([0,simulation_time],[1,1],k--,...LineWidth,0.5,HandleVisibility,off);xlabel(时间 (s));ylabel(幅值 (pu));legend(Location,northeast);box on;grid on;set(gca,TickDir,in);5. 仿真结果经过6轮 Vibe Coding 迭代最终生成的图形如图2所示图2不同阻尼比二阶系统的单位阶跃响应从曲线可以直观地看到阻尼比ζ\zetaζ对系统响应的影响规律ζ0\zeta 0ζ0等幅振荡永不收敛0ζ10 \zeta 10ζ1衰减振荡ζ越大振荡衰减越快ζ1\zeta 1ζ1临界阻尼无振荡但响应最快ζ1\zeta 1ζ1过阻尼响应缓慢但无振荡6. 不同开发方式的效果对比6.1 传统手动编码 vs Vibe Coding维度手动编码Vibe Coding入门门槛需要熟悉MATLAB语法和控制系统工具箱自然语言即可入门开发速度查阅文档→写代码→调试→修改实时生成即时反馈迭代成本每改一次需求要手动找代码位置对话式修改AI自动定位出版质量需手动查期刊排版规范告诉AI要求自动满足知识传承代码注释对话历史本身就是文档6.2 Vibe Coding 的三种输入粒度Vibe Coding 的效果取决于输入的精细程度。以下是三种不同粒度的对比1. 一句话描述过于模糊“用MATLAB画二阶系统的阶跃响应。”结果代码随机选择阻尼比、无图例、无标签、格式混乱——需要大量后续纠偏。2. 结构化需求推荐起点“二阶系统 G(s)1/(s²2ζs1)ζ取8个值从0到2画阶跃响应曲线叠加图带图例和标签。”结果功能正确但格式细节需要迭代优化——这正是 Vibe Coding 的典型起点。3. Vibe Coding 精化最终效果经过多轮针对性的反馈加参考线、调字体、改刻度方向、设置出版分辨率最终输出满足出版标准。7. Vibe Coding 进阶功能扩展基于已有的基础代码通过 Vibe Coding 可以自然地扩展更多功能7.1 添加干扰输入分析你“在图1的反馈结构中加一个干扰输入 D(s)帮我画干扰单独作用时的响应曲线。”AI“根据传递函数TD(s)Gp(s)/(1GL(s))T_D(s) G_p(s)/(1G_L(s))TD​(s)Gp​(s)/(1GL​(s))生成对比代码。”7.2 参数扫描与热力图你“对 ζ 从 0.1 到 2.0 步长 0.1 扫描把所有阶跃响应的峰值和调节时间提取出来画成热力图。”7.3 PID 控制器设计你“帮我设计一个 PID 控制器让阶跃响应超调量小于5%调节时间小于3秒。先试一组参数我看看效果再调。”8. 小结Vibe Coding 的本质是将编程从写代码转变为描述需求 迭代精化。在单位阶跃响应这个案例中问题域知识仍然是核心竞争力需要理解反馈控制结构、传递函数、阻尼比等概念才能准确描述需求。迭代是 Vibe Coding 的精髓不是一次写出完美代码而是通过6~8轮对话每轮改进一个方面逐步逼近目标。开发者角色升级从代码编写者转变为设计决策者 质量审查者——把控方向比写每一行代码更重要。Vibe 就是节奏感找到描述→生成→审查→反馈的节奏沉浸在解决问题的 flow 中而不是陷入语法错误的泥潭。参考资料胥布工. 自动控制原理第2版[M]. 北京: 电子工业出版社, 2016.Karpathy, A. “Vibe Coding” — AI-assisted programming paradigm