Time stepping: accuracy, stability and stiffness
Before this lesson: eigenvalues and diagonalization (linear algebra 05); the matrix exponential and linear ODEs (linear algebra 16); Taylor expansion (calculus 03) and finite differences (calculus 07). Complex numbers and . Time: about 90 minutes, plus the notebook.
Why this matters #
- Every weather or climate emulator is trained on the output of a time-stepping solver, and many hybrid models put a learned term inside such a solver.
- An autoregressive ML weather model (a network that maps the state now to the state 6 hours later) is itself an explicit one-step method. Long rollouts stay bounded only if errors are not amplified step after step.
- A neural ODE is trained through an adaptive ODE solver. When the learned dynamics become stiff, the solver takes more and more steps, and training slows down.
- The stability limit often dominates the cost of a simulation. For explicit diffusion, : halve the grid spacing and you need 4 times more steps.
- Diffusion-model samplers such as DPM-Solver treat the linear part of their ODE exactly, an idea from the stiff-solver toolbox of section 3.
1. Predict first #
2. The picture #
A time stepper is a map #
Take an ODE with a state and a start value . A one-step method replaces the true flow over a time by a map .
- Forward Euler follows the tangent: .
- Backward Euler uses the slope at the end of the step: . The unknown appears on both sides, so each step solves an equation. Such a method is implicit; forward Euler is explicit.
- RK4 (the classical Runge–Kutta method) evaluates four times per step and combines the slopes:
Order. If the error at a fixed final time behaves like , the method has order . On log–log axes, is a straight line with slope . So the order is a slope you can read from a plot.
Read the slopes. The figure solves , up to (exact solution ) with forward Euler, the midpoint method (RK2) and RK4. Move the slider: halving divides the error by about 2, 4 and 16, so the observed orders are 1, 2 and 4. Go to the smallest steps: RK4 hits the rounding level near , and the slope there means nothing.
The test equation and the stability function #
Accuracy is one half of the story. The other half is stability. Start with the simplest ODE,
with a number that may be complex. The exact solution is , so one step of size multiplies it by . A one-step method applied to this ODE also multiplies by a fixed number per step:
is the stability function of the method. For example, forward Euler gives , so . Backward Euler gives , so and . Two questions decide everything:
- Accuracy: is close to for small ? A method of order has .
- Stability: is ? If not, grows without bound, even when the true solution decays ().
| Method | stable on the negative real axis | ||
|---|---|---|---|
| forward Euler (FE) | |||
| backward Euler (BE) | all | ||
| trapezoid (Crank–Nicolson, CN) | all | ||
| RK4 |
The set of with is the stability region. It is a picture in the complex plane, and every method has its own.
Drag (yellow) and switch the method. The shaded set is the stability region of the method; the chart below compares the numerical solution with the exact . Forward Euler is the disk of radius 1 around . Use the stiff preset (): forward Euler explodes, backward Euler damps the mode to almost 0, and the trapezoid rule keeps it near , flipping its sign each step.
Forward Euler is applied to . What is the largest stable step ?
with . Stability needs , that is , so . At each step multiplies by , although the exact solution decays. A decaying exact solution does not make an explicit method stable.
Why one scalar equation is enough. Take a system and a small perturbation of a solution. To first order it obeys , where is the Jacobian. If is diagonalizable, the coordinates decouple into scalar test equations, one per eigenvalue (linear algebra 05). So the rule is: every must lie in the stability region. This is exact for a linear system with a normal matrix. For a nonlinear or strongly non-normal problem it is a rule of thumb.
PDEs become big ODE systems. Discretize space first and keep time continuous: this is the method of lines. The heat equation ( is the diffusivity) on a grid with spacing becomes , where is the second-difference matrix. Its eigenvalues lie between about and . A fine grid creates very fast decaying modes, and their must stay inside the stability region. This is where comes from (section 3).
3. Definitions and main results #
Consistency, order and convergence #
Consider and a one-step method ; forward Euler has . Put the exact solution into the method. What is left over, divided by , is the local truncation error
- The method is consistent if as . For a continuous this means .
- It has order if . Forward Euler has , RK4 has .
- Many texts count the error of one step instead, , and call it the "local error of order ". It is the same fact with different bookkeeping.
Example (forward Euler has order 1). Taylor: . With , .
Theorem (convergence of one-step methods). Assume an exact start , for every , and that is Lipschitz in with constant : . Then the global error satisfies
Why this is true, in words. Each step adds a local error of size . There are steps, so together they give . The factor bounds how much the earlier errors are amplified on the way. The amplification step is the stability part of the proof.
Proof of the convergence theorem
- By the definition of : .
- Subtract the method :
- Lipschitz: .
- Unroll from and sum the geometric series:
- Use and .
Consistency + stability = convergence. This is the central idea of numerical analysis. For linear multistep methods it is the Dahlquist equivalence theorem: a method converges if and only if it is consistent and zero-stable. (Zero-stable means that small perturbations stay bounded on a fixed interval as ; one-step methods with a Lipschitz are always zero-stable.) For linear PDE schemes it is the Lax equivalence theorem: a consistent scheme for a well-posed linear initial-value problem converges if and only if it is stable.
Measuring the order. If , then with two step sizes . With many, fit a line to against . The fit is meaningful only in the asymptotic range: small enough that the leading term dominates, but large enough that the error is far above rounding (about relative).
A method of order 4 gives an error of with step . What error do you expect with step ?
The global error is about . Halving divides it by : . Dividing by 2 would be order 1, and by 8 would be order 3. This holds only in the asymptotic range, far above the rounding level.
Absolute stability, A-stability, L-stability #
Convergence is a statement about . In practice is fixed, and we need absolute stability: the method is absolutely stable at if .
- Forward Euler: the disk (centre , radius 1).
- Backward Euler: everything outside the open disk ; it contains the whole left half-plane.
- Trapezoid: exactly the closed left half-plane, because means that is at least as close to as to .
- RK4: a bounded region; on the real axis , on the imaginary axis .
The stability function of an explicit method is a polynomial, so as . Every explicit method has a bounded stability region, so a very negative eigenvalue always forces a small step.
Definition. A method is A-stable if its stability region contains the whole left half-plane : every decaying mode decays numerically, for every . A method is L-stable if it is A-stable and as : very fast modes are not only stable, they are damped almost to zero in one step, as in reality.
Backward Euler is A-stable and L-stable. The trapezoid rule is A-stable but not L-stable: , so stiff modes keep their size and flip sign every step.
A diffusion problem is stepped with for its fastest mode. Which method damps that mode the most in one step?
Backward Euler is L-stable: as . The trapezoid rule gives : the mode keeps 98% of its size and flips sign each step. RK4 is explicit, so is huge. A-stable is not enough for strongly damped modes.
Dahlquist's second barrier and stiff solvers of higher order
An A-stable linear multistep method is implicit and has order at most 2 (Dahlquist's second barrier). Among them, the trapezoid rule has the smallest error constant. Higher-order stiff solvers therefore use implicit Runge–Kutta methods (Radau IIA, which is L-stable and of order with stages) or BDF methods. BDF1 (backward Euler) and BDF2 are A-stable; BDF3 to BDF6 are only -stable: stable in a wedge around the negative real axis, not in the whole left half-plane.
The explicit heat equation: #
Theorem. The scheme with (grid index , time level ) is stable for every Fourier mode if and only if .
Proof (von Neumann analysis).
- The scheme is linear with constant coefficients, so Fourier modes do not mix. Insert one mode (amplification factor , wavenumber , , ).
- Divide by , and use and :
- is real and always. Stability needs for every .
- The worst mode is the grid-scale zigzag (sawtooth), with : , that is .
The same number in the method-of-lines picture: , where are the eigenvalues of . So von Neumann analysis is the stability region of forward Euler, applied to the spectrum of the space operator.
Set and press Play. Top: forward Euler against the exact solution of the semi-discrete system, starting from a hat function. Bottom: the 31 numbers and the forward-Euler interval (aqua). At every point is inside. Move just above and press Play again: the leftmost points (magenta) leave the interval, and the sawtooth mode grows until it covers the solution.
Three remarks.
- On a finite grid with fixed ends, the largest is slightly below , so the exact limit is slightly above . The bound is sharp as the grid is refined.
- In dimensions with equal spacing the limit is .
- With fixed, , so the error of forward Euler is , the same size as the spatial error. The price is the number of steps.
You run the explicit heat scheme at its stability limit. Then you halve . What happens to the largest stable ?
The limit is . Halving divides by 4. The reason: the fastest grid mode has eigenvalue about , which becomes 4 times more negative, and must stay in .
The CFL condition #
Take the advection equation with speed . Its solution moves to the right with speed . The value at depends only on the initial value at the point , the foot of the characteristic line through . This point is the domain of dependence.
The upwind scheme , with the Courant number , uses only the grid point itself and its left neighbour (the side the wind comes from). After steps, depends on the initial data in : this interval is the numerical domain of dependence.
CFL condition (Courant–Friedrichs–Lewy). A scheme can converge only if its numerical domain of dependence contains the exact one as . Here the point must lie in , so . In words: in one step, information may not travel further than the stencil reaches.
Move the Courant number. Left: the space-time grid. The value at the yellow point after 6 steps depends on the orange cone of grid values; the exact solution depends on the foot of the characteristic line. For the foot leaves the cone (magenta), and the upwind solution on the right explodes. For it is stable but smeared (numerical diffusion); at it is exact on this grid.
Von Neumann analysis agrees: gives , which is for every exactly when .
Stiffness #
Definition. A problem is stiff when the step size is set by stability, not by accuracy. The typical cause: the Jacobian has eigenvalues with large negative real parts (fast modes that decay very quickly) next to the slow dynamics you care about. The stiffness ratio measures the gap. Stiffness depends on the question: if you need to resolve the fast transient itself, small steps are needed anyway, and an explicit method is fine.
Change and . The equation is , . After a transient of length about , the exact solution follows . With and , : forward Euler oscillates and explodes, while backward Euler stays smooth with the same step. Lower below and forward Euler recovers, at the price of many more steps.
Typical stiff problems: diffusion on fine grids (ratio ), chemical kinetics with rates over many orders of magnitude, and vertical mixing in an atmospheric column. Fast gravity and sound waves in a weather model are the oscillatory kind: large imaginary eigenvalues that carry little energy but set the explicit step.
A practical symptom: an adaptive explicit solver takes thousands of tiny steps on a solution that looks smooth. It has hit the stability boundary, not an accuracy problem.
Choosing a time stepper #
Many PDEs, after discretization in space, have the semilinear form
with a stiff linear part (diffusion, hyperdiffusion, dispersion, fast linear waves) and a non-stiff nonlinear part (advection, reactions). There are four families of methods.
| Family | Examples | Cost per step | Use when |
|---|---|---|---|
| explicit | RK4, adaptive Dormand–Prince ("RK45") | a few evaluations of | accuracy limits the step anyway: non-stiff ODEs, advection at near 1 |
| implicit | backward Euler, BDF, Radau IIA | a linear or Newton solve | stiff nonlinear problems (chemistry); choose L-stable when stiff modes must be damped |
| IMEX | IMEX Euler, CNAB2, IMEX Runge–Kutta | a linear solve with | stiff linear part, non-stiff nonlinear part |
| exponential (ETD) | exponential Euler, ETDRK4 | applying and -functions | is cheap, e.g. diagonal in Fourier space |
- IMEX (implicit–explicit) treats implicitly and explicitly. The simplest is IMEX Euler, : one linear solve per step (tridiagonal for 1-D diffusion, diagonal in Fourier space). The diffusion limit disappears; the explicit part keeps its own limit (for example the advective CFL condition). Semi-implicit weather models treat fast gravity waves this way.
- Exponential integrators solve the linear part exactly with the variation-of-constants formula
and approximate only the integral. With frozen at you get exponential Euler (ETD1): , with . The stiff linear part is integrated exactly, so it imposes no step limit.
A short rule: if accuracy sets the step, go explicit; if stability sets the step and the fast modes do not matter, go implicit, IMEX or exponential. An implicit step costs a linear or Newton solve. It is worth it when the explicit step would be smaller by more than that cost ratio.
ETDRK4 and the cancellation problem
ETDRK4 (Cox and Matthews, 2002) uses four RK4-like stages. For an autonomous (Kassam and Trefethen, 2005, §2):
where are stage values and are fixed functions of , for example . As each , and ETDRK4 becomes classical RK4. The order is 4.
The trap. and the lose all their digits to cancellation for small : at the direct formula gives instead of (only 7 correct digits). Kassam and Trefethen evaluate these functions as the mean over equally spaced points on a circle around in the complex plane (32 points), computed once before time stepping. By the Cauchy integral formula, this mean equals the value at the centre, and no subtraction of nearly equal numbers occurs. ETDRK4 fits best when is cheap, as for a diagonal in Fourier space on periodic domains (lesson 08).
Answers to section 1.
- A factor of 8. Halving doubles the number of grid points. Since , it also needs 4 times more steps. In dimensions the factor is .
- It explodes. The Jacobian is , so and . Any difference between and the slow solution (even a rounding error) is multiplied by every step, although the true solution is smooth. Backward Euler gives and works. This is stiffness.
4. Worked example #
(a) Measuring an order. Solve , up to . The exact value is .
- Forward Euler multiplies by per step. With : , error .
- With : , error .
- Ratio , so . Order 1. ✓
- RK4 with multiplies by
So , error .
- RK4 with : error . Ratio , so . Order 4. ✓
(b) The heat equation on three points. () on with : three interior points and at both ends.
- The matrix is , a matrix.
- Its eigenvalues are , here :
- Stiffness ratio: . On 99 interior points it is about 4,050; it grows like .
- Forward Euler is stable when , that is . The von Neumann bound is a little stricter, as explained in section 3.
- Take . The fast mode has . After 20 steps it has grown by , while the true mode has decayed by .
- Same , implicit: . Backward Euler gives (damped); Crank–Nicolson gives (damped, with a sign flip).
- Now a step 100 times above the explicit limit on a fine grid: . Backward Euler gives , but Crank–Nicolson gives : the fast mode survives and oscillates. A-stability alone is not enough.
In example (b), forward Euler is run with . Is it stable, and what is the factor of the fastest mode?
, and . The mode decays, with a sign flip each step. Also , so the von Neumann bound agrees. The two slower modes have and , both stable.
5. In code #
NumPy and SciPy check the claims of this lesson with closed forms and library solvers.
import numpy as np
from scipy.optimize import brentq
# Stability functions R(z) of four one-step methods on y' = lam*y, z = h*lam
R = {
"forward Euler": lambda z: 1 + z,
"backward Euler": lambda z: 1 / (1 - z),
"trapezoid (CN)": lambda z: (1 + z / 2) / (1 - z / 2),
"RK4": lambda z: 1 + z + z**2 / 2 + z**3 / 6 + z**4 / 24,
}
# Order: |R(z) - e^z| = O(z^{p+1}); halving z divides the error by 2^{p+1}
for name, Rz in R.items():
e1, e2 = abs(Rz(0.01) - np.exp(0.01)), abs(Rz(0.005) - np.exp(0.005))
print(f"{name:15s} p = {np.log2(e1 / e2) - 1:.2f} |R(-1e6)| = {abs(Rz(-1e6)):.1e}")
# forward Euler p = 1.00 |R(-1e6)| = 1.0e+06
# backward Euler p = 1.01 |R(-1e6)| = 1.0e-06
# trapezoid (CN) p = 2.01 |R(-1e6)| = 1.0e+00
# RK4 p = 3.99 |R(-1e6)| = 4.2e+22
# Where RK4 leaves its stability region on the real and the imaginary axis
x_real = brentq(lambda x: R["RK4"](x) - 1, -3, -2)
y_imag = brentq(lambda y: abs(R["RK4"](1j * y)) - 1 - 1e-15, 2.5, 3.0)
print(f"{x_real:.4f} {y_imag:.4f}") # -2.7853 2.8284
Only backward Euler damps a very stiff mode. The heat equation on 99 interior points:
nu, n = 1.0, 99
dx = 1 / (n + 1)
k = np.arange(1, n + 1)
lam = -(4 * nu / dx**2) * np.sin(k * np.pi / (2 * (n + 1)))**2 # eigenvalues of nu*A
dt_max = dx**2 / (2 * nu)
print(f"{lam.min():.0f} {lam.max():.2f} {lam.min() / lam.max():.0f}") # -39990 -9.87 4052
for factor in (0.95, 1.05):
g = np.abs(1 + factor * dt_max * lam).max() # forward Euler, worst mode
print(f"{factor}: max|g| = {g:.4f}, after 400 steps x{g**400:.1e}")
# 0.95: max|g| = 0.9995, after 400 steps x8.3e-01
# 1.05: max|g| = 1.0995, after 400 steps x3.0e+16
z = 100 * dt_max * lam.min() # 100 times above the explicit limit
print(f"{z:.0f} {1 / (1 - z):.4f} {(1 + z / 2) / (1 - z / 2):.4f}") # -200 0.0050 -0.9802
The stiff equation of section 1 with SciPy's adaptive solvers:
from scipy.integrate import solve_ivp
a = 1000.0
f = lambda t, y: -a * (y - np.cos(t))
exact = lambda t: (a**2 * np.cos(t) + a * np.sin(t) - a**2 * np.exp(-a * t)) / (a**2 + 1)
for method in ("RK45", "Radau", "BDF"):
sol = solve_ivp(f, (0.0, 10.0), [0.0], method=method, rtol=1e-6, atol=1e-9)
print(method, sol.t.size - 1, f"{abs(sol.y[0, -1] - exact(10.0)):.0e}")
# RK45 3587 5e-07
# Radau 81 2e-08
# BDF 209 2e-09
The explicit RK45 needs 3,587 steps (the exact counts can change a little between SciPy versions); Radau needs 81 and BDF 209, and both are more accurate. The average RK45 step is , so : the adaptive controller sits at the edge of the stability interval of its scheme (about ). That is the stiffness symptom of section 3.
6. Where it shows up #
- Weather and climate models. The fastest waves set the explicit limit : sound at about 340 m/s on a 9 km grid allows only about 26 s. Many global models therefore treat fast waves semi-implicitly (often with semi-Lagrangian advection) and take steps of several minutes. Vertical diffusion in a column is treated implicitly, and atmospheric chemistry uses linearly implicit (Rosenbrock) solvers.
- Hybrid ML–physics models. A learned tendency inside an explicit scheme is stable only if lies in the stability region for the eigenvalues of its Jacobian . Good offline skill does not guarantee this. Get the eigenvalues from an autodiff Jacobian (lesson 01) at states from a long run.
- Autoregressive emulators. A network that maps the state to the state 6 hours later is an explicit one-step map. Long rollouts stay bounded only if errors are not amplified step after step (lesson 16).
- Neural ODEs. When the learned dynamics become stiff, an adaptive explicit solver shrinks its step, and the number of function evaluations grows during training. Kinetic-energy and Jacobian penalties (Finlay et al., 2020) keep the dynamics cheap to solve (lesson 03).
- Diffusion samplers. The probability-flow ODE of a diffusion model is semilinear. DPM-Solver and DEIS are exponential integrators: they integrate the linear part exactly and approximate only the network term, so 10–20 steps can be enough (lesson 13).
- Adjoints. Integrating backward in time flips the sign of every eigenvalue: decaying modes become growing ones. This is why re-integrating a dissipative system backward fails over long horizons (lesson 03).
- Seismology. Explicit finite-difference and spectral-element codes for seismic waves run at a fixed Courant number: the time step is set by the smallest element and the fastest (P-wave) speed. Refining the mesh near the surface makes the whole simulation slower, which is why local time stepping exists.
7. Common mistakes #
- Mixing up local and global order. One step of an order- method has error ; after steps the error is .
- A wrong slope. Too large , too small (rounding floor), a non-smooth solution, or an inaccurate reference solution all spoil the measured order.
- "Implicit is more accurate." Implicit buys stability, not accuracy. With a large step, backward Euler damps everything fast, and Crank–Nicolson leaves stiff modes ringing.
- "A-stable is enough." For strongly damped fast modes you want L-stability (or a few backward Euler steps at the start, as in Rannacher smoothing).
- "The CFL condition guarantees stability." It is only necessary. Centred differences with forward Euler for advection are unstable at every Courant number.
- Forgetting the dimension. In dimensions the explicit diffusion limit is .
- Evaluating naively in exponential integrators.
8. Check yourself #
- The explicit midpoint method (RK2) has . Find its stability interval on the
negative real axis. Is it stable for pure advection with centred differences?
Answer
for . On the imaginary axis for , so it is unstable for every step: centred advection has purely imaginary eigenvalues. (RK4 has , which is up to , so RK4 works.) - A convergence study gives errors , , for , ,
. What is the order?
Answer
Each ratio is 16, so (for example RK4). - Derive the forward Euler limit for the 2-D heat equation with the 5-point
stencil and .
Answer
With : , . The worst mode has both : , so . - Why is Crank–Nicolson a poor choice for a diffusion problem stepped far above the explicit limit,
although it is A-stable and second order?
Answer
as : the stiff grid-scale modes are hardly damped and flip sign every step. This gives spurious oscillations, especially after a rough initial condition. An L-stable method (backward Euler, BDF2, Radau IIA), or a few backward Euler start-up steps, damps them. - A wind of 50 m/s blows over a grid with km. What is the largest stable step for explicit
upwind advection, and why is it a limit of the CFL type?
Answer
gives s. In one step the air moves at most one grid cell, so the upwind stencil still contains the departure point (the domain of dependence). - For with diagonal in Fourier space and very stiff,
what do ETDRK4 and IMEX Euler each remove, and what limit remains?
Answer
Both remove the step limit from : ETDRK4 integrates the linear part exactly (order 4), IMEX Euler treats it implicitly (order 1). The explicit treatment of keeps its own limit, for example an advective CFL condition. ETDRK4 also needs a stable evaluation of its -type coefficients (the contour mean).
Define the order of a one-step method.
The local truncation error (the defect of the exact solution in the method, divided by ) is . Then the global error is too.
Give the stability functions of forward Euler, backward Euler and the trapezoid rule.
; ; , with .
Forward Euler on with real : what is the largest stable step?
, from .
What is the difference between A-stable and L-stable?
A-stable: on the whole left half-plane. L-stable: A-stable and also as , so stiff modes are damped in one step.
What is the explicit stability limit for the heat equation with centred differences in 1-D?
, that is (von Neumann: ).
State the CFL condition for upwind advection, and say why it holds.
. The foot of the characteristic, , must lie in the numerical domain of dependence .
Define stiffness.
A problem is stiff when the step size is set by stability, not by accuracy; typically the Jacobian has fast decaying modes next to slow dynamics.
How do local and global error relate for an order- method?
Each step adds an error ; there are steps, so the global error is (local error divided by ).
What does an IMEX method split, and why?
It treats the stiff linear part implicitly (no stability limit from it) and the non-stiff nonlinear part explicitly (no nonlinear solve).
Why does an explicit method always have a bounded stability region?
Its is a polynomial, so as .
9. Interview angle #
- "What is stiffness, and how do you detect it?" — Stability, not accuracy, sets the step. Look at the eigenvalues of the Jacobian, or at an adaptive explicit solver that takes many tiny steps on a smooth solution.
- "Explicit or implicit for the heat equation on a fine grid?" — Implicit (or IMEX, or ETD): the explicit step is far below what accuracy needs; an implicit step in 1-D is a tridiagonal solve, .
- "What does the CFL condition say, and is it sufficient?" — In one step, information may not travel further than the stencil reaches; necessary, not sufficient.
- "How do you verify a new solver?" — A convergence study (log–log slope = theoretical order), exact solutions, conservation checks, stability tests at the limit.
- "Why can a learned or hybrid weather model blow up after many steps?" — Error amplification above 1 per step, or eigenvalues of outside the stability region. Separate integrator problems from model problems.
10. Practice #
The notebook for this lesson runs in Colab or in the browser. It has five exercises, each with a check cell and a folded solution:
- Write an RK4 step, solve , and measure the order from the errors at several step sizes.
- Draw the stability region of a method from its (a contour plot of ) and find where it crosses the negative real axis.
- Run the explicit heat equation, find the blow-up threshold numerically, and compare it with .
- Stiff problem: compare forward and backward Euler by the number of steps they need for the same accuracy.
- Evaluate near by the direct formula and by the contour mean, and count the correct digits.
11. Watch and read #
- Driscoll and Braun, Fundamentals of Numerical Computation (free online): §6.2 (local truncation error, consistency, convergence), §6.4 (Runge–Kutta methods), §6.8 (zero-stability and the Dahlquist equivalence theorem), §11.2–11.3 (method of lines, absolute stability, the heat equation), §11.4 (stiffness), §12.2 (upwinding and the CFL condition).
- Kassam and Trefethen, Fourth-order time-stepping for stiff PDEs, SIAM J. Sci. Comput. 26 (2005): §2 (ETDRK4 and the contour integral), §3 (comparison with IMEX and other methods).
- exponax: ETDRK solvers of orders 1–4 for periodic semilinear PDEs in JAX, used to generate training data for neural PDE emulators.
Runs in your browser with nothing to install. The notebook repeats the key demos and has exercises with checks; solutions are inside, folded.
No Google account needed: Python runs inside your browser. The first start downloads about 40 MB; your changes are saved in this browser only.