1
Oscillations & Hopf
Feedback · Sigmoids · Mackey-Glass · HPG · Holling-Tanner
🌊 The Two Causes of Stable Oscillations
🗝 The only two things that cause oscillations
1. Steep negative feedback — controlled by the steepness parameter $n$ in a sigmoid function. The steeper the feedback, the more the system overcorrects, creating oscillation.2. Long time delay — controlled by $\tau$ (explicit) or by the number of steps in a cascade (implicit). The longer the delay, the more the system overshoots before correcting.
Both must be large enough simultaneously. Increasing just one isn't enough — you need both $n$ and $\tau$ past their thresholds at the same time.
Bennoun's specific thresholds (Class 2 summary slide)
Steepness of sigmoid:• $n \leq 4$ → not steep → unlikely to oscillate
• $n \geq 8$ → steep → likely to oscillate
Time delay:
• $\tau \leq 0.4$ → small → unlikely to oscillate
• $\tau \geq 0.8$ → large → likely to oscillate
Both must be in the high range simultaneously.
Stable vs Neutral vs No Oscillation
| Type | Attractor | After a small kick... | Example |
|---|---|---|---|
| Stable oscillations | Stable limit cycle | Returns to same amplitude & period | Holling-Tanner with large $w$ |
| Neutral oscillations | Center (neutral EP) | Stays at new amplitude forever | Lotka-Volterra, Locust model |
| Decays to EP | Stable spiral/node | Spirals toward equilibrium | HPG with small $n$ |
🔥 How to determine if a system will oscillate
Look for two things in the equations:1. Is there a negative feedback loop? (Variable A stimulates something that eventually inhibits A)
2. Is there a time delay, either explicit ($A(t-\tau)$) or implicit (chain of 3+ steps)?
If both are present and parameters are large enough → oscillation possible via Hopf bifurcation.
🔄 Identifying Feedback Loops
How to trace a feedback loop
A feedback loop is a closed chain: $A \to B \to \cdots \to A$.To classify each link in the chain:
• Positive link (→+): increasing A causes the next variable to increase. Comes from a positive coefficient or increasing sigmoid.
• Negative link (→−): increasing A causes the next variable to decrease. Comes from a decreasing sigmoid or a subtraction term.
Then multiply the signs around the loop:
• If the product of all signs = negative → negative feedback loop → can cause oscillations
• If the product = positive → positive feedback loop → causes bistability, NOT oscillations
Worked Example — Classify this loop
$$A' = \frac{512}{512 + B^9} - 0.1A \qquad B' = 0.4A(t-10) - 0.5B$$
Link A→B: The $B'$ equation has $+0.4A$. So increasing $A$ increases $B$. → Positive linkLink B→A: The $A'$ equation has $\frac{512}{512+B^9}$ which is a decreasing sigmoid in $B$. So increasing $B$ decreases $A'$. → Negative link
Loop sign: $(+) \times (-) = \mathbf{-}$ → Negative feedback loop ✓
Also: $\tau = 10$ is an explicit delay in $A(t-10)$. With $n=9$ (steep) and $\tau=10$ (long) → expect oscillations.
Self-loops
A term like $-kX$ where $X$ is the same variable is a negative self-loop (degradation). It doesn't cause oscillations on its own but is important in model equations.A term like $+kX^2$ would be a positive self-loop.
Function shapes at a glance
⚠ Schematic illustration only — not drawn to scale or from simulation.
📈 Sigmoid Functions — Know All Three
Three types you must recognize
1. Decreasing sigmoid (negative feedback, inhibition):
$$f(x) = \frac{h^n}{h^n + x^n}$$
Starts near 1 when $x$ is small, drops toward 0 as $x$ grows. Used when $x$ inhibits production.2. Increasing sigmoid (cooperative activation, Allee effect): $$f(x) = \frac{x^n}{h^n + x^n}$$ Starts near 0, rises toward 1. Used when $x$ activates production cooperatively.
3. Saturating / Holling Type II (not a sigmoid — no steep threshold): $$f(x) = \frac{wx}{d + x}$$ Rises from 0, saturates at $w$. No $n$ parameter — always same shape. Used for predator feeding rates.
The parameter n controls steepness
$n = 1$: gentle, gradual response — unlikely to oscillate$n = 5$: moderate steepness
$n = 9$: very steep, almost switch-like — likely to oscillate
$h$ is the half-saturation constant: the value of $x$ at which $f(x) = 0.5$. It shifts the curve left/right but doesn't change steepness.
🫁 Mackey-Glass Model (CO₂ / Breathing)
The equation
$$X'(t) = L - \frac{V_{\max} \cdot X^n(t-\tau)}{1 + X^n(t-\tau)} \cdot X(t)$$
Each term explained:• $L$: constant CO₂ production from cellular metabolism (input, always positive)
• $\frac{V_{\max} X^n(t-\tau)}{1+X^n(t-\tau)}$: ventilation rate (breaths/min) — an increasing sigmoid of $X(t-\tau)$
• Multiplied by $X(t)$: more CO₂ per breath when CO₂ concentration is high
• $\tau$: neural time delay between sensing CO₂ and adjusting breathing
Why it oscillates (Cheyne-Stokes breathing)
High CO₂ → brain signals faster breathing → but this signal arrives $\tau$ seconds late → by then CO₂ has already changed → overshooting → oscillation.Increasing $\tau$ or $n$ past critical values triggers Hopf bifurcation: stable breathing → periodic (oscillating) breathing. This is Cheyne-Stokes respiration, seen in heart failure patients.
🔥 What the exam tests
Be able to identify: (1) the negative feedback loop (high CO₂ → more ventilation → CO₂ drops → inhibits further ventilation), (2) the explicit time delay $\tau$, and (3) which parameters ($n$, $\tau$) control whether it oscillates.
HPG feedback cascade
⚠ Schematic illustration only — not drawn to scale or from simulation.
🧬 H/P/G Hormonal Model
The three equations
$$H' = \underbrace{f(G)}_{\text{decreasing sigmoid}} - k_1 H \qquad f(G) = \frac{1}{1+G^n}$$
$$P' = H - k_2 P$$
$$G' = P - k_3 G$$
H = hypothalamic hormone, P = pituitary hormone, G = gonadal hormone (e.g. testosterone/estrogen)
Reading the model
• $H' = f(G) - k_1H$: $H$ is produced at rate $f(G)$ (inhibited by $G$ — decreasing sigmoid) and degrades at rate $k_1H$• $P' = H - k_2P$: $P$ is produced proportional to $H$, degrades at $k_2P$
• $G' = P - k_3G$: $G$ is produced proportional to $P$, degrades at $k_3G$
The feedback loop: $G$ inhibits $H$ (via decreasing sigmoid) → $H$ stimulates $P$ → $P$ stimulates $G$ → back to start. This is a negative feedback loop.
Why the implicit delay matters
There is NO explicit $\tau$ in the equations. Yet this system can oscillate because the signal from $H$ takes 3 steps to reach back to $H$ (through $P$ and $G$). This cascade delay acts like an implicit time delay.Proof: remove the intermediate step (try an H/G model with only 2 variables) → oscillations disappear → confirms the cascade is the source of delay.
With $n=5$: system has stable spiral (tends to EP). With $n=9$: system oscillates with a stable limit cycle.
🦁 Holling-Tanner Predator-Prey Model
The equations
$$N' = r_1 N\!\left(1-\frac{N}{k}\right) - \frac{wN}{d+N}P$$
$$P' = r_2 P\!\left(1-\frac{jP}{N}\right)$$
$N$ = prey (e.g. rabbits), $P$ = predators (e.g. foxes)
Why this is better than Lotka-Volterra
| Lotka-Volterra | Holling-Tanner | |
|---|---|---|
| Prey growth | Exponential $bN$ (unrealistic) | Logistic $r_1N(1-N/k)$ (has carrying capacity) |
| Predation rate | $aNP$ (unbounded — predators never get full) | $\frac{wN}{d+N}P$ (saturates — predators get full) |
| Long-term | Neutral oscillations only | Can be stable spiral OR stable limit cycle |
Predator equation intuition — $P' = r_2 P(1 - jP/N)$
Each predator needs $j$ prey to survive. The whole predator population needs $jP$ prey total.• If $jP < N$: enough prey → predators grow (positive)
• If $jP > N$: not enough prey → predators decline (negative)
• If $jP = N$: exactly balanced → predator population stable
🔥 Hopf bifurcation in Holling-Tanner (the $w$ example)
For the model $N'=N(1-N/7)-w\frac{N}{1+N}P$, $P'=0.1P(1-P/N)$:| $w$ value | EP stability | Long-term behavior |
|---|---|---|
| $w=0.3$ | Stable node | Tends directly to EP (no spiraling) |
| $w=0.8$ | Stable spiral | Spirals into equilibrium |
| $w=0.9$ | Unstable spiral | Stable limit cycle (oscillations!) |
| $w=1.0$ | Unstable spiral | Stable limit cycle (oscillations!) |
Hopf bifurcation — illustrative schematic
⚠ Schematic illustration only — not drawn to scale or from simulation.
🔀 Hopf Bifurcation
Bennoun's exact definition (Class 15)
Take a model that depends on a parameter $c$ with equilibrium point $P^*$. Suppose the Jacobian at $P^*$ has eigenvalues $\lambda_{1,2} = x \pm yi$, and $x$ (the real part) goes from negative to positive as $c$ changes.Then the behavior changes from: stable spiral EP → unstable spiral EP + stable limit cycle.
Before Hopf (Re(λ) < 0): stable spiral → trajectories wind inward to EP
At Hopf (Re(λ) = 0): purely imaginary eigenvalues → neutral center
After Hopf (Re(λ) > 0): unstable spiral + stable limit cycle appears
🗝 How to find the Hopf bifurcation parameter
Find the equilibrium point (set equations to 0, solve)
Compute the Jacobian $J$ at the EP (take all partial derivatives)
Write $(J_{11}+J_{22})$ as a function of the parameter
Set $(J_{11}+J_{22}) = 0$ and solve for the parameter value $p^*$
Verify $\det(J) > 0$ at $p^*$ (ensures eigenvalues are complex, not real)
PLF Final Review — Complex model writing (Ducks, Geese, Aquatic Plants)
Three variables: $D$ = ducks, $G$ = geese, $A$ = aquatic plants. Read each assumption and map to a term:Plants: logistic growth (no predators) − saturating consumption by each duck − saturating consumption by each goose:
$$A' = 0.65A\left(1-\frac{A}{300}\right) - \frac{9A}{h_2+A}D - \frac{14A}{h_1+A}G$$
Ducks: birth rate delayed by 1 yr (time to mature) − constant death − loss from goose aggression (proportional to DG contact):
$$D' = 0.28D(t-1) - 0.2D - 0.03DG$$
Geese: birth rate = decreasing sigmoid of D (fewer ducks = more births), delayed 2 yr − constant death:
$$G' = 0.12\frac{h_3}{h_3 + D(t-2)}G - 0.16G$$
Key rules to remember:
• "Saturating, non-sigmoid" → Holling Type II: $\frac{cX}{h+X}$ (no $n$ exponent)
• "Drops off steeply" or "steep sigmoid" → decreasing sigmoid: $\frac{h^n}{h^n+X^n}$ with large $n$
• Time to mature → explicit delay $\tau$ in the birth term only
• "Proportional to contact" → product $DG$ (mass action)
PLF Final Review — Harlequin bug DDEs (3 variables with multiple delays)
$H$ = adult bugs, $E$ = eggs, $W$ = wasps. Key translation:• "Lays 12 eggs/week" → $+12H$ in $E'$
• "Die due to competition proportional to H" → $-0.7H^2$ in $H'$ (non-linear!)
• "25% of eggs hatch per week" → $-0.25E$ in $E'$; those hatched eggs become adults 5 weeks later → $+0.25E(t-5)$ in $H'$
• "Saturating wasp egg-laying rate, saturation 0.9, half-saturation 400" → $\frac{0.9E}{400+E}W$ per wasp
• Wasps hatch 0.5 weeks later → use $E(t-0.5)$ in that term for $W'$
• Each parasitized egg → 6 wasps, destroys the egg
$$E' = 12H - 0.25E - \frac{0.9E}{400+E}W$$ $$H' = 0.25E(t-5) - 0.1H - 0.7H^2$$ $$W' = 6\cdot\frac{0.9E(t-0.5)}{400+E(t-0.5)}W(t-0.5) - kW$$
Pattern to memorize: When something "takes X weeks to mature", the input to that growth term uses the delayed version $X(t-\tau)$, not current $X(t)$.
✦ Unit 1 Practice Quiz
✦ Quiz — Oscillations & Hopf
Q1. Which two conditions are BOTH required for stable oscillations?
Q2. In the system $A' = \frac{1}{1+B^5} - 0.1A$, $B' = 0.3A - 0.5B$, what type of feedback loop connects A and B?
Q3. What is the key difference between stable and neutral oscillations?
Q4. In the Holling-Tanner model, what does increasing the parameter $w$ (predation intensity) eventually cause?
Q5. The H/P/G model has no explicit time delay $\tau$ in its equations. Why can it still oscillate?