Module 1: Low-Dimensional Dynamics
Part I of the syllabus, Sessions 1 to 9
This module covers models with one or two state variables described by ordinary differential equations. You start with a single equation for an insect population and learn to find equilibria, decide their stability and follow them as parameters change. You then apply the same tools to epidemics, fit a model to data, and move to the plane, where oscillations, limit cycles, Hopf bifurcations and excitable systems appear (Strogatz 2024). Lectures and laboratories alternate: each lecture is followed by a session in which you implement the model in Python. Reusable code is in amlab/odes_1d/, amlab/odes_2d/ and amlab/epidemics/.
Session Structure
Session 1: Course overview. What is mathematical modeling?
What Is a Mathematical Model? The Modelling Workflow How the Course Works
Session 2: A first model: the spruce budworm
The Spruce Budworm Model Fixed Points and Stability Bistability
Session 3: Laboratory: numerical tools for one-dimensional models
Solving Initial Value Problems Budworm: the Model in Code Budworm: Integration and Time Series Budworm: a Streamlit App Michaelis-Menten Kinetics Practice: Budworm App Reproducible Code
Session 4: The budworm outbreak: hysteresis and its consequences
Saddle-Node Bifurcation Hysteresis Budworm and Forest: Fast and Slow
Session 5: Modelling the spread of epidemics: SIR and SIS
Compartmental Models: SIR and SIS The Reproduction Number The Final Size of an Epidemic
Session 6: Laboratory: epidemics and real data
Simulating the SIR Model Simulating the SIS Model Fitting an Epidemic to Data Predicting the Peak
Session 7: Two-dimensional systems: modelling oscillations
Linear Systems in the Plane The Phase Plane Hopf Bifurcation
Session 8: Laboratory: two-dimensional systems
CDIMA: Phase Plane CDIMA: Nullclines and Fixed Points CDIMA: Stability and the Hopf Point Animations and Interactivity Van der Pol Oscillator Practice: Planar Systems CDIMA: Parameter Map
Session 9: Excitable systems and models of the neuron
Excitability FitzHugh-Nagumo Model Relaxation Oscillations Morris-Lecar Model Bistable Switches
Extra (optional): the Lorenz system
Lorenz Attractor Sensitivity and Chaos Practice: Lorenz System
Pages marked “optional extension” and the practice pages (grey buttons) are ungraded. The graded assignments of the course are in Modules 2 and 4.
Learning Goals
- Formulate a model as an ODE, and remove units to reduce the number of parameters.
- Find equilibria and decide their stability from the linearization.
- Recognize saddle-node and Hopf bifurcations, bistability and hysteresis.
- Integrate ODEs with
scipy.integrate.solve_ivp, and validate the result against known solutions. - Build interactive tools (Streamlit apps, Matplotlib animations and clickable parameter maps).
- Use SIR and SIS models to compute reproduction numbers, herd immunity thresholds and final sizes.
- Fit a model to incidence data and explain why the peak of an epidemic is hard to predict.
- Read a phase plane: nullclines, fixed points, limit cycles, excitability and relaxation oscillations.