本节摘要:定义先行——连续引擎是微分方程 dx/dt = f(x),时间连续滑行;离散引擎是映射 x_{n+1} = f(x_n),时间一拍一拍跳。两者共享同一套几何语言(平衡/不动点、稳定性、吸引子),但有一道锋利的分界:一维连续流被单调性锁死、永不振荡,一维映射却能振荡乃至混沌。本节用"同名不同命"的两个逻辑斯蒂模型把这道分界演示到能复现。
本节上承 2.1 的连续引擎,是全册的枢纽对照之一:第三章第五节的倍周期瀑布、第五章的庞加莱截面,全都建立在"离散引擎"这个概念上。把两套引擎的等价与差异一次理清,后面的路会平很多。
连续引擎(流):dx/dt = f(x),状态每时每刻都在动,轨道是相空间里的连续曲线。离散引擎(映射):x_{n+1} = f(x_n),状态只在整数节拍上被更新,"轨道"是一串点列。两套引擎并非无关:对周期性强迫系统在每个周期末拍一次照(频闪采样),或沿一条截面记录穿越点,就能把流"压"成映射——这就是频闪映射与庞加莱映射,5.3 节正式登场。
稳定性判据在两边要对齐着记:
| 对象 | 连续引擎(流) | 离散引擎(映射) |
|---|---|---|
| 平衡对象 | 平衡点 f(x*)=0 | 不动点 f(x*)=x* |
| 一维稳定性 | f'(x*)<0 稳定 | |
| 高维判据 | 雅可比特征值实部全负 | 雅可比特征值模全小于一 |
| 失稳边界 | 特征值穿过虚轴 | 特征值穿过单位圆 |
| 一维能否振荡 | 否:dx/dt=f(x) 轨道沿 x 轴单调爬行 | 能:迭代可在两点之间来回跳 |
| 混沌所需最低维数 | 连续时间三维(如洛伦兹) | 一维即可(逻辑斯蒂映射) |
表格最后两行是本节的题眼。一维连续流里,轨道在数轴上只能朝一个方向走——它被"不许掉头、不许交叉"锁死,于是不动点之外没有任何花样。把时间改成离散的,一步可以跳过头、跳回来,反向与交叉的禁令消失,一条抛物线就能长出无穷结构。维数门槛的不同,是连续与离散最深刻的差异。

对照实验的完整过程如下。
背景:种群生态学里有个著名的"逻辑斯蒂"名字,被两套引擎共用——连续版 dx/dt = r·x·(1 − x/K) 与离散版 x_{n+1} = r·x_n·(1 − x_n)。名义上都叫"增长率 r 的有限资源增长模型",命运却完全不同。
操作:归一化 K=1,取同一组 r 值跑两套引擎。连续版用 solve_ivp 积分,离散版直接迭代,各看长期行为:
import numpy as np from scipy.integrate import solve_ivp def continuous(r, T=60): sol = solve_ivp(lambda t, x: [r * x[0] * (1 - x[0])], [0, T], [0.05], rtol=1e-10, dense_output=True) tail = sol.y[0][sol.t > T * 0.6] return tail.min(), tail.max() # 稳态波动幅度 def discrete(r, n=400): xs, x = [0.05], 0.05 for _ in range(n): x = r * x * (1 - x) xs.append(x) tail = xs[n//2:] return min(tail), max(tail) for r in (1.5, 2.5, 3.2, 3.7): cmin, cmax = continuous(r) dmin, dmax = discrete(r) print(f"r={r}: 连续 稳态区间 [{cmin:.3f},{cmax:.3f}] | 离散 [{dmin:.3f},{dmax:.3f}]")
结果(典型输出):
r=1.5: 连续 稳态区间 [1.000,1.000] | 离散 [0.600,0.600] r=2.5: 连续 稳态区间 [1.000,1.000] | 离散 [0.600,0.600] r=3.2: 连续 稳态区间 [1.000,1.000] | 离散 [0.513,0.799] r=3.7: 连续 稳态区间 [1.000,1.000] | 离散 [0.325,0.901]
解读:连续版不管 r 多大,种群总是平滑爬向承载量(K=1),一步到位的不动点,永不振荡——一维流的单调性给它的天花板。离散版则一路升级:r=2.5 稳在不动点 1−1/r=0.6;r 越过 3 后不动点失稳,r=3.2 出现稳定的周期二(0.513 与 0.799 轮流值班,两者相加恰为 1+1/r≈1.3125,可用代数验证);r=3.7 进入混沌,稳态区间被拉宽到 0.325–0.901 且毫无周期。同一个"生态直觉",连续引擎里温和守礼,离散引擎里孕育混沌——因为世代重叠(连续交配)与世代分离(一年一代)本来就是两种生物学。
变式:把离散版的 r 缓慢从 2.9 加到 4.0,记录稳态区间端点,你会亲手画出第三章第五节的倍周期瀑布;把连续版加到三维(洛伦兹),混沌也回来了——维数门槛与时间引擎的这组对照,至此闭环。
都不更真实,它们是两种测量姿态的抽象。连续流假设状态在任意时刻都有定义,离散映射假设只有节拍上的读数才可靠——前者像模拟电路,后者像人口普查。建模时选择的标准不是"真实",而是"信息在哪一级产生":世代重叠的种群、连续反应的化学槽用流;年度迭代、脉冲采样、数字控制系统用映射。还有一个常被忽略的来源:哪怕底层是流,只要观测是频闪式的(每周期测一次),分析对象就自动是映射——庞加莱截面正是这个道理。所以"连续对离散"与其说是自然界的分类,不如说是信息流的分类,选引擎先问数据与节拍在哪里。
引擎挑好了,下一节学把轨道画出来:相线与相平面。