Algorithm Search⌘K

Proofs: Successive over-relaxation

These are the human proofs of Successive over-relaxation, at full length.

SOR is a splitting iteration whose limit solves A x = b, and it converges for symmetric positive definite A exactly when 0 < omega < 2 full

This proof shows: correctness, termination.

Write A=D−E−FA = D - E - F with DD the diagonal of AA, −E-E its strictly lower part and −F-F its strictly upper part, and assume aii≠0a_{ii} \ne 0 for all ii and ω≠0\omega \ne 0. Let xkx_k be the vector after kk sweeps and ek=xk−xe_k = x_k - x with Ax=bA x = b.

Termination. The outer loop runs at most maxiter times and each sweep is a fixed number of operations, so the algorithm stops. It returns converged = true only when the test at line L6 holds.

Lemma 1 (the sweep is a splitting). One sweep, lines L3 to L5, maps xkx_k to

xk+1=xk+Mω−1(b−Axk),Mω=1ωD−E.x_{k+1} = x_k + M_\omega^{-1}(b - A x_k), \qquad M_\omega = \tfrac{1}{\omega} D - E.

Proof. When line L5 runs for row ii, the entries xjx_j with j<ij < i are already new and those with j>ij > i are old, so it states

aiixk+1,i=(1−ω)aiixk,i+ω(bi−∑j<iaijxk+1,j−∑j>iaijxk,j).a_{ii} x_{k+1,i} = (1 - \omega) a_{ii} x_{k,i} + \omega\Big(b_i - \sum_{j<i} a_{ij} x_{k+1,j} - \sum_{j>i} a_{ij} x_{k,j}\Big).

In matrix form this is Dxk+1=(1−ω)Dxk+ω(b+Exk+1+Fxk)D x_{k+1} = (1-\omega) D x_k + \omega(b + E x_{k+1} + F x_k), that is (D−ωE)xk+1=((1−ω)D+ωF)xk+ωb(D - \omega E) x_{k+1} = ((1-\omega) D + \omega F) x_k + \omega b. Dividing by ω\omega gives Mωxk+1=(Mω−A)xk+bM_\omega x_{k+1} = (M_\omega - A) x_k + b, since Mω−A=1−ωωD+FM_\omega - A = \tfrac{1-\omega}{\omega} D + F. MωM_\omega is lower triangular with nonzero diagonal, so it is invertible. □\square

Lemma 2 (fixed point). xx is a fixed point of the sweep, and ek+1=Gωeke_{k+1} = G_\omega e_k with Gω=I−Mω−1A=(D−ωE)−1((1−ω)D+ωF)G_\omega = I - M_\omega^{-1} A = (D - \omega E)^{-1}((1-\omega)D + \omega F). If the iterates converge to some yy, then Ay=bA y = b.

Proof. b−Ax=0b - A x = 0, so Lemma 1 maps xx to itself; subtracting the two relations gives ek+1=(I−Mω−1A)eke_{k+1} = (I - M_\omega^{-1} A) e_k. If xk→yx_k \to y, passing to the limit in Lemma 1 gives Mω−1(b−Ay)=0M_\omega^{-1}(b - A y) = 0, and MωM_\omega is invertible. □\square

So ek=Gωke0e_k = G_\omega^k e_0, and by the facts on the spectral radius page the iteration converges for every x0x_0 if and only if ρ(Gω)<1\rho(G_\omega) < 1. The residual test at line L6 is then met after finitely many sweeps for every tol above the rounding level.

Lemma 3 (Kahan's bound). ρ(Gω)≥∣ω−1∣\rho(G_\omega) \ge |\omega - 1|. Hence SOR fails to converge for some x0x_0 when ω≤0\omega \le 0 or ω≥2\omega \ge 2.

Proof. D−ωED - \omega E is lower triangular with diagonal DD, and (1−ω)D+ωF(1-\omega) D + \omega F is upper triangular with diagonal (1−ω)D(1-\omega)D. So det⁡Gω=det⁡((1−ω)D)/det⁡D=(1−ω)n\det G_\omega = \det((1-\omega)D)/\det D = (1-\omega)^n. The determinant is the product of the nn eigenvalues, so at least one has modulus at least ∣1−ω∣|1 - \omega|. □\square

Lemma 4 (Ostrowski-Reich). If AA is symmetric positive definite and 0<ω<20 < \omega < 2, then ρ(Gω)<1\rho(G_\omega) < 1.

Proof. Here F=ETF = E^T and DD has positive diagonal. Let Gωv=λvG_\omega v = \lambda v with v≠0v \ne 0 in Cn\mathbb{C}^n. Then (Mω−A)v=λMωv(M_\omega - A) v = \lambda M_\omega v, so Av=(1−λ)MωvA v = (1 - \lambda) M_\omega v. Since AA is nonsingular, λ≠1\lambda \ne 1. Put α=v∗Av>0\alpha = v^* A v > 0 and δ=v∗Dv>0\delta = v^* D v > 0. From v∗Mωv=α/(1−λ)v^* M_\omega v = \alpha/(1-\lambda) and its conjugate v∗MωTv=α/(1−λˉ)v^* M_\omega^T v = \alpha/(1-\bar\lambda),

α(11−λ+11−λˉ)=v∗(Mω+MωT)v=v∗(2ωD−E−ET)v=α+(2ω−1)δ.\alpha\Big(\frac{1}{1-\lambda} + \frac{1}{1-\bar\lambda}\Big) = v^*(M_\omega + M_\omega^T) v = v^*\big(\tfrac{2}{\omega} D - E - E^T\big) v = \alpha + \big(\tfrac{2}{\omega} - 1\big)\delta.

The left side is α⋅2 Re 11−λ\alpha \cdot 2\,\mathrm{Re}\,\frac{1}{1-\lambda}, and 2 Re 11−λ−1=1−∣λ∣2∣1−λ∣22\,\mathrm{Re}\,\frac{1}{1-\lambda} - 1 = \frac{1 - |\lambda|^2}{|1 - \lambda|^2}. So

1−∣λ∣2∣1−λ∣2=(2ω−1)δα>0\frac{1 - |\lambda|^2}{|1-\lambda|^2} = \Big(\frac{2}{\omega} - 1\Big)\frac{\delta}{\alpha} > 0

for 0<ω<20 < \omega < 2, which gives ∣λ∣<1|\lambda| < 1. □\square

Conclusion. The algorithm always stops. If it reports convergence, the returned xkx_k satisfies ∥b−Axk∥2≤tol ∥b∥2\|b - A x_k\|_2 \le \mathrm{tol}\,\|b\|_2, and therefore ∥xk−x∥/∥x∥≤κ(A) tol\|x_k - x\|/\|x\| \le \kappa(A)\,\mathrm{tol} in the 2-norm. For symmetric positive definite AA and 0<ω<20 < \omega < 2 the iterates converge to xx in exact arithmetic for every x0x_0 (Lemmas 2 and 4), and for ω\omega outside (0,2)(0, 2) they do not converge for every x0x_0 (Lemma 3). ■\blacksquare

About floating point. These statements are about exact arithmetic. In floating point the iterates do not converge but settle at a level set by rounding; the computed residual cannot be pushed below a modest multiple of u ∥A∥ ∥x∥u\,\|A\|\,\|x\|. The tests observe this level for the model problem; Higham, Chapter 17, gives forward and backward error bounds for stationary iterations that depend on GωG_\omega and on ∣Mω−1∣(∣Mω∣+∣Mω−A∣)|M_\omega^{-1}|(|M_\omega| + |M_\omega - A|).

Back to Successive over-relaxation