Part I · Foundations Week 5 Published

Stability regions, Butcher tableau, and order conditions

Runge–Kutta theory, the Butcher tableau formalism, order conditions, stability regions in the complex plane, A-stability and L-stability, and the Dahlquist barrier — applied to the Chapter 4 discretization atlas.

On this page
  1. 5.1 Runge–Kutta methods and the Butcher tableau
  2. 5.2 Order conditions
  3. 5.3 The stability function and stability regions
  4. 5.4 A-stability, L-stability, and the Dahlquist barrier
  5. 5.5 Stability regions of the Chapter 4 schemes
  6. 5.6 What’s next
  7. 5.7 Exercises
  8. Exercise 5.1 (computation)
  9. Exercise 5.2 (computation)
  10. Exercise 5.3 (computation + code)
  11. Exercise 5.4 (theory) — solution in §5.8
  12. Exercise 5.5 (theory) — solution in §5.8
  13. Exercise 5.6 (theory) — solution in §5.8
  14. 5.8 Full solutions to theory exercises
  15. Solution to Exercise 5.4
  16. Solution to Exercise 5.5
  17. Solution to Exercise 5.6
  18. 5.9 Companion code

Stability regions, Butcher tableau, and order conditions

5.1 Runge–Kutta methods and the Butcher tableau

Chapter 4 introduced ZOH, bilinear, and exp-trapezoidal as three specific one-step schemes for the linear state-space system. They are members of a much larger family: one-step methods that compute hk+1\statevec_{k+1} from hk\statevec_k using only one previous state and possibly intermediate stage evaluations of the right-hand side. The Runge–Kutta (RK) family is the most studied subfamily.

For the autonomous initial-value problem h˙=f(h)\dot \statevec = f(\statevec) — we drop the explicit input dependence for this chapter; everything generalizes — an ss-stage Runge–Kutta method computes

ki=f ⁣(hk+Δj=1saijkj),i=1,,s,hk+1=hk+Δi=1sbiki.\begin{aligned} k_i &= f\!\left(\statevec_k + \stepsize \sum_{j=1}^{s} a_{ij} k_j\right), \qquad i = 1, \ldots, s, \\ \statevec_{k+1} &= \statevec_k + \stepsize \sum_{i=1}^{s} b_i k_i. \end{aligned}

The kik_i are the stage derivatives — evaluations of ff at intermediate states. The constants (aij,bi,ci)(a_{ij}, b_i, c_i) define the method, where ci:=jaijc_i := \sum_j a_{ij} are the stage times. The Butcher tableau is the standard tabular notation

cAbwith A=(aij)Rs×s, bRs, cRs.\begin{array}{c|c} c & A \\ \hline & b^\top \end{array} \qquad \text{with } A = (a_{ij}) \in \R^{s \times s}, \ b \in \R^s, \ c \in \R^s.

The method is explicit if AA is strictly lower triangular (aij=0a_{ij} = 0 for jij \ge i), in which case each kik_i depends only on previously computed k1,,ki1k_1, \ldots, k_{i-1}. It is implicit otherwise, requiring a nonlinear system solve at each step.

Three classical examples make the formalism concrete.

Forward Euler. The simplest explicit method, s=1s = 1:

001hk+1=hk+Δf(hk).\begin{array}{c|c} 0 & 0 \\ \hline & 1 \end{array} \qquad \Longrightarrow \qquad \statevec_{k+1} = \statevec_k + \stepsize f(\statevec_k).

The midpoint rule (RK2). A two-stage explicit method:

0001/21/2001k1=f(hk),k2=f(hk+Δ2k1),hk+1=hk+Δk2.\begin{array}{c|cc} 0 & 0 & 0 \\ 1/2 & 1/2 & 0 \\ \hline & 0 & 1 \end{array} \qquad \Longrightarrow \qquad \begin{aligned} k_1 &= f(\statevec_k), \\ k_2 &= f(\statevec_k + \tfrac{\stepsize}{2} k_1), \\ \statevec_{k+1} &= \statevec_k + \stepsize k_2. \end{aligned}

Classical RK4. The most-quoted explicit method, four stages:

000001/21/20001/201/200100101/61/31/31/6\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ 1/2 & 1/2 & 0 & 0 & 0 \\ 1/2 & 0 & 1/2 & 0 & 0 \\ 1 & 0 & 0 & 1 & 0 \\ \hline & 1/6 & 1/3 & 1/3 & 1/6 \end{array}

Fourth-order globally, the workhorse of physics simulations for half a century.

The tableau abstraction was introduced by John Butcher in the 1960s and is now the lingua franca of one-step methods: every reference paper on numerical integration presents its method as a Butcher tableau. The constraint jaij=ci\sum_j a_{ij} = c_i (consistency of stage times) and ibi=1\sum_i b_i = 1 (consistency of the weighted sum) are imposed by every tableau worth its name. Without them the method does not even reproduce the trivial constant trajectory h(t)=h0\statevec(t) = \statevec_0 when f0f \equiv 0.

5.2 Order conditions

How do we know that classical RK4 is fourth-order globally? The convergence order of an RK method is determined by order conditions: polynomial identities on the entries of (A,b,c)(A, b, c) that must hold for the local truncation error to be O(Δp+1)O(\stepsize^{p+1}).

The derivation expands h(tk+Δ)\statevec(t_k + \stepsize) as a Taylor series and matches term-by-term against the RK output hk+1\statevec_{k+1} produced from h(tk)\statevec(t_k). For a scalar autonomous ODE the leading conditions are:

  • Order 1: ibi=1\sum_i b_i = 1
  • Order 2: also ibici=1/2\sum_i b_i c_i = 1/2
  • Order 3: also ibici2=1/3\sum_i b_i c_i^2 = 1/3 and i,jbiaijcj=1/6\sum_{i,j} b_i a_{ij} c_j = 1/6
  • Order 4: four more conditions involving products of bi,ci,aijb_i, c_i, a_{ij}

For systems (the case we actually care about), the number of order conditions grows combinatorially: 5 conditions for order 4, 17 for order 5, 37 for order 6 Hairer et al. (1993) . Butcher organized these conditions using a bijection between order-conditions and rooted trees (each tree corresponds to an integer partition of ff-evaluations and gives one polynomial identity). The combinatorial explosion is one reason 8th-order RK methods are rarely used: there are over 200 order conditions to satisfy simultaneously, and the resulting tableaux have dozens of stages.

.

(Butcher order conditions.) Suppose ff is sufficiently smooth. An ss-stage Runge–Kutta method with tableau (A,b,c)(A, b, c) is of order pp — meaning hk+1h(tk+1)=O(Δp+1)\statevec_{k+1} - \statevec(t_{k+1}) = O(\stepsize^{p+1}) — if and only if a specific finite set of polynomial conditions on (A,b,c)(A, b, c) holds (one per Butcher tree of order p\le p). The Lax equivalence theorem (Chapter 4) then guarantees global convergence at order pp.

The proof is non-trivial and we will not reproduce it; the canonical reference is Hairer–Nørsett–Wanner Chapter II.2 Hairer et al. (1993) . For our purposes the takeaway is that the order of an RK method is a property of its tableau entries, derivable by algebraic manipulation alone. You can verify (Exercise 5.1) that RK4’s tableau satisfies all 4 order-4 conditions; you can also verify (Exercise 5.2) that an arbitrary two-stage explicit tableau cannot achieve order higher than 2, regardless of how you choose the free parameters.

Butcher tableau matrix visualizations for forward Euler, midpoint RK2, classical RK4, and Runge-Kutta-Fehlberg 4(5).
Butcher tableau matrices for four canonical methods, visualized as heatmaps of the (A | b, c) augmented matrix. Forward Euler (1×1, trivial). Midpoint RK2 (2×2, single off-diagonal). Classical RK4 (4×4, characteristic strictly-lower-triangular A with the $b = (1/6, 1/3, 1/3, 1/6)$ weights). RKF45 (6×6, dense lower-triangular). The sparsity pattern of A is what distinguishes explicit from implicit methods. Produced by companions/ch05/jax/stability_regions.py.
Log-log error vs step size for forward Euler (slope 1), midpoint RK2 (slope 2), and classical RK4 (slope 4) on a forced damped oscillator.
Empirical verification of Theorem 5.2 (Butcher order conditions). Each method's local truncation error decreases as $\\Delta^{p+1}$, giving global error $\\Delta^p$ — a $p$-th order method has slope $p$ on the log-log plot. RK1, RK2, and RK4 all match their theoretical orders to within ~5% on this forced linear oscillator. Produced by companions/ch05/jax/order_verification.py.

5.3 The stability function and stability regions

Order conditions characterize how a method behaves as Δ0\stepsize \to 0 on a smooth problem. Stability characterizes how it behaves at fixed Δ\stepsize on a stiff problem — when the time scales in the dynamics are well-separated and at least one is much faster than Δ\stepsize.

The standard probe is the Dahlquist test equation

y˙(t)=λy(t),y(0)=1,λC.\dot y(t) = \lambda y(t), \qquad y(0) = 1, \qquad \lambda \in \C.

The exact solution is y(t)=eλty(t) = e^{\lambda t}. Applying an ss-stage RK method to this scalar problem produces, after one step,

yk+1=\stabfn(λΔ)yk,y_{k+1} = \stabfn(\lambda \stepsize) \, y_k,

where \stabfn:CC\stabfn : \C \to \C is the stability function of the method. For an explicit RK method, \stabfn(z)\stabfn(z) is a polynomial in zz of degree s\le s:

\stabfnexplicit(z)=1+zb(IzA)11,\stabfn_{\text{explicit}}(z) = 1 + z b^\top (I - z A)^{-1} \mathbf{1},

where 1\mathbf{1} is the all-ones ss-vector and the inverse expands as a finite geometric series because AA is nilpotent (strictly lower-triangular). For an implicit RK method, \stabfn(z)\stabfn(z) is a rational function P(z)/Q(z)P(z)/Q(z).

Three examples make this concrete.

Forward Euler. With A=0A = 0, b=1b = 1: \stabfn(z)=1+z\stabfn(z) = 1 + z.

Midpoint RK2. Working through the formula gives \stabfn(z)=1+z+z2/2\stabfn(z) = 1 + z + z^2/2 — the second-order Taylor polynomial of eze^z.

Classical RK4. \stabfn(z)=1+z+z2/2+z3/6+z4/24\stabfn(z) = 1 + z + z^2/2 + z^3/6 + z^4/24 — the fourth-order Taylor polynomial.

A pattern emerges: for a pp-th order explicit RK method, \stabfn(z)\stabfn(z) agrees with eze^z through terms of degree pp. This is no coincidence — order pp requires the method to reproduce eze^z correctly on the test problem through that order in Δ\stepsize. The error \stabfn(z)ez\stabfn(z) - e^z is O(zp+1)O(z^{p+1}) near z=0z = 0.

The stability region of the method is the set

\stabregion = \set{z \in \C : \abs{\stabfn(z)} \le 1}.

On the test problem with λ\lambda in the left half-plane (so the exact solution decays), the method’s iterates yk=\stabfn(λΔ)ky_k = \stabfn(\lambda \stepsize)^k stay bounded iff λΔ\stabregion\lambda \stepsize \in \stabregion. The stability region is the constraint on λΔ\lambda \stepsize that keeps the method well-behaved on stiff problems — equivalently, the set of Δ\stepsize values you can take for a given λ\lambda.

Stability regions of forward Euler (disk), midpoint RK2 (lobe), and classical RK4 (kidney) in the complex plane.
Stability regions of three explicit RK methods. Forward Euler: disk of radius 1 centered at $z = -1$. Midpoint RK2: oval extending further into the left half-plane. Classical RK4: kidney-shaped region that includes a portion of the imaginary axis (relevant for oscillatory problems). None of these regions contains the entire left half-plane — explicit RK methods are never A-stable. Produced by companions/ch05/jax/stability_regions.py.

The stability region of forward Euler is the disk 1+z1\abs{1 + z} \le 1 — a disk of radius 1 centered at z=1z = -1. For a real-eigenvalue λ<0\lambda < 0, this requires Δ2/λ\stepsize \le 2/\abs{\lambda}. The tighter this constraint becomes (large λ\abs{\lambda} = stiff problem), the smaller the maximum step size — this is the step-size restriction that motivates implicit methods.

5.4 A-stability, L-stability, and the Dahlquist barrier

A method is A-stable if its stability region contains the entire closed left half-plane: \stabregion{zC:Re(z)0}\stabregion \supseteq \set{z \in \C : \operatorname{Re}(z) \le 0}. On a stable linear problem with Re(λ)0\operatorname{Re}(\lambda) \le 0, an A-stable method preserves stability for every positive step size — no step-size restriction at all. This is the gold standard for stiff problems.

A method is L-stable if it is A-stable and \stabfn(z)0\stabfn(z) \to 0 as Re(z)\operatorname{Re}(z) \to -\infty. L-stability damps fast eigenmodes aggressively, which is desirable when you want the discrete method to not preserve fast oscillations the continuous solution decays. Backward Euler is L-stable; the trapezoidal rule (= bilinear from Chapter 4) is A-stable but not L-stable (its stability function \stabfn(z)=(1+z/2)/(1z/2)\stabfn(z) = (1 + z/2)/(1 - z/2) tends to 1-1, not 0, as Re(z)\operatorname{Re}(z) \to -\infty). The distinction matters when the system has eigenvalues with very large negative real part: bilinear will preserve high-frequency oscillation modes that should physically be damped.

The fundamental theorem on A-stability of explicit methods is the Dahlquist barrier:

.

(Dahlquist barrier for explicit RK.) No explicit Runge–Kutta method is A-stable. The maximum order of an A-stable Runge–Kutta method (explicit or implicit) is unbounded, but explicit methods cannot achieve A-stability at any order.

The proof for the explicit case is direct: an explicit RK method has \stabfn(z)=\stabfn(z) = polynomial in zz, and any polynomial diverges as z\abs{z} \to \infty. So \stabregion\stabregion is bounded, and cannot contain the entire (unbounded) left half-plane. ∎

The implicit case is more subtle: there exists an A-stable Runge–Kutta method of every order, but the constructions are increasingly elaborate. The Gauss–Legendre family — Chapter 6’s main attraction — produces A-stable implicit methods of every even order. The ss-stage Gauss–Legendre method is order 2s2s, optimally accurate among ss-stage implicit RK methods, and A-stable, and (a bonus for Hamiltonian systems) symplectic.

The practical consequence for SSM discretization: you cannot have an explicit, A-stable, high-order one-step method. You must pick at most two of the three properties (explicit, A-stable, order ≥ 3). The Chapter 4 schemes resolve this trilemma differently:

  • Forward Euler: explicit, order 1, not A-stable.
  • ZOH and exp-trapezoidal: A-stable and of arbitrary order on autonomous problems, by virtue of using the matrix exponential — but they sit outside the explicit-RK family (they have non-polynomial stability functions).
  • Bilinear: A-stable, order 2, implicit in form (requires inverting IΔA/2I - \stepsize \statemat / 2).

The exponential integrators of §4.5 are a way to evade the Dahlquist barrier: by computing eAΔe^{\statemat \stepsize} exactly, the stability function inherits the full LHP-stability of the exponential, and the polynomial-order restriction is moved from \stabfn\stabfn to a different object (the approximation of the forcing by φ\varphi-functions). This is why exp-trapezoidal can be both “explicit in the input” (no nonlinear solve in uu) and A-stable.

5.5 Stability regions of the Chapter 4 schemes

Reading the three Chapter 4 schemes through the lens of stability functions:

ZOH. From §4.3, Aˉ=eAΔ\discA = e^{\statemat \stepsize}, so for the scalar test problem \stabfnZOH(z)=ez\stabfn_{\text{ZOH}}(z) = e^z. The stability region is {z:ez1}={z:Re(z)0}\set{z : \abs{e^z} \le 1} = \set{z : \operatorname{Re}(z) \le 0} — exactly the closed left half-plane. ZOH is A-stable, in fact also L-stable because ez0\abs{e^z} \to 0 as Re(z)\operatorname{Re}(z) \to -\infty.

Bilinear (Tustin). From §4.4, \stabfnbilinear(z)=(1+z/2)/(1z/2)\stabfn_{\text{bilinear}}(z) = (1 + z/2)/(1 - z/2). The Möbius geometry from Chapter 4 §4.4 / Exercise 4.5 says the LHP maps bijectively to the open unit disk, so the stability region is exactly the closed left half-plane — bilinear is A-stable. But \stabfnbilinear(z)1\stabfn_{\text{bilinear}}(z) \to -1 as Re(z)\operatorname{Re}(z) \to -\infty, so bilinear is not L-stable. This is the trapezoidal-rule failure mode: oscillatory artifacts on very stiff problems.

Exp-trapezoidal. The homogeneous stability function is identical to ZOH’s: \stabfn(z)=ez\stabfn(z) = e^z on the test problem (the difference between ZOH and exp-trap shows up only in the forcing integrals; the homogeneous behavior is the same). So exp-trapezoidal is A-stable and L-stable, just like ZOH.

Stability regions of forward Euler, ZOH, bilinear, and exp-trapezoidal overlaid in the complex plane.
Stability regions of the schemes from Chapter 4 §4.6, with classical RK1 and RK4 included for reference. Forward Euler (RK1, navy) and classical RK4 (gold): bounded regions in the LHP. ZOH / exp-trapezoidal (rose) and bilinear (gray): the entire closed left half-plane — A-stable. Among the explicit-RK family, no method achieves A-stability (Dahlquist barrier); the schemes that do are the ones using $e^{A \\Delta}$ as the dynamics factor. Produced by companions/ch05/jax/stability_regions.py.

5.6 What’s next

This chapter has laid out the systematic framework for analyzing one-step methods: Butcher tableau, order conditions, stability functions, stability regions, A-stability and L-stability, and the Dahlquist barrier. Chapter 6 uses this framework to motivate the implicit family — backward Euler, BDF, and the Gauss–Legendre IRK schemes that achieve A-stability at every order — and the symplectic family, which trades order or A-stability for the preservation of geometric invariants. Chapter 6 is where the C1 niche pilot lives: symplectic integration of selective SSMs viewed as Hamiltonian flows on the hidden-state manifold.

A natural side path is embedded methods — pairs of RK tableaux of consecutive orders sharing stages, used for adaptive step-size control. The DP54 method (Dormand–Prince 5(4)) used by DifferentialEquations.jl’s default solver Tsit5 is a famous example. Embedded methods are excellent practical tools but tangential to the SSM pedagogy of this book; the companion discretization_atlas.jl references the RKF45 / DP54 tableaux for completeness.

5.7 Exercises

Six problems. Short/numerical (5.1–5.3) have inline collapsible solutions; long/proof exercises (5.4–5.6) have full worked solutions in §5.8.

Exercise 5.1 (computation)

Verify that classical RK4 satisfies the four order-conditions of order 4 — at least the simpler ones: bi=1\sum b_i = 1, bici=1/2\sum b_i c_i = 1/2, bici2=1/3\sum b_i c_i^2 = 1/3. Use the tableau in §5.1.

Solution

From the tableau, b=(1/6,1/3,1/3,1/6)b = (1/6, 1/3, 1/3, 1/6) and c=(0,1/2,1/2,1)c = (0, 1/2, 1/2, 1).

  • bi=1/6+1/3+1/3+1/6=2/6+4/6=1\sum b_i = 1/6 + 1/3 + 1/3 + 1/6 = 2/6 + 4/6 = 1. ✓
  • bici=(1/6)(0)+(1/3)(1/2)+(1/3)(1/2)+(1/6)(1)=0+1/6+1/6+1/6=1/2\sum b_i c_i = (1/6)(0) + (1/3)(1/2) + (1/3)(1/2) + (1/6)(1) = 0 + 1/6 + 1/6 + 1/6 = 1/2. ✓
  • bici2=(1/6)(0)+(1/3)(1/4)+(1/3)(1/4)+(1/6)(1)=0+1/12+1/12+1/6=2/12+2/12=1/3\sum b_i c_i^2 = (1/6)(0) + (1/3)(1/4) + (1/3)(1/4) + (1/6)(1) = 0 + 1/12 + 1/12 + 1/6 = 2/12 + 2/12 = 1/3. ✓

Exercise 5.2 (computation)

Show that an arbitrary two-stage explicit RK tableau (one free parameter c2(0,1]c_2 \in (0, 1], with a21=c2a_{21} = c_2, b2b_2 to be determined, b1=1b2b_1 = 1 - b_2) cannot achieve order 3 no matter how c2,b2c_2, b_2 are chosen.

Solution

For order 2 we need b1+b2=1b_1 + b_2 = 1 (trivially b1=1b2b_1 = 1 - b_2) and b2c2=1/2b_2 c_2 = 1/2, giving b2=1/(2c2)b_2 = 1/(2c_2), b1=11/(2c2)b_1 = 1 - 1/(2c_2). So the two-parameter family (c2,b2)(c_2, b_2) collapses to a one-parameter family of order-2 methods (midpoint c2=1/2c_2 = 1/2, Heun c2=1c_2 = 1, etc.).

For order 3 we additionally need b2c22=1/3b_2 c_2^2 = 1/3 and b2a21c1=1/6b_2 a_{21} c_1 = 1/6. The second condition uses c1=0c_1 = 0, giving b2c20=01/6b_2 \cdot c_2 \cdot 0 = 0 \ne 1/6. Contradiction. So no two-stage explicit method achieves order 3.

This is a small instance of the general fact: order pp requires at least pp stages for explicit methods (Butcher’s order barriers).

Exercise 5.3 (computation + code)

Run companions/ch05/jax/order_verification.py. Confirm the empirical slopes match Forward Euler (1), midpoint RK2 (2), classical RK4 (4). What happens to the RK4 slope at very small Δ\stepsize (say Δ=104\stepsize = 10^{-4})?

Solution

The companion’s order_verification function prints slopes 1.00\approx 1.00, 2.00\approx 2.00, 4.00\approx 4.00 for the three methods in turn. At very small Δ\stepsize, the RK4 error reaches the roundoff floor — typically 101310^{-13} in float64 — and the slope flattens out as machine precision starts to dominate the method error. This is why empirical order is always estimated from the two finest dt where the method error still exceeds roundoff, not from arbitrarily fine dt.

Exercise 5.4 (theory) — solution in §5.8

Prove that for an explicit Runge–Kutta method with tableau (A,b,c)(A, b, c), the stability function is

\stabfn(z)=1+zb(IzA)11,\stabfn(z) = 1 + z b^\top (I - z A)^{-1} \mathbf{1},

where 1=(1,1,,1)\mathbf{1} = (1, 1, \ldots, 1)^\top. Verify that for classical RK4 this evaluates to 1+z+z2/2+z3/6+z4/241 + z + z^2/2 + z^3/6 + z^4/24.

Exercise 5.5 (theory) — solution in §5.8

Prove the Dahlquist-barrier statement for explicit RK methods: that no explicit RK method is A-stable. (The proof was sketched in §5.4; flesh it out, using the fact that explicit methods have polynomial stability functions.)

Exercise 5.6 (theory) — solution in §5.8

For the bilinear/Tustin scheme, show that the stability function \stabfn(z)=(1+z/2)/(1z/2)\stabfn(z) = (1 + z/2)/(1 - z/2) satisfies \stabfn(z)1\stabfn(z) \to -1 as Re(z)\operatorname{Re}(z) \to -\infty along any direction with Im(z)\operatorname{Im}(z) bounded, and explain why this rules out L-stability. Discuss what this means for the discrete dynamics of a bilinear-discretized stable LTI system with very fast-decaying eigenmodes.

5.8 Full solutions to theory exercises

Solution to Exercise 5.4

Apply the ss-stage explicit RK method to the test ODE y˙=λy\dot y = \lambda y, y(0)=yk=1y(0) = y_k = 1. The stage equations become

ki=λ(1+Δj<iaijkj)=λ+λΔj<iaijkj.k_i = \lambda \left(1 + \stepsize \sum_{j<i} a_{ij} k_j\right) = \lambda + \lambda \stepsize \sum_{j<i} a_{ij} k_j.

Set z:=λΔz := \lambda \stepsize and let κ=(k1,k2,,ks)\kappa = (k_1, k_2, \ldots, k_s)^\top. The vector form is

κ=λ1+zAκ(IzA)κ=λ1.\kappa = \lambda \mathbf{1} + z A \kappa \qquad \Longrightarrow \qquad (I - z A) \kappa = \lambda \mathbf{1}.

For an explicit method AA is strictly lower-triangular, hence nilpotent (As=0A^s = 0), and the geometric series (IzA)1=I+zA+z2A2++zs1As1(I - z A)^{-1} = I + z A + z^2 A^2 + \cdots + z^{s-1} A^{s-1} truncates. So κ=λ(IzA)11\kappa = \lambda (I - z A)^{-1} \mathbf{1}, and

yk+1=1+Δbκ=1+zb(IzA)11=\stabfn(z).y_{k+1} = 1 + \stepsize b^\top \kappa = 1 + z \cdot b^\top (I - z A)^{-1} \mathbf{1} = \stabfn(z). \quad \square

For classical RK4, direct computation of b(IzA)11b^\top (I - z A)^{-1} \mathbf{1} — expanding the geometric series and multiplying out — gives, after some algebra,

\stabfnRK4(z)=1+z+z22+z36+z424.\stabfn_{\text{RK4}}(z) = 1 + z + \frac{z^2}{2} + \frac{z^3}{6} + \frac{z^4}{24}.

This is the fourth-order Taylor polynomial of eze^z, as expected for a fourth-order method.

Solution to Exercise 5.5

For an explicit RK method, AA is strictly lower-triangular, so As=0A^s = 0 and the geometric series for (IzA)1(I - z A)^{-1} truncates at zs1z^{s-1}. Therefore

\stabfn(z)=1+zb(IzA)11\stabfn(z) = 1 + z b^\top (I - z A)^{-1} \mathbf{1}

is a polynomial in zz of degree at most ss. Polynomials are unbounded: \stabfn(z)\abs{\stabfn(z)} \to \infty as z\abs{z} \to \infty along any ray (assuming the leading coefficient is nonzero, which holds for any ss-stage method of order s\ge s, the only interesting case).

The closed left half-plane {z:Re(z)0}\set{z : \operatorname{Re}(z) \le 0} is unbounded — it extends to -\infty along the real axis. The stability region \stabregion = \set{z : \abs{\stabfn(z)} \le 1} is therefore bounded. So \stabregion\stabregion cannot contain the entire LHP, and the method is not A-stable. ∎

The proof relies essentially on \stabfn\stabfn being a polynomial. Implicit methods have rational \stabfn(z)=P(z)/Q(z)\stabfn(z) = P(z)/Q(z), which can be bounded at infinity if deg(Q)deg(P)\deg(Q) \ge \deg(P). This is the precise sense in which implicit methods evade the Dahlquist barrier.

Solution to Exercise 5.6

Write z=r+iωz = -r + i\omega with r+r \to +\infty and ω\omega bounded. Then

\stabfn(z)=1+z/21z/2=1+(r/2+iω/2)1(r/2+iω/2)=1r/2+iω/21+r/2iω/2.\stabfn(z) = \frac{1 + z/2}{1 - z/2} = \frac{1 + (-r/2 + i\omega/2)}{1 - (-r/2 + i\omega/2)} = \frac{1 - r/2 + i \omega/2}{1 + r/2 - i \omega/2}.

For large rr the dominant terms are \stabfn(z)(r/2)/(r/2)=1\stabfn(z) \approx (-r/2)/(r/2) = -1. More precisely,

\stabfn(z)=r/2+(1+iω/2)r/2+(1iω/2)=1+O(1/r)1as r.\stabfn(z) = \frac{-r/2 + (1 + i\omega/2)}{r/2 + (1 - i\omega/2)} = -1 + O(1/r) \to -1 \quad \text{as } r \to \infty.

This rules out L-stability: L-stability requires \stabfn0\stabfn \to 0, not 1\to -1. ∎

Practical implication. For a stable LTI system h˙=Ah\dot \statevec = \statemat \statevec with A\statemat having an eigenvalue λ\lambda with very large Re(λ)\abs{\operatorname{Re}(\lambda)} — a fast-decaying mode — bilinear discretization at step size Δ\stepsize produces a discrete eigenvalue μ=(1+λΔ/2)/(1λΔ/2)1\mu = (1 + \lambda \stepsize / 2)/(1 - \lambda \stepsize / 2) \approx -1. The corresponding mode in the discrete dynamics therefore alternates sign at every step before decaying, rather than smoothly decaying. This trapezoidal-rule oscillation is the classic L-stability failure mode: the discrete solution exhibits spurious oscillations not present in the continuous solution. For SSMs this manifests as oscillatory artifacts in the hidden state when the system has eigenvalues with very negative real parts — exactly the regime where stiff implicit methods like BDF (Chapter 6) are preferred over bilinear.

5.9 Companion code

Two JAX companions and one Julia companion for Chapter 5.

JAX (companions/ch05/jax/):

  • stability_regions.py — computes and plots stability regions for forward Euler, midpoint RK2, classical RK4, ZOH, bilinear, and exp-trapezoidal in the complex z=λΔz = \lambda \stepsize plane; emits rk_stability_regions.png, atlas_stability.png, and butcher_tableaux.png.
  • order_verification.py — implements RK1/RK2/RK4 from their tableaux; verifies empirical orders 1, 2, 4 on the forced damped oscillator from Chapter 4; emits order_verification.png.

Julia (companions/ch05/julia/):

  • butcher_tableau_zoo.jl — uses DifferentialEquations.jl solver tables (OrdinaryDiffEqTsit5, etc.) to extract Butcher coefficients programmatically and print them side-by-side with the analytic forms used in §5.1.
  • Project.toml / Manifest.toml — companion-local Julia environment.

To run from the repo root:

# JAX
PYTHONPATH=. python companions/ch05/jax/stability_regions.py
PYTHONPATH=. python companions/ch05/jax/order_verification.py

# Julia (first run will precompile DifferentialEquations.jl)
julia --project=companions/ch05/julia companions/ch05/julia/butcher_tableau_zoo.jl

All figures emit to public/figures/ch05/.