本文档整理自课堂讲授及深入讨论内容,从捕食者-猎物(Lotka-Volterra)方程出发,系统介绍不变量(守恒量)的概念与验证、标准欧拉方法为何失效、以及保结构(辛)方法的原理与实现,并延伸到哈密顿系统的一般理论。
一、捕食者-猎物模型(Lotka-Volterra 方程)
1.1 方程组
其中 是捕食者种群数量, 是食饵(猎物) 种群数量,点号表示对时间 求导。
1.2 生态学逻辑(老师课堂推导过程)
老师没有直接给出答案,而是通过生态循环的约束条件引导同学推断 、 各代表谁:
| 生态现象 | 数学含义 |
|---|---|
| 食饵增多 → 捕食者增多(食物充足) | 增大时, |
| 捕食者增多 → 食饵减少(被吃掉) | 增大时, |
| 食饵耗尽 → 捕食者灭亡 | 时, (不再增长) |
对照方程:
- :当 时 (捕食者增长), 时减少 ✓
- :当 时 (食饵减少), 时增加 ✓
1.3 自治方程(Autonomous Equation)
【术语】自治方程:右端函数不显含时间 的微分方程。意味着系统的演化规律只由当前状态决定,不随时间本身变化。
自治方程的关键性质:在相平面( - 平面)上,解曲线是封闭曲线(对于保守系统),对应两个种群的周期循环共存,任何一方都不灭绝。
1.4 流(Flow)的概念
对给定初值 ,方程有唯一解 ,它依赖于初值:
称为方程的流(Flow),可以理解为一个算子:将初始状态映射到 时刻的状态。
老师:"流的概念,就相当于是一个算子。给定一个初值之后,那就得到一个解。"
二、不变量(Invariant / 守恒量)
2.1 定义
若存在函数 ,使得沿方程的真实解, 关于时间 的导数恒为零:
则称 为该方程组的一个不变量(守恒量)。
2.2 Lotka-Volterra 模型的不变量
该方程组的不变量为:
2.3 验证 (完整推导)
对 关于 求导,利用链式法则:
计算各偏导数:
代入方程组 , :
两项恰好相消,这是方程组结构的内在特性,不是巧合。
2.4 的几何意义
不是轨迹本身,而是相平面上的 "等高线标签"。
- 每一对 对应一个数值 ,如同地图上的海拔高度
- 固定 (某常数),在相平面上划出一条封闭曲线
- 不同的 值对应不同大小的封闭曲线,如同一圈一圈的等高线
真实解的行为:由于 ,从初值 出发, 永远不变,解始终在那条封闭曲线上转圈。
三、标准欧拉法为何失效?
3.1 显欧拉法 vs 隐欧拉法的格式
显欧拉法:
两个分量同时用旧值更新。
隐欧拉法:
两个分量同时用新值,需要迭代求解。
3.2 数值实验结果
| 方法 | 相平面轨迹 | 生态含义 |
|---|---|---|
| 真实解 | 封闭曲线(永远循环) | 两种群周期共存 |
| 显欧拉 | 螺旋向外炸 | 种群趋于无穷大 |
| 隐欧拉 | 螺旋向内缩 | 种群趋于灭绝 |
老师原话:"你跑着跑着,原来你想的是让他是一个圈,但是他可能跑着跑着就没了,有可能是往外跑炸了。"
3.3 失效的根本原因:$I$ 被破坏
数值方法每走一步,计算出的 与真实解有误差。如果:
那么数值解就落到了另一条等高线上。下一步再偏移,再换一条圈……每步都在换圈,就形成了螺旋线:
- 每步 略微增大( )→ 换到更大的圈 → 螺旋向外(显欧拉)
- 每步 略微减小( )→ 换到更小的圈 → 螺旋向内(隐欧拉)
3.4 深层机制:面积与雅可比矩阵
雅可比矩阵(Jacobian Matrix)
对方程组 , ,雅可比矩阵定义为:
对 Lotka-Volterra 模型计算( , ):
雅可比矩阵的物理意义:描述系统在某一点的局部线性拉伸、旋转和变形。矩阵的行列式等于该映射对面积的缩放比例。
Liouville 定理
对于哈密顿(保守)系统,真实解的演化保持相平面面积:相空间中任意一块区域,随时间演化后形状可能改变,但面积不变。
这对应着系统的能量守恒——既不耗散也不增加。
数值方法的面积缩放
数值方法每走一步,相当于对状态做一次映射。以显欧拉法为例,映射近似为 ( 为单位矩阵):
对于保守系统,迹 (可以验证: 在平衡点处为零,但一般不为零;更精确的分析在辛结构层面),因此:
| 方法 | 每步映射矩阵 | 行列式(面积比) | 结果 |
|---|---|---|---|
| 真实流 | 封闭轨道 | ||
| 显欧拉 | 面积扩张 → 向外螺旋 | ||
| 隐欧拉 | 面积收缩 → 向内螺旋 | ||
| 隐中点法 | 辛映射 | 面积保持 → 封闭轨道 |
直觉理解
- 显欧拉:每步沿切线方向走,切线总是比弧线"偏外"一点,轨迹逐渐扩大。
- 隐欧拉:隐式方法"向内拉",每步略微缩小,轨迹逐渐内缩。
- 面积保持:只有行列式恰好等于 1 的方法,才能让轨道老老实实在原等高线上运动。
四、保结构方法(Structure-Preserving Methods)
4.1 核心思想
若方程本身具有某种几何结构(不变量、保面积性、能量守恒等),数值方法在离散层面也应当保持这些结构,这类方法统称为保结构方法(也称几何积分方法 / 辛积分器)。
老师:"如果离散完了之后,他能满足这个离散的不变量,那你说明你这个方法肯定好,基本上不太会去考虑它的稳定性,它肯定收敛。"
核心结论:离散不变量的存在 → 数值解自动稳定收敛,无需额外验证。
4.2 隐中点法(Implicit Midpoint Method)
格式
对 Lotka-Volterra 展开:
为什么能保结构?
时间对称性:将 (时间反向),格式形式完全不变。这种对称性在数学上保证了其更新映射是辛映射——行列式精确等于 1,不多不少,相平面面积完全保持。
特点
| 项目 | 情况 |
|---|---|
| 方法阶数 | 二阶 |
| 是否保结构 | ✓(辛方法) |
| 计算代价 | 较大,每步需解非线性方程组(通常用 Newton 迭代) |
| 适用场景 | 精度要求较高、步长较大 |
4.3 分块欧拉法(Symplectic Euler / 辛欧拉法)
格式
普通欧拉对两个分量同时、同时间层更新;分块欧拉关键在于交错时间层:
写法 A(先更新 ,再用新 更新 ):
写法 B(先更新 ,再用新 更新 ):
注意:第一个方程计算完毕后,第二个方程立刻使用刚算出的新值,而不是继续用旧值。
老师写法(对 Lotka-Volterra):
为什么交错就能保结构?
分块欧拉的更新可以分解为两个三角形变换的复合,每个变换的行列式都是 1:
两个下(上)三角矩阵行列式都是 1,复合后仍是 1,面积精确保持。
特点
| 项目 | 情况 |
|---|---|
| 方法阶数 | 一阶 |
| 是否保结构 | ✓(辛方法) |
| 计算代价 | 小,每步只需解一个标量方程(其中一个分量显式) |
| 适用场景 | 计算效率优先、长时间模拟 |
4.4 两种保结构方法对比
| 隐中点法 | 分块欧拉法 | |
|---|---|---|
| 格式 | 用 处的值 | 两分量交错时间层 |
| 阶数 | 二阶 | 一阶 |
| 计算量 | 大(非线性方程组) | 小(半显式) |
| 保结构 | ✓(辛,时间对称) | ✓(辛,三角分解) |
| 时间对称 | ✓ | ✗(有方向性) |
老师:"你用隐中点可以,因为它是一个对称的,因为它对称,所以对应的,这就会出来一类方法,叫保结构方法。"
五、哈密顿系统(Hamilton System)
5.1 定义
哈密顿系统是经典力学中描述保守系统演化的通用框架。系统状态由两组变量描述:
- 广义坐标 :位置类变量
- 广义动量 :动量类变量
演化方程(正则方程):
其中 是哈密顿函数,代表系统的总能量(动能 + 势能)。
5.2 核心特征
- 能量守恒:沿真实解, ,即 是不变量。
- Liouville 保面积定理:相空间中任意区域随时间演化,面积(体积)不变。
- 辛结构:正则方程具有辛几何结构,这是比面积守恒更深层的几何性质。
5.3 典型例子:单摆问题(数值实验题目)
哈密顿函数( 为角动量, 为摆角):
正则方程:
数值实验要求:
- 分别用显欧拉和隐欧拉求解,观察相平面轨迹(应当是椭圆形封闭曲线,但欧拉法会失真)
- 再选一个稳定的保结构方法(如隐中点法、分块欧拉)求解,对比结果
- ⚠️ 不允许使用四级四阶龙格库塔(RK4)
5.4 Lotka-Volterra 与哈密顿系统的关系
Lotka-Volterra 方程表面上看不是标准的物理力学系统,但经过坐标变换(令 , )后,它等价于一个哈密顿系统,因此:
- 继承了"能量守恒"的类比性质(不变量 的存在)
- 继承了"保面积"特性(Liouville 定理)
- 适用同一套保结构数值方法
六、方法选择总结与实践指南
6.1 判断是否需要保结构方法
6.2 不同场景的方法选择
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 一般 ODE,短时间 | 四阶龙格库塔(RK4) | 精度高,实现简单 |
| 哈密顿系统,长时间模拟 | 隐中点法 / 分块欧拉 | 保结构,误差不累积 |
| 哈密顿系统,效率优先 | 分块欧拉 | 一阶但保辛结构,计算快 |
| 哈密顿系统,精度优先 | 隐中点法 | 二阶且时间对称 |
| 禁止用于哈密顿系统 | 显欧拉、隐欧拉 | 面积不保持,长时间后解失真 |
6.3 核心规律(三条结论)
- 显欧拉 → 能量人工增加 → 向外炸(面积扩张, )
- 隐欧拉 → 能量人工耗散 → 向内缩(面积收缩, )
- 辛方法 → 面积精确保持 → 轨道封闭( ,不变量守恒)
老师总结:"相容加稳定,一定收敛。如果有离散不变量,那就更直接——它必然稳定收敛。"