5D Library › Classical and Statistical Mechanics of Human Action · 中文
Chapter 4 Hysteresis and Tipping Points
Bistability and hysteresis
The landscape of Chapter 3 was fixed. In reality the landscape itself shifts slowly with outside conditions: routines, surroundings, relationships, health. This chapter asks what happens to a system with two stable states when an outside condition changes slowly.
Calculation
The simplest model (the normal form of the cusp catastrophe) is
For the system has two stable states with an unstable one (the ridge) between them. As rises to , the left stable state merges with the ridge and both vanish; this is a saddle-node bifurcation, and the system, with nowhere else to go, jumps to the right stable state (Strogatz 2015).
Note
A note on terms. The original idea read “once past the saddle node, the system slides naturally into the new stable state”. Two concepts need separating. On a fixed landscape, the unstable equilibrium between two valleys (a ridge in one dimension, a saddle point in more) is the point “past which you slide into the other side”; a saddle-node bifurcation is the moment, as outside conditions change, when a stable state and an unstable state merge and vanish together. This chapter uses both, but they are not the same thing.
The hysteresis loop and “giving up halfway”
Calculation
The program does two things. First, it raises slowly from −0.6 to 0.6 and lowers it again, recording where the state jumps. Second, it starts from the old state , applies an outside force of strength for a time , then removes it () and sees which side the system ends on, finding the shortest that leaves it in the new state.
# 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.40The first part shows hysteresis: on the way up the state jumps at , on the way down at . Both are a little beyond the theoretical fold at 0.385 because changes at a finite speed and the system lags behind; the slower the change, the closer the jump comes to 0.385. Hysteresis means that which state the system is in depends not only on present conditions but on where it came from. At the same , a system arriving from the left stays in the old state, and one arriving from the right stays in the new.
The second part corresponds to “giving up halfway”. If, when the force is removed, the state has not yet passed the ridge (here ), the system slides back to the old state; if it has, the system slides into the new state by itself. The shortest time needed depends strongly on the size of the force: with a force of 1.00, 1.4 time units suffice; with 0.40, just above the fold, it takes more than 17. This is critical slowing down near the fold: a lingering “bottleneck” keeps the system dawdling near where the old state used to be for a long time before it finally gets through (Strogatz 2015).
Two points correct the original claim. First, sliding back is not “instant”; it takes a relaxation time. Second, the system “slides naturally” into the new state after the ridge only if the landscape stays the same; if outside conditions later change back far enough to remove the new state, the system still jumps back.
Hysteresis as a ratchet
Hysteresis has a useful implication for changing habits. Suppose stands for a condition slowly built up by practice (skills, arrangements at home, the people around you). To jump from the old state to the new one, the condition must build past ; but once the jump has happened, the system stays in the new state even if the condition falls back to zero, or nearly to . Keeping a state takes weaker conditions than switching into it. This works like a ratchet: progress already made is not lost when conditions slip a little.
The same mechanism explains why old habits are hard to change: the conditions that built them are long gone, and they remain.
Evidence
In a real-life habit study, missing a single opportunity did not materially affect the habit-forming process: in the study by Lally and colleagues, one missed opportunity had little effect on the automaticity curve (Lally et al. 2010). This fits the hysteresis model: one small disturbance is not enough to push the system back across the ridge. The same study found large differences between individuals, a reminder not to infer from one model curve how many days anyone will need.
Warning signals before a tipping point
Evidence
In many ecological, climate and medical systems, recovery slows as the system approaches a fold (critical slowing down), so fluctuations grow and the autocorrelation between neighbouring moments rises. Scheffer and colleagues collected these as “early-warning signals” of critical transitions, noting that they can be detected in some systems but that missed and false alarms also occur (Scheffer et al. 2009).
Hypothesis · not established
Not established. If a person’s daily behaviour record (for example, minutes of study per day) can be described by a bistable model, then in the weeks before an old habit is stably replaced, the variance and lag-one autocorrelation of the daily record should rise. To test it, collect at least 60 learners’ logs over 90 consecutive days, and compare, for those who end in a stable switch, the variance and autocorrelation in the 4 weeks before the switch with an earlier 4 weeks. If switchers and non-switchers do not differ in how these two measures change, the prediction is refuted.
Limits of the analogy
The cusp model has one state variable and one control parameter. Human behaviour is shaped by many factors at once, and the control parameter () often responds to the state itself: once someone starts exercising, their fitness, social circle and sense of self change, and these in turn change . Such feedback may make the new state more robust than in the model, or more fragile. A further limit: in the model the jump is deterministic, while in people it is often mixed with the random barrier crossing of Chapter 3, and comes earlier or later.
Summary
A bistable system has memory: under the same conditions, where it rests depends on where it came from. This explains two things: giving up halfway slides you back to the old state, while once past the ridge the new state maintains itself even when conditions slip somewhat. Critical slowing down near the fold shows why a push that is only just large enough takes a long time to work. Chapter 5 turns from one person to groups: can other people act as the force that pushes the system over the ridge and keeps it from sliding back?
References
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).