The simplest method is the Jacobi iteration.

  • We can check that it follows the general framework of splitting methods.
  • Very easy to implement
  • Fast iteration

Code

for k = 1:maxiter
    xnew = zeros(n)
    for i = 1:n
        for j = 1:n
            if j != i
                xnew[i] += A[i,j] * x[j]
            end
        end
        xnew[i] = (b[i] - xnew[i]) / A[i,i]
    end
    x = xnew
end

Convergence of Jacobi

If is strictly row diagonally dominant

then Jacobi converges. We have a similar result if is strictly column diagonally dominant.

  • Jacobi is very easy to implement on parallel computers because is diagonal (or block diagonal).
  • Solution step is parallel, i.e., entries of can be computed concurrently using independent computing cores:

Proof

The iteration matrix in Jacobi is

Assume that is row-diagonally dominant. Then from the definition of the operator norm, we find that

This proves the convergence of Jacobi since

Assume now that is column-diagonally dominant. Then:

But

So

and .