过冲
一本反馈控制的小书。
主线只有一句:你调的不是那台机器,是一个环。
而让环失控的从来不是力气不够——是你看到的是过去。
这张图是这本书的全部内容。四样东西:目标(蓝虚线,你唯一能直接设定的)、实际(绿实线,它不听你的,它听整个环的)、越线的那块面积(琥珀,书名)、起手处那段什么都没发生(紫,本书的反派)。曲线不是画的,是一台一阶惯性设备加两秒延迟、用教科书整定的 PI 控制器,真解出来的。
先回答一个问题
调洗澡水的时候,你把水龙头拧到合适温度,通常要来回几次?
再问一个:为什么是这个次数,而不是一次?
标准答案是「因为水温反应慢」。这个答案听起来很对,但它解释不了下面这件事——同样一双手、同样的拧法,只把水管从一米换成八米,第一种情况平均 28 秒调好,第二种情况永远调不好:水温会一直在过热和过冷之间来回,而且幅度越来越大。你没有变笨,水龙头也没变差。变的只有一件事:你看到的水温,是多久以前从阀门流出来的。
这件事有一个精确的名字(延迟),有一个精确的代价(临界增益 × 延迟 ≈ 常数),并且这个代价与你的技术无关——它是一条算术。这本书讲的就是这条算术,以及它在恒温器、巡航定速、自动扩容、库存补货、央行利率、你的团队里长什么样。
六卷
成环
LOOP你按的不是开关。一旦装上「看一眼再动」这件事,你手里的东西就换了一个物种。这一卷不用一个公式。
三个旋钮
KNOBS现在、过去、将来。工业界九成以上的控制器只有这三个旋钮,而它们各自在解决一个非常具体的毛病。
迟到
LAG全书的转折点。振荡从来不是力气问题——是你看到的是过去。这一卷会给出那条把「晚多久」换算成「能用多大力气」的算术。
会不会炸
STABILITY把「我觉得它挺稳的」换成一个能算出来、能验算、能写进监控的数。
看不见的东西
OBSERVE环的另外半边。前四卷假设你知道「现在是多少」——这一卷问:你凭什么以为你知道。
处处是环
EVERYWHERE同一套算术,在仓库、在机房、在身体里、在央行。学完这一卷,你会在很多地方看见同一张图。
这本书里的数字是从哪来的
一个都不是编的,也一个都不是「查表抄来的」。assets/engine.js 里有一台真的控制引擎:它用四阶龙格–库塔真的在解微分方程,用 Aberth–Ehrlich 迭代真的在求多项式的根,用复数频响真的在找相位穿越点。正文里每一个百分比、每一条曲线、每一次「炸了」,都是它当场算出来的。
而「我算的」要变成「可信的」,还需要一步:找一个和我完全无关的实现来对判。
- 与本机 numpy 逐题核对。numpy 求多项式的根走的是「伴随矩阵 + LAPACK 特征值」,和书里那台迭代求根器是完全不同的算法。933 道题、3839 个根,两边最大偏差 1.8×10⁻¹¹;「右半平面有几个根」这个判断,Routh 判据、我的求根器、numpy 三方 933/933 逐题一致。
- 解析解 ↔ 数值解。二阶系统的阶跃响应有闭式解,把它和 RK4 逐点比,最大偏差 8.2×10⁻¹⁵——也就是双精度浮点的噪声本身。
- 四条路算同一个数。第 11 章那个临界增益,用解析超越方程、复频响数值搜索、复平面上的牛顿法各算一遍,三条路给出 8.502424988,小数点后九位全同;再真跑一遍仿真二分,得到 8.473119,差 0.345%(那是仿真该有的误差)。
- 牛鞭效应的闭式解 ↔ 仿真。Chen 等人 2000 年那个公式和 20 万期的仿真,相对差 0.05%–0.19%。
验证器是 scripts/verify-overshoot.mjs,探针在 scripts/probe-ctl/。
写给谁
- 写代码的人。你大概率已经在维护好几个反馈环了——自动扩容、重试退避、限流、缓存预热、CI 队列——只是没人这么叫它们,所以出问题时你只能靠猜。
- 对「世界如何运作」有兴趣的人。这门学问最初是为了让高射炮打中飞机,后来跑去解释了恒温器、经济周期、生态系统、血糖,和为什么组织里的坏消息总是来得太晚。
- 数学不怕,但希望从直觉进入的人。卷 I 一个公式都没有;公式出现时一律先说「我们希望它满足哪几条」,再推出唯一解,不空降。
不打算讲什么
- 不做控制理论教材。没有拉普拉斯变换的推导表,没有奈奎斯特判据的完整证明,没有状态空间的可控可观性分析。这些都是好东西,第 24 章会告诉你去哪读。
- 不教你调某台具体设备。这本书给的是判断力,不是参数表。真到了现场,你的对象模型比这里任何一条公式都重要。
- 不讲现代控制的重头戏(LQR、MPC、H∞、自适应、强化学习控制)。它们全都建立在这本书的地基上,末章有入口。想看「不知道模型时怎么控制」,书架上另有《打分》。
怎么读这本书
- 按顺序。这本书是搭积木式的,第 11 章的那个乘积要用到第 5、9、10 章的三样东西。
- 每章开头有一个「▷ 先拧一下」,四个选项,先落一个答案再往下读。章末的「◈ 回读」会告诉你答案,也会逐条告诉你每个错误选项的直觉是从哪来的——那些直觉通常不蠢,只是在一个更简单的世界里才成立。
- 这两栏是故意这么设计的:你和这本书之间也是一个反馈环——你的猜测是控制量,章末的回读是传感器,而这个环的延迟是一整章。读到第 9 章你会明白为什么这件事值得一提。
- Demo 请动手拖。24 个 demo 全是真引擎当场算的,不是录像。尤其第 1、9、11、12、22 这五个——它们各自能推翻一个你现在还相信的东西。
- 赶时间的话:第 1 章 → 第 9 章 → 第 11 章 → 第 12 章,四章就能拿到这本书的主线。