Module

for

Jacobi and Gauss-Seidel Iteration

Background

Iterative schemes require time to achieve sufficient accuracy and are reserved for large systems of equations where there are a majority of zero elements in the matrix. Often times the algorithms are taylor-made to take advantage of the special structure such as band matrices.  Practical uses include applications in circuit analysis, boundary value problems and partial differential equations.

Iteration is a popular technique finding roots of equations.  Generalization of fixed point iteration can be applied to systems of linear equations to produce accurate results.  The method Jacobi iteration is attributed to Carl Jacobi (1804-1851) and Gauss-Seidel iteration is attributed to  Johann Carl Friedrich Gauss (1777-1855) and Philipp Ludwig von Seidel (1821-1896).

Consider that the n×n square matrix A is split into three parts, the main diagonal D, below diagonal L and above diagonal U.  We have  A = D - L - U.

=

--

Definition (Diagonally Dominant).  The matrix    is strictly diagonally dominant if

for   .

Theorem (Jacobi Iteration).  The solution to the linear system    can be obtained starting with  , and using iteration scheme

where

and  .

If   is carefully chosen a sequence is generated which converges to the solution  P,  i.e.  .
A sufficient condition for the method to be applicable is that A is strictly diagonally dominant or diagonally dominant and irreducible.

Theorem (Gauss-Seidel Iteration).  The solution to the linear system    can be obtained starting with  , and using iteration scheme

where

and  .

If   is carefully chosen a sequence is generated which converges to the solution  P,  i.e.  .
A sufficient condition for the method to be applicable is that A is strictly diagonally dominant or diagonally dominant and irreducible.

Computer Programs  Jacobi and Gauss-Seidel Iteration  Jacobi and Gauss-Seidel Iteration

Mathematica Subroutine (Jacobi Iteration).

``````
``````

Mathematica Subroutine (Gauss-Seidel Iteration).

``````
``````

Example 1.  Use Jacobi iteration to solve the linear system  .
Try 10, 20 and 30 iterations.
Solution 1.

Example 2.  Use Jacobi iteration to attempt solving the linear system  .
Try 10 iterations.
Observe that something is not working.  In example 5 we will check to see if this matrix is diagonally dominant.
Solution 2.

Example 3.  Use Gauss-Seidel iteration to solve the linear system  .
Try 10, 20 iterations.  Compare the speed of convergence with Jacobi iteration.
Solution 3.

Example 4  Use Gauss-Seidel iteration to attempt solving the linear system  .
Try 10 iterations.
Observe that something is not working.  In example 5 we will check to see if this matrix is diagonally dominant.
Solution 4.

Warning.

Iteration does not always converge.  A sufficient condition for iteration to Jacobi iteration to converge is that A is strictly diagonally  dominant. The following subroutine will check to see if a matrix is strictly diagonally dominant.  It should be used before any call to Jacobi iteration or Gauss-Seidel iteration is made.  There exists a counter-example for which Jacobi iteration converges and Gauss-Seidel iteration does not converge.  The "true" sufficient condition for Jacobi iteration to converge is that the "spectral radius" of     is less than 1, where   is the diagonal of  .  That is, the magnitude of the largest eigenvalue of M must be less than 1.  This condition seems harsh because numerical computation of eigenvalues is an advanced topic compared to solution of a linear system.

``````
``````

Example 5  Test the matrix A of Examples 2 and 4 to see if A is strictly diagonally dominant.
Solution 5.

More efficient subroutines

A tolerance can be supplied to either the Jacobi or Gauss-Seidel method which will permit it to exit the loop if convergence has been achieved.

Computer Programs  Jacobi and Gauss-Seidel Iteration  Jacobi and Gauss-Seidel Iteration

Mathematica Subroutine (Jacobi Iteration).

``````
``````

Mathematica Subroutine (Gauss-Seidel Iteration).

``````
``````

Example 6.  Use Jacobi and Gauss-Seidel iteration to solve the linear system  .
Use a tolerance of    and a maximum of  50  iterations.
Solution 6.

Subroutines using matrix commands

In the Jacobi subroutine we can use fix point iteration as suggested by the theory.

Mathematica Subroutine (Jacobi Iteration).

``````
``````

Example 7.  Use the fixed point version of Jacobi iteration to solve the linear system  .
Solution 7.

Research Experience for Undergraduates

Jacobi and Gauss-Seidel Iteration  Jacobi and Gauss-Seidel Iteration  Internet hyperlinks to web sites and a bibliography of articles.

Download this Mathematica Notebook Jacobi and Gauss-Seidel Iteration

Return to Numerical Methods - Numerical Analysis

(c) John H. Mathews 2004