Von Neumann Stability Analysis
Von Neumann analysis tests a linear scheme's stability by tracking how each Fourier mode's amplitude grows or decays per time step.
Fourier modes as a probe
Von Neumann analysis determines whether a finite-difference scheme for a linear, constant-coefficient PDE is stable. It assumes the error is a sum of Fourier modes and asks how each mode's amplitude changes in one time step. Substituting a single mode into the scheme gives an amplification factor G that depends on the wavenumber.
The stability criterion
The scheme is stable if |G| <= 1 for every wavenumber, so no mode grows without bound. If any mode has |G| > 1, that component of the error blows up exponentially and the computation fails. The analysis reduces stability to checking a magnitude over the range of representable wavenumbers.
import numpy as np
# FTCS for u_t = alpha u_xx: G(theta) = 1 - 4 r sin^2(theta/2)
def ftcs_max_amp(r):
theta = np.linspace(0, np.pi, 200)
G = 1 - 4*r*np.sin(theta/2)**2
return np.max(np.abs(G))
print(ftcs_max_amp(0.5), ftcs_max_amp(0.6)) # stable r<=0.5
Classic results
The analysis yields sharp stability limits. Forward-time central-space (FTCS) for the heat equation is stable only when r = alpha dt/dx^2 <= 1/2. FTCS for pure advection is unstable for any step, which is why upwind or Lax-Wendroff schemes are used. These limits guide time-step selection directly.
Scope and limits
Von Neumann analysis strictly applies to linear constant-coefficient problems on periodic or infinite domains, where Fourier modes are exact. For variable coefficients, nonlinearity, or complex boundaries it is used as a local guide by freezing coefficients, still a valuable heuristic even where not rigorous.
Stability analysis of this kind underpins the choice of time steps and schemes for the discretized transport and field equations in breeder Hyperion simulations.