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 .