系列 · ODE 入门精讲 · 第 16 篇

常微分方程(十六):控制理论基础

从经典 PID 控制器、根轨迹、Bode 图,到现代状态空间方法、极点配置、LQR 最优控制和 Luenberger 观测器:本章用 ODE 把控制理论的核心串成一个完整的设计闭环。

开车时,你不断根据车道位置调整方向;恒温器将室温与设定值比较后调节加热器;火箭通过摆动喷管微调推力矢量以保持箭体垂直。 抽掉硬件,核心思想始终如一:测量、比较、动作。控制理论正是研究这一闭环过程的数学框架,而常微分方程(ODE)则是它的自然语言。

本章将此前积累的整个 ODE 工具箱——拉普拉斯变换(第 4 章 )、线性系统(第 6 章 )、特征值稳定性(第 7 章 )以及非线性稳定性(第 8 章 )——整合为一门统一的学科。其目标不再是被动地 描述 动力学行为,而是主动地 设计 它。

常微分方程(十六):控制理论基础 — 章节概览图


总结#

  • 开环 vs. 闭环控制:为何反馈是核心思想
  • 传递函数及其如何将 ODE 转化为代数运算
  • PID 控制器与 Ziegler-Nichols 整定方法
  • 根轨迹:闭环极点如何随控制器增益移动
  • Bode 图、增益裕度与相位裕度
  • MIMO 系统的状态空间表示
  • 能控性、能观性及其秩判据
  • 极点配置与 LQR 最优控制在倒立摆上的应用
  • Luenberger 观测器与分离原理

前置知识#

  • 第 4 章 ── 拉普拉斯变换(传递函数的来源)
  • 第 6 章 ── 线性系统与矩阵指数
  • 第 7 章 ── 特征值判断线性稳定性的准则

开环 vs. 闭环#

假设我们希望加热器将房间温度从 15°C 升至 22°C。

开环控制:施加固定的功率 $u(t)$ 并持续固定时间。若窗户开着,或室外温度比预期更低,最终温度就会偏离目标,且无法纠正。

闭环控制:实时测量温度,计算参考信号 $r$ 与实测输出 $y$ 之间的误差 $e(t) = r(t) - y(t)$ ,并让控制输入 $u(t)$ 成为误差的函数。系统由此具备自我修正能力,可抵抗建模误差和外部扰动。

闭环反馈结构图,包含扰动 d 和测量噪声 n 的入口。
闭环结构示意图。参考信号 $r$ 进入求和节点;控制器 $C(s)$ 作用于误差 $e = r - y_{\text{measured}}$ ;被控对象 $G(s)$ 产生输出 $y$ ,经含噪声 $n$ 的传感器测量后反馈回来。反馈机制有效抑制了破坏开环响应的扰动 $d$

我们将严格推导反馈带来的两个关键效果:

  • 扰动抑制:阶跃型扰动不再导致稳态误差发散至无穷。
  • 灵敏度降低:被控对象 $G$ 的相对变化对闭环传递函数 $T = CG/(1+CGH)$ 的影响被削弱为原来的 $S = 1/(1+CGH)$ 倍,其中 $S$ 称为 灵敏度函数

传递函数#

$$G(s) \;=\; \frac{Y(s)}{U(s)}$$

微分方程中的微分操作变为乘以 $s$ ,积分变为除以 $s$ ,微积分问题由此转化为代数问题。

一阶系统#

$$\tau\dot y + y = K u \quad\Longleftrightarrow\quad G(s) = \frac{K}{\tau s + 1}.$$

阶跃响应为:$y(t) = K(1 - e^{-t/\tau})$ 。时间常数 $\tau$ 决定了系统跟踪设定值变化的速度。

二阶系统#

$$ \ddot y + 2\zeta\omega_n \dot y + \omega_n^2 y = K\omega_n^2 u \;\;\Longleftrightarrow\;\; G(s) = \frac{K\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}. $$

阻尼比 $\zeta$ 决定了响应的 定性 形态:

$\zeta$极点结构阶跃响应
$0$$\pm j\omega_n$无阻尼正弦振荡
$0 < \zeta < 1$共轭复根,实部 $<0$欠阻尼(超调 + 振铃)
$1$实重根临界阻尼(最快无超调)
$> 1$两个实根过阻尼(响应迟缓)

这四种情形广泛存在于电路、机械系统乃至生物系统中,因为任何线性系统在 稳定平衡点附近 的行为都近似于此。


PID 控制器#

$$ u(t) \;=\; K_p\,e(t) \;+\; K_i\!\int_0^t e(\tau)\,d\tau \;+\; K_d\,\dot e(t), \qquad e = r - y. $$

每一项都有清晰的物理意义:

  • 比例项($K_p$:如同弹簧,将输出拉向设定值。响应快,但无法消除恒定扰动下的稳态误差。
  • 积分项($K_i$:累积历史误差的“记忆”。能将稳态误差精确归零,但引入一个原点处的极点,可能减慢响应并引发超调。
  • 微分项($K_d$:对 未来 误差趋势作出反应的“阻尼器”。改善暂态性能,但会放大高频测量噪声。

二阶对象上 PID 阶跃响应及 P 控制下增益的影响
左图:从无控制到 PID 的阶跃响应逐步改进(无控制 → P → PI → PD → PID)。无控制时,欠阻尼系统持续振荡且无法跟踪设定值;PID 则精准抵达设定点,无稳态误差且超调极小。右图:P 控制的经典权衡——增大 $K_p$ 可加快响应并减小稳态误差,但振荡最终会占主导。

Ziegler-Nichols 整定法(无需模型的起点)#

这是一种实用的经验法则,无需系统模型:

  1. $K_i = K_d = 0$ ,逐步增大 $K_p$ 直至闭环响应出现等幅振荡,记录此时的 临界增益 $K_u$振荡周期 $T_u$
  2. 按下表设置 PID 参数:
控制器$K_p$$K_i$$K_d$
P$0.5\,K_u$
PI$0.45\,K_u$$1.2\,K_p / T_u$
PID$0.6\,K_u$$2\,K_p / T_u$$K_p T_u / 8$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np

class PIDController:
    """带反饱和功能的离散 PID 实现"""
    def __init__(self, Kp, Ki, Kd, u_min=-np.inf, u_max=np.inf):
        self.Kp, self.Ki, self.Kd = Kp, Ki, Kd
        self.u_min, self.u_max = u_min, u_max
        self.integral = 0.0
        self.prev_error = 0.0

    def compute(self, error, dt):
        self.integral += error * dt
        deriv = (error - self.prev_error) / dt if dt > 0 else 0.0
        self.prev_error = error
        u = self.Kp*error + self.Ki*self.integral + self.Kd*deriv
        if u > self.u_max:
            self.integral -= error * dt
            u = self.u_max
        elif u < self.u_min:
            self.integral -= error * dt
            u = self.u_min
        return u

根轨迹 —— 闭环极点的走向#

$$1 + K\,L(s) = 0.$$

根轨迹 描绘了当增益 $K$$0$ 扫描至 $\infty$ 时,闭环极点在复平面上的运动轨迹。它直观地揭示了速度(极点越靠左越快)与阻尼(极点越靠近实轴越平稳)之间的权衡。

开环传递函数的根轨迹与对应三种增益下的阶跃响应。
左图:三条根轨迹分支从开环极点 $0, -2, -5$ 出发,其中两条最终在 $K \approx 70$ 附近穿越虚轴进入右半平面——即闭环失稳的临界点。右图:随着 $K$ 越过该边界,阶跃响应依次呈现阻尼良好、轻度振荡,最终在 $K = 70$ 处变为等幅振荡。

需牢记两点:

  • 根轨迹有 $n_p - n_z$ 条渐近线,从重心 $\sigma_a = (\sum p_i - \sum z_i)/(n_p - n_z)$ 出发,角度为 $(2k+1)\pi/(n_p - n_z)$
  • 根轨迹与虚轴的交点对应闭环极点 $\pm j\omega_c$ ,即 临界稳定 点。Routh-Hurwitz 判据可代数求解对应的临界增益 $K_{\text{crit}}$

Bode 图与稳定裕度#

频率响应 $L(j\omega)$ 即传递函数在虚轴上的取值,通常以对数频率为横轴,分别绘制幅值(dB)和相位(度)。

常微分方程(十六):控制理论基础 — 章节小结图

增益穿越频率 $\omega_g$$|L|$ 等于 1(0 dB)的频率;相位穿越频率 $\omega_p$ 是相位等于 $-180^\circ$ 的频率。由此定义两个鲁棒性指标:

  • 增益裕度(GM):系统失稳前可将开环增益放大的倍数——在 $\omega_p$ 处读取幅值。
  • 相位裕度(PM):在 $\omega_g$ 处可额外容忍的相位滞后量。

Bode 幅频/相频、Nyquist 图与稳定性总结表。

经验法则:稳健设计应满足 GM > 6 dB(约两倍增益)且 PM > 30°(理想情况下 > 45°)。右侧 Nyquist 图提供了几何解释:系统稳定的充要条件是 Nyquist 曲线 不包围 临界点 $-1 + 0j$


状态空间表示#

$$ \dot{\mathbf x} = A\mathbf x + B\mathbf u, \qquad \mathbf y = C\mathbf x + D\mathbf u. $$

其中 $\mathbf x \in \mathbb R^n$状态向量——只要给定输入 $\mathbf u(t)$ ,即可预测系统未来行为。$A$ 为系统矩阵,$B$ 将输入耦合进状态,$C$ 提取可观测输出,$D$ 表示直通项(通常为零)。

状态空间方框图、能控/能观秩判据及倒立摆上 LQR 与极点配置的对比。
上图:通用状态空间框图及两个关键秩判据。下图:从 $0.2$ 弧度初始倾角开始平衡倒立摆。LQR(蓝色)通过最小化代价函数选择增益;极点配置(红色)将闭环特征值置于 $\{-1,-2,-3,-4\}$ 。两者均能稳定系统,但 LQR 所需控制能量显著更小。

稳定性、能控性与能观性#

以下三个秩条件决定了控制器是否可设计:

判据构造方式成立条件
稳定性$A$ 的特征值全部实部 < 0
能控性$\mathcal C = [B,\; AB,\; \ldots,\; A^{n-1}B]$$\text{rank}(\mathcal C) = n$
能观性$\mathcal O = [C;\; CA;\; \ldots;\; CA^{n-1}]$$\text{rank}(\mathcal O) = n$

能控性意味着可通过适当输入将状态驱动至任意目标;能观性意味着可从输出历史中完全重构状态。二者在变换 $A \leftrightarrow A^T,\, B \leftrightarrow C^T$ 下互为对偶。


极点配置与 LQR#

$(A, B)$ 能控,则状态反馈律 $\mathbf u = -K\mathbf x$ 可使闭环系统变为 $\dot{\mathbf x} = (A - BK)\mathbf x$ 。此时可任意配置 $A - BK$ 的特征值。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import numpy as np
from scipy.signal import place_poles

A = np.array([[0, 1, 0, 0],
              [0, -0.1, -1.96, 0],
              [0, 0, 0, 1],
              [0, 0.2, 23.5, 0]])  # 倒立摆(线性化)
B = np.array([[0], [1], [0], [-2]])

K_pp = place_poles(A, B, [-1, -2, -3, -4]).gain_matrix
print('极点配置增益 K =', K_pp)
print('闭环特征值 =', np.linalg.eigvals(A - B @ K_pp))
$$J \;=\; \int_0^\infty \bigl(\mathbf x^T Q \mathbf x + \mathbf u^T R \mathbf u\bigr)\,dt,$$ $$A^T P + P A - P B R^{-1} B^T P + Q = 0, \qquad K = R^{-1} B^T P.$$
1
2
3
4
5
6
from scipy.linalg import solve_continuous_are

Q = np.diag([10, 1, 100, 1])      # 重罚位置和角度
R = np.array([[1.0]])              # 控制能量惩罚适中
P = solve_continuous_are(A, B, Q, R)
K_lqr = np.linalg.solve(R, B.T @ P)

相比极点配置,LQR 通常以更小的执行器能耗实现同等扰动抑制效果。只要 $(A, B)$ 可镇定且 $(A, \sqrt{Q})$ 可检测,LQR 解就保证闭环稳定。


观测器与分离原理#

$$\dot{\hat{\mathbf x}} \;=\; A\hat{\mathbf x} + B\mathbf u + L\bigl(\mathbf y - C\hat{\mathbf x}\bigr).$$

估计误差 $\tilde{\mathbf x} = \mathbf x - \hat{\mathbf x}$ 满足 $\dot{\tilde{\mathbf x}} = (A - LC)\tilde{\mathbf x}$ 。若 $(A, C)$ 能观,则可任意配置 $A - LC$ 的特征值——通常将其置于比控制器极点更左的位置,确保估计先于控制动作收敛。

神奇的 分离原理 指出:控制器与观测器组合后的闭环极点,恰好是控制器极点($A - BK$ 的特征值)与观测器极点($A - LC$ 的特征值)的并集。因此二者可独立设计。


实战案例:小车上的倒立摆#

$$ A = \begin{pmatrix} 0 & 1 & 0 & 0 \\ 0 & -b/M & -mg/M & 0 \\ 0 & 0 & 0 & 1 \\ 0 & b/(ML) & (M+m)g/(ML) & 0 \end{pmatrix}, \quad B = \begin{pmatrix} 0 \\ 1/M \\ 0 \\ -1/(ML) \end{pmatrix}. $$

观察 $\text{eigvals}(A)$ 可知,其中一个特征值位于右半平面(开环下摆会倒下)。我们通过 Riccati 方程求解 $K_{\text{LQR}}$ ,并从 $0.2$ 弧度初始倾角开始仿真 $\dot{\mathbf x} = (A - BK)\mathbf x$ 。状态空间图最下方显示:摆角平滑衰减至零,小车回到原点,控制力最终降至一个微小的稳态推力——整个设计闭环仅需不到 30 行 Python 代码。


一个具体算例:汽车定速巡航的 PID 手算#

把抽象的 PID 公式落到一个我能手算的小例子上,比看一百行 scipy 代码更能建立直觉。设想一辆车,目标车速 $r = 70$ km/h,当前车速 $y(0) = 60$ km/h。控制器输出 $u$ 直接对应油门开度(百分比)。我取一个简化的一阶动态:每秒加速 $0.4u$ km/h(油门 100% 时一秒加 40 km/h,符合普通家用车从 0 到百公里 7 秒左右的量级),步长 $\Delta t = 1$ s。增益取 $K_p = 0.5$$K_i = 0.1$$K_d = 0.05$

四步迭代手算:

第 0 步$e_0 = 70 - 60 = 10$ ,积分项 $I_0 = 0$ ,微分项 $D_0 = 0$ (无前一刻误差)。$u_0 = 0.5 \cdot 10 + 0.1 \cdot 0 + 0.05 \cdot 0 = 5$ 。下一步速度 $y_1 = 60 + 0.4 \cdot 5 = 62$

第 1 步$e_1 = 8$$I_1 = 0 + 10 \cdot 1 = 10$$D_1 = (8 - 10)/1 = -2$$u_1 = 0.5 \cdot 8 + 0.1 \cdot 10 + 0.05 \cdot (-2) = 4 + 1 - 0.1 = 4.9$$y_2 = 62 + 0.4 \cdot 4.9 = 63.96$

第 2 步$e_2 = 6.04$$I_2 = 10 + 8 = 18$$D_2 = (6.04 - 8)/1 = -1.96$$u_2 = 0.5 \cdot 6.04 + 0.1 \cdot 18 + 0.05 \cdot (-1.96) = 3.02 + 1.8 - 0.098 = 4.722$$y_3 = 63.96 + 0.4 \cdot 4.722 = 65.85$

第 3 步$e_3 = 4.15$$I_3 = 18 + 6.04 = 24.04$$D_3 = (4.15 - 6.04)/1 = -1.89$$u_3 = 0.5 \cdot 4.15 + 0.1 \cdot 24.04 + 0.05 \cdot (-1.89) = 2.075 + 2.404 - 0.0945 \approx 4.385$$y_4 = 65.85 + 0.4 \cdot 4.385 \approx 67.60$

$e$$I$$D$$u$下一步 $y$
010.000.000.005.00062.00
18.0010.00-2.004.90063.96
26.0418.00-1.964.72265.85
34.1524.04-1.894.38567.60

注意三件事:第一,比例项 $K_p e$ 单调递减(误差缩小自然减小);第二,积分项 $K_i I$ 反而单调递增——它在累积"还差多少没补上"的历史责任,最终会把稳态误差归零;第三,微分项一直为负,实际上是在主动减速,避免冲过头。如果只用 P,闭环极点是 $1 - 0.4 K_p = 0.8$ ,稳态误差非零;只有 $I$ 项才能消除偏差。

直觉与陷阱:积分饱和(windup)的真实代价#

PID 在课本上看着无害,工程上最常见的事故是积分饱和。还是上面这辆车:假设我突然把目标改成 $r = 200$ km/h(人为的极端值),一秒内 $e = 140$ ,积分项疯狂累积;几秒后即使车速冲到 200,已经"积"了大量正误差,控制器还在猛踩油门。等系统真的回到目标,得花几个周期才能把这部分历史"消化"掉,期间车速会大幅过冲。

我在博客早期写控制器的时候栽过一次:DC-DC 变换器的 PI 控制器在启动时电源电压未稳定,积分项饱和到 50 V 等价指令,输出电容硬生生被冲到额定值的 1.4 倍——电容鼓包。事后加了反饱和(anti-windup):当输出 $u$ 已经到达执行器上下限时,停止积分累积。本章给出的代码片段里 compute() 函数那段 self.integral -= error * dt 就是这一招,叫条件积分或 back-calculation。

第二个陷阱是微分对噪声的放大。$D$$\dot e = -\dot y$ ,传感器噪声 $\sigma$ 在频率 $\omega$ 上贡献 $\omega \sigma$ ,高频噪声被直接放大 $K_d$ 倍打进油门。工程实践里几乎没人用纯微分,都是改用一阶低通滤波微分$D(s) = K_d s / (1 + s/N)$ ,其中 $N \in [10, 30]$ 。Astrom 的 Feedback Systems 第 10 章对这个问题有详细推导。

应用与反例:什么时候 PID 不够#

PID 之所以占领工业界 90% 的回路,是因为它简单、便宜、可整定。但它的局限同样明显:

  • 多输入多输出耦合系统:例如四旋翼无人机的姿态-位置耦合,每个 SISO PID 互相干扰,这时必须用 LQR 或 MPC 把整个 $(A, B)$ 一起设计。
  • 大延迟过程:化工反应器从加料到温度上升常有 30-300 秒延迟,PID 的微分项失去前瞻能力,只能用 Smith 预估器或模型预测控制。
  • 强非线性:磁悬浮系统、机器人在不同关节角度下的惯量矩阵会变 5-10 倍,单一组 PID 增益无法覆盖整个工作区。这时要么 gain scheduling(多组增益按工作点切换),要么用反馈线性化。
  • 执行器明显饱和:飞行器的舵面有限位,PID 输出超过物理极限,就需要显式的约束控制——这正是 MPC 的核心优势。

反过来说,绝大多数家用空调、汽车定速巡航、3D 打印机温控、咖啡机、电烙铁恒温——这些一阶或二阶慢动态、单输入单输出、无显著延迟的场合,PID 整定一次就能跑十年不出事。这也是为什么 Astrom 在他那篇著名的综述里说:“PID is here to stay”。

现代图景#

本章实质上是以 目标导向 的方式重述了 ODE 的故事。第 7–8 章的稳定性理论回答的是“平衡点能否承受小扰动”;而控制理论则进一步回答“如何设计平衡点及其收敛速率”。第 4 章 的拉普拉斯变换不仅用于求解析解,如今还直接提供频域鲁棒性指标;第 6 章 的矩阵指数则成为状态空间仿真与观测器设计的核心工具。

前沿方向远不止于此:

  • 鲁棒控制 —— $H_\infty$$\mu$ -综合:在有界建模误差下保证性能。
  • 自适应控制与模型预测控制(MPC) —— 控制器在线更新,每步求解一个滑动时域优化问题。
  • 非线性控制 —— 反馈线性化、滑模控制、控制 Lyapunov 函数。
  • 强化学习 —— 控制器通过经验 学习 而非人工设计;这与第 18 章 的 Neural ODE 自然衔接。

总结#

概念公式 / 工具设计能力
传递函数$G(s) = Y/U$ (拉氏变换)经典补偿器、超前/滞后网络
PID$u = K_p e + K_i \int e + K_d \dot e$覆盖工业界约 90% 的控制回路
根轨迹$1 + KL(s) = 0$增益选取、稳定边界分析
Bode / Nyquist$L(j\omega)$增益裕度与相位裕度评估
状态空间$\dot x = Ax + Bu$MIMO 系统、现代控制理论
极点配置$u = -Kx$精确指定闭环极点位置
LQRRiccati 方程最优增益 $K$
观测器$\dot{\hat x} = A\hat x + Bu + L(y - C\hat x)$估计不可测状态

控制理论 将 ODE 从描述工具提升为设计语言。我们不再仅仅预测系统如何运动,而是明确告诉它该去往何处。


下一步#

下一章是 ODE 在物理与工程中的应用大全:经典力学(牛顿方程、Lagrange 方程、Hamilton 方程)、电路分析、热力学过程、流体力学、量子力学——它们的核心都是 ODE。下一章用一个章节连接所有这些应用,让你看到同一个数学工具如何统一描述各种物理现实。

工程实践片段:从 PID 到自动驾驶的横向控制#

说几个我自己上手过的真实案例,看 PID 在不同场景里如何变形。

第一个是无人机姿态环。横滚角 $\phi$ 的目标值由位置环给出,姿态环要在 200 Hz 的频率下跟踪。这里 $D$ 项不能省——四旋翼是欠阻尼系统,没有微分项姿态会震荡。但加速度计噪声大约 $0.1$ °/s,直接微分会把噪声放大成乱码。我们的方案是用陀螺仪角速度反馈代替差分,这等价于把 $D$ 项的滤波带宽精确锁在传感器带宽——本质上是把 PID 改写成 PI + 微分反馈。

第二个是车道保持的横向 PID。误差是车辆中心到车道中心的横向距离,控制量是方向盘转角。坑在哪里?车速变化会改变车辆-道路系统的传递函数:60 km/h 调好的增益放到 120 km/h 就会震荡。工程实践里要么做 gain scheduling(按车速分段切换增益),要么直接换成 LQR——后者在状态向量里把车速放进去,自动适配。

第三个是温控。家用电烙铁、烤箱、3D 打印机喷头——这些都是大热惯性 + 小延迟的一阶系统,PI 就够(不需要 D)。Ziegler-Nichols 整定法在这类系统上特别好用:把 $K_p$ 一点点拉大直到出现稳定振荡,记下临界增益和周期,套表就能直接用。我家的 3D 打印机每年要重新整定一次,因为加热块氧化、风扇灰尘累积都会改变热阻。

这三个例子的共同点:PID 不是孤立的算法,是一个可调节的家族。设计者的真正工作是判断系统结构、选择反馈量、设定带宽——这些都跳出了"$K_p, K_i, K_d$ 三个数"的范畴。但底层的 ODE 直觉(一阶 vs 二阶、阻尼比、稳态误差)对每个场景都适用。

一句话提醒:控制理论的本质不是数学#

我教学生时反复强调一件事:控制理论的难点从来不在拉普拉斯变换、根轨迹、Bode 图——这些是手段。真正的难点是建模。一个好的控制工程师 80% 的时间在思考"我的系统真的是 LTI 吗?““我的传感器在什么频段可信?““执行器有多少时滞和饱和?““扰动的功率谱长什么样?“剩下 20% 才是设计 PID 或 LQR。漂亮的数学方法用错系统比没用还糟糕——一个 LQR 控制器能让稳定的系统变成稳定且高性能的系统,但放在一个被错误辨识的系统上,它会高效率地把你的执行器烧掉。这是 Astrom 在所有著作里反复强调的一点,也是我对学生最严肃的告诫。

参考文献#

  • Ogata, Modern Control Engineering, Pearson (2010).
  • Franklin, Powell & Emami-Naeini, Feedback Control of Dynamic Systems, Pearson (2015).
  • Astrom & Murray, Feedback Systems, Princeton (2008). (免费 PDF)
  • Skogestad & Postlethwaite, Multivariable Feedback Control, Wiley (2005).
本系列

ODE 入门精讲 18 篇

  1. 01 常微分方程(一):微分方程的起源与直觉
  2. 02 常微分方程(二):一阶微分方程的求解方法
  3. 03 常微分方程(三):高阶线性微分方程
  4. 04 常微分方程(四):拉普拉斯变换
  5. 05 常微分方程(五):级数解法与特殊函数
  6. 06 常微分方程(六):线性微分方程组
  7. 07 常微分方程(七):稳定性理论
  8. 08 常微分方程(八):非线性系统与相图
  9. 09 常微分方程(九):混沌理论与洛伦兹系统
  10. 10 常微分方程(十):分岔理论
  11. 11 常微分方程(十一):数值方法
  12. 12 常微分方程(十二):边值问题
  13. 13 常微分方程(十三):偏微分方程引论
  14. 14 常微分方程(十四):传染病模型与流行病学
  15. 15 常微分方程(十五):种群动力学
  16. 16 常微分方程(十六):控制理论基础 当前
  17. 17 常微分方程(十七):物理与工程应用
  18. 18 常微分方程(十八):前沿专题与系列总结

读有所得?

GitHub 关注我 → 新文周更

GitHub