5D Library › 行动的经典与统计力学 · English
第四章 滞后与临界点
双稳态与滞后
第三章的地形是固定的。现实中,地形本身会随外部条件缓慢变化:作息、环境、人际关系、身体状况。本章研究这样一个问题:当外部条件 慢慢变化时,一个有两个稳定状态的系统会发生什么。
推导
最简单的模型(尖点灾变的标准形式)是
当 时,系统有两个稳定状态和夹在中间的一个不稳定状态(山脊)。当 增大到 ,左边的稳定状态与山脊合并、消失,这叫鞍结分岔(saddle-node bifurcation);系统别无去处,只能跳到右边的稳定状态 (Strogatz 2015)。
注
术语说明:原先的设想写作「一旦越过鞍点(Saddle Node)就会自然滑入新稳态」。这里有两个概念需要分开。在固定的地形上,两个山谷之间的不稳定平衡点(一维中的山脊,高维中的鞍点)是「越过就会滑进另一边」的那个点;而鞍结分岔指的是外部条件变化时,一个稳定状态与一个不稳定状态合并、一同消失的那一刻。本章两者都会用到,但它们不是同一回事。
滞后回线与「半途而废」
推导
程序做两件事。第一,让 从 −0.6 慢慢增加到 0.6 再减回去,记录状态跳变的位置。第二,从旧状态 出发,施加强度为 的外力一段时间 ,然后撤掉外力(),看系统最后停在哪一边,找出能让系统留在新状态的最短 。
# Bistability, hysteresis and tipping: dx/dt = h + x - x^3 (U = x^4/4 - x^2/2 - h x).
# For |h| < 2/(3*sqrt(3)) = 0.385 there are two stable states; at the fold (saddle-node) one vanishes.
# Simplified model; h stands for slowly changing conditions, x for the state of a routine.
import math
DT = 0.01
H_C = 2 / (3 * math.sqrt(3))
def settle(x, h, t=60.0):
for _ in range(int(t / DT)):
x += (h + x - x ** 3) * DT
return x
# 1. Slow sweep of h up and back down: the state jumps at different places on the way up and down.
x, h, jumps = -1.0, -0.6, []
for direction in (+1, -1):
while (h < 0.6) if direction > 0 else (h > -0.6):
x_old = x
x = settle(x, h, t=2.0)
if (x_old < 0) != (x < 0):
jumps.append((direction, h))
h += direction * 0.005
for d, hj in jumps:
print(f"sweeping {'up ' if d > 0 else 'down'}: state jumps at h = {hj:+.3f} (fold at {d * H_C:+.3f})")
# 2. "Giving up halfway": push with h_push for a time T, then let go (h = 0). Does it stay switched?
print("push h shortest push that still ends in the new state")
for h_push in (0.40, 0.45, 0.60, 1.00):
T = 0.0
while True:
T += 0.05
x = settle(-1.0, h_push, t=T)
if settle(x, 0.0) > 0:
break
print(f"{h_push:5.2f} T = {T:4.2f}")
# sweeping up : state jumps at h = +0.420 (fold at +0.385)
# sweeping down: state jumps at h = -0.420 (fold at -0.385)
# push h shortest push that still ends in the new state
# 0.40 T = 17.35
# 0.45 T = 7.30
# 0.60 T = 3.20
# 1.00 T = 1.40第一部分显示了滞后:上行时在 跳上去,下行时在 跳下来。两个数比理论折点 0.385 略大,因为 的变化有一定速度,系统来不及跟上;变化越慢,跳变越接近 0.385。滞后的含义是:系统处于哪个状态,不仅取决于现在的条件,还取决于它从哪里来。同样是 ,从左边来的系统停在旧状态,从右边来的系统停在新状态。
第二部分对应「半途而废」。外力撤掉时,如果状态还没越过山脊(这里是 ),系统就会滑回旧状态;越过了,系统就会自己滑进新状态。所需的最短时间强烈依赖于外力的大小:外力为 1.00 时只需 1.4 个时间单位;外力为 0.40、只比折点高一点时,需要 17 个时间单位以上。这是折点附近的临界慢化:残留的「瓶颈」使系统在旧状态的位置附近徘徊很久,才最终通过 (Strogatz 2015)。
两点需要修正最初的说法。第一,滑回并不是「瞬间」的,它需要一段弛豫时间。第二,越过山脊之后系统会「自然滑入」新状态,这在地形不变的模型中成立;如果外部条件随后又变回去、使新状态消失,系统仍会跳回。
滞后作为棘轮
滞后对改变习惯有一个有用的含义。设想 代表一个由练习慢慢积累的条件(技能、环境安排、身边的人)。要从旧状态跳到新状态,条件必须积累到超过 ;但跳过去以后,即使条件回落到零,甚至回落到 附近,系统仍停在新状态。维持所需的条件弱于转换所需的条件。这就像一个棘轮:已经取得的进展,不会因为条件的小幅回落而丢失。
同一个机制也解释了为什么旧习惯难改:当初养成它的条件早已不在,它仍然留着。
证据
在真实生活的习惯研究中,偶尔漏掉一次并没有实质性地影响习惯形成的过程:在莱利等人的研究中,错过一次执行机会对自动化曲线的影响很小 (Lally et al. 2010)。这与滞后模型一致:一次小的扰动不足以把系统推回山脊另一侧。但该研究也发现,个体之间差异很大,这提醒我们不要从一条模型曲线推断任何个人需要多少天。
临界点之前的预警信号
证据
在生态、气候和医学的许多系统中,系统接近折点时恢复速度变慢(临界慢化),于是状态的波动变大、相邻时刻之间的自相关上升;谢弗等人把这些归纳为临界转变的「早期预警信号」,并指出它们在一些系统中可以检测到,但也会出现漏报和误报 (Scheffer et al. 2009)。
假说 · 尚未验证
尚未确立。 如果一个人的日常行为记录(例如每日学习分钟数)可以用双稳态模型描述,那么在一个旧习惯被稳定替代之前的几周里,每日记录的方差与一阶自相关应当上升。可以检验的方法是:收集至少 60 名学习者连续 90 天的日志,比较最终稳定转变者在转变前 4 周与更早 4 周的方差和自相关。如果转变者与未转变者在这两项指标的变化上没有差别,这一预测就被推翻。
类比的限度
尖点模型只有一个状态变量和一个控制参数。人的行为同时受很多因素影响,而且控制参数()本身往往会对状态作出反应:一个人开始运动后,身体状况、社交圈、自我认同都会改变,这些又反过来改变 。这种反馈可能让新状态比模型中更稳固,也可能更脆弱。还有一个限度:在模型中,跳变是确定性的;在人身上,跳变往往伴随着第三章所说的随机越垒,提前或推后发生。
本章小结
双稳态系统有记忆:同样的条件下,它停在哪里取决于它从哪里来。这解释了两件事:中途放弃会滑回旧状态,而一旦越过山脊,新状态会自己维持下去,即使条件有所回落。折点附近的临界慢化说明,刚刚够大的推力需要很长时间才见效。第五章把视线从一个人转向人群:别人能否充当把系统推过山脊、并且防止它滑回的力量。
参考文献
Fan, Y. (2026). Classical and Statistical Mechanics of Human Action: Psychological Inertia, Static Friction Thresholds, Kramers Escape Rate in Double-Well Potentials and Habit Phase Transitions, Read Beside East Asian Philosophy of Practice [行动的经典与统计力学] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738774 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).