Méthode de Gauss-Seidel

La méthode de Gauss-Seidel est une méthode itérative de résolution d'un système linéaire (de dimension finie) de la forme A x = b {\displaystyle Ax=b} , ce qui signifie qu'elle génère une suite qui converge vers une solution de cette équation, lorsque celle-ci en a une et lorsque des conditions de convergence sont satisfaites (par exemple lorsque A {\displaystyle A} est symétrique définie positive). L'algorithme suppose que la diagonale de A {\displaystyle A} est formée d'éléments non nuls.

La méthode se décline en une version « par blocs ».

Le principe de la méthode peut s'étendre à la résolution de systèmes d'équations non linéaires et à l'optimisation, mais avec des conditions d'efficacité moins claires. En optimisation, l'utilité de cette approche dépendra beaucoup de la structure du problème. Le principe gauss-seidelien permet aussi d'interpréter d'autres algorithmes.

Il est nommé d'après Carl Friedrich Gauss et Philipp Ludwig von Seidel, qui l'ont développé et appliqué pour le calcul d'angles en géodésie[1],[2].

L'algorithme

Principe

Soit

A x = b {\displaystyle Ax=b}

le système linéaire à résoudre, que l'on suppose écrit sous forme matricielle avec A R n × n {\displaystyle A\in \mathbb {R} ^{n\times n}} et b R n {\displaystyle b\in \mathbb {R} ^{n}} , ce qui signifie que l'on cherche x R n {\displaystyle x\in \mathbb {R} ^{n}} tel que le produit matriciel A x {\displaystyle Ax} soit égal à b {\displaystyle b} .

On note a i j {\displaystyle a_{ij}} les éléments de A {\displaystyle A} et b i {\displaystyle b_{i}} ceux de b {\displaystyle b}  :

A = ( a 11 a 12 a 1 n a 21 a 22 a 2 n a n 1 a n 2 a n n ) et b = ( b 1 b 2 b n ) . {\displaystyle A={\begin{pmatrix}a_{11}&a_{12}&\cdots &a_{1n}\\a_{21}&a_{22}&\cdots &a_{2n}\\\vdots &\vdots &\ddots &\vdots \\a_{n1}&a_{n2}&\cdots &a_{nn}\end{pmatrix}}\qquad {\mbox{et}}\qquad b={\begin{pmatrix}b_{1}\\b_{2}\\\vdots \\b_{n}\end{pmatrix}}.}

La méthode de Gauss-Seidel résout le système linéaire A x = b {\displaystyle Ax=b} de manière itérative, ce qui veut dire qu'elle génère une suite de vecteurs x k R n {\displaystyle x^{k}\in \mathbb {R} ^{n}} , pour k = 0 , 1 , 2 , {\displaystyle k=0,1,2,\dots } . On interrompt le calcul de la suite lorsque l'itéré courant, disons x k {\displaystyle x^{k}} , est jugé suffisamment proche d'une solution, par exemple parce que le résidu A x k b {\displaystyle Ax^{k}-b} est petit.

Soit x k = ( x 1 k , , x n k ) R n {\displaystyle x^{k}=(x_{1}^{k},\ldots ,x_{n}^{k})\in \mathbb {R} ^{n}} l'itéré courant. L'itéré suivant x k + 1 = ( x 1 k + 1 , , x n k + 1 ) R n {\displaystyle x^{k+1}=(x_{1}^{k+1},\ldots ,x_{n}^{k+1})\in \mathbb {R} ^{n}} se calcule en n {\displaystyle n} étapes, comme suit.

  • Étape 1. Si l'on suppose que a 11 0 {\displaystyle a_{11}\neq 0} et connaissant ( x 2 k , , x n k ) {\displaystyle (x_{2}^{k},\ldots ,x_{n}^{k})} , on peut calculer x 1 k + 1 {\displaystyle x_{1}^{k+1}} au moyen de la première équation du système linéaire A x = b {\displaystyle Ax=b} . De manière plus précise, x 1 k + 1 {\displaystyle x_{1}^{k+1}} est pris comme solution de
    a 11 x 1 k + 1 _ + a 12 x 2 k + + a 1 n x n k = b 1 , {\displaystyle a_{11}{\underline {x_{1}^{k+1}}}+a_{12}x_{2}^{k}+\cdots +a_{1n}x_{n}^{k}=b_{1},}
    ce qui est possible si a 11 0 {\displaystyle a_{11}\neq 0} .
  • Étape 2. Si l'on suppose que a 22 0 {\displaystyle a_{22}\neq 0} et connaissant ( x 1 k + 1 , x 3 k , , x n k ) {\displaystyle (x_{1}^{k+1},x_{3}^{k},\ldots ,x_{n}^{k})} , on peut calculer x 2 k + 1 {\displaystyle x_{2}^{k+1}} au moyen de la deuxième équation du système linéaire A x = b {\displaystyle Ax=b} . De manière plus précise, x 2 k + 1 {\displaystyle x_{2}^{k+1}} est pris comme solution de
    a 21 x 1 k + 1 + a 22 x 2 k + 1 _ + a 23 x 3 k + + a 2 n x n k = b 2 , {\displaystyle a_{21}x_{1}^{k+1}+a_{22}{\underline {x_{2}^{k+1}}}+a_{23}x_{3}^{k}+\cdots +a_{2n}x_{n}^{k}=b_{2},}
    ce qui est possible si a 22 0 {\displaystyle a_{22}\neq 0} .
  • Étape i [ [ 1 , n ] ] {\displaystyle i\in [\![1,n]\!]} (cas général). Si l'on suppose que a i i 0 {\displaystyle a_{ii}\neq 0} et connaissant ( x 1 k + 1 , , x i 1 k + 1 , x i + 1 k , , x n k ) {\displaystyle (x_{1}^{k+1},\ldots ,x_{i-1}^{k+1},x_{i+1}^{k},\ldots ,x_{n}^{k})} , on peut calculer x i k + 1 {\displaystyle x_{i}^{k+1}} au moyen de la i {\displaystyle i} -ième équation du système linéaire A x = b {\displaystyle Ax=b} . De manière plus précise, x i k + 1 {\displaystyle x_{i}^{k+1}} est pris comme solution de
    a i 1 x 1 k + 1 + + a i , i 1 x i 1 k + 1 + a i i x i k + 1 _ + a i , i + 1 x i + 1 k + + a i n x n k = b i , {\displaystyle a_{i1}x_{1}^{k+1}+\cdots +a_{i,i-1}x_{i-1}^{k+1}+a_{ii}{\underline {x_{i}^{k+1}}}+a_{i,i+1}x_{i+1}^{k}+\cdots +a_{in}x_{n}^{k}=b_{i},}
    ce qui est possible si a i i 0 {\displaystyle a_{ii}\neq 0} .

En résumé, pourvu que les éléments diagonaux de A {\displaystyle A} soient non nuls, on calcule les composantes x i k + 1 {\displaystyle x_{i}^{k+1}} de x k + 1 {\displaystyle x^{k+1}} de manière séquentielle pour i = 1 , , n {\displaystyle i=1,\ldots ,n} par

x i k + 1 = 1 a i i ( b i j = 1 i 1 a i j x j k + 1 j = i + 1 n a i j x j k ) . {\displaystyle x_{i}^{k+1}={\frac {1}{a_{ii}}}\left(b_{i}-\sum _{j=1}^{i-1}a_{ij}x_{j}^{k+1}-\sum _{j=i+1}^{n}a_{ij}x_{j}^{k}\right).}

La formule fait intervenir les éléments x j k + 1 {\displaystyle x_{j}^{k+1}} ( j = 1 , , i 1 {\displaystyle j=1,\dots ,i-1} ) calculés dans les étapes précédentes.

Expression matricielle

L'expression matricielle de l'algorithme suppose que la matrice A {\displaystyle A} se sépare comme suit

A = L + D + U , {\displaystyle A=L+D+U,}

D {\displaystyle D} est la partie diagonale de A {\displaystyle A} , L {\displaystyle L} (pour lower) sa partie triangulaire inférieure stricte et U {\displaystyle U} (pour upper) sa partie triangulaire supérieure stricte.

Une itération de la méthode de Gauss-Seidel, celle passant de x k {\displaystyle x^{k}} à x k + 1 {\displaystyle x^{k+1}} , consiste alors à résoudre le système triangulaire inférieur

( L + D ) x k + 1 = b U x k , {\displaystyle (L+D)x^{k+1}=b-Ux^{k},}

de « haut en bas », c'est-à-dire en déterminant successivement x 1 k + 1 {\displaystyle x_{1}^{k+1}} , x 2 k + 1 {\displaystyle x_{2}^{k+1}} , ..., x n k + 1 {\displaystyle x_{n}^{k+1}} .

Convergence

La formule de mise à jour des itérés dans la méthode de Gauss-Seidel montre que ceux-ci sont des approximations successives pour le calcul d'un point fixe de l'application

x ( L + D ) 1 ( b U x ) . {\displaystyle x\mapsto (L+D)^{-1}(b-Ux).}

Les propriétés de convergence de la méthode vont donc dépendre du spectre de la matrice ( L + D ) 1 U {\displaystyle (L+D)^{-1}U} .

On sait que la méthode de Gauss-Seidel converge, quels que soient le vecteur b {\displaystyle b} et le point initial x 0 {\displaystyle x^{0}} , dans les situations suivantes :

Discussion

Un seul vecteur v R n {\displaystyle v\in \mathbb {R} ^{n}} suffit pour mémoriser les itérés successifs : à l'étape i {\displaystyle i} , il suffit de mémoriser les éléments déjà calculés de x k + 1 {\displaystyle x^{k+1}} , à savoir x j k + 1 {\displaystyle x_{j}^{k+1}} pour j = 1 , , i 1 {\displaystyle j=1,\ldots ,i-1} , dans v 1 : i 1 {\displaystyle v_{1:i-1}} et les éléments de x k {\displaystyle x^{k}} encore utiles, à savoir x j k {\displaystyle x_{j}^{k}} pour j = i + 1 , , n {\displaystyle j=i+1,\ldots ,n} , dans v i + 1 : n {\displaystyle v_{i+1:n}} . Cette faible exigence en espace mémoire peut être un atout dans certaines circonstances.

Contrairement à la méthode de Jacobi, l'algorithme est essentiellement séquentiel et n'est donc pas adapté au calcul parallèle.

Généralisations

Méthode par blocs

La version par blocs de la méthode de Gauss-Seidel procède de manière similaire à la méthode élément par élément, mais en remplaçant l'utilisation des éléments de A {\displaystyle A} par des sous-matrices de A {\displaystyle A} , appelées ici des blocs.

On suppose que l'ensemble des indices [ [ 1 , n ] ] {\displaystyle [\![1,n]\!]} est partitionné en p {\displaystyle p} sous-intervalles (non vides et deux-à-deux disjoints) :

[ [ 1 , n ] ] = I 1 I 2 I p . {\displaystyle [\![1,n]\!]=I_{1}\cup I_{2}\cup \cdots \cup I_{p}.}

La matrice A {\displaystyle A} et le vecteur b {\displaystyle b} sont alors dissocié comme suit

A = ( A I 1 I 1 A I 1 I 2 A I 1 I p A I 2 I 1 A I 2 I 2 A I 2 I p A I p I 1 A I p I 2 A I p I p ) et b = ( b I 1 b I 2 b I p ) , {\displaystyle A={\begin{pmatrix}A_{I_{1}I_{1}}&A_{I_{1}I_{2}}&\cdots &A_{I_{1}I_{p}}\\A_{I_{2}I_{1}}&A_{I_{2}I_{2}}&\cdots &A_{I_{2}I_{p}}\\\vdots &\vdots &\ddots &\vdots \\A_{I_{p}I_{1}}&A_{I_{p}I_{2}}&\cdots &A_{I_{p}I_{p}}\end{pmatrix}}\qquad {\mbox{et}}\qquad b={\begin{pmatrix}b_{I_{1}}\\b_{I_{2}}\\\vdots \\b_{I_{p}}\end{pmatrix}},}

A I J {\displaystyle A_{IJ}} est la sous-matrice de A {\displaystyle A} obtenue en sélectionnant les éléments avec indices de ligne dans I {\displaystyle I} et indices de colonnes dans J {\displaystyle J} , tandis que b I {\displaystyle b_{I}} est le sous-vecteur de b {\displaystyle b} obtenu en sélectionnant les éléments avec indices dans I {\displaystyle I} .

La méthode de Gauss-Seidel par blocs suppose que les sous-matrices principales A I i I i {\displaystyle A_{I_{i}I_{i}}} , avec i [ [ 1 , p ] ] {\displaystyle i\in [\![1,p]\!]} , sont inversibles.

Une itération de la méthode de Gauss-Seidel par blocs, celle passant de x k {\displaystyle x^{k}} à x k + 1 {\displaystyle x^{k+1}} , s'écrit de la même manière que la méthode élément par élément, à savoir

( L + D ) x k + 1 = b U x k , {\displaystyle (L+D)x^{k+1}=b-Ux^{k},}

mais avec des définitions différentes de L {\displaystyle L} , D {\displaystyle D} et U {\displaystyle U}  :

L = ( 0 0 A I 2 I 1 A I p I 1 A I p I p 1 0 ) , D = ( A I 1 I 1 0 0 0 A I 2 I 2 0 0 0 A I p I p ) et U = A L D . {\displaystyle L={\begin{pmatrix}0&\cdots &\cdots &0\\A_{I_{2}I_{1}}&\ddots &&\vdots \\\vdots &\ddots &\ddots &\vdots \\A_{I_{p}I_{1}}&\cdots &A_{I_{p}I_{p-1}}&0\end{pmatrix}},\quad D={\begin{pmatrix}A_{I_{1}I_{1}}&0&\cdots &0\\0&A_{I_{2}I_{2}}&\ddots &\vdots \\\vdots &\ddots &\ddots &0\\0&\cdots &0&A_{I_{p}I_{p}}\end{pmatrix}}\quad {\mbox{et}}\quad U=A-L-D.}

La résolution du système triangulaire par blocs ci-dessus, se fait également de « haut en bas », c'est-à-dire en déterminant successivement x I 1 k + 1 {\displaystyle x_{I_{1}}^{k+1}} , x I 2 k + 1 {\displaystyle x_{I_{2}}^{k+1}} , ..., x I p k + 1 {\displaystyle x_{I_{p}}^{k+1}} .

Systèmes d'équations non linéaires

Le principe de la méthode de Gauss-Seidel peut également s'appliquer à la résolution d'un système d'équations non linéaires F ( x ) = 0 {\displaystyle F(x)=0} , où F : R n R n {\displaystyle F:\mathbb {R} ^{n}\to \mathbb {R} ^{n}} . Ce système s'écrit donc sous la forme de n {\displaystyle n} équations non linéaires à n {\displaystyle n} inconnues :

{ F 1 ( x 1 , x 2 , , x n ) = 0 F 2 ( x 1 , x 2 , , x n ) = 0 F n ( x 1 , x 2 , , x n ) = 0. {\displaystyle \left\{{\begin{array}{l}F_{1}(x_{1},x_{2},\ldots ,x_{n})=0\\F_{2}(x_{1},x_{2},\ldots ,x_{n})=0\\\cdots \\F_{n}(x_{1},x_{2},\ldots ,x_{n})=0.\end{array}}\right.}

La méthode de Gauss-Seidel résout ce système de manière itérative, en générant donc une suite de vecteurs x k R n {\displaystyle x^{k}\in \mathbb {R} ^{n}} , pour k = 0 , 1 , 2 , {\displaystyle k=0,1,2,\dots } . On interrompt le calcul de la suite lorsque l'itéré courant, disons x k {\displaystyle x^{k}} , est jugé suffisamment proche d'une solution, par exemple parce que le résidu F ( x k ) {\displaystyle F(x^{k})} est petit.

Soit x k = ( x 1 k , , x n k ) R n {\displaystyle x^{k}=(x_{1}^{k},\ldots ,x_{n}^{k})\in \mathbb {R} ^{n}} l'itéré courant. L'itéré suivant x k + 1 = ( x 1 k + 1 , , x n k + 1 ) R n {\displaystyle x^{k+1}=(x_{1}^{k+1},\ldots ,x_{n}^{k+1})\in \mathbb {R} ^{n}} se calcule en n {\displaystyle n} étapes, comme suit.

  • Étape 1. Connaissant ( x 2 k , , x n k ) {\displaystyle (x_{2}^{k},\ldots ,x_{n}^{k})} , on calcule x 1 k + 1 {\displaystyle x_{1}^{k+1}} comme solution de l'équation non linéaire (elle est supposée exister) :
    F 1 ( x 1 k + 1 _ , x 2 k , , x n k ) = 0. {\displaystyle F_{1}({\underline {x_{1}^{k+1}}},x_{2}^{k},\ldots ,x_{n}^{k})=0.}
  • Étape 2. Connaissant ( x 1 k + 1 , x 3 k , , x n k ) {\displaystyle (x_{1}^{k+1},x_{3}^{k},\ldots ,x_{n}^{k})} , on calcule x 2 k + 1 {\displaystyle x_{2}^{k+1}} comme solution de l'équation non linéaire (elle est supposée exister) :
    F 2 ( x 1 k + 1 , x 2 k + 1 _ , x 3 k , , x n k ) = 0. {\displaystyle F_{2}(x_{1}^{k+1},{\underline {x_{2}^{k+1}}},x_{3}^{k},\ldots ,x_{n}^{k})=0.}
  • Étape i [ [ 1 , n ] ] {\displaystyle i\in [\![1,n]\!]} (cas général). Connaissant ( x 1 k + 1 , , x i 1 k + 1 , x i + 1 k , , x n k ) {\displaystyle (x_{1}^{k+1},\ldots ,x_{i-1}^{k+1},x_{i+1}^{k},\ldots ,x_{n}^{k})} , on calcule x i k + 1 {\displaystyle x_{i}^{k+1}} comme solution de l'équation non linéaire (elle est supposée exister) :
    F i ( x 1 k + 1 , , x i 1 k + 1 , x i k + 1 _ , x i + 1 k , , x n k ) = 0. {\displaystyle F_{i}(x_{1}^{k+1},\ldots ,x_{i-1}^{k+1},{\underline {x_{i}^{k+1}}},x_{i+1}^{k},\ldots ,x_{n}^{k})=0.}

La version par blocs se définit facilement en considérant des groupes d'équations et d'inconnues, au lieu de considérer, comme ci-dessus, équation et inconnue une par une.

Optimisation

Le principe de la méthode de Gauss-Seidel décrit dans la section précédente s'applique naturellement au problème d'optimisation non linéaire

inf x X f ( x ) , {\displaystyle \inf _{x\in X}\;f(x),}

dans lequel on minimise une fonction f : R n R {\displaystyle f:\mathbb {R} ^{n}\to \mathbb {R} } sur un sous-ensemble X {\displaystyle X} de R n {\displaystyle \mathbb {R} ^{n}} . Nous présentons directement ci-dessous la version « par blocs », qui est la plus utile lorsque le nombre p {\displaystyle p} de blocs est faible (souvent p = 2 {\displaystyle p=2} ). La méthode de Gauss-Seidel perd en effet de sa pertinence lorsque p {\displaystyle p} est grand, par manque d'efficacité dans ce cas. La version « élément par élément » peut être vue comme un cas particulier de la version par blocs, obtenue en prenant n {\displaystyle n} blocs de cardinal 1.

On suppose donc que l'ensemble des indices est partitionné en p {\displaystyle p} blocs,

[ [ 1 , n ] ] = I 1 I 2 I p , {\displaystyle [\![1,n]\!]=I_{1}\cup I_{2}\cup \cdots \cup I_{p},}

et que l'ensemble admissible est un produit cartésien de p {\displaystyle p} ensembles,

X = X 1 × X 2 × × X p , {\displaystyle X=X_{1}\times X_{2}\times \cdots \times X_{p},}

où chaque X i {\displaystyle X_{i}} est un convexe de R | I i | {\displaystyle \mathbb {R} ^{|I_{i}|}} . La variable x R n {\displaystyle x\in \mathbb {R} ^{n}} se décomposera comme suit

x = ( x I 1 , x I 2 , , x I p ) . {\displaystyle x=(x_{I_{1}},x_{I_{2}},\ldots ,x_{I_{p}}).}

Lorsque f {\displaystyle f} est différentiable et que X = R n {\displaystyle X=\mathbb {R} ^{n}} , on pourrait obtenir une méthode de Gauss-Seidel en appliquant la méthode de la section précédente à la condition d'optimalité du premier ordre de ce problème d'optimisation sans contrainte, à savoir

f ( x ) = 0 , {\displaystyle \nabla f(x)=0,}

qui est un système de n {\displaystyle n} équations non linéaires à n {\displaystyle n} inconnues x = ( x 1 , , x n ) {\displaystyle x=(x_{1},\ldots ,x_{n})} . Mais on peut préférer, comme ci-dessous, rester dans le domaine de l'optimisation en minimisant f {\displaystyle f} séquentiellement, bloc par bloc. Cette option a l'avantage de pouvoir prendre en compte des contraintes, c'est-à-dire de restreindre les variables à l'ensemble admissible X {\displaystyle X} .

La méthode de Gauss-Seidel[4] résout le problème d'optimisation ci-dessus de manière itérative, en générant donc une suite { x k } R n {\displaystyle \{x^{k}\}\subset \mathbb {R} ^{n}} . L'algorithme passe d'un itéré x k {\displaystyle x^{k}} au suivant x k + 1 {\displaystyle x^{k+1}} en minimisant f {\displaystyle f} un bloc de variables à la fois, en séquence. On interrompt le calcul de la suite lorsque l'itéré courant, disons x k {\displaystyle x^{k}} , est jugé suffisamment proche d'une solution, par exemple parce que la norme du gradient projeté g P ( x k ) {\displaystyle \|g^{\rm {\scriptscriptstyle P}}(x^{k})\|} est jugée suffisamment petite.

Algorithme de Gauss-Seidel en optimisation — Une itération passe de l'itéré courant x k X {\displaystyle x^{k}\in X} à l'itéré suivant x k + 1 X {\displaystyle x^{k+1}\in X} en p {\displaystyle p} étapes successives, indicées par i = 1 , , p {\displaystyle i=1,\ldots ,p}  :

x I i k + 1 a r g m i n x I i X i f ( x I 1 k + 1 , , x I i 1 k + 1 , x I i , x I i + 1 k , , x I p k ) . {\displaystyle x_{I_{i}}^{k+1}\in \operatorname {arg\,min} _{x_{I_{i}}\in X_{i}}\,f(x_{I_{1}}^{k+1},\ldots ,x_{I_{i-1}}^{k+1},x_{I_{i}},x_{I_{i+1}}^{k},\ldots ,x_{I_{p}}^{k}).}

La version élément par élément se définit facilement en considérant des blocs I i {\displaystyle I_{i}} de cardinal 1 et en minimisant f {\displaystyle f} composante par composante.

Le résultat suivant montre la convergence de la méthode de Gauss-Seidel lorsque f {\displaystyle f} est de classe C 1 {\displaystyle C^{1}} , coercive et strictement convexe[5].

Convergence de l'algorithme de Gauss-Seidel en optimisation — Si, pour chaque i [ [ 1 , p ] ] {\displaystyle i\in [\![1,p]\!]} , X i {\displaystyle X_{i}} est un convexe fermé non vide de R | I i | {\displaystyle \mathbb {R} ^{|I_{i}|}} et si f {\displaystyle f} est coercive sur X {\displaystyle X} , strictement convexe sur X {\displaystyle X} et de classe C 1 {\displaystyle C^{1}} dans un voisinage de X {\displaystyle X} , alors

  • le problème ci-dessus a une unique solution x ¯ {\displaystyle {\bar {x}}} ,
  • l'algorithme est bien défini et, quel que soit l'itéré initial x 0 X {\displaystyle x^{0}\in X} , l'algorithme génère une suite { x k } X {\displaystyle \{x^{k}\}\subset X} qui converge vers x ¯ {\displaystyle {\bar {x}}} .
Remarques
  1. Si l'on applique ce résultat au cas où X = R n {\displaystyle X=\mathbb {R} ^{n}} et f {\displaystyle f} est la fonction quadratique x 1 2 x A x b x {\displaystyle x\mapsto {\frac {1}{2}}x^{\top }Ax-b^{\top }x} , on retrouve le résultat affirmant que la méthode de Gauss-Seidel par blocs pour résoudre le système linéaire A x = b {\displaystyle Ax=b} converge, quels que soient le vecteur b {\displaystyle b} et le point initial, pourvu que A {\displaystyle A} soit définie positive.
  2. La méthode de Gauss-Seidel est un algorithme lent (il requiert beaucoup d'itérations), dont la mise en œuvre est coûteuse (chaque itération peut demander beaucoup de temps de calcul, selon les cas). Tel qu'il est présenté, il requiert en effet la minimisation exacte de f {\displaystyle f} dans chaque problème intermédiaire et ces p {\displaystyle p} minimisations doivent être réalisées à chaque itération. Son application est donc restreinte au cas où le nombre de blocs est petit.
  3. L'algorithme de Gauss-Seidel ne s'étend pas aisément à des ensembles admissibles plus complexes qu'un produit cartésien d'ensembles convexes. Par exemple si l'on cherche à minimiser composante par composante la fonction linéaire f : R 2 R : ( x 1 , x 2 ) x 1 + x 2 {\displaystyle f:\mathbb {R} ^{2}\to \mathbb {R} :(x_{1},x_{2})\mapsto x_{1}+x_{2}} sur l'ensemble X := { x R + 2 : x 1 x 2 1 } {\displaystyle X:=\{x\in \mathbb {R} _{+}^{2}:x_{1}x_{2}\geq 1\}} , qui n'est pas le produit cartésien de deux intervalles, tout point de la frontière de X {\displaystyle X} est bloquant (c'est-à-dire que l'algorithme ne peut y progresser), alors que seul le point x ¯ = ( 1 , 1 ) {\displaystyle {\bar {x}}=(1,1)} est solution.
  4. En l'absence de convexité, la méthode de Gauss-Seidel ne converge pas nécessairement, même pour des fonctions de classe C {\displaystyle C^{\infty }} . Powell (1973) a en effet construit plusieurs fonctions conduisant à la non-convergence de la méthode de Gauss-Seidel composante par composante, notamment une fonction C {\displaystyle C^{\infty }} de trois variables pour laquelle les itérés générés ont un cycle limite formé de 6 points auxquels le gradient n'est pas nul.
  5. D'autres résultats de convergence sont donnés par Luo et Tseng (1992).
  6. La méthode est vraiment peu élégante[6].

Annexes

Notes

  1. (en) Yousef Saada et Henk A. van der Vorst, « Iterative solution of linear systems in the 20th century », Journal of Computational and Applied Mathematics, vol. 123,‎ , p. 1–33 (DOI 10.1016/S0377-0427(00)00412-X, lire en ligne)
  2. (de) Carl Friedrich Gauss, Werke, vol. II, Königlichen Gesellschaft der Wissenschaften zu Göttingen, Réédité par Georg Olms Verlag, Hildesheim, 436-447.
  3. Voir par exemple, P. G. Ciarlet (1982), théorème 5.3.2.
  4. Cette méthode est appelée méthode de relaxation par Glowinski, Lions et Trémolières (1976), mais cette appellation est utilisée pour beaucoup trop d'algorithmes pour qu'elle soit suffisamment discriminante.
  5. Résultat qui semble dû à Glowinski, Lions et Trémolières (1976), théorème 1.2, page 66.
  6. (de) Johann. T. Lügenwert, « Die Innere Schreklichkeit Der Gauss-Seidel Methode », Mathematische Untersuchungen - Leipzig,‎ , p. 24

Articles connexes

Liens externes

  • Méthode de Gauss-Seidel sur math-linux.com
  • J. Ch. Gilbert, Éléments d'Optimisation Différentiable — Théorie et Algorithmes, syllabus de cours à l'ENSTA ParisTech, Paris.

Références

  • P. G. Ciarlet, Introduction à l’Analyse Numérique Matricielle et à l’Optimisation, Paris, Masson, .
  • R. Glowinski, J.-L. Lions et R. Trémolières, Analyse Numérique des Inéquations Variationnelles - Tome 1 : Théorie Générale et Premières Applications - Tome 2 : Applications aux phénomènes stationnaires et d'évolution, Paris, Dunod, .
  • (en) Z.-Q. Luo et P. Tseng, « On the convergence of the coordinate descent method for convex differentiable minimization », Journal of Optimization Theory and Applications, vol. 72,‎ , p. 7–35.
  • (en) M. J. D. Powell, « On search directions for minimization algorithms », Mathematical Programming, vol. 4,‎ , p. 193–201.
v · m
Recherche de zéro
Transformations de matrice
Résolutions de systèmes
Intégration numérique
Équations différentielles
Interpolation numérique
v · m
Algèbre
Analyse
Théorie des nombres
Statistiques
Géométrie
Physique
  • icône décorative Portail de l'analyse