Exemple

Nous souhaitons connaître la température T d'une barre
métallique dont les deux extrémités sont maintenues aux
températures T0,TM et plongée dans une atmosphère ambiante
elle-même à une température donnée Te. Cette barre
est assimilée à un segment de droite [0,L].

Dans ce problème, il y a une perte de la chaleur due à la
convection de l'air, que l'on peut modéliser par une fonction a(x); la
température T est alors solution de l'équation
différentielle ordinaire

où k désigne un coefficient de
diffusion thermique. A cette équation s'ajoutent les conditions aux
limites

Les mathématiciens nous disent que si k est strictement positif et si
a est une fonction à valeurs positives, alors le problème est
bien posé, signifiant par là qu'il admet en particulier une solution
et une seule. Ceci est une information importante à double titre :
nous pouvons envisager un calcul (approché) de cette solution, et si le
programme que nous écrivons ne marche pas, la faute incombera
nécessairement au programmeur!

Algorithme

Pour résoudre le système linéaire A x=b,
la méthode de Gauss-Seidel consiste à
définir par récurrence une suite de valeurs pour
, convergeant vers x, en
résolvant

où nous avons utilisé la
décomposition suivante de A : A=D-E-F, avec D matrice diagonale
dont les éléments diagonaux sont ceux de A, -E matrice
triangulaire inférieure stricte, dont les éléments non
nuls sont ceux de la partie triangulaire inférieure stricte de A et
-F=A-D+E partie triangulaire supérieure stricte de A. La théorie
nous dit que si la matrice A est symétrique définie positive (ce
qui est précisément le cas ici), cette méthode est
convergente, dans le sens où quand le nombre d'itérations j
devient très grand, l'erreur entre la solution exacte x et la solution
approchée tend vers 0.

La programmation de cet algorithme pour la résolution du
système consiste à extraire la valeur de Tm
de l'équation m, ce qui donne :

T0 et TM étant donnés.

Remarquons que l'indice j de l'itération de Gauss-Seidel
n'est pas nécessaire dans la programmation qui peut se faire en rangeant
dans la même
mémoire. En effet, il n'est pas nécessaire de stocker en
mémoire les vecteurs correspondant à 2 itérations
successives. Au fur et à mesure du calcul ( ie. quand m augmente) la valeur de Tm à l'itération j est remplacée par
sa nouvelle valeur à l'itération j+1.

Cet algorithme est itéré autant de fois que nécessaire,
ie. jusqu'à ce que
les valeurs de Tm à deux étapes
successives soient presque les mêmes.

Référence : Olivier Pironneau