ODE Note 1:从一般线性 k 阶微分方程到一阶自治系统的动力学视角 | Feixiang Tao
ODE and Dynamical Systems 2026-03-18 · 9 min read

ODE Note 1:从一般线性 k 阶微分方程到一阶自治系统的动力学视角

0. 这份 note 想回答什么

常微分方程如果只从“求显式解”的角度看,往往会显得像一套技巧集:

  • 分离变量
  • 线性方程
  • 积分因子
  • 特征方程

这些当然有用,但并不触及 ODE 最迷人的部分。

真正更有结构感的视角是:

微分方程不是在“求一个公式”,而是在研究一个状态如何随时间演化的系统。

一旦这样看,很多原本零散的技术点就会变成统一图景:

  • 为什么高阶方程总能改写成一阶系统
  • 什么叫状态变量,什么叫“自洽”
  • 为什么自治系统可以画相空间
  • 为什么要关心最大存在区间、爆破、寿命、平衡点、唯一性
  • 为什么有些方程虽然很简单,却会有极其微妙的动力学行为

这份 note 就是沿着这条线来整理。


1. 从一般线性 kk 阶微分方程开始

我们先看最熟悉的一类对象:线性 kk 阶微分方程

x(k)+ak1(t)x(k1)++a1(t)x+a0(t)x=g(t).x^{(k)} + a_{k-1}(t)x^{(k-1)} + \cdots + a_1(t)x' + a_0(t)x = g(t).

其中:

  • x=x(t)x=x(t) 是未知函数。
  • a0,,ak1,ga_0,\dots,a_{k-1},g 是已知函数。
  • g(t)0g(t)\equiv 0,则称为 齐次方程
  • 若右端不显含 tt,则更接近自治情形。

这类方程看起来已经很完整了,但有一个问题:

它把“时间导数”塞到了不同阶数里,结构不够统一。

而 ODE 的一般理论,尤其是存在唯一性、相空间、稳定性、流,最自然地是围绕 一阶系统 展开的。

所以第一步就是把它化成一阶系统。


2. 高阶方程 -> 一阶系统

X1=x,X2=x,,Xk=x(k1).X_1=x,\qquad X_2=x',\qquad \dots,\qquad X_k=x^{(k-1)}.

于是我们定义状态向量

X(t)=(X1(t)X2(t)Xk(t))=(x(t)x(t)x(k1)(t)).X(t)= \begin{pmatrix} X_1(t)\\ X_2(t)\\ \vdots\\ X_k(t) \end{pmatrix} = \begin{pmatrix} x(t)\\ x'(t)\\ \vdots\\ x^{(k-1)}(t) \end{pmatrix}.

那么对它求导:

X(t)=(x(t)x(t)x(k)(t)).X'(t)= \begin{pmatrix} x'(t)\\ x''(t)\\ \vdots\\ x^{(k)}(t) \end{pmatrix}.

k1k-1 个分量非常简单:

X1=X2,X2=X3,,Xk1=Xk.X_1'=X_2,\quad X_2'=X_3,\quad \dots,\quad X_{k-1}'=X_k.

最后一个分量由原方程给出:

Xk=x(k)=ak1(t)x(k1)a0(t)x+g(t).X_k' = x^{(k)} = -a_{k-1}(t)x^{(k-1)}-\cdots-a_0(t)x+g(t).

也就是说

X(t)=A(t)X(t)+b(t),X'(t)=A(t)X(t)+b(t),

其中

A(t)=(010000100001a0(t)a1(t)a2(t)ak1(t)),b(t)=(000g(t)).A(t)= \begin{pmatrix} 0 & 1 & 0 & \cdots & 0\\ 0 & 0 & 1 & \cdots & 0\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & 0 & \cdots & 1\\ -a_0(t) & -a_1(t) & -a_2(t) & \cdots & -a_{k-1}(t) \end{pmatrix}, \qquad b(t)= \begin{pmatrix} 0\\ 0\\ \vdots\\ 0\\ g(t) \end{pmatrix}.

所以:

任意 kk 阶线性方程都可以改写成 kk 维一阶线性系统。

这一步极其重要。因为从此以后,我们研究的不是“一个高阶方程”,而是“一个状态向量在更高维空间中的一阶演化”。


3. 什么叫“自洽”

这里最值得抓住的概念,不是矩阵形式本身,而是:

为什么这种打包是“对的”?

答案是:因为它形成了一个 自洽的状态系统

3.1 最朴素的定义

所谓“自洽”,就是:

我们选出的状态变量,已经包含了决定系统未来演化所需的全部信息。
换句话说,这组变量的导数,可以完全由这组变量自身来表达。

例如在 kk 阶方程中,只知道 x(t)x(t) 往往不够,因为未来怎么走还取决于 x(t),x(t),x'(t),x''(t),\dots

但一旦把

(x,x,,x(k1))\bigl(x,x',\dots,x^{(k-1)}\bigr)

都纳入状态,系统就闭合了:

X=F(t,X).X' = F(t,X).

此时“当前状态”已经足以决定“下一瞬间的变化率”。

这就叫 闭合,也就是这里说的“自洽”。

3.2 一个反例来帮助理解

考虑二阶方程

x=f(t,x,x).x''=f(t,x,x').

如果你只取状态变量 Y=xY=x,那么

Y=xY'=x'

右边还依赖一个没纳入系统的量 xx'。所以这时系统 不闭合,不自洽。

但若取

X1=x,X2=x,X_1=x,\qquad X_2=x',

X1=X2,X2=f(t,X1,X2),X_1'=X_2,\qquad X_2'=f(t,X_1,X_2),

右边只依赖 t,X1,X2t,X_1,X_2,系统闭合,自洽。


4. 从非自治到自治:把时间也并进系统

一般一阶系统写成

X(t)=F(t,X(t)).X'(t)=F(t,X(t)).

如果右端显含 tt,这叫 非自治系统。 如果右端不显含 tt,写成

X(t)=F(X(t)),X'(t)=F(X(t)),

则叫 自治系统

自治系统特别重要,因为这时你可以把它看成:

在状态空间的每一点,系统都定义了一个速度方向。
所以整个方程就是一个向量场,解则是这个向量场的积分曲线。

这就是相空间图像的来源。

4.1 如何把非自治系统变自治系统

很简单:把时间本身也当成一个状态变量。

Y0=t,Y=X.Y_0=t,\qquad Y=X.

Y0=1,Y=F(Y0,Y).Y_0'=1,\qquad Y'=F(Y_0,Y).

于是整个系统可以写成

Y~=F~(Y~),\widetilde{Y}'=\widetilde{F}(\widetilde{Y}),

变成一个更高维的自治系统。

4.2 一个类比:时间作为“额外维度”的引入

这一步很像一个非常有趣的思想操作:

原本时间是“外在参数”;
现在我们把它也并入系统内部,变成状态空间的一部分。

这有点像狭义相对论里把时间与空间并列地纳入四维时空坐标,虽然这里当然不是同一回事,但直觉上很相似:

  • 原来:时间是外部的“钟”
  • 现在:时间成为状态空间中的一个坐标方向

4.3 这样做的收益与代价

收益

你得到一个真正的自治系统,可以清楚地谈:

  • 相空间
  • 向量场
  • 轨道

代价

维数升高了。 原来是“低维但显含时间”的系统, 现在变成“更高维但时间不再显式出现”的系统。

所以可以这样形容:

非自治系统:相空间较清楚,但规则随时间变化。
自治化后:相空间更复杂,但演化规则永恒不变。

这是一个很漂亮的交换。


5. 因此,核心任务先落到最简单的一阶自治系统

既然如此,最应该先研究的对象就是:

x(t)=f(x(t)).x'(t)=f(x(t)).

这是 一阶标量自治系统

它之所以极其重要,是因为:

  1. 它已经自洽。
  2. 它可以画相线。
  3. 它把“平衡点、稳定性、唯一性、爆破、寿命”等核心概念都以最简单形式呈现出来。

6. 一阶自治系统中最重要的几个问题

研究

x=f(x),x(t0)=x0x'=f(x),\qquad x(t_0)=x_0

时,最值得关心的不是“能不能积分”,而是以下几个问题。

6.1 初值问题

给定

x(t0)=x0,x(t_0)=x_0,

是否存在解?是否唯一?

这是 ODE 最基本的入口。 连续性往往给存在,局部 Lipschitz 往往给唯一,但这两者并不相同。

定理(Peano 存在定理).f:URnf: U \to \mathbb{R}^nUR×RnU \subseteq \mathbb{R} \times \mathbb{R}^n 为开集)是连续的,则对任意 (t0,x0)U(t_0, x_0) \in U,初值问题 x=f(t,x), x(t0)=x0x' = f(t, x),\ x(t_0) = x_0t0t_0 的某个邻域内至少有一个解。

定理(Picard-Lindelöf 唯一性定理).ff 还关于 xx 满足局部 Lipschitz 条件,即对每个紧集 KUK \subset U,存在常数 LL 使得

f(t,x1)f(t,x2)Lx1x2,(t,x1),(t,x2)K,|f(t, x_1) - f(t, x_2)| \le L|x_1 - x_2|, \quad \forall (t, x_1), (t, x_2) \in K,

则初值问题在 t0t_0 的某个邻域内有唯一解。

Peano 只给存在性(ff 连续即可),Picard-Lindelöf 再加 Lipschitz 才保证唯一性。后面 x˙=x\dot{x} = \sqrt{|x|} 的例子正说明了只有连续性时唯一性可以失败。

6.2 最大存在区间

解未必能对所有 tt 都存在。 一个解通常有自己的 最大存在区间

(α,β).(\alpha,\beta).

也就是说,解可以在这个区间上存在,但无法继续延拓出去。

6.3 解的寿命

最大存在区间的长度,就是解能“活多久”的问题。 有时寿命是无限的,有时是有限的。

这个问题常常和 blow-up 直接相关。

6.4 爆破(blow-up)

所谓 blow-up,直观上就是:

在有限时间内,解的大小趋于无穷,或者以某种方式失去良性。

例如

x˙=x3\dot{x}=x^3

的解就会在有限时间炸掉。

这是一个非常关键的事实:

局部存在唯一 并不意味着 全局存在

6.5 平衡点 / 平稳点

若某点 xx_* 满足

f(x)=0,f(x_*)=0,

那么常值函数

x(t)xx(t)\equiv x_*

就是一个解,称为 平衡点平稳点

一阶自治系统的相线分析,几乎完全围绕这些点展开。

6.6 唯一与否

即使 xx_* 是平衡点,“以 x(t0)=xx(t_0)=x_* 为初值”也未必只有这一个解。

例如

x˙=x\dot{x}=\sqrt{|x|}

00 点就会出现“停一会儿再走”的非唯一现象。

这说明:

  • 平衡点的存在不自动推出唯一性。
  • 连续性不自动推出唯一性。
  • 正则性非常关键。

6.7 相线与稳定性

对于一阶自治系统,最漂亮的工具是 相线分析

  • 找零点 f(x)=0f(x)=0
  • 判断各区间上 f(x)f(x) 的符号
  • 用箭头表示解往左还是往右流动

这样就能直接看出:

  • 哪些平衡点稳定
  • 哪些平衡点不稳定
  • 解的长期行为大致如何

7. 例题分析

下面挑几个最有代表性的例子来详细做。

例 1:x˙=x3\dot{x}=x^3

这是一个很简单,但现象极典型的方程。

7.1 显式解

分离变量:

dxx3=dt.\frac{dx}{x^3}=dt.

x0x\neq 0,积分得

12x2=t+C.-\frac{1}{2x^2}=t+C.

于是

x(t)=±1C2t.x(t)=\pm \frac{1}{\sqrt{C-2t}}.

若初值为 x(0)=x00x(0)=x_0\neq 0,可写成

x(t)=x012x02t.x(t)=\frac{x_0}{\sqrt{1-2x_0^2 t}}.

x0=0x_0=0,则平凡解

x(t)0.x(t)\equiv 0.

7.2 关键分析

唯一性

f(x)=x3f(x)=x^3 是光滑函数,所以初值问题局部存在唯一解。

平衡点

x=0x=0 是平衡点。

稳定性

因为:

  • x>0x>0 时,x˙>0\dot{x}>0,往右跑。
  • x<0x<0 时,x˙<0\dot{x}<0,往左跑。

所以相线是

 0 \leftarrow\ 0\ \rightarrow

00不稳定平衡点

blow-up

x00x_0\neq 0,分母在

t=12x02t_*=\frac{1}{2x_0^2}

时变成 00,所以解在有限时间 blow-up。

7.3 这题的关键点

这题说明了一个非常重要的分离:

局部唯一 不等于 全局存在

ODE 的“存在唯一性”只是在局部时间尺度上成立,而 blow-up 是一个全局动力学现象。


例 2:x˙=x(1x)\dot{x}=x(1-x)

这是经典 logistic 方程。

8.1 平衡点

x(1x)=0,x(1-x)=0,

x=0,x=1.x=0,\qquad x=1.

所以有两个平衡解:

x(t)0,x(t)1.x(t)\equiv 0,\qquad x(t)\equiv 1.

8.2 相线分析

看符号:

  • x<0x<0 时,x(1x)<0x(1-x)<0,向左。
  • 0<x<10<x<1 时,x(1x)>0x(1-x)>0,向右。
  • x>1x>1 时,x(1x)<0x(1-x)<0,向左。

所以相线为

()  0  1  (+)(-\infty)\ \leftarrow\ 0\ \rightarrow\ 1\ \leftarrow\ (+\infty)

于是立刻得到:

  • 00 不稳定
  • 11 稳定

8.3 显式解

分离变量:

dxx(1x)=dt.\frac{dx}{x(1-x)}=dt.

部分分式:

1x(1x)=1x+11x.\frac{1}{x(1-x)}=\frac{1}{x}+\frac{1}{1-x}.

积分得

lnx1x=t+C.\ln\left|\frac{x}{1-x}\right|=t+C.

因此

x(t)=11+Aet.x(t)=\frac{1}{1+A e^{-t}}.

或者若 x(0)=x00,1x(0)=x_0\neq 0,1

x(t)=x0et1x0+x0et.x(t)=\frac{x_0 e^t}{1-x_0+x_0 e^t}.

8.4 关键分析

唯一性

f(x)=x(1x)f(x)=x(1-x) 是光滑函数,所以初值问题局部唯一。

为什么 00 虽唯一却不稳定

这一点很重要。

由于

0εdyy(1y)\int_0^\varepsilon \frac{dy}{y(1-y)}

00 附近发散,所以从 x=0x=0 出发的解不能“停一会儿再走”,因此 x0x\equiv 0 是唯一解。

但这不代表它稳定。稳定性问的是:

00 附近但不等于 00 出发,会不会一直留在 00 附近?

这里显然不会,因为小正扰动会往 11 跑,所以 00 仍是不稳定的。

8.5 这题的关键点

这题很好地区分了三件不同的事:

  • 平衡点是否存在
  • 以平衡点为初值时是否唯一
  • 平衡点是否稳定

这三件事不能混为一谈。


例 3:x˙=x\dot{x}=\sqrt{|x|}

这是非唯一性的经典反例。

9.1 平衡点

因为

f(0)=0,f(0)=0,

所以

x(t)0x(t)\equiv 0

是平衡解。

9.2 为什么不唯一

考察

0εdyy=2ε<.\int_0^\varepsilon \frac{dy}{\sqrt{y}}=2\sqrt{\varepsilon}<\infty.

这个积分收敛,意味着:

00 出发,可以在有限时间离开 00

因此除平凡解外,还存在非平凡解。

例如从 00 起飞的一个解是

x(t)=t24,t0.x(t)=\frac{t^2}{4},\qquad t\ge 0.

更进一步,对任意 T0T\ge 0,都可以构造

xT(t)={0,tT,(tT)24,tT.x_T(t)= \begin{cases} 0, & t\le T,\\ \dfrac{(t-T)^2}{4}, & t\ge T. \end{cases}

这说明:

x(0)=0x(0)=0 为初值,解不是唯一的。

9.3 关键分析

这题最重要的不是公式,而是现象:

  • 平衡点可以存在。
  • 但解未必被“钉死”在平衡点上。
  • ff 在零点附近太平,系统就允许“停一会儿再走”。

9.4 这题的关键点

这说明:

连续性不够保证唯一性。
唯一性需要更强的正则性,例如局部 Lipschitz。


例 4:x˙=x(1x)c\dot{x}=x(1-x)-c

这个例子把参数带进来,开始出现最基础的“分岔味道”。

10.1 平衡点方程

平衡点满足

x(1x)c=0,x(1-x)-c=0,

x2x+c=0.x^2-x+c=0.

判别式为

Δ=14c.\Delta=1-4c.

10.2 三种情况

情况 A:c<14c<\frac14

有两个平衡点

α=114c2,β=1+14c2.\alpha=\frac{1-\sqrt{1-4c}}{2},\qquad \beta=\frac{1+\sqrt{1-4c}}{2}.

相线分析表明:

  • α\alpha 不稳定
  • β\beta 稳定

这和 logistic 的结构同型。

情况 B:c=14c=\frac14

只有一个重根

x=12.x=\frac12.

此时

x˙=(x12)2.\dot{x}=-\left(x-\frac12\right)^2.

右端总是非正,系统呈现一种退化临界行为。

情况 C:c>14c>\frac14

没有实根,也就是 没有平衡点

由于

x(1x)14,x(1-x)\le \frac14,

x(1x)c<0x(1-x)-c<0

对所有 xx 成立,于是所有解都严格向左流。

10.3 这题的关键点

这题最值得注意的不是显式解,而是:

一个参数 cc 的变化,可以改变平衡点的数目与稳定结构。

这已经是最基础的动力系统 / 分岔分析的雏形。


11. 一阶自治系统为什么这么好玩

到了这里,其实已经能解释为什么一阶自治系统会突然变得非常有趣。

因为它把 ODE 从“求解技术”转变为“研究流”的问题。

你关心的不再只是:

  • 能不能积分
  • 能不能写公式

而是:

  • 当前状态能否决定未来(唯一性)
  • 解能活多久(寿命)
  • 会不会在有限时间爆掉(blow-up)
  • 哪些点会静止(平衡点)
  • 平衡点是吸引还是排斥(稳定性)
  • 参数变化会如何改变整体相图(结构变化)

这就是动力系统真正的入口。


12. 总结

这段内容的主线其实非常清楚:

第一步:从一般 kk 阶线性方程出发

x(k)+ak1(t)x(k1)++a0(t)x=g(t)x^{(k)} + a_{k-1}(t)x^{(k-1)} + \cdots + a_0(t)x = g(t)

第二步:把它改写成 kk 个一阶方程

定义状态向量

X=(x,x,,x(k1)).X=(x,x',\dots,x^{(k-1)}).

第三步:理解“自洽”

所谓自洽,就是状态变量已经包含了决定未来演化所需的全部信息,满足

X=F(t,X).X'=F(t,X).

第四步:把非自治系统自治化

通过把时间也并入状态,

Y0=t,Y_0=t,

把非自治系统变成高一维自治系统。

这一步的收益是:得到清晰的相空间向量场。
代价是:维度升高。

第五步:把注意力聚焦到最简单的一阶自治系统

x=f(x).x'=f(x).

这里已经能完整呈现 ODE 中最核心的动力学问题:

  • 初值问题
  • 最大存在区间
  • 解的寿命
  • blow-up
  • 平衡点
  • 唯一性
  • 稳定性
  • 参数改变下的结构变化

第六步:通过典型例子真正理解这些概念

  • x˙=x3\dot{x}=x^3:局部唯一但有限时 blow-up
  • x˙=x(1x)\dot{x}=x(1-x):唯一、两个平衡点、稳定性分化
  • x˙=x\dot{x}=\sqrt{|x|}:平衡点上的非唯一性
  • x˙=x(1x)c\dot{x}=x(1-x)-c:参数诱导的相图变化

参考

  • Hirsch, M. W., Smale, S., & Devaney, R. L. Differential Equations, Dynamical Systems, and an Introduction to Chaos. 3rd ed., Academic Press, 2013.
  • Teschl, G. Ordinary Differential Equations and Dynamical Systems. AMS, 2012. — 免费电子版可从作者主页获取
  • Arnold, V. I. Ordinary Differential Equations. Springer, 1992. — 几何直觉与严格分析的典范
END

Series: ODE and Dynamical Systems

  1. 1. ODE Note 1:从一般线性 k 阶微分方程到一阶自治系统的动力学视角
  2. 2. ODE Note 2:一阶非自洽周期系统的定性研究
  3. 3. ODE Note 3:初值问题分析

Comments