【动力系统与非线性动力学】——Part4 分岔理论初步
第四部分:分岔理论初步
在前三部分中,我们已经学习了动力系统的基本概念、平衡点与稳定性分析,并通过 Logistic 模型、捕食者—猎物模型、单摆和 Van der Pol 振子认识了一些经典系统。
从这一部分开始,我们关注一个更进一步的问题:
当系统中的参数发生变化时,系统的整体行为会不会突然改变?
这就是 分岔理论 研究的核心问题。
本部分对应四个主题:
- 第 12 章:什么是分岔?
- 第 13 章:鞍结分岔
- 第 14 章:叉式分岔
- 第 15 章:Hopf 分岔

第 12 章 什么是分岔?
12.1 参数为什么重要?
很多动力系统不仅依赖状态变量,还依赖某些参数。
例如一维自治系统可以写成:
dxdt=f(x,r) \frac{dx}{dt}=f(x,r) dtdx=f(x,r)
其中:
- xxx 是系统状态变量;
- ttt 是时间;
- rrr 是系统参数。
参数 rrr 可以表示很多实际含义,例如:
- 种群模型中的增长率;
- 机械系统中的阻尼系数;
- 电路系统中的反馈强度;
- 化学反应中的反应速率;
- 生态系统中的资源供给量。
当参数较小时,系统可能趋于稳定;当参数变大后,系统可能开始振荡;如果参数继续变化,系统甚至可能进入混沌状态。
这说明:
动力系统的行为不仅取决于方程形式,也取决于参数取值。
12.2 什么是分岔?
所谓 分岔,指的是:
当参数连续变化到某个临界值时,系统的定性结构发生突然改变。
这里的“定性结构”可以包括:
- 平衡点数量发生变化;
- 平衡点稳定性发生变化;
- 周期轨道出现或消失;
- 吸引子的形态发生变化;
- 系统从稳定状态进入振荡或混沌。
注意,分岔不是说系统变量一定发生跳变,而是说系统的长期行为结构发生了改变。
例如,一个系统原本只有一个稳定平衡点,参数改变后突然出现两个新的稳定平衡点,这就是一种分岔。
12.3 分岔点
假设系统为:
dxdt=f(x,r) \frac{dx}{dt}=f(x,r) dtdx=f(x,r)
如果当参数 rrr 取某个值 rcr_crc 时,系统结构发生定性变化,那么 rcr_crc 称为 分岔点。
例如:
dxdt=r−x2 \frac{dx}{dt}=r-x^2 dtdx=r−x2
当 r<0r<0r<0 时,没有平衡点;当 r=0r=0r=0 时,出现一个临界平衡点;当 r>0r>0r>0 时,出现两个平衡点。
因此:
rc=0 r_c=0 rc=0
就是这个系统的分岔点。
12.4 分岔图怎么看?
分岔理论中最常见的图像是 分岔图。
分岔图通常这样画:
- 横轴表示参数;
- 纵轴表示平衡点或长期状态;
- 实线表示稳定分支;
- 虚线表示不稳定分支。
例如,如果系统的平衡点满足:
f(x,r)=0 f(x,r)=0 f(x,r)=0
那么我们可以把所有满足条件的 (r,x∗)(r,x^*)(r,x∗) 画在平面上。
这样得到的图像就能直接展示:参数变化时,平衡点如何出现、消失或改变稳定性。
12.5 为什么初学者要学分岔?
分岔理论是从“局部稳定性分析”走向“整体结构变化分析”的桥梁。
前面我们分析平衡点时,通常是固定参数,然后问:
这个平衡点稳定吗?
而分岔理论进一步追问:
如果参数变了,平衡点还存在吗?稳定性还一样吗?系统会不会出现新的长期行为?
这对于理解非线性系统非常重要。
很多复杂现象都可以从分岔角度理解,例如:
- 激光器从无振荡到有振荡;
- 流体从层流到复杂运动;
- 神经元从静息状态到周期放电;
- 生态系统从稳定共存到种群崩溃;
- 机械结构从稳定形态到屈曲失稳。
第 13 章 鞍结分岔
13.1 鞍结分岔的标准形式
鞍结分岔,也常称为 折叠分岔,是最基本的分岔之一。
它的一维标准形式可以写成:
dxdt=r−x2 \frac{dx}{dt}=r-x^2 dtdx=r−x2
其中 rrr 是控制参数。
平衡点满足:
r−x2=0 r-x^2=0 r−x2=0
因此:
x∗=±r x^*=\pm \sqrt{r} x∗=±r
但是这个表达式只有在 r≥0r\ge 0r≥0 时才有实数解。
13.2 平衡点的产生与消失
对系统:
x˙=r−x2 \dot{x}=r-x^2 x˙=r−x2
我们分三种情况讨论。
1. 当 r<0r<0r<0 时
方程:
r−x2=0 r-x^2=0 r−x2=0
没有实数解,因此系统没有平衡点。
2. 当 r=0r=0r=0 时
系统变为:
x˙=−x2 \dot{x}=-x^2 x˙=−x2
此时只有一个平衡点:
x∗=0 x^*=0 x∗=0
这是一个临界的半稳定平衡点。
3. 当 r>0r>0r>0 时
系统有两个平衡点:
x1∗=−r,x2∗=r x_1^*=-\sqrt{r},\qquad x_2^*=\sqrt{r} x1∗=−r,x2∗=r
这两个平衡点一个稳定,一个不稳定。

13.3 稳定性分析
为了判断稳定性,我们对右端函数求导:
f(x)=r−x2 f(x)=r-x^2 f(x)=r−x2
f′(x)=−2x f'(x)=-2x f′(x)=−2x
在平衡点 x∗=rx^*=\sqrt{r}x∗=r 处:
f′(r)=−2r<0 f'(\sqrt{r})=-2\sqrt{r}<0 f′(r)=−2r<0
所以 x∗=rx^*=\sqrt{r}x∗=r 是稳定平衡点。
在平衡点 x∗=−rx^*=-\sqrt{r}x∗=−r 处:
f′(−r)=2r>0 f'(-\sqrt{r})=2\sqrt{r}>0 f′(−r)=2r>0
所以 x∗=−rx^*=-\sqrt{r}x∗=−r 是不稳定平衡点。
13.4 相线视角
除了看分岔图,我们也可以看相线图。

从相线图中可以看出:
- r<0r<0r<0 时没有平衡点;
- r=0r=0r=0 时出现一个半稳定平衡点;
- r>0r>0r>0 时出现一对平衡点,一个稳定,一个不稳定。
这就是鞍结分岔的典型结构:
一个稳定平衡点和一个不稳定平衡点在分岔点处共同产生或共同消失。
13.5 Python 绘制鞍结分岔图
下面给出一个简单的绘图代码。
import numpy as np
import matplotlib.pyplot as plt
r = np.linspace(0, 4, 300)
x_stable = np.sqrt(r)
x_unstable = -np.sqrt(r)
plt.figure(figsize=(7, 5))
plt.plot(r, x_stable, label="stable")
plt.plot(r, x_unstable, "--", label="unstable")
plt.axvline(0, color="black", linewidth=0.8)
plt.axhline(0, color="black", linewidth=0.8)
plt.xlabel("r")
plt.ylabel("x*")
plt.title("Saddle-node bifurcation")
plt.legend()
plt.grid(alpha=0.3)
plt.show()
对于 CSDN 博客,如果你想让图像更适合中文读者,可以把标题和坐标轴改成中文。
第 14 章 叉式分岔
14.1 什么是叉式分岔?
叉式分岔通常出现在具有对称性的系统中。
它的分岔图看起来像一个叉子,所以叫做 叉式分岔。
常见的叉式分岔有两种:
- 超临界叉式分岔;
- 亚临界叉式分岔。
它们都与平衡点稳定性的改变有关,但系统失稳后的行为不同。
14.2 超临界叉式分岔
超临界叉式分岔的标准形式是:
dxdt=rx−x3 \frac{dx}{dt}=rx-x^3 dtdx=rx−x3
求平衡点:
rx−x3=0 rx-x^3=0 rx−x3=0
提取公因式:
x(r−x2)=0 x(r-x^2)=0 x(r−x2)=0
因此:
x∗=0 x^*=0 x∗=0
或者:
x∗=±r x^*=\pm \sqrt{r} x∗=±r
其中 x∗=±rx^*=\pm \sqrt{r}x∗=±r 只在 r≥0r\ge 0r≥0 时存在。

从图中可以看出:
- 当 r<0r<0r<0 时,只有 x=0x=0x=0 一个稳定平衡点;
- 当 r>0r>0r>0 时,x=0x=0x=0 变为不稳定;
- 同时出现两个新的稳定平衡点 x=±rx=\pm\sqrt{r}x=±r。
这表示系统从一个对称稳定状态,变为两个对称的稳定状态。
14.3 超临界叉式分岔的稳定性判断
令:
f(x)=rx−x3 f(x)=rx-x^3 f(x)=rx−x3
则:
f′(x)=r−3x2 f'(x)=r-3x^2 f′(x)=r−3x2
在 x∗=0x^*=0x∗=0 处:
f′(0)=r f'(0)=r f′(0)=r
所以:
- 当 r<0r<0r<0 时,x=0x=0x=0 稳定;
- 当 r>0r>0r>0 时,x=0x=0x=0 不稳定。
在 x∗=±rx^*=\pm\sqrt{r}x∗=±r 处:
f′(±r)=r−3r=−2r f'(\pm\sqrt{r})=r-3r=-2r f′(±r)=r−3r=−2r
当 r>0r>0r>0 时:
f′(±r)<0 f'(\pm\sqrt{r})<0 f′(±r)<0
所以两个新的平衡点都是稳定的。
14.4 亚临界叉式分岔
亚临界叉式分岔的一个标准形式是:
dxdt=rx+x3 \frac{dx}{dt}=rx+x^3 dtdx=rx+x3
求平衡点:
rx+x3=0 rx+x^3=0 rx+x3=0
即:
x(r+x2)=0 x(r+x^2)=0 x(r+x2)=0
因此:
x∗=0 x^*=0 x∗=0
或者:
x∗=±−r x^*=\pm\sqrt{-r} x∗=±−r
其中 x∗=±−rx^*=\pm\sqrt{-r}x∗=±−r 只在 r≤0r\le 0r≤0 时存在。

从图中可以看出:
- 当 r<0r<0r<0 时,x=0x=0x=0 是稳定的;
- 当 r>0r>0r>0 时,x=0x=0x=0 变为不稳定;
- 在 r<0r<0r<0 一侧存在两个不稳定分支。
亚临界叉式分岔通常意味着:系统在临界点之后不会温和地进入一个附近的新稳定状态,而可能迅速离开原来的局部区域。
实际系统中,为了避免解发散,常常还会加入更高阶稳定项,例如:
dxdt=rx+x3−x5 \frac{dx}{dt}=rx+x^3-x^5 dtdx=rx+x3−x5
这样系统在远离原点后可能重新被高阶项限制住。
14.5 叉式分岔与对称性
叉式分岔常常和对称性有关。
以超临界叉式分岔为例:
x˙=rx−x3 \dot{x}=rx-x^3 x˙=rx−x3
如果把 xxx 换成 −x-x−x,方程右端也会整体变号,这说明系统对正负方向具有对称性。
这种结构常见于:
- 结构屈曲;
- 相变模型;
- 对称态破缺;
- 某些模式选择问题。
一个常见直观例子是细杆受压屈曲:当压力较小时,竖直状态稳定;当压力超过临界值后,竖直状态失稳,杆可能向左弯曲,也可能向右弯曲。
14.6 Python 绘制超临界叉式分岔图
import numpy as np
import matplotlib.pyplot as plt
r1 = np.linspace(-3, 0, 200)
r2 = np.linspace(0, 3, 200)
plt.figure(figsize=(7, 5))
# x = 0 分支
plt.plot(r1, np.zeros_like(r1), label="stable")
plt.plot(r2, np.zeros_like(r2), "--", label="unstable")
# x = ±sqrt(r) 分支
plt.plot(r2, np.sqrt(r2), label="stable branch")
plt.plot(r2, -np.sqrt(r2))
plt.axvline(0, color="black", linewidth=0.8)
plt.axhline(0, color="black", linewidth=0.8)
plt.xlabel("r")
plt.ylabel("x*")
plt.title("Supercritical pitchfork bifurcation")
plt.legend()
plt.grid(alpha=0.3)
plt.show()
第 15 章 Hopf 分岔
15.1 从平衡点到周期振荡
前面讨论的鞍结分岔和叉式分岔主要发生在一维系统中,重点是平衡点的产生、消失和稳定性改变。
但在二维及更高维系统中,还会出现另一类非常重要的分岔:
平衡点失去稳定性,同时附近产生周期振荡。
这类分岔称为 Hopf 分岔。
Hopf 分岔是理解极限环产生机制的重要入口。
15.2 Hopf 分岔的直观图像
可以把 Hopf 分岔想象成这样:
- 参数较小时,轨道螺旋进入一个稳定平衡点;
- 参数达到临界值时,平衡点稳定性发生改变;
- 参数继续增大后,轨道不再停在平衡点,而是趋于一个闭合曲线;
- 这个闭合曲线就是稳定极限环。
这意味着系统的长期行为从“静止”变成了“周期振荡”。
15.3 Hopf 分岔的标准形式
在极坐标下,超临界 Hopf 分岔可以写成:
dρdt=μρ−ρ3 \frac{d\rho}{dt}=\mu \rho-\rho^3 dtdρ=μρ−ρ3
dθdt=ω \frac{d\theta}{dt}=\omega dtdθ=ω
其中:
- ρ\rhoρ 表示到原点的距离,也就是振幅;
- θ\thetaθ 表示角度;
- μ\muμ 是控制参数;
- ω\omegaω 是角速度。
先看振幅方程:
ρ˙=μρ−ρ3=ρ(μ−ρ2) \dot{\rho}=\mu\rho-\rho^3=\rho(\mu-\rho^2) ρ˙=μρ−ρ3=ρ(μ−ρ2)
平衡振幅满足:
ρ=0 \rho=0 ρ=0
或者:
ρ=μ \rho=\sqrt{\mu} ρ=μ
其中 ρ=μ\rho=\sqrt{\mu}ρ=μ 只在 μ>0\mu>0μ>0 时存在。

15.4 Hopf 分岔前后的相图
Hopf 分岔最直观的理解方式,是看相平面中的轨道结构。

从图中可以看到:
- 当 μ<0\mu<0μ<0 时,原点是稳定焦点,附近轨道螺旋进入原点;
- 当 μ>0\mu>0μ>0 时,原点变为不稳定焦点,附近轨道最终趋于一个稳定极限环。
因此,Hopf 分岔描述的是:
稳定平衡点失稳,并产生周期振荡。
15.5 复特征值与稳定性改变
在线性系统中,我们已经知道二维系统的稳定性可以通过特征值判断。
如果平衡点附近的线性化矩阵有一对复特征值:
λ1,2=α±iω \lambda_{1,2}=\alpha \pm i\omega λ1,2=α±iω
那么:
- α<0\alpha<0α<0 时,轨道螺旋进入平衡点;
- α>0\alpha>0α>0 时,轨道螺旋远离平衡点;
- α=0\alpha=0α=0 是临界情况。
Hopf 分岔通常发生在:
一对共轭复特征值穿过虚轴。
也就是说,随着参数变化,复特征值的实部从负变正,平衡点从稳定焦点变为不稳定焦点。
非线性项则决定失稳之后是否会产生稳定极限环。
15.6 超临界 Hopf 与亚临界 Hopf
Hopf 分岔也分为两种常见类型。
1. 超临界 Hopf 分岔
平衡点失稳后,出现一个小振幅的稳定极限环。
这种情况比较温和,振幅通常从零开始连续增大。
2. 亚临界 Hopf 分岔
平衡点失稳时,附近可能存在不稳定极限环,系统可能突然跳到远处的大振幅振荡。
这种情况更危险,因为系统行为可能出现突变。
本系列入门阶段重点掌握超临界 Hopf 分岔即可。
15.7 Python 绘制 Hopf 分岔振幅图
import numpy as np
import matplotlib.pyplot as plt
mu1 = np.linspace(-3, 0, 200)
mu2 = np.linspace(0, 3, 200)
plt.figure(figsize=(7, 5))
# 原点平衡振幅 A=0
plt.plot(mu1, np.zeros_like(mu1), label="stable equilibrium")
plt.plot(mu2, np.zeros_like(mu2), "--", label="unstable equilibrium")
# 极限环振幅 A=sqrt(mu)
plt.plot(mu2, np.sqrt(mu2), label="stable limit cycle")
plt.axvline(0, color="black", linewidth=0.8)
plt.axhline(0, color="black", linewidth=0.8)
plt.xlabel("mu")
plt.ylabel("amplitude")
plt.title("Supercritical Hopf bifurcation")
plt.legend()
plt.grid(alpha=0.3)
plt.show()
第四部分小结
本部分介绍了分岔理论中最基础的三个例子。
1. 鞍结分岔
标准形式:
x˙=r−x2 \dot{x}=r-x^2 x˙=r−x2
特点是:
一个稳定平衡点和一个不稳定平衡点共同产生或共同消失。
2. 超临界叉式分岔
标准形式:
x˙=rx−x3 \dot{x}=rx-x^3 x˙=rx−x3
特点是:
原来的对称平衡点失稳,同时产生两个新的稳定平衡点。
3. 亚临界叉式分岔
标准形式:
x˙=rx+x3 \dot{x}=rx+x^3 x˙=rx+x3
特点是:
平衡点失稳后,系统可能迅速远离原来的局部区域。
4. Hopf 分岔
标准形式之一:
ρ˙=μρ−ρ3,θ˙=ω \dot{\rho}=\mu\rho-\rho^3,\qquad \dot{\theta}=\omega ρ˙=μρ−ρ3,θ˙=ω
特点是:
稳定平衡点失稳,并产生周期振荡。
本部分的学习重点
初学者学习分岔理论时,不必一开始就追求严格证明。更重要的是掌握以下几点:
- 会求平衡点;
- 会判断平衡点稳定性;
- 会画简单分岔图;
- 能区分稳定分支和不稳定分支;
- 能理解参数变化如何导致系统行为突变;
- 能识别鞍结分岔、叉式分岔和 Hopf 分岔的基本图像。
从下一部分开始,我们将进入 离散动力系统,学习迭代映射、不动点、Cobweb 图以及著名的 Logistic 映射。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)