0. 这份 note 想回答什么
常微分方程如果只从“求显式解”的角度看,往往会显得像一套技巧集:
这些当然有用,但并不触及 ODE 最迷人的部分。
真正更有结构感的视角是:
微分方程不是在“求一个公式”,而是在研究一个状态如何随时间演化的系统。
一旦这样看,很多原本零散的技术点就会变成统一图景:
- 为什么高阶方程总能改写成一阶系统
- 什么叫状态变量,什么叫“自洽”
- 为什么自治系统可以画相空间
- 为什么要关心最大存在区间、爆破、寿命、平衡点、唯一性
- 为什么有些方程虽然很简单,却会有极其微妙的动力学行为
这份 note 就是沿着这条线来整理。
1. 从一般线性 k 阶微分方程开始
我们先看最熟悉的一类对象:线性 k 阶微分方程
x(k)+ak−1(t)x(k−1)+⋯+a1(t)x′+a0(t)x=g(t).
其中:
- x=x(t) 是未知函数。
- a0,…,ak−1,g 是已知函数。
- 若 g(t)≡0,则称为 齐次方程。
- 若右端不显含 t,则更接近自治情形。
这类方程看起来已经很完整了,但有一个问题:
它把“时间导数”塞到了不同阶数里,结构不够统一。
而 ODE 的一般理论,尤其是存在唯一性、相空间、稳定性、流,最自然地是围绕 一阶系统 展开的。
所以第一步就是把它化成一阶系统。
2. 高阶方程 -> 一阶系统
设
X1=x,X2=x′,…,Xk=x(k−1).
于是我们定义状态向量
X(t)=X1(t)X2(t)⋮Xk(t)=x(t)x′(t)⋮x(k−1)(t).
那么对它求导:
X′(t)=x′(t)x′′(t)⋮x(k)(t).
前 k−1 个分量非常简单:
X1′=X2,X2′=X3,…,Xk−1′=Xk.
最后一个分量由原方程给出:
Xk′=x(k)=−ak−1(t)x(k−1)−⋯−a0(t)x+g(t).
也就是说
X′(t)=A(t)X(t)+b(t),
其中
A(t)=00⋮0−a0(t)10⋮0−a1(t)01⋮0−a2(t)⋯⋯⋱⋯⋯00⋮1−ak−1(t),b(t)=00⋮0g(t).
所以:
任意 k 阶线性方程都可以改写成 k 维一阶线性系统。
这一步极其重要。因为从此以后,我们研究的不是“一个高阶方程”,而是“一个状态向量在更高维空间中的一阶演化”。
3. 什么叫“自洽”
这里最值得抓住的概念,不是矩阵形式本身,而是:
为什么这种打包是“对的”?
答案是:因为它形成了一个 自洽的状态系统。
3.1 最朴素的定义
所谓“自洽”,就是:
我们选出的状态变量,已经包含了决定系统未来演化所需的全部信息。
换句话说,这组变量的导数,可以完全由这组变量自身来表达。
例如在 k 阶方程中,只知道 x(t) 往往不够,因为未来怎么走还取决于 x′(t),x′′(t),…。
但一旦把
(x,x′,…,x(k−1))
都纳入状态,系统就闭合了:
X′=F(t,X).
此时“当前状态”已经足以决定“下一瞬间的变化率”。
这就叫 闭合,也就是这里说的“自洽”。
3.2 一个反例来帮助理解
考虑二阶方程
x′′=f(t,x,x′).
如果你只取状态变量 Y=x,那么
Y′=x′
右边还依赖一个没纳入系统的量 x′。所以这时系统 不闭合,不自洽。
但若取
X1=x,X2=x′,
则
X1′=X2,X2′=f(t,X1,X2),
右边只依赖 t,X1,X2,系统闭合,自洽。
4. 从非自治到自治:把时间也并进系统
一般一阶系统写成
X′(t)=F(t,X(t)).
如果右端显含 t,这叫 非自治系统。
如果右端不显含 t,写成
X′(t)=F(X(t)),
则叫 自治系统。
自治系统特别重要,因为这时你可以把它看成:
在状态空间的每一点,系统都定义了一个速度方向。
所以整个方程就是一个向量场,解则是这个向量场的积分曲线。
这就是相空间图像的来源。
4.1 如何把非自治系统变自治系统
很简单:把时间本身也当成一个状态变量。
设
Y0=t,Y=X.
则
Y0′=1,Y′=F(Y0,Y).
于是整个系统可以写成
Y′=F(Y),
变成一个更高维的自治系统。
4.2 一个类比:时间作为“额外维度”的引入
这一步很像一个非常有趣的思想操作:
原本时间是“外在参数”;
现在我们把它也并入系统内部,变成状态空间的一部分。
这有点像狭义相对论里把时间与空间并列地纳入四维时空坐标,虽然这里当然不是同一回事,但直觉上很相似:
- 原来:时间是外部的“钟”
- 现在:时间成为状态空间中的一个坐标方向
4.3 这样做的收益与代价
收益
你得到一个真正的自治系统,可以清楚地谈:
代价
维数升高了。
原来是“低维但显含时间”的系统,
现在变成“更高维但时间不再显式出现”的系统。
所以可以这样形容:
非自治系统:相空间较清楚,但规则随时间变化。
自治化后:相空间更复杂,但演化规则永恒不变。
这是一个很漂亮的交换。
5. 因此,核心任务先落到最简单的一阶自治系统
既然如此,最应该先研究的对象就是:
x′(t)=f(x(t)).
这是 一阶标量自治系统。
它之所以极其重要,是因为:
- 它已经自洽。
- 它可以画相线。
- 它把“平衡点、稳定性、唯一性、爆破、寿命”等核心概念都以最简单形式呈现出来。
6. 一阶自治系统中最重要的几个问题
研究
x′=f(x),x(t0)=x0
时,最值得关心的不是“能不能积分”,而是以下几个问题。
6.1 初值问题
给定
x(t0)=x0,
是否存在解?是否唯一?
这是 ODE 最基本的入口。
连续性往往给存在,局部 Lipschitz 往往给唯一,但这两者并不相同。
定理(Peano 存在定理). 若 f:U→Rn(U⊆R×Rn 为开集)是连续的,则对任意 (t0,x0)∈U,初值问题 x′=f(t,x), x(t0)=x0 在 t0 的某个邻域内至少有一个解。
定理(Picard-Lindelöf 唯一性定理). 若 f 还关于 x 满足局部 Lipschitz 条件,即对每个紧集 K⊂U,存在常数 L 使得
∣f(t,x1)−f(t,x2)∣≤L∣x1−x2∣,∀(t,x1),(t,x2)∈K,
则初值问题在 t0 的某个邻域内有唯一解。
Peano 只给存在性(f 连续即可),Picard-Lindelöf 再加 Lipschitz 才保证唯一性。后面 x˙=∣x∣ 的例子正说明了只有连续性时唯一性可以失败。
6.2 最大存在区间
解未必能对所有 t 都存在。
一个解通常有自己的 最大存在区间
(α,β).
也就是说,解可以在这个区间上存在,但无法继续延拓出去。
6.3 解的寿命
最大存在区间的长度,就是解能“活多久”的问题。
有时寿命是无限的,有时是有限的。
这个问题常常和 blow-up 直接相关。
6.4 爆破(blow-up)
所谓 blow-up,直观上就是:
在有限时间内,解的大小趋于无穷,或者以某种方式失去良性。
例如
x˙=x3
的解就会在有限时间炸掉。
这是一个非常关键的事实:
局部存在唯一 并不意味着 全局存在。
6.5 平衡点 / 平稳点
若某点 x∗ 满足
f(x∗)=0,
那么常值函数
x(t)≡x∗
就是一个解,称为 平衡点 或 平稳点。
一阶自治系统的相线分析,几乎完全围绕这些点展开。
6.6 唯一与否
即使 x∗ 是平衡点,“以 x(t0)=x∗ 为初值”也未必只有这一个解。
例如
x˙=∣x∣
在 0 点就会出现“停一会儿再走”的非唯一现象。
这说明:
- 平衡点的存在不自动推出唯一性。
- 连续性不自动推出唯一性。
- 正则性非常关键。
6.7 相线与稳定性
对于一阶自治系统,最漂亮的工具是 相线分析:
- 找零点 f(x)=0
- 判断各区间上 f(x) 的符号
- 用箭头表示解往左还是往右流动
这样就能直接看出:
- 哪些平衡点稳定
- 哪些平衡点不稳定
- 解的长期行为大致如何
7. 例题分析
下面挑几个最有代表性的例子来详细做。
例 1:x˙=x3
这是一个很简单,但现象极典型的方程。
7.1 显式解
分离变量:
x3dx=dt.
若 x=0,积分得
−2x21=t+C.
于是
x(t)=±C−2t1.
若初值为 x(0)=x0=0,可写成
x(t)=1−2x02tx0.
若 x0=0,则平凡解
x(t)≡0.
7.2 关键分析
唯一性
f(x)=x3 是光滑函数,所以初值问题局部存在唯一解。
平衡点
x=0 是平衡点。
稳定性
因为:
- x>0 时,x˙>0,往右跑。
- x<0 时,x˙<0,往左跑。
所以相线是
← 0 →
0 是 不稳定平衡点。
blow-up
若 x0=0,分母在
t∗=2x021
时变成 0,所以解在有限时间 blow-up。
7.3 这题的关键点
这题说明了一个非常重要的分离:
局部唯一 不等于 全局存在。
ODE 的“存在唯一性”只是在局部时间尺度上成立,而 blow-up 是一个全局动力学现象。
例 2:x˙=x(1−x)
这是经典 logistic 方程。
8.1 平衡点
令
x(1−x)=0,
得
x=0,x=1.
所以有两个平衡解:
x(t)≡0,x(t)≡1.
8.2 相线分析
看符号:
- x<0 时,x(1−x)<0,向左。
- 0<x<1 时,x(1−x)>0,向右。
- x>1 时,x(1−x)<0,向左。
所以相线为
(−∞) ← 0 → 1 ← (+∞)
于是立刻得到:
8.3 显式解
分离变量:
x(1−x)dx=dt.
部分分式:
x(1−x)1=x1+1−x1.
积分得
ln1−xx=t+C.
因此
x(t)=1+Ae−t1.
或者若 x(0)=x0=0,1:
x(t)=1−x0+x0etx0et.
8.4 关键分析
唯一性
f(x)=x(1−x) 是光滑函数,所以初值问题局部唯一。
为什么 0 虽唯一却不稳定
这一点很重要。
由于
∫0εy(1−y)dy
在 0 附近发散,所以从 x=0 出发的解不能“停一会儿再走”,因此 x≡0 是唯一解。
但这不代表它稳定。稳定性问的是:
从 0 附近但不等于 0 出发,会不会一直留在 0 附近?
这里显然不会,因为小正扰动会往 1 跑,所以 0 仍是不稳定的。
8.5 这题的关键点
这题很好地区分了三件不同的事:
- 平衡点是否存在
- 以平衡点为初值时是否唯一
- 平衡点是否稳定
这三件事不能混为一谈。
例 3:x˙=∣x∣
这是非唯一性的经典反例。
9.1 平衡点
因为
f(0)=0,
所以
x(t)≡0
是平衡解。
9.2 为什么不唯一
考察
∫0εydy=2ε<∞.
这个积分收敛,意味着:
从 0 出发,可以在有限时间离开 0。
因此除平凡解外,还存在非平凡解。
例如从 0 起飞的一个解是
x(t)=4t2,t≥0.
更进一步,对任意 T≥0,都可以构造
xT(t)=⎩⎨⎧0,4(t−T)2,t≤T,t≥T.
这说明:
以 x(0)=0 为初值,解不是唯一的。
9.3 关键分析
这题最重要的不是公式,而是现象:
- 平衡点可以存在。
- 但解未必被“钉死”在平衡点上。
- 若 f 在零点附近太平,系统就允许“停一会儿再走”。
9.4 这题的关键点
这说明:
连续性不够保证唯一性。
唯一性需要更强的正则性,例如局部 Lipschitz。
例 4:x˙=x(1−x)−c
这个例子把参数带进来,开始出现最基础的“分岔味道”。
10.1 平衡点方程
平衡点满足
x(1−x)−c=0,
即
x2−x+c=0.
判别式为
Δ=1−4c.
10.2 三种情况
情况 A:c<41
有两个平衡点
α=21−1−4c,β=21+1−4c.
相线分析表明:
这和 logistic 的结构同型。
情况 B:c=41
只有一个重根
x=21.
此时
x˙=−(x−21)2.
右端总是非正,系统呈现一种退化临界行为。
情况 C:c>41
没有实根,也就是 没有平衡点。
由于
x(1−x)≤41,
故
x(1−x)−c<0
对所有 x 成立,于是所有解都严格向左流。
10.3 这题的关键点
这题最值得注意的不是显式解,而是:
一个参数 c 的变化,可以改变平衡点的数目与稳定结构。
这已经是最基础的动力系统 / 分岔分析的雏形。
11. 一阶自治系统为什么这么好玩
到了这里,其实已经能解释为什么一阶自治系统会突然变得非常有趣。
因为它把 ODE 从“求解技术”转变为“研究流”的问题。
你关心的不再只是:
而是:
- 当前状态能否决定未来(唯一性)
- 解能活多久(寿命)
- 会不会在有限时间爆掉(blow-up)
- 哪些点会静止(平衡点)
- 平衡点是吸引还是排斥(稳定性)
- 参数变化会如何改变整体相图(结构变化)
这就是动力系统真正的入口。
12. 总结
这段内容的主线其实非常清楚:
第一步:从一般 k 阶线性方程出发
x(k)+ak−1(t)x(k−1)+⋯+a0(t)x=g(t)
第二步:把它改写成 k 个一阶方程
定义状态向量
X=(x,x′,…,x(k−1)).
第三步:理解“自洽”
所谓自洽,就是状态变量已经包含了决定未来演化所需的全部信息,满足
X′=F(t,X).
第四步:把非自治系统自治化
通过把时间也并入状态,
Y0=t,
把非自治系统变成高一维自治系统。
这一步的收益是:得到清晰的相空间向量场。
代价是:维度升高。
第五步:把注意力聚焦到最简单的一阶自治系统
x′=f(x).
这里已经能完整呈现 ODE 中最核心的动力学问题:
- 初值问题
- 最大存在区间
- 解的寿命
- blow-up
- 平衡点
- 唯一性
- 稳定性
- 参数改变下的结构变化
第六步:通过典型例子真正理解这些概念
- x˙=x3:局部唯一但有限时 blow-up
- x˙=x(1−x):唯一、两个平衡点、稳定性分化
- x˙=∣x∣:平衡点上的非唯一性
- 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. — 几何直觉与严格分析的典范