Computing Library › Numerical Methods
Numerical Methods

Preconditioning for Iterative Solvers

Transforming a linear system so that an iterative solver converges in far fewer steps by clustering the spectrum.

Why iterative solvers need help

The convergence of Krylov solvers depends on the spectrum of the matrix: clustered eigenvalues converge fast, a spectrum spread over many orders of magnitude converges slowly. Real problems, especially stiff PDEs, often have terrible spectra. Preconditioning replaces the system Ax = b with an equivalent system that has a much friendlier spectrum, so the same solver needs a fraction of the iterations.

The core idea

Kronos motion — solvers

A preconditioner is a matrix M that approximates A but is cheap to invert. Instead of solving Ax = b, one solves M^(-1) A x = M^(-1) b (left preconditioning) or an equivalent right- or split-preconditioned form. If M is close to A, then M^(-1) A is close to the identity, whose eigenvalues are all one, so the preconditioned solver converges almost instantly. The art is choosing M cheap enough to apply yet close enough to A to help.

Common preconditioners

The trade-off and physics-based options

A stronger preconditioner cuts iterations but costs more per iteration to apply; the goal is to minimize total work, not iteration count alone. Preconditioners must also match the solver: a symmetric positive-definite preconditioner is required to keep conjugate gradient valid. In plasma and MHD codes, physics-based preconditioners approximate the dominant fast physics (fast waves, parabolic diffusion) with a cheap operator, taming the stiffness that would otherwise cripple a general-purpose method.