The logistic map and chaos
Tonight's idea
Let \(x_n\) be this year's population as a fraction of the most the habitat can hold, so \(0 \le x_n \le 1\). Next year's is
\(x_{n+1} = r\,x_n\,(1 - x_n)\). The \(r x_n\) part is growth; the \((1 - x_n)\) part is crowding.
Fixed points. A population that stays put satisfies \(x = r x (1 - x)\): either \(x = 0\) or \(x^* = 1 - \tfrac1r\).
Attract or repel? Fixed points are where the parabola \(f(x) = rx(1-x)\) crosses the line \(y = x\). Near \(x^*\) it is nearly straight, with slope \(m = f'(x^*)\). Start a small distance \(\varepsilon\) from \(x^*\) and one step later you are about \(m\varepsilon\) away. So \(x^*\) attracts when \(|m| \lt 1\) and repels when \(|m| \gt 1\); at \(|m| = 1\) the test says nothing. Here \(f'(x) = r(1 - 2x)\), so \(m = 2 - r\): the fixed point attracts for \(1 \lt r \lt 3\) and repels past 3. Negative \(m\) means overshooting: the sequence alternates sides of \(x^*\).
Past 3: period doubling. At \(r = 3.2\) the population approaches a 2-cycle, \(0.513\) and \(0.799\). At \(r = 3.5\) a 4-cycle takes over; then 8, 16, 32, piling up at \(r_\infty \approx 3.5699\). Beyond that, chaos: at \(r = 3.9\) a typical start never settles and nearby starts drift apart. Prediction: bigger \(r\) means more chaotic? Exercise 2 tests it.
The universal constant. Successive gaps between doublings shrink by a factor tending to Feigenbaum's \(\delta = 4.6692\ldots\), the same for dripping taps and lasers. Demo: mathdetours.com/demos/logistic.html.
Watch one: \(r = 3.2\) by hand, and the 2-cycle exactly
Start at \(x_0 = 0.2\): \(x_1 = 3.2 \times 0.2 \times 0.8 = 0.512\), \(x_2 = 0.7995\), \(x_3 = 0.5129\), \(x_4 = 0.7995\), \(x_5 = 0.5130\), \(\ldots\) The rounded values settle fast, but the sequence only ever approaches the 2-cycle.
Exactly: the two values are fixed points of the double step \(f(f(x)) = x\). Dividing out the roots \(0\) and \(x^*\) leaves a quadratic with roots \(x = \frac{(r + 1) \pm \sqrt{(r + 1)(r - 3)}}{2r}\). For \(r = 3.2\): \((4.2 \pm 0.9165)/6.4\), giving \(0.7995\) and \(0.5130\).
Your turn
Carry full calculator precision between steps; round only what you write down.
- Take \(r = 2.5\) and \(x_0 = 0.2\). Compute \(x_1\) to \(x_5\) (three decimals). Where is the population heading? Check against \(1 - 1/r\). Then for \(r = 3.2, 3.5, 3.9\) find \(x^*\) and \(m = 2 - r\): attract or repel?
- Calm island? Take \(r = 3.83\), well past \(r_\infty\), and \(x_0 = 0.5\). Compute \(x_1\) to \(x_6\) (four decimals). What happens?
- Sensitive dependence. With \(r = 3.9\), run two sequences from \(x_0 = 0.2\) and \(x_0 = 0.201\) (show three decimals). Fill in the gaps. At which step does the difference first exceed 0.1?
\(n\) 0 1 2 3 4 5 6 7 8 from 0.2 0.200 0.624 0.915 from 0.201 0.201 0.626 0.913 - Feigenbaum. The first three doublings are at \(r_1 = 3\), \(r_2 = 3.4495\), \(r_3 = 3.5441\). Compute \((r_2 - r_1)/(r_3 - r_2)\). Using \(\delta = 4.669\), predict \(r_4\).
Stretch: \(r = 4\) is just doubling
Write \(x = \sin^2\theta\). Show that \(4x(1 - x) = \sin^2(2\theta)\), so the map is \(\theta \to 2\theta\). Take \(\theta = \pi/7\): doubling gives \(2\pi/7\), \(4\pi/7\), then \(8\pi/7\), which is \(\pi/7\) again under \(\sin^2\). Compute the three \(x\) values and check that \(4x(1-x)\) cycles through them.
Answers
- \(0.400, 0.600, 0.600, 0.600, 0.600\): it lands on \(0.6 = 1 - 1/2.5\) in two steps and stays (there \(m = -0.5\) attracts). \(x^* = 0.6875, 0.7143, 0.7436\) with \(m = -1.2, -1.5, -1.9\): all three repel.
- \(0.9575, 0.1559, 0.5039, 0.9574, 0.1561, 0.5044\): it is settling onto a 3-cycle, \(0.1561, 0.5047, 0.9574\). Bigger \(r\) is not simply more chaotic. Past \(r_\infty\) chaotic stretches are interrupted by periodic windows, and 3.83 sits in one. (Even inside chaos a few special starts repeat: at \(r = 3.9\), \(x_0 = 29/39\) is an exact fixed point, but a repelling one, so any rounding throws you off it.)
- From 0.2: \(0.303, 0.824, 0.566, 0.958, 0.156, 0.514\). From 0.201: \(0.311, 0.835, 0.537, 0.970, 0.115, 0.397\). The difference first exceeds 0.1 at step 8. A 0.5% error in the start becomes a 100% error within ten generations.
- Gaps \(0.4495\) and \(0.0946\); ratio \(4.75\), approaching \(4.669\) from above. \(r_4 \approx 3.5441 + 0.0946/4.669 = 3.5644\); the true value is \(3.5644\). ✓
Stretch. \(4\sin^2\theta\cos^2\theta = (2\sin\theta\cos\theta)^2 = \sin^2 2\theta\). Values: \(\sin^2(\pi/7) = 0.1883\), \(\sin^2(2\pi/7) = 0.6113\), \(\sin^2(4\pi/7) = 0.9505\). Check: \(4(0.1883)(0.8117) = 0.6113\), then \(0.9505\), then back to \(0.1883\): a 3-cycle. (\(8\pi/7\) gives \(\pi/7\) again because \(\sin(\pi + \theta) = -\sin\theta\).) Doubling an angle shifts its binary digits one place, so after 50 steps the 50th digit of the start is in charge: chaos is reading out the initial condition, one digit per step. The same \(r = 4\) holds both: special starts that cycle forever and typical starts that never settle.