Skip to main content

Nuclear, particle & quantum-information sequence · Interactive lesson

Decay chains as a linear system

Stop deriving Bateman formulae one nuclide at a time. Assemble the chain as a single lower-triangular matrix, exponentiate it, and the parent, every daughter, both equilibria and the awkward equal-λ case fall out of one call — provided you read the matrix's spectrum before trusting its output.

UPV-15.06 · Lesson 6 of 9 in this unit. Position is not a completion score.
Starting model: Decay chains as a linear systemSemi-log plot of activities divided by A₁(0) over six parent mean lives: the straight line is the parent, the curve is the daughter from N(t) = e^(At) N(0). The dashed vertical marks (λ₂ − λ₁)t = 3, by which any offset from equilibrium has shrunk by e^(−3) = 0.05 and the daughter runs nearly parallel to the parent at A₂/A₁ = b λ₂/(λ₂ − λ₁) = 1.20, with eigenvector condition number 1.3.N(t) = e(At) N(0)A₂/A₁ → 1.20line: parent curve: daughter110⁻¹10⁻²10⁻³A₂/A₁ settlest in parent mean lives 1/λ₁, 0 to 6
Start with a picture. Change the model in the lab below.

Nuclear, particle & quantum-information sequence. These units continue into nuclear and particle physics and quantum information. Follow your university’s prerequisites, mathematical depth and assessment; this independent pathway is not a universal programme specification.

1

Build the model

One matrix holds the whole chain; its exponential holds the whole history.

The key idea

A decay chain is the constant-coefficient linear system dN/dt = A N, with A carrying −λᵢ on the diagonal and the feeding term bᵢ λᵢ one row below, whose solution is the matrix exponential acting on the starting inventory, N(t) = e(At) N(0).

Example. For Mo-99 (λ₁ = 0.010512 h⁻¹) feeding Tc-99m (λ₂ = 0.115396 h⁻¹) through b = 0.8757, A = [[−0.010512, 0], [0.009205, −0.115396]] h⁻¹; the matrix is lower triangular, so its eigenvalues are just −0.010512 and −0.115396 h⁻¹, read off the diagonal.

The complete physical model and assumptions

A decay chain is exactly linear, and that is not an approximation: a nucleus decays at rate λᵢ whatever else is in the sample, so the inventory obeys dN/dt = A N with A constant and members coupled only by feeding terms. Order them by generation and A is lower triangular — −λᵢ on the diagonal, bᵢ λᵢ one row below — which hands you the spectrum for nothing: the eigenvalues are the decay constants themselves with a minus sign, −λᵢ, no characteristic polynomial required. The solution is the matrix exponential N(t) = e(At) N(0), one object that carries any starting vector to any time and composes as e(A(t+s)) = e(At) e(As), so an elution becomes a projection between two propagations rather than a fresh derivation. The Bateman formulae are not a rival method: they are the entries of e(At) written out, and their 1/(λₖ − λⱼ) coefficients are the partial-fraction form of the same eigendecomposition V diag(e(−λᵢ t)) V⁻¹. That is also where the cost sits. The diagonal form exists only while the λᵢ are distinct; as two approach, their eigenvectors turn parallel and cond(V) grows like 1/|λ₂ − λ₁|, and at equality A is defective, one eigenvector short of a basis, so V⁻¹ does not exist even though the physics stays finite and merely acquires a Jordan term t e(−λt). Scaling and squaring never forms V, which is the whole reason to prefer it.

1Assemble A, then read its spectrum for free

Number the members by generation, one row and one column each. The diagonal carries the total loss, Aᵢᵢ = −λᵢ, where λᵢ is the full decay constant including any branch that leaves the chain; the entry directly below it, A(i+1, i) = bᵢ λᵢ, carries the fraction bᵢ of those decays that lands on the next member. Include the stable end member with λ = 0, book every branch to some member, and every column of A sums to zero, so 1ᵀA = 0: the all-ones row vector is a left null vector and total nuclei are conserved. That identity is the cheapest audit available — build the matrix, sum its columns, and a mistyped branch shows up at once. For Mo-99 into Tc-99m into Tc-99, the 12.4% of Mo-99 decays that go straight to the ground state put an entry in row 3, column 1, so A stops being bidiagonal; with the members still ordered by generation it stays lower triangular, and its eigenvalues are still exactly −λMo, −λTc99m and 0.

2The exponential is the solution, expm is the algorithm

Define e(At) by the series Σ (At)n/n!, which converges for every square A. Differentiate term by term and d/dt e(At) = A e(At), while e(A⋅0) = I, so N(t) = e(At) N(0) satisfies the initial-value problem — and, the system being linear with a bounded constant matrix, it is the only thing that does. For two members the propagator is [[e(−λ₁t), 0], [b λ₁(e(−λ₁t) − e(−λ₂t))/(λ₂ − λ₁), e(−λ₂t)]]. Do not evaluate the series directly: its terms grow before they shrink and cancellation ruins them. scipy.linalg.expm scales At down by 2s until its norm is below a threshold of order one (about 5.4 for the degree-13 approximant), evaluates a Padé approximant with a few matrix products and one well-conditioned solve, then squares s times. Two traps: numpy.exp(A) exponentiates element by element and is a different matrix, and forward Euler is throttled by the fastest member, stable only for steps shorter than 2/λₘₐₓ — Ra-226 into Rn-222 is a rate ratio of 1.5 × 10⁵, so crossing one radium half-life takes at least 5.3 × 10⁴ steps, where the propagator needs none.

3Bateman is a matrix element, and its denominators warn you

The Bateman formulae are not an alternative to the matrix; they are the entries of e(At) for a lower-triangular A, written as a partial-fraction expansion. Fed only at the top, Nₙ(t) = N₁(0)(Π bᵢ λᵢ) Σⱼ e(−λⱼ t)/Π(k≠j)(λₖ − λⱼ), and every denominator is a difference of decay constants — the same differences that appear when V is inverted. That structure is clean on paper and treacherous in floating point. Write the two-member numerator as e(−λ₁t)(1 − e(−Δt)) with Δ = λ₂ − λ₁: at λ₁t = 1 and Δt = 3.3333 × 10⁻⁶ the two exponentials are 0.3678794412 and 0.3678782149, agreeing to better than four parts in a million, so the subtraction throws away about five and a half of the sixteen digits a double carries, and the 1/Δ prefactor then magnifies whatever noise is left. Near degeneracy, evaluate it as t e(−λ₁t) (1 − e(−Δt))/(Δt) with the bracket computed as −expm1(−Δt), since 1 − e(−Δt) typed as written cancels just as badly; the second factor then tends smoothly to 1 — or call expm and stop thinking about it.

4Both equilibria are one solution read in two limits

Divide the two-member solution by the parent and the transient separates cleanly: A₂/A₁ = b λ₂/(λ₂ − λ₁) [1 − e(−(λ₂−λ₁)t)] + (λ₂N₂(0)/λ₁N₁(0)) e(−(λ₂−λ₁)t). Whatever the daughter started at, the memory of it decays as e(−(λ₂−λ₁)t) and the ratio settles on b λ₂/(λ₂ − λ₁): transient equilibrium, in which the daughter's activity is a fixed multiple of the parent's and both then fall at the slower rate λ₁. Take λ₁ ≪ λ₂ and that multiple collapses to b — secular equilibrium, the daughter simply repeating what an effectively constant parent feeds it. For Mo-99 into Tc-99m the multiple is 0.8757 × 1.100 = 0.963, reached from a fresh elution to within 5% after 3/(λ₂ − λ₁) = 29 h. Reverse the inequality, λ₁ greater than λ₂, and there is no equilibrium at all: the long-time decay follows the smallest decay constant in the chain, the dominant eigenvalue of A, whichever member owns it.

5Equal decay constants break the basis, not the physics

Set λ₂ = λ₁ = λ in the two-member matrix: A = [[−λ, 0], [bλ, −λ]]. The eigenvalue −λ now has algebraic multiplicity 2, but A + λI = [[0, 0], [bλ, 0]] has rank 1, so its null space is one-dimensional and there is a single eigenvector, (0, 1)ᵀ. A is defective — a Jordan block, not a diagonalisable matrix — and no V with e(At) = V diag(e(−λt)) V⁻¹ exists. The differential equation is untroubled: from N₂(0) = 0, N₂(t) = b λ N₁(0) t e(−λt), peaking at t = 1/λ with b N₁(0)/e = 0.368 b N₁(0), and t e(−λt) is precisely the generalised-eigenvector term a Jordan block contributes. The numerical failure is quiet rather than loud. numpy.linalg.eig hands back two near-parallel columns instead of refusing, V⁻¹ amplifies rounding by roughly the reciprocal of the angle between them, and the output still looks like a curve. Never build a chain solver on eig.

6What the constant matrix leaves out

dN/dt = A N is the mean of a Markov jump process, not a trajectory. With 10¹⁵ nuclei the relative fluctuation is about 3 × 10⁻⁸ and the distinction is academic; with ten atoms of a superheavy element the population is a staircase and the process itself has to be simulated. A is also constant, which asserts that nothing outside the chain touches it. Irradiation in a reactor adds a source, dN/dt = A N + s, solved by variation of constants or by exponentiating the augmented matrix [[A, s], [0, 0]]. A chemical separation is not a change to A at all but a projection P applied between propagations, N(t₂) = e(A(t₂−t₁)) P N(t₁), which is exactly what eluting a generator does to the daughter. And the stiffness that makes expm attractive also offers a shortcut: once a fast member sits in secular equilibrium, its differential equation can be replaced by the algebraic constraint λᵢ Nᵢ = b(i−1) λ(i−1) N(i−1), shrinking the system.

2

Key equations

Read the units, assumptions and limits before substituting.

The chain matrix

dN/dt = A NAᵢᵢ = −λᵢA(i+1, i) = bᵢ λᵢ

Triangular means the eigenvalues are the diagonal itself — the chain's time constants need no characteristic polynomial.

Nᵢ in nuclei, λᵢ in s⁻¹, bᵢ the fraction of i's decays feeding member i+1; ordered by generation, A is lower triangular

Matrix exponential solution

N(t) = e(At) N(0)e(At) = Σ (At)n/n!

One propagator moves any starting vector to any time, and e(A(t+s)) = e(At) e(As) lets an elution be a projection applied between two steps.

A matrix function, not element-by-element: numpy.exp(A) is a different object; use scipy.linalg.expm(A*t). At is dimensionless.

Diagonalised route and its conditioning

e(At) = V diag(e(−λᵢ t)) V⁻¹

Says why the answer is a sum of pure exponentials, and warns exactly where the numerical route dies: eigenvectors turning parallel.

Columns of V are unit eigenvectors of A; valid only for distinct λᵢ. For two members cond(V) = (√((λ₂−λ₁)² + b²λ₁²) + bλ₁)/|λ₂ − λ₁|, close to 2bλ₁/|λ₂ − λ₁| near degeneracy.

Bateman, two members

N₂(t) = b λ₁ N₁(0) (e(−λ₁t) − e(−λ₂t))/(λ₂ − λ₁) + N₂(0) e(−λ₂t)

The closed form to test code against — and its (λ₂ − λ₁) denominator is the defect warning printed in plain sight.

λ in s⁻¹, N in nuclei; requires λ₁ ≠ λ₂. These are the (2,1) and (2,2) entries of e(At) written out.

Transient and secular equilibrium

A₂/A₁ → b λ₂/(λ₂ − λ₁)→ b when λ₁ ≪ λ₂

Mo-99 into Tc-99m: λ₂/(λ₂ − λ₁) = 1.100, so the daughter settles at 0.8757 × 1.100 = 0.963 of the parent activity, within 5% after 29 h.

Activity Aᵢ = λᵢ Nᵢ in becquerel; needs λ₂ > λ₁. Any starting offset from the limit shrinks as e(−(λ₂−λ₁)t), so a daughter starting at zero is within 5% once (λ₂ − λ₁)t ≥ 3.

The defective limit

λ₂ → λ₁ = λ: N₂(t) = b λ N₁(0) t e(−λt)

Peaks at t = 1/λ with N₂ = b N₁(0)/e = 0.368 b N₁(0). expm returns it; the eigendecomposition returns noise.

With N₂(0) = 0, the 0/0 limit of the Bateman form; at exact equality A has only one eigenvector for a doubled eigenvalue.
3

Interactive lab

Predict first. Explore the model. Compare the result.

Explore the model

4.00
1.02 to 8; steps of 0.02.
0.90
0.1 to 1; steps of 0.05.
0.00
0 to 0.2; steps of 0.02.

Try this. Drive λ₂/λ₁ towards 1: the equilibrium ratio and the eigenvector condition number both run away while the dashed set-up line pins at the right edge — A going defective. Then move the initial daughter: all curves merge onto one line, since the fast mode dies and the slow eigenvector lives.

Live results

EQUILIBRIUM RATIO A₂/A₁
1.20
SET-UP TIME, (λ₂−λ₁)t = 3
1.00 1/λ₁
A₂/A₁ AT t = 2/λ₁
1.20
EIGENVECTOR CONDITION
1.3

Results follow this lesson’s model and assumptions. Displayed values are rounded.

Interactive Physics V modelSemi-log plot of activities divided by A₁(0) over six parent mean lives: the straight line is the parent, the curve is the daughter from N(t) = e^(At) N(0). The dashed vertical marks (λ₂ − λ₁)t = 3, by which any offset from equilibrium has shrunk by e^(−3) = 0.05 and the daughter runs nearly parallel to the parent at A₂/A₁ = b λ₂/(λ₂ − λ₁) = 1.20, with eigenvector condition number 1.3.N(t) = e(At) N(0)A₂/A₁ → 1.20line: parent curve: daughter110⁻¹10⁻²10⁻³A₂/A₁ settlest in parent mean lives 1/λ₁, 0 to 6
Semi-log plot of activities divided by A₁(0) over six parent mean lives: the straight line is the parent, the curve is the daughter from N(t) = e(At) N(0). The dashed vertical marks (λ₂ − λ₁)t = 3, by which any offset from equilibrium has shrunk by e(−3) = 0.05 and the daughter runs nearly parallel to the parent at A₂/A₁ = b λ₂/(λ₂ − λ₁) = 1.20, with eigenvector condition number 1.3.

Predict → change one variable → check

Plan a change before running it. Every other input stays at the saved baseline.

Saved baseline. Rate ratio λ₂/λ₁: 4.00; Feeding branch b: 0.90; Initial daughter N₂(0)/N₁(0): 0.00

Baseline 4.00; choose 1.02 to 8, in steps of 0.02.
4. Compared with the saved baseline, this result will…

This experiment is kept only while this page is open. It does not change saved course progress.

4

Catch the common trap

The Bateman denominator λ₂ − λ₁ going to zero is not the physics blowing up. The denominator and the numerator e(−λ₁t) − e(−λ₂t) vanish together, and their ratio tends to the perfectly finite t e(−λt): dN/dt = A N is linear with a bounded constant matrix, so it has exactly one solution for every choice of λ, degenerate or not. What fails at λ₂ = λ₁ is the representation — A is defective, one eigenvector short of a basis, so "a sum of pure exponentials" is no longer a complete description and V⁻¹ does not exist. The usual patch, nudging λ₂ by 10⁻⁹, is worse than it looks: it trades a clean division by zero for a V with condition number near 10⁹, and the code then returns a plausible-looking answer carrying nine digits of silent damage. Compute e(At) directly instead.

5

Practice & worked examples

3 authored examples. Make an attempt, then reveal the reasoning one step at a time.

EasyExample 1

The Pb-210 → Bi-210 → Po-210 → Pb-206 tail of the uranium series has half-lives 22.20 y, 5.012 d and 138.4 d, every branching ratio equal to 1, and Pb-206 stable. Write the matrix A of dN/dt = A N in units of d⁻¹, state its eigenvalues without forming a characteristic polynomial, and give one arithmetic check on the matrix itself.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 4 steps revealed.

MediumExample 2

A Mo-99/Tc-99m generator (half-lives 65.94 h and 6.0067 h, feeding branch b = 0.8757) is eluted at t = 0, leaving 40.0 GBq of Mo-99 and no Tc-99m. Find when the Tc-99m activity peaks and how large the peak is, give the ratio A₂/A₁ the chain settles to, and check the peak independently against the condition dN₂/dt = 0.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 5 steps revealed.

HardExample 3

A two-member chain has b = 1, N₁(0) = 1.000 × 10⁶, N₂(0) = 0 and λ₁ = 0.3000 h⁻¹, with λ₂ = λ₁ + δ. At t = 10/3 h: (a) show the Bateman expression has a finite δ → 0 limit and evaluate it; (b) evaluate it at δ = 1.0 × 10⁻⁶ h⁻¹ and say what the subtraction costs in double precision; (c) state what the eigendecomposition does at δ = 0 and why expm does not.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 6 steps revealed.

6

Quick check

Select an answer and explain it before checking.

A two-member chain has λ₁ = λ₂ = λ exactly, with N₂(0) = 0 and feeding branch b. What does the daughter population N₂(t) do?
7

Review & continue

A decay chain is the constant-coefficient linear system dN/dt = A N, with A carrying −λᵢ on the diagonal and the feeding term bᵢ λᵢ one row below, whose solution is the matrix exponential acting on the starting inventory, N(t) = e(At) N(0).

  • Explain the relationship without looking at the equation.
  • Check a sign, a unit and a model assumption in your working.
  • Return to the lab or worked example if a step is still unclear.

Extra challenging questions

Connect several ideas, explore supplied data, and compare your reasoning with a worked solution.