Normes vectorielles et matricielles, nombre de conditionnement, résidu et erreur, méthodes de Jacobi, de Gauss-Seidel et de relaxation, critères de convergence.
Objectifs du chapitre
À la fin de ce chapitre, vous serez capable de:
calculer les normes ∥⋅∥1, ∥⋅∥2 et ∥⋅∥∞ d'un vecteur, énoncer les inégalités d'équivalence qui les relient en dimension finie, et dire pourquoi le choix de la norme change les constantes mais pas les conclusions;
calculer les normes matricielles induites ∥A∥∞ et comme un maximum de sommes de lignes et de colonnes, et comme la plus grande valeur singulière;
∥A∥1
∥A∥2
définir le conditionnementκ(A)=∥A∥∥A−1∥, le calculer exactement sur une matrice rationnelle, et démontrer la majoration de perturbation qu'il gouverne;
expliquer, chiffres à l'appui, pourquoi un résidu petit ne garantit pas une erreur petite, et estimer le nombre de chiffres perdus à partir de log10κ;
construire les itérations de Jacobi, de Gauss–Seidel et de relaxation, écrire leur matrice d'itération, et décider de leur convergence par le rayon spectral ou par la dominance diagonale stricte;
choisir entre une méthode directe et une méthode itérative en comparant des comptages d'opérations, et écrire un critère d'arrêt sur le résidu relatif qui ne mente pas sur l'erreur.
Deux questions, un seul chapitre
Le chapitre 3 a fourni un algorithme qui résout Ax=b en un nombre fini d'étapes: l'élimination de Gauss et sa factorisation LU, avec pivot partiel. Cet algorithme est stable au sens du chapitre 1, il coûte 32n3 opérations, et il termine. Deux questions restent pourtant ouvertes, et ce sont elles qui font vivre ce chapitre.
La première est une question de fiabilité. Supposons que la factorisation se soit parfaitement passée et que le vecteur x^ obtenu vérifie Ax^=b à 10−15 près. Que vaut x^−x? Le chapitre 1 a annoncé la réponse sans la démontrer: elle dépend d'un nombre attaché à A seule, le conditionnement, et ce nombre peut valoir 748, ou 3⋅1013, ou davantage. Nous allons le définir, le calculer exactement, et démontrer l'inégalité qu'il gouverne.
La seconde est une question de coût. Le facteur n3 est une condamnation dès que n dépasse quelques dizaines de milliers: une matrice pleine d'ordre 106 demanderait 6,7⋅1017 opérations et 8⋅1012 octets de mémoire, ce qui n'existe pas. Or les grands systèmes de la pratique — discrétisation d'une équation aux dérivées partielles, réseau électrique, structure en éléments finis — sont creux: chaque ligne ne porte que trois, cinq ou sept coefficients non nuls. Une méthode qui ne ferait que multiplier par A, sans jamais la factoriser, exploiterait cette structure. C'est l'idée des méthodes itératives, et la moitié de ce chapitre leur est consacrée.
Les deux questions se rejoignent, et c'est pourquoi elles cohabitent ici: une méthode itérative s'arrête sur un résidu, et la première moitié du chapitre explique exactement ce qu'un résidu permet de conclure.
Mesurer un vecteur: les trois normes usuelles
Pour dire qu'une erreur est petite, il faut d'abord savoir mesurer un vecteur. En dimension 1 la valeur absolue s'impose; en dimension n, il y a plusieurs mesures raisonnables, et elles ne sont pas équivalentes numériquement — elles le sont seulement topologiquement, ce qui n'est pas la même chose et ce que la fin de cette section précise.
Elles ne mesurent pas la même chose et ce sont trois lectures différentes d'un même vecteur d'erreur. La norme ∥⋅∥∞ répond à «quelle est la pire composante?», et c'est celle que l'on veut quand chaque composante est une grandeur physique à garantir. La norme ∥⋅∥1 répond à «combien d'erreur y a-t-il en tout?», et c'est celle des bilans de matière ou d'argent, où les écarts s'additionnent. La norme ∥⋅∥2 est la longueur euclidienne, celle qui provient d'un produit scalaire, donc la seule des trois pour laquelle «orthogonal» a un sens — d'où son rôle central au chapitre 7 sur les moindres carrés.
Démonstration. Notons m=∥x∥∞ et soit k un indice où le maximum est atteint.
Première chaîne. On a ∥x∥22=∑ixi2≥xk2=m2, d'où ∥x∥2≥m; et ∑ixi2≤nm2, d'où ∥x∥2≤nm. Les deux bornes sont atteintes, la première par x=e1, la seconde par x=(1,1,…,1).
puisque les termes croisés sont positifs ou nuls. Dans l'autre sens, l'inégalité de Cauchy–Schwarz appliquée à x et au vecteur (1,…,1) donne
∥x∥1=i∑∣xi∣⋅1≤(i∑xi2)1/2(i∑1)1/2=n∥x∥2.
La troisième chaîne se déduit des deux premières, ou se vérifie directement.
Cas général. Toute norme N est continue pour la topologie usuelle, car ∣N(x)−N(y)∣≤N(x−y)≤(∑iN(ei))∥x−y∥∞. Elle atteint donc sur la sphère unité {∥x∥∞=1}, qui est compacte, un minimum c>0 (strictement positif par séparation) et un maximum C. L'homogénéité propage ces bornes à tout Rn. □
Question 4.1
Un calcul en dimension n=10000 renvoie un vecteur d'erreur dont vous savez seulement que ∥e∥2=10−8. Que pouvez-vous garantir sur la plus grande composante de e, c'est-à-dire sur ∥e∥∞?
Normes matricielles induites
Une matrice agit sur des vecteurs. La bonne façon de mesurer sa taille est donc de mesurer de combien elle peut allonger un vecteur, ce qui se dit en une formule.
L'inégalité (4.4) est la seule propriété dont nous nous servirons vraiment, et elle est la raison d'être de toute la construction. Elle se prolonge en une propriété que les normes matricielles quelconques n'ont pas toutes:
∥AB∥≤∥A∥∥B∥,donc∥Ak∥≤∥A∥k.(4.5)
On dit qu'une norme induite est sous-multiplicative. La démonstration tient en une ligne: ∥ABx∥≤∥A∥∥Bx∥≤∥A∥∥B∥∥x∥, puis on prend le supremum sur les x de norme 1. Notons aussi que ∥I∥=1 pour toute norme induite, ce qui n'est pas vrai de la norme de Frobenius (∑ijaij2)1/2, laquelle vaut n sur l'identité: la norme de Frobenius est commode à calculer mais n'est induite par aucune norme vectorielle, et nous ne l'emploierons pas.
Il reste à savoir calculer (4.3). Le miracle est que pour les deux normes extrêmes, un maximum sur une sphère se ramène à un maximum sur n nombres.
Démonstration. Démontrons (4.6) en entier; (4.7) suit le même plan et (4.8) est discutée ensuite.
Posons M=maxi∑j∣aij∣ et soit x avec ∥x∥∞=1, c'est-à-dire ∣xj∣≤1 pour tout j. Pour toute ligne i,
∣(Ax)i∣=j∑aijxj≤j∑∣aij∣∣xj∣≤j∑∣aij∣≤M.
En prenant le maximum sur i, ∥Ax∥∞≤M, donc ∥A∥∞≤M.
Pour l'égalité, il faut exhiber un vecteur qui atteint M. Soit k une ligne réalisant le maximum. Définissons z par
zj={sgn(akj)1si akj=0,sinon.
Alors ∥z∥∞=1 et
(Az)k=j∑akjsgn(akj)=j∑∣akj∣=M,
d'où ∥Az∥∞≥M et donc ∥A∥∞≥M. Les deux inégalités donnent (4.6).
Pour (4.7), on écrit Ax=∑jxjaj où aj est la j-ième colonne, d'où
∥Ax∥1≤j∑∣xj∣∥aj∥1≤(jmax∥aj∥1)∥x∥1,
et l'égalité est atteinte en prenant pour x le vecteur de base ek associé à la colonne de plus grande somme. □
La formule (4.8) demande davantage. Le quotient ∥Ax∥22/∥x∥22 s'écrit xTATAx/xTx, c'est-à-dire le quotient de Rayleigh de la matrice symétrique semi-définie positive ATA. Le théorème spectral (Algèbre linéaire) affirme que ce quotient est maximal sur le vecteur propre associé à la plus grande valeur propre, et vaut alors cette valeur propre. Les racines carrées des valeurs propres de ATA sont les valeurs singulières de A, d'où (4.8). Nous admettons ici l'argument du quotient de Rayleigh: sa démonstration complète, et la méthode de la puissance qui le calcule, font l'objet du chapitre 5.
Une dernière relation sera indispensable dans la seconde moitié du chapitre. Le rayon spectral de A est
ρ(A)=max{∣λ∣:λ valeur propre de A dans C}.(4.9)
Si λ est une valeur propre de A et v=0 un vecteur propre associé, alors, pour toute norme induite, ∣λ∣∥v∥=∥Av∥≤∥A∥∥v∥, d'où
ρ(A)≤∥A∥pour toute norme induite.(4.10)
Le rayon spectral est donc en dessous de toutes les normes. Il n'en est pas une lui-même: la matrice non nulle (0010) a un rayon spectral nul.
Question 4.2
Écrivez norme_inf_vecteur, norme_inf_matrice et conditionnement_inf. Le programme affiche ∥H3∥∞ à quatre décimales, puis κ∞(H3) et κ∞(A) pour le système témoin du cours, à une décimale. Vous devez retrouver 748,0 et 60,0.
L'annexe A rassemble les propriétés des normes et du conditionnement dont les chapitres suivants se serviront, avec les rappels d'algèbre linéaire correspondants; nous n'en démontrons ici que ce dont ce chapitre a besoin.
Quatre propriétés élémentaires, toutes utiles:
κ(A)≥1. En effet 1=∥I∥=∥AA−1∥≤∥A∥∥A−1∥ par (4.5).
κ(αA)=κ(A) pour tout α=0. Multiplier une équation par 1000 ne change rien au problème, et le conditionnement le reflète: ∥αA∥∥α−1A−1∥=∥A∥∥A−1∥. En particulier, un déterminant petit ne signifie pas un mauvais conditionnement: la matrice 10−8I3 a pour déterminant 10−24 et pour conditionnement 1.
κ(A)=κ(A−1), immédiat sur la définition. Notez au passage la parenté avec le chapitre 1: le conditionnement relatif d'une fonction dérivable y valait κf(x)=∣xf′(x)/f(x)∣, c'est-à-dire le rapport entre l'erreur relative de sortie et l'erreur relative d'entrée. Ici joue le rôle de la dérivée — l'application linéaire, donc sa différentielle est — et est le même rapport, pris au pire cas sur toutes les directions de perturbation. Le chapitre 1 promettait de rendre cette notion quantitative pour les systèmes linéaires: (4.12) est cette promesse tenue.
Si A est symétrique, κ2(A)=∣λmax∣/∣λmin∣, rapport de la plus grande à la plus petite valeur propre en module. C'est la lecture la plus parlante du conditionnement: le rapport d'aplatissement de l'ellipsoïde image de la sphère unité.
La majoration de perturbation
Voici le théorème central du chapitre. Il répond à la question: si l'on modifie légèrement le second membre — parce qu'il provient d'une mesure, d'un arrondi, ou d'un calcul antérieur — de combien la solution peut-elle bouger?
Démonstration. Les deux systèmes étant linéaires, soustrayons-les: Aδx=δb, donc
δx=A−1δb,d’ouˋ∥δx∥≤∥A−1∥∥δb∥(4.13)
par la propriété (4.4) appliquée à A−1.
Il faut maintenant convertir cette majoration absolue en majoration relative, et c'est le second membre qui fournit le dénominateur. De b=Ax on tire, toujours par (4.4),
∥b∥≤∥A∥∥x∥,soit∥x∥1≤∥b∥∥A∥,(4.14)
où l'on a utilisé x=0 (conséquence de b=0) et ∥b∥>0. En multipliant (4.13) par (4.14):
Pour l'optimalité, il suffit de rendre les deux inégalités (4.13) et (4.14) simultanément exactes. Choisissons x réalisant le maximum de (4.3) pour A, c'est-à-dire tel que ∥Ax∥=∥A∥∥x∥, et posons b=Ax: (4.14) devient une égalité. Choisissons ensuite δb réalisant le maximum de (4.3) pour A−1, c'est-à-dire tel que ∥A−1δb∥=∥A−1∥∥δb∥: (4.13) devient une égalité à son tour. Les deux vecteurs maximisants existent par compacité de la sphère unité, et ils sont indépendants l'un de l'autre. La borne (4.12) est donc la meilleure possible, et non une majoration confortable: le facteur κ(A) est réellement atteint par certaines données. □
La lecture géométrique
En dimension 2, chaque équation ai1x1+ai2x2=bi est une droite, et la solution est le point d'intersection. Perturber bitranslate la droite i sans la tourner. Toute la théorie précédente se lit alors sur un dessin.
Figure 4.1. La même perturbation du second membre, sur deux systèmes 2 × 2 qui diffèrent seulement par l'angle entre leurs droites. Chacune des deux droites peut glisser de ±0,08 (traits pointillés); la solution vit alors dans le losange dessiné autour de l'intersection, dont les demi-diagonales valent 0,08 divisé par cos(θ/2) horizontalement et par sin(θ/2) verticalement. À 70 degrés le losange est un petit carré de 0,28 de haut et le conditionnement vaut 2,43; à 6 degrés il est onze fois plus haut et le conditionnement vaut 20,1. L'échelle est isotrope: les angles dessinés sont les vrais angles.
Le dessin dit exactement ce que dit le théorème 4.3, et la comparaison des deux losanges est la lecture qu'il faut emporter. Deux droites presque parallèles se coupent en un point que la moindre translation fait courir très loin le long de leur direction commune. Et un système dont les deux équations disent presque la même chose est précisément un système dont la matrice est presque singulière. Le mauvais conditionnement n'est pas un accident numérique: c'est une quasi-redondance de l'information. Quand deux capteurs mesurent presque la même combinaison de grandeurs, aucun algorithme ne pourra séparer proprement ces grandeurs, et il faut changer le dispositif expérimental, pas le solveur.
La quantification est instructive. Si les deux droites ont pour normales unitaires faisant entre elles l'angle θ, on vérifie (exercice 4.2) que
avec θ en radians. Le minimum κ∞=2 est atteint pour θ=90°: en norme infinie, le meilleur système 2×2 possible est celui dont les droites sont perpendiculaires, et son conditionnement vaut 2, pas 1. Un angle de 1°, soit 0,01745 radian, donne déjà κ∞≈115.
Explorateur 4.1 · L'angle entre deux droites, et ce qu'il coûte
Les deux droites se coupent toujours au point (1, 1), et le second membre subit toujours la même perturbation relative. Resserrez l'angle: les droites deviennent presque parallèles, le conditionnement grimpe comme 2/θ, et le point d'intersection perturbé, le point plein au bout du segment, s'éloigne d'autant. Surveillez l'avant-dernière ligne des résultats: le rapport entre l'erreur relative et la perturbation relative ne bouge pas de κ∞, parce que cette perturbation-là sature exactement la borne du théorème 4.3.
Angle entre les droites θ10°
Perturbation relative de b2,0 %
κ∞(A)
12,43
Perturbation relative
2,00 %
Erreur relative
24,86 %
Borne du théorème
24,86 %
Erreur ÷ perturbation
12,43
Déplacement de la solution
0,249
Comparez cet explorateur à celui du chapitre 3, qui met en scène les deux mêmes droites mais laisse régler leurs coefficients plutôt que leur angle. Là-bas, la perturbation du second membre est quelconque, et la lecture «amplification observée» reste toujours en dessous de κ∞: l'inégalité (4.12) est une majoration, et une perturbation prise au hasard n'en réalise qu'une fraction. Ici, au contraire, δb est choisi dans la direction (1,−1) qui sature la borne, et le rapport affiché vaut κ∞ exactement, quel que soit l'angle. Les deux lectures sont nécessaires: la seconde dit ce que le conditionnement peut coûter, la première ce qu'il coûte le plus souvent.
Question 4.3
Deux droites du plan se coupent sous un angle de 0,6°. En utilisant l'approximation κ∞≈2/θ de (4.15), avec θ exprimé en radians, estimez le conditionnement en norme infinie du système correspondant.
Et si c'est la matrice qui est perturbée?
Dans la pratique, A aussi est connue de façon imparfaite: ses coefficients ont été mesurés, ou arrondis à l'entrée dans la machine. Le résultat correspondant, que nous admettons — sa démonstration demande le lemme de perturbation de Neumann, un exercice de série entière matricielle qui n'apporte rien de neuf ici — est le suivant: si A et A+δA sont inversibles et ∥A−1∥∥δA∥<1, alors
∥x+δx∥∥δx∥≤κ(A)(∥A∥∥δA∥+∥b∥∥δb∥).(4.16)
Le même facteur κ(A) gouverne les deux sources. C'est ce qui justifie de parler du conditionnement du problèmeAx=b, et non d'un conditionnement par type de perturbation.
Résidu et erreur: le piège central
Nous pouvons maintenant tenir la promesse du chapitre 1.
Cette différence de statut est décisive. Le résidu se mesure, l'erreur ne se mesure pas: c'est pourquoi tout critère d'arrêt s'écrit sur le résidu, et c'est pourquoi il faut savoir ce qu'un petit résidu permet de conclure.
Démonstration. Par définition de r, Ax^=b−r: le vecteur x^ est donc la solution exacte du système dont le second membre est b−r. En posant δb=−r et δx=x^−x, on est exactement dans la situation du théorème 4.3, dont la conclusion (4.12) donne la majoration de droite.
Pour la minoration, on part de r=b−Ax^=Ax−Ax^=−A(x^−x), d'où ∥r∥≤∥A∥∥x^−x∥; et de x=A−1b, d'où ∥x∥≤∥A−1∥∥b∥. En divisant la première inégalité par la seconde:
L'encadrement (4.18) est la formule à retenir du chapitre. Il dit deux choses symétriques, et la seconde est aussi importante que la première: si κ(A) est petit, résidu relatif et erreur relative sont du même ordre, à un facteur κ près des deux côtés — le résidu est alors un excellent indicateur. Si κ(A) est grand, l'encadrement est large de κ2 et ne dit plus grand-chose: un résidu minuscule est compatible avec une erreur énorme, et réciproquement.
La matrice de Hilbert, ou le mal conditionnement à l'état pur
Le mauvais conditionnement n'exige pas de coefficients pathologiques. La matrice de Hilbert d'ordre n,
n'a que des coefficients simples, est symétrique, définie positive, et son conditionnement est multiplié par une trentaine chaque fois que n augmente de 1. Elle apparaît naturellement: c'est la matrice de Gram de la base 1,x,x2,… pour le produit scalaire ∫01fg, donc la matrice des équations normales de l'ajustement polynomial sur [0,1] — le chapitre 7 la retrouvera, et expliquera pourquoi on n'ajuste jamais un polynôme de degré élevé par cette voie.
Aux ordres supérieurs, la situation devient caricaturale. Le tableau suivant a été calculé en arithmétique rationnelle exacte, par inversion de Hn en fractions, puis arrondi pour l'affichage:
n
∥Hn∥∞
∥Hn−1∥∞
κ∞(Hn)
chiffres perdus
3
11/6
408
748
2,9
4
25/12
13 620
28 375
4,5
5
137/60
413 280
943 656
6,0
6
49/20
11 865 420
29 070 279
7,5
8
761/280
1,2463⋅1010
3,3873⋅1010
10,5
10
7381/2520
1,2072⋅1013
La dernière colonne est log10κ∞, c'est-à-dire l'estimation du nombre de chiffres décimaux perdus. Elle croît d'environ 1,5 chiffre par ordre: chaque ligne ajoutée à une matrice de Hilbert coûte un chiffre et demi sur seize. À n=11 il n'en reste guère plus d'un, et à n=12, où κ∞=4,12⋅1016, plus aucun.
Mettons cette prédiction à l'épreuve. Résolvons Hnx=b en double précision par élimination de Gauss avec pivot partiel (le code du chapitre 3), avec b construit pour que la solution exacte soit (1,1,…,1):
n
erreur relative observée
résidu relatif observé
borne κ∞× résidu
3
9,99⋅10−15
1,21⋅10−16
9,06⋅10−14
6
5,26⋅10−10
9,06⋅10−17
2,63⋅10−9
10
3,18⋅10−4
3,03⋅10−16
1,07⋅10−2
Lisez la deuxième colonne de haut en bas: le résidu reste au niveau de la machine, invariablement, pendant que l'erreur grimpe de 10−14 à 3⋅10−4. L'algorithme n'a rien fait de mal — c'est même exactement le comportement d'un algorithme stable — et la troisième colonne montre que la borne (4.18) est respectée avec un facteur 5 à 35 de marge. À n=10, la solution calculée porte quatre chiffres corrects au lieu de seize. Les dernières décimales de ces trois lignes dépendent de l'ordre des opérations et ne se reproduiront pas à l'identique sur une autre implémentation; les ordres de grandeur, eux, sont robustes, et ce sont eux qui comptent.
Question 4.4
Vous obtenez une solution approchée x^ d'un système linéaire et vous voulez savoir combien de chiffres lui faire confiance. Remettez les étapes dans l'ordre.
Glissez les éléments pour les mettre dans le bon ordre
1.
Calculer le résidu r=b−Ax^, la seule quantité mesurable sans connaître la solution exacte
2.
Estimer le conditionnement κ(A), par exemple en norme infinie
3.
Former le résidu relatif ∥r∥/∥b∥ et vérifier qu'il est de l'ordre de εmach
4.
Convertir en chiffres significatifs: environ 16−log10κ(A) en double précision
5.
Majorer l'erreur relative par κ(A) fois le résidu relatif
Les méthodes itératives: décomposer pour itérer
Changeons de question. Pour n grand et A creuse, la factorisation LU souffre d'un défaut que le chapitre 3 a nommé: le remplissage. Les zéros de A ne sont pas des zéros de L et de U, et une matrice creuse d'ordre 106 peut avoir des facteurs denses, donc impossibles à stocker. Une méthode qui n'utiliserait A que pour calculer des produits Av n'aurait pas ce problème: un produit matrice-vecteur creux coûte autant d'opérations qu'il y a de coefficients non nuls, et ne demande aucune mémoire supplémentaire.
Deux remarques valent d'être faites immédiatement.
D'abord, la solution exacte est un point fixe: si x vérifie Ax=b, alors Mx=Nx+b, donc x=Bx+f. On dit que la méthode est consistante. Cela ne garantit rien sur la convergence, exactement comme au chapitre 2 où g(x∗)=x∗ ne garantissait pas que l'itération xk+1=g(xk) converge.
Ensuite, l'erreur suit une récurrence d'une simplicité totale. En soustrayant x=Bx+f de (4.21) écrite avec B, et en posant e(k)=x(k)−x:
e(k+1)=Be(k),donce(k)=Bke(0).(4.22)
Toute la question de la convergence tient donc dans une seule question de théorie des matrices: quand Bk tend-il vers la matrice nulle? Ce sera le théorème 4.5. Auparavant, choisissons M.
On écrit traditionnellement
A=D−E−F,(4.23)
où D est la diagonale de A, −E sa partie strictement triangulaire inférieure et −F sa partie strictement triangulaire supérieure. Les deux décompositions classiques sont alors immédiates.
La méthode de Jacobi
On prend M=D et N=E+F. Inverser D est gratuit — ce sont n divisions — pourvu qu'aucun coefficient diagonal ne soit nul.
La lecture de (4.24) est parlante: on résout la i-ième équation par rapport à sa i-ième inconnue, en tenant les autres pour connues. Toutes les composantes sont mises à jour à partir du seul vecteur précédent, ce qui rend la méthode trivialement parallélisable — sa seule véritable qualité aujourd'hui.
def jacobi(A, b, tol=1e-10, kmax=500): """Un balayage = n divisions et n(n-1) multiplications-additions, soit environ 2n^2 operations.""" n = len(A) x = [0.0] * n nb = max(abs(v) for v in b) for k in range(kmax): r = [b[i] - sum(A[i][j] * x[j] for j in range(n)) for i in range(n)] if max(abs(v) for v in r) <= tol * nb: return x, k y = [0.0] * n for i in range(n): s = sum(A[i][j] * x[j] for j in range(n) if j != i) y[i] = (b[i] - s) / A[i][i] x = y return x, kmax
Une itération coûte n2 multiplications et autant d'additions pour une matrice pleine, soit environ 2n2 opérations, plus 2n2 pour le résidu si on le recalcule à chaque tour. Sur une matrice creuse à m coefficients non nuls par ligne, ce coût tombe à 2mn. À comparer aux 32n3 de la factorisation LU: on peut se permettre de l'ordre de n/3 itérations avant d'avoir dépensé autant qu'une élimination.
La méthode de Gauss–Seidel
Le calcul de xi(k+1) par (4.24) utilise x1(k),…,xi−1(k) alors que x1(k+1),…,xi−1(k+1) viennent d'être calculés et sont, espère-t-on, meilleurs. Les utiliser tout de suite est l'idée de Gauss–Seidel.
Résoudre My=c avec M triangulaire inférieure coûte n2 opérations, mais on ne résout rien explicitement: (4.25) est la descente triangulaire, écrite ligne par ligne. Le coût par itération est donc identique à celui de Jacobi, à ceci près qu'un seul vecteur est stocké au lieu de deux, ce qui divise la mémoire par deux. En Python, la différence entre les deux méthodes tient dans une seule ligne:
def gauss_seidel(A, b, tol=1e-10, kmax=500): """Meme cout par iteration que Jacobi, un seul vecteur en memoire.""" n = len(A) x = [0.0] * n nb = max(abs(v) for v in b) for k in range(kmax): r = [b[i] - sum(A[i][j] * x[j] for j in range(n)) for i in range(n)] if max(abs(v) for v in r) <= tol * nb: return x, k for i in range(n): s = sum(A[i][j] * x[j] for j in range(n) if j != i) x[i] = (b[i] - s) / A[i][i] # ecriture en place: voila tout return x, kmax
L'écriture en place x[i] = ... fait que la somme de droite lit les valeurs déjà mises à jour pour j<i et les anciennes pour j>i: c'est exactement (4.25). La contrepartie est que Gauss–Seidel dépend de l'ordre des équations, contrairement à Jacobi, et n'est pas parallélisable en l'état.
Question 4.5
Implémentez jacobi(A, b, tol, kmax) qui renvoie le couple formé de la solution approchée et du nombre d'itérations effectuées, avec un critère d'arrêt sur le résidu relatif en norme infinie. Le programme doit afficher 17, puis la solution du système de l'exemple 4.5 à huit décimales.
jacobi.py
1
def norme_inf(v):
2
return max(abs(t) for t in v)
3
4
5
def residu(A, b, x):
6
n = len(A)
7
return [b[i] - sum(A[i][j] * x[j] for j in range(n)) for i in range(n)]
8
9
10
def jacobi(A, b, tol=1e-10, kmax=500):
11
n = len(A)
12
x = [0.0] * n
13
for k in range(kmax):
14
# a completer: tester le residu relatif, puis faire un balayage
Écrivez maintenant gauss_seidel avec le même critère d'arrêt, et comparez. Le programme affiche le nombre d'itérations de Jacobi, puis celui de Gauss–Seidel, puis le rapport des deux à deux décimales, pour une tolérance de 10−10.
gauss_seidel.py
1
def norme_inf(v):
2
return max(abs(t) for t in v)
3
4
5
def residu(A, b, x):
6
n = len(A)
7
return [b[i] - sum(A[i][j] * x[j] for j in range(n)) for i in range(n)]
8
9
10
def jacobi(A, b, tol=1e-10, kmax=500):
11
n = len(A)
12
x = [0.0] * n
13
for k in range(kmax):
14
if norme_inf(residu(A, b, x)) <= tol * norme_inf(b):
15
return x, k
16
y = [0.0] * n
17
for i in range(n):
18
s = sum(A[i][j] * x[j] for j in range(n) if j != i)
19
y[i] = (b[i] - s) / A[i][i]
20
x = y
21
return x, kmax
22
23
24
def gauss_seidel(A, b, tol=1e-10, kmax=500):
25
# a completer: une seule ligne change par rapport a jacobi
La récurrence (4.22) réduit la question à l'étude des puissances de B.
Démonstration. Nous démontrons 3⇒1 et 1⇒2, qui suffisent aux applications, et nous admettons 2⇒3.
3⇒1: si ∥B∥=q<1 pour une norme induite, la sous-multiplicativité (4.5) donne ∥Bk∥≤qk→0, donc ∥e(k)∥≤qk∥e(0)∥→0 par (4.22), et ceci quel que soit e(0), c'est-à-dire quel que soit x(0).
1⇒2: supposons ρ(B)≥1 et soit λ une valeur propre de module maximal, v=0 un vecteur propre associé (complexe s'il le faut). Alors Bkv=λkv, dont la norme ∣λ∣k∥v∥ ne tend pas vers zéro. Donc Bk ne tend pas vers 0, et l'itération initialisée en x(0)=x+v ne converge pas. Par contraposée, Bk→0 impose ρ(B)<1.
2⇒3 est le théorème de Householder: pour tout ε>0 il existe une norme induite telle que ∥B∥≤ρ(B)+ε. Sa démonstration passe par la forme normale de Jordan de B et une mise à l'échelle des blocs; elle appartient à un cours d'analyse matricielle et n'éclairerait pas davantage le présent chapitre. Nous l'admettons.
Enfin, l'énoncé sur le taux découle de ∥e(k)∥1/k→ρ(B) (formule de Gelfand, également admise): gagner un facteur 10 demande k tel que ρk=10−1, soit k=−1/log10ρ. □
Le critère du théorème 4.5 est exact mais coûteux: calculer ρ(B) est un problème aux valeurs propres, donc plus cher que de résoudre le système. En pratique on utilise une condition suffisante, et la plus utile de toutes est purement arithmétique.
Cette condition se lit d'un coup d'œil sur la matrice, sans aucun calcul. Elle est fréquente dans les applications: une discrétisation par différences finies d'un opérateur de diffusion avec un terme de réaction, une matrice d'admittance de réseau, une chaîne de Markov diagonalement renforcée la vérifient.
Démonstration. Commençons par observer que (4.26) impose ∣aii∣>∑j=i∣aij∣≥0, donc aii=0 pour tout i: la matrice diagonale D est inversible et l'itération de Jacobi (4.24) est bien définie.
La matrice d'itération BJ=D−1(E+F) a pour coefficients
(BJ)ij=⎩⎨⎧0−aiiaijsi j=i,si j=i.
Sa i-ième somme de ligne vaut donc, en modules,
j=1∑n∣(BJ)ij∣=∣aii∣1j=i∑∣aij∣=:qi.
La dominance stricte (4.26) dit exactement que qi<1 pour tout i. Par la formule (4.6) du théorème 4.2,
∥BJ∥∞=imaxqi=q<1,
le maximum d'un nombre fini de quantités strictement inférieures à 1 étant lui-même strictement inférieur à 1 — c'est ici, et seulement ici, que la finitude de la dimension intervient.
L'implication 3⇒1 du théorème 4.5 s'applique alors avec la norme ∥⋅∥∞: la récurrence de l'erreur (4.22) et la sous-multiplicativité donnent
ce qui est (4.27) et prouve la convergence pour tout x(0).
Il reste l'inversibilité de A. Si Av=0 avec v=0, alors Dv=(E+F)v, donc v=BJv, d'où ∥v∥∞≤q∥v∥∞ avec q<1: impossible pour v=0. Le noyau de A est donc réduit à zéro et A est inversible. □
Question 4.7
Une itération vérifie ∥B∥∞=0,98 et ρ(B)=0,5. Que peut-on en conclure?
Le même argument s'applique mot pour mot à Gauss–Seidel, avec un peu plus de travail: on montre que sous (4.26) on a aussi ∥BGS∥∞≤q<1, avec le mêmeq que pour Jacobi (exercice 4.5). Gauss–Seidel converge donc au moins aussi vite que ce que la borne garantit pour Jacobi. Attention toutefois: en général, ni «Jacobi converge» n'implique «Gauss–Seidel converge», ni l'inverse. Il existe des matrices où l'une converge et l'autre diverge. L'implication est vraie dans deux cas classiques: les matrices à diagonale strictement dominante, et les matrices symétriques définies positives (pour lesquelles Gauss–Seidel converge toujours, ce qui n'est pas le cas de Jacobi).
Figure 4.2. Disques de Gershgorin des deux matrices d'itération du système de l'exemple 4.5. Chaque disque est centré sur un coefficient diagonal de la matrice d'itération et a pour rayon la somme des modules des autres coefficients de sa ligne; toute valeur propre appartient à la réunion des disques. À gauche, la matrice de Jacobi: sa diagonale étant nulle, les trois disques sont concentriques, et leurs rayons 0,300, 0,182 et 0,625 sont exactement les ratios de dominance diagonale du théorème 4.6 — le plus grand vaut la norme infinie. À droite, la matrice de Gauss-Seidel: le plus grand disque tombe à 0,300 et les trois valeurs propres, marquées par des points, se serrent au point de se confondre près de l'origine. Le cercle unité est en gris; tout ce qui reste à l'intérieur converge.
Les disques de la figure 4.2 sont ceux du théorème de Gershgorin, démontré au chapitre 5: toute valeur propre d'une matrice B appartient à la réunion des disques de centre bii et de rayon ∑j=i∣bij∣. Appliqué à BJ, dont la diagonale est nulle, il redonne exactement le théorème 4.6 — les disques sont centrés à l'origine et de rayons qi, donc ρ(BJ)≤maxiqi=q<1. C'est le même calcul que (4.27), vu autrement: la dominance diagonale stricte est la condition qui enferme les disques dans le disque unité.
Question 4.8
Cet exercice est fait pour échouer d'abord. Le programme fourni lance l'itération de Jacobi sur le système témoin du cours, dont la matrice d'itération a un rayon spectral de 1,107: la méthode diverge, le critère d'arrêt n'est jamais satisfait — les composantes deviennent infinies puis indéterminées, et toute comparaison devient fausse — et l'exécution sera interrompue au bout de dix secondes. Lancez-le pour le voir, puis ajoutez le garde-fou: jacobi_surveille doit renvoyer un triplet formé de la solution, du nombre d'itérations et d'un booléen de convergence, et ne jamais boucler indéfiniment.
divergence.py
1
def norme_inf(v):
2
return max(abs(t) for t in v)
3
4
5
def residu(A, b, x):
6
n = len(A)
7
return [b[i] - sum(A[i][j] * x[j] for j in range(n)) for i in range(n)]
8
9
10
def jacobi_surveille(A, b, tol=1e-10, kmax=300):
11
n = len(A)
12
x = [0.0] * n
13
nb = norme_inf(b)
14
k = 0
15
while True: # <-- cette boucle ne se termine jamais
16
if norme_inf(residu(A, b, x)) <= tol * nb:
17
return x, k, True
18
y = [0.0] * n
19
for i in range(n):
20
s = sum(A[i][j] * x[j] for j in range(n) if j != i)
Gauss–Seidel calcule, pour chaque composante, une valeur xiGS censée améliorer xi(k). L'idée de la relaxation est de ne pas s'arrêter à cette valeur, mais d'aller plus ou moins loin dans la direction de la correction.
L'écriture (4.28) se lit comme une moyenne pondérée entre l'ancienne valeur et la valeur de Gauss–Seidel: xi(k+1)=(1−ω)xi(k)+ωxiGS. Avec ω>1 on dépasse délibérément la correction proposée, dans l'idée que Gauss–Seidel corrige toujours un peu trop peu. Deux résultats encadrent le choix de ω.
Démonstration de (a). Le déterminant d'un produit est le produit des déterminants, et celui d'une matrice triangulaire le produit de sa diagonale. Or ω1D−E est triangulaire inférieure de diagonale ω1D, et (ω1−1)D+F est triangulaire supérieure de diagonale (ω1−1)D. Donc
Le déterminant étant le produit des n valeurs propres, ∏i∣λi∣=∣1−ω∣n, et le plus grand module est au moins la moyenne géométrique: ρ(Bω)≥∣1−ω∣. Si ∣1−ω∣≥1, c'est-à-dire si ω≤0 ou ω≥2, alors ρ(Bω)≥1 et le théorème 4.5 interdit la convergence. □
Les points (b) et (c) sont admis: le premier repose sur une identité d'énergie vTAv un peu longue, le second sur l'analyse de la relation entre les valeurs propres de Bω et celles de BJ pour les matrices cohéremment ordonnées (relation de Young), qui relève d'un cours spécialisé. Ce qu'il faut retenir de (4.30) est sa conséquence pratique, spectaculaire.
Figure 4.3. Jacobi, Gauss-Seidel et relaxation optimale sur le système tridiagonal d'ordre 10 obtenu en discrétisant une dérivée seconde. L'erreur relative, en norme infinie et en échelle logarithmique, décroît en ligne droite: c'est la signature d'une convergence linéaire, et la pente vaut le logarithme du rayon spectral. Les trois suites sont réellement itérées dans la figure. Le texte compte les itérations sur le résidu relatif, la figure trace l'erreur; sur ce système l'erreur vaut environ douze fois le résidu, de sorte que les deux lectures ne coïncident pas exactement.
Le système de la figure 4.3 est Tx=b avec T tridiagonale d'ordre n=10, de diagonale 2 et de sous-diagonales −1 — c'est la matrice de la dérivée seconde discrétisée, la matrice modèle de toute la discipline. Ses rayons spectraux se calculent exactement:
Le tableau des itérations effectivement comptées, pour un résidu relatif inférieur à 10−8, confirme tout:
ω
1,0
1,2
1,4
1,5
1,5604
1,6
1,7
1,8
1,9
itérations
197
129
79
56
38
42
54
87
181
ρ(Bω)
0,921
0,880
0,806
0,728
0,560
0,600
0,700
0,800
0,900
Trois observations, dont la troisième est celle qui sert.
D'abord, le gain est considérable: 38 itérations contre 197, pour un coût par itération identique et une ligne de code de différence. Contre Jacobi, qui demande 391 balayages sur le même système, le facteur est de 10.
Ensuite, la courbe est très pointue au voisinage de l'optimum: de ω=1,5 à ω=1,5604, soit un écart de 4%, le nombre d'itérations passe de 56 à 38. Choisir ω au hasard perd l'essentiel du bénéfice.
Enfin, et c'est la règle de terrain, la courbe n'est pas symétrique: à distance égale de l'optimum, ω=1,5 coûte 56 itérations et ω=1,62 en coûterait environ 43. Pour ω>ωopt on a exactement ρ(Bω)=ω−1, une droite de pente 1; en dessous, ρ décroît beaucoup plus vite. En cas de doute, surestimez ω, jamais l'inverse.
Question 4.9
Une itération a pour rayon spectral ρ=0,92. Combien d'itérations faut-il, asymptotiquement, pour diviser l'erreur par 108? Donnez le nombre d'itérations, arrondi à l'unité supérieure.
Directe ou itérative? Et quand s'arrêter?
Le comptage qui décide
Comparons honnêtement, en opérations, sur une matrice pleine d'ordre n:
factorisation LU puis deux substitutions: 32n3+2n2 opérations, une fois pour toutes;
K itérations de Jacobi ou de Gauss–Seidel: environ 2Kn2 opérations.
L'itératif l'emporte si 2Kn2<32n3, c'est-à-dire si K<n/3. Pour n=1000, il faudrait converger en moins de 333 itérations — ce qui arrive — mais on aurait quand même stocké la matrice pleine, et l'on n'aurait rien gagné en mémoire. Sur une matrice pleine, l'intérêt des méthodes itératives est marginal.
Tout change sur une matrice creuse. Soit m le nombre moyen de coefficients non nuls par ligne (m=3 pour une tridiagonale, m=5 pour le laplacien 2D à cinq points, m=7 en 3D). Alors:
une itération coûte 2mn opérations et aucune mémoire supplémentaire;
la factorisation, elle, subit le remplissage, et son coût dépend de la structure. Pour la matrice du laplacien sur une grille N×N, donc n=N2 inconnues et une largeur de bande N, une factorisation de Cholesky en bande coûte environ 21nN2=21n2 opérations et demande nN=n3/2 cases mémoire.
Chiffrons, avec une tolérance de 10−8 et ω optimal (pour lequel le nombre d'itérations croît comme N):
grille
n
Cholesky en bande
SOR optimal
mémoire: bande / creux
50×50
2 500
3,1⋅106 op.
149 iter., 3,7⋅106 op.
1,3⋅105 / 1,3⋅104
100×100
10 000
5,0⋅107 op.
296 iter., 3,0⋅107 op.
106 /
300×300
90 000
4,1⋅109 op.
882 iter., 7,9⋅108 op.
2,7⋅107 /
1000×1000
1 000 000
5,0⋅1011 op.
2 935 iter., 2,9⋅1010 op.
109 /
Le croisement se produit vers N≈60, et l'écart s'ouvre ensuite: le coût direct croît comme n2, le coût itératif comme n3/2. À un million d'inconnues, SOR est 17 fois moins cher en opérations et 200 fois moins cher en mémoire — et c'est la mémoire qui décide en premier, car un milliard de cases, c'est 8 gigaoctets rien que pour les facteurs.
Ce sont des comptages d'opérations, pas des temps mesurés. Deux implémentations du même comptage peuvent différer d'un facteur 10 en secondes selon l'accès mémoire, et ce cours ne prétend pas prédire des secondes.
Les critères d'arrêt
Une méthode itérative doit décider seule quand s'arrêter, et le seul objet dont elle dispose est le résidu. Le critère standard est donc
∥b∥∥r(k)∥≤tol,r(k)=b−Ax(k).(4.31)
Trois remarques, dans l'ordre d'importance.
(1) Il est relatif, et il doit l'être. Un critère absolu ∥r(k)∥≤tol dépend des unités: multiplier b par 1000 — passer de mètres à millimètres — changerait le nombre d'itérations. Le rapport (4.31) est sans dimension.
(2) Il borne l'erreur à travers κ, et pas autrement. Le théorème 4.4 donne, quand (4.31) est satisfait,
∥x∥∥x(k)−x∥≤κ(A)⋅tol.
Choisir tol=10−8 sur un système de conditionnement 106 ne garantit que deux chiffres. La tolérance se choisit en fonction du conditionnement, ou au moins de son ordre de grandeur estimé.
(3) Le critère sur l'incrément est un piège. Il est tentant d'arrêter sur ∥x(k+1)−x(k)∥≤tol, qui ne coûte rien. Mais l'incrément et l'erreur sont reliés par
Si ρ(B) est proche de 1 — et c'est exactement le cas où la méthode est lente, donc où l'on est tenté d'arrêter tôt — le facteur ∥(I−B)−1∥ est énorme, et un incrément minuscule accompagne une erreur considérable. Pour ρ=0,999, l'erreur peut valoir mille fois l'incrément. Un critère sur ∥x(k+1)−x(k)∥ n'est pas une borne sur l'erreur; c'est le même avertissement qu'au chapitre 2 pour les itérations scalaires, et il s'aggrave ici parce que ρ est souvent très proche de 1.
En production, on combine les trois: un critère relatif sur le résidu, un plafond d'itérations, et un drapeau de non-convergence — c'est exactement ce que construit l'exercice ch4-p4.
Synthèse
Les trois normes ∥⋅∥1, ∥⋅∥2 et ∥⋅∥∞ sont équivalentes en dimension finie, avec des constantes en n ou n (théorème 4.1): les conclusions qualitatives ne dépendent pas du choix, les chiffres si. Écrivez toujours la norme en indice, y compris sur le conditionnement.
Les normes matricielles induites mesurent l'allongement maximal d'un vecteur. ∥A∥∞ est la plus grande somme de ligne, ∥A∥1 la plus grande somme de colonne, ∥A∥2 la plus grande valeur singulière. Elles sont sous-multiplicatives et majorent toutes le rayon spectral: ρ(A)≤∥A∥.
Le conditionnementκ(A)=∥A∥∥A−1∥≥1 est invariant par changement d'échelle et n'a aucun rapport avec le déterminant. Il gouverne la majoration de perturbation ∥δx∥/∥x∥≤κ(A)∥δb∥/∥b∥, qui est optimale — certaines données l'atteignent. Géométriquement, un grand κ signifie des équations presque redondantes: en dimension 2, où est l'angle entre les droites.
Un petit résidu ne signifie pas une petite erreur: l'encadrement κ−1∥r∥/∥b∥≤∥x^−x∥/∥x∥≤κ∥r∥/∥b∥ est large de κ2. L'exemple 4.3, entièrement rationnel, donne un résidu relatif de pour une erreur relative de sur une matrice de conditionnement ; et sur la matrice de Hilbert d'ordre 3, où exactement, une perturbation relative de du second membre déplace la solution de . La règle du pouce est: on perd chiffres sur seize.
Les méthodes itératives reposent sur une décompositionA=M−N et sur l'itération Mx(k+1)=Nx(k)+b, dont l'erreur vérifie e(k)=Bke(0) avec . Elle converge pour tout , linéairement, au taux . La dominance diagonale stricte est une condition suffisante, vérifiable d'un coup d'œil, qui donne en prime la borne calculable .
Jacobi (M=D) est parallélisable, Gauss–Seidel (M=D−E) est environ deux à trois fois plus rapide pour le même coût, et la relaxation avec ωopt=2/(1+1−ρ(BJ)2) divise encore par cinq sur la matrice modèle. Le choix entre direct et itératif se tranche par un comptage d'opérations et par la mémoire: l'itératif gagne quand est grand et la matrice creuse, jamais sur une petite matrice pleine.
Série d'exercices du chapitre 4Exercice 1 sur 5
Question 4.10
Calculez ∥A∥∞ pour la matrice A dont les lignes sont, dans l’ordre, (3,−1,2), (0,4,−5) et (1,1,1).
Exercices
Vous pouvez afficher le corrigé directement sous chaque énoncé après avoir cherché la solution.
Exercice 4.1 · Normes et conditionnement à la main
Soit
A=20103−11−14,x=1−22.
Calculer ∥x∥1, ∥x∥2, ∥x∥∞ et vérifier les trois chaînes d'inégalités (4.2) pour n=3.
Calculer ∥A∥∞ et . Pourquoi sont-elles égales ici?
A−1=19111−1−3−172−326,
calculer κ∞(A) sous forme de fraction, puis en décimal.
4. Une perturbation relative de b de 10−3 peut-elle rendre la solution inutilisable?
Solution
1.∥x∥1=1+2+2=5, ∥x∥2=1+4+4=3, . Vérifications:
Exercice 4.2 · Le conditionnement de deux droites
On considère le système Ax=b où les lignes de A sont les normales unitaires de deux droites du plan faisant entre elles l'angle θ∈]0,π/2]:
A(θ)=(ccs−s),c=cos(θ/2),s=sin(θ/2).
Calculer detA et A−1.
En déduire ∥A∥∞, ∥A−1∥∞ et établir la formule (4.15).
Solution
1.detA=−cs−sc=−2cs=−sinθ, non nul pour θ∈]0,π/2]. La formule d'inversion d'une matrice 2×2 donne
Exercice 4.3 · Saturer la borne de perturbation
On reprend A=(1111+α) avec α=2⋅10−8, b=(2;2+α) et x=(1;1).
Rappeler A−1 et κ∞(A).
Déterminer un vecteur δb de norme ∥δb∥∞=η qui maximise .
Solution
1.detA=α, donc
A−1=α1(1+α−1−11),∥A∥∞=2+α,∥A−1∥∞=α2+α,
Exercice 4.4 · Jacobi, Gauss–Seidel et relaxation sur un système 3 × 3
On considère
A=4−10−14−10−14,b=323.
Vérifier que x=(1,1,1) est solution et que A est à diagonale strictement dominante. Que vaut ∥BJ∥∞?
Écrire les deux premières itérations de Jacobi et de Gauss–Seidel à partir de x(0)=0, et comparer les erreurs.
Solution
1.A(1,1,1)T=(4−1,−1+4−1,−1+4)T=(3,2,3)T=b. La dominance: , , , stricte partout. Les ratios valent , , , donc
Exercice 4.5 · Gauss–Seidel converge sous dominance diagonale stricte
Soit A à diagonale strictement dominante en lignes, et q=maxi∣aii∣1∑j=i∣aij∣<1. On note BGS=(D−E)−1F la matrice d'itération de Gauss–Seidel. On veut montrer que
∥BGS∥∞≤q<1.
Soit v quelconque et w=BGSv. Écrire la relation scalaire vérifiée par wi.
Poser pi=∣aii∣1j<i∑∣aij∣ et , de sorte que . Montrer par récurrence sur que .
Solution
1. Par définition, (D−E)w=Fv, ce qui s'écrit ligne par ligne
Quarteroni, A., Sacco, R. et Saleri, F., Méthodes numériques — algorithmes, analyse et applications, Springer, Milan, chap. 3 (normes et conditionnement) et chap. 4 (méthodes itératives pour les systèmes linéaires).
Rappaz, J. et Picasso, M., Introduction à l'analyse numérique, Presses polytechniques et universitaires romandes, Lausanne, chap. 3.
Trefethen, L. N. et Bau, D., Numerical Linear Algebra, SIAM, Philadelphie, leçons 3 à 4 (normes matricielles) et 12 (conditionnement d'un système linéaire).
Higham, N. J., Accuracy and Stability of Numerical Algorithms, 2e éd., SIAM, Philadelphie, chap. 7 (perturbation des systèmes linéaires) et chap. 9.
Saad, Y., Iterative Methods for Sparse Linear Systems, 2e éd., SIAM, Philadelphie, chap. 4 (méthodes de relaxation et leur convergence).
Burden, R. L. et Faires, J. D., Numerical Analysis, Cengage, Boston, chap. 7.
x=(1,1,1)
∥x∥1=3
∥x∥∞=1
x
∥M−1∥∞=7/15
1/5
∥M−1∥1=3/5
5
∥M∥2=35=6,7082
∥M−1∥2=1/5=0,4472
∥A∥1=∥AT∥∞
MT
M
A
1
bien conditionnée
mal conditionnée
A−1
b↦x
est
A−1
κ(A)
10−8
2
x^
κ2
H3−1
∥H3−1∥∞
3,5357⋅1013
13,5
x(0)=0
erreur relative
rapport
0
0,000000
0,000000
0,000000
1,00
—
1
0,600000
2,000000
−1,500000
2,50⋅10−1
0,250
2
1,100000
1,918182
−0,900000
5,00⋅10−2
0,200
3
0,971818
2,018182
−1,055682
2,78⋅10−2
0,557
4
1,012955
1,992376
−0,986136
6,93⋅10−3
0,249
6
1,001463
1,999124
−0,998202
8,99⋅10−4
0,295
10
1,000020
1,999988
−0,999973
1,35⋅10−5
0,334
17
0,999999
2,000000
−1,000000
8,10⋅10−9
0,346
erreur relative
rapport
0
0,000000
0,000000
0,000000
1,00
—
1
0,600000
2,054545
−0,879545
2,00⋅10−1
0,200
2
0,981364
2,009256
−0,991870
9,32⋅10−3
0,047
3
0,999300
2,000675
−0,999572
3,50⋅10−4
0,038
4
0,999982
2,000037
−0,999981
1,87⋅10−5
0,053
5
1,000000
2,000002
−0,999999
8,43⋅10−7
0,045
7
1,000000
2,000000
−1,000000
1,85⋅10−9
0,061
La convergence est linéaire, de taux ρ
2n2=18
pour n=3, aucune méthode itérative n'a le moindre intérêt.
ρ(B)
−1/log10ρ(B)
ρ(BJ)=1,1072>1
Jacobi diverge
λ(λ2−47λ+1)
0
0,875±0,4841i
1
1
ρ(BGS)=1
Gauss–Seidel stagne
κ∞=60
Les méthodes itératives ne sont pas des méthodes de secours: elles ont un domaine, et il faut le vérifier.
5⋅104
4,5⋅105
5⋅106
κ∞≈2/θ
θ
10−10
10−2
2⋅108
κ∞=611⋅408=748
5,45⋅10−4
41%
log10κ
B=M−1N
x(0)
si et seulement si
ρ(B)<1
ρ(B)
∥BJ∥∞=q<1
n
Problème guidé 4.1 · Un système dont le résidu ment
On considère le système Ax=b dont la matrice A a pour première ligne (1,1) et pour seconde ligne (1,1+α), avec α=2⋅10−8, et b=(2;2+α), de solution exacte x=(1;1). Un collègue vous présente la valeur approchée x^=(1,01;0,99) en affirmant qu'elle est excellente, «parce que le résidu est de l'ordre de 10−10». On travaille en norme infinie et toutes les quantités sont rationnelles, donc calculables exactement.
1
Le conditionnement de la matrice
Le déterminant vaut α, donc A−1=α−1(1+α−1−11). Les sommes de lignes de A valent 2 et 2+α; celles de A−1 valent (2+α)/α et 2/α.
Question
Calculez κ∞(A) et donnez-le en notation scientifique à trois chiffres significatifs.
Le résidu, puis l'erreur
L'erreur vraie, et la borne
Que répondre au collègue
∥A∥1
Sachant que detA=19 et que
∥x∥∞=2
2≤3≤3⋅2=3,46,3≤5≤3⋅3=5,196,2≤5≤3⋅2=6.
Les six inégalités sont satisfaites, et la deuxième chaîne est presque saturée à droite: 5 contre 5,196, parce que les trois composantes de x ont des modules voisins, ce qui est précisément le cas d'égalité de Cauchy–Schwarz.
2. Sommes de lignes en modules: 3, 4, 6; donc ∥A∥∞=6. Sommes de colonnes: 3, 4, 6; donc ∥A∥1=6. Elles coïncident parce que A est symétrique: ∥A∥1=∥AT∥∞=∥A∥∞.
3. Sommes de lignes de A−1, en modules: (11+1+3)/19=15/19, (1+7+2)/19=10/19, (3+2+6)/19=11/19. Donc ∥A−1∥∞=15/19 et
κ∞(A)=6⋅1915=1990=4,737.
On vérifie au passage κ∞≥1, et l'on remarque que ce conditionnement est tout à fait modeste: A est à diagonale strictement dominante (2>1, 3>1, 4>2), ce qui est un bon présage — sans être une garantie, les deux notions étant distinctes.
4. Non. D'après (4.12), l'erreur relative sur la solution est majorée par 4,737⋅10−3, soit moins d'un demi-pour-cent: on conserve plus de deux chiffres significatifs. Un système de conditionnement inférieur à 5 est un système sain, et c'est le cas normal.
Montrer que κ∞ est minimal pour θ=π/2 et vaut alors 2.
Donner l'équivalent de κ∞ quand θ→0, et calculer κ∞ pour θ=1° et θ=0,1°.
A−1=−sinθ1(−s−c−sc)=sinθ1(scs−c).
2. Comme c>0 et s>0 sur ]0,π/2], les deux sommes de lignes de A valent c+s: ∥A∥∞=c+s. Pour A−1, les sommes valent 2s/sinθ et 2c/sinθ, donc, en utilisant sinθ=2cs,
∥A−1∥∞=2cs2max(c,s)=csmax(c,s)=min(c,s)1.
Le produit donne bien
κ∞(A)=min(c,s)c+s.
3. Sur ]0,π/2] on a θ/2≤π/4, donc s≤c et min(c,s)=s. Ainsi
κ∞(θ)=sc+s=1+sc=1+cot(θ/2),
fonction strictement décroissante de θ sur ]0,π/2] puisque la cotangente l'est. Le minimum est atteint en θ=π/2, où cot(π/4)=1, et vaut κ∞=2. Deux droites perpendiculaires forment le système 2×2 le mieux conditionné en norme infinie, et son conditionnement vaut 2, pas 1. (En norme 2, ce même système a κ2=1: la matrice est alors orthogonale à un facteur près. La différence entre 2 et 1 est un artefact de la norme infinie, et elle illustre le théorème 4.1.)
4. Quand θ→0, cot(θ/2)∼2/θ et κ∞(θ)=1+cot(θ/2)∼2/θ. Numériquement:
L'approximation 2/θ donne 114,6 et 1145,9: elle est excellente dès le degré. Un dispositif de mesure où deux capteurs voient la scène sous un dixième de degré d'écart perd trois chiffres significatifs sur ses données, quel que soit le solveur employé.
∥A−1δb∥∞
Vérifier que l'inégalité (4.12) est alors une égalité, et calculer l'erreur relative obtenue pour η=10−8.
Comparer avec le x^ de l'exemple 4.3 et expliquer le facteur 2.
d'où κ∞(A)=(2+α)2/α=2,00000004⋅108.
2. La démonstration du théorème 4.2 indique la recette: la ligne de A−1 qui réalise le maximum est la première, de coefficients ((1+α)/α,−1/α). On prend donc δb formé des signes de cette ligne, mis à l'échelle η:
δb=η(1−1),δx=A−1δb=αη(2+α−2).
Alors ∥δb∥∞=η et ∥δx∥∞=η(2+α)/α=η∥A−1∥∞: le maximum est bien atteint.
3. On a ∥b∥∞=2+α=∥A∥∞∥x∥∞ puisque ∥x∥∞=1: la seconde inégalité de la démonstration est elle aussi une égalité. Donc
Pour η=10−8: perturbation relative 10−8/2,00000002=5,0⋅10−9, et erreur relative 10−8⋅(2,00000002/2⋅10−8)=1,00000001, soit 100 %. Une perturbation de cinq milliardièmes détruit entièrement la solution.
4. Dans l'exemple 4.3, x^−x=0,01(1,−1), donc le résidu valait −A(0,01)(1,−1)=−0,01(0,α): le vecteur δb=−r y était proportionnel à (0,1), et non à (1,−1). Or la ligne de A−1 maximisante réclame les deux composantes du résidu, avec des signes opposés. Avec δb∝(0,1), seule la deuxième colonne de A−1 agit, de somme de modules (1+1)/α=2/α au lieu de (2+α)/α: on perd donc le facteur (2+α)/2≈2 constaté. La borne est atteinte pour une direction de perturbation particulière, et une perturbation quelconque en réalise typiquement une fraction — ici exactement la moitié.
Les valeurs propres de BJ sont ici 21cos(kπ/4), k=1,2,3. Calculer ρ(BJ), puis ρ(BGS) et ωopt en utilisant le point (c) du théorème 4.7.
Combien d'itérations de chaque méthode faut-il, asymptotiquement, pour gagner huit chiffres?
4>1
4>2
4>1
1/4
2/4
1/4
∥BJ∥∞=21.
L'erreur est donc au moins divisée par deux par balayage, garanti.
2.Jacobi.x1(1)=3/4=0,75, x2(1)=2/4=0,5, x3(1)=3/4=0,75; erreur ∥⋅∥∞=0,5. Puis
Après deux balayages, Gauss–Seidel a une erreur de 7,8⋅10−2 contre 1,25⋅10−1 pour Jacobi: le rapport est déjà de 1,6, et il s'établira à ρ(BJ)/ρ(BGS) en régime asymptotique.
3. Pour la matrice tridiagonale tridiag(−1,4,−1) d'ordre n, les valeurs propres de BJ=41tridiag(1,0,1) sont 21cos(kπ/(n+1)), k=1,…,n. Pour n=3,
ρ(BJ)=21cos4π=42=0,353553.
La matrice étant tridiagonale donc cohéremment ordonnée, ρ(BGS)=ρ(BJ)2=1/8=0,125, et
Le rapport Jacobi/Gauss–Seidel vaut exactement 2, ce qui est le cas général des matrices cohéremment ordonnées puisque ρ(BGS)=ρ(BJ)2. Le gain de SOR n'est ici que de 1,5 supplémentaire, parce que ρ(BJ) est déjà petit: la relaxation ne paie vraiment que sur les systèmes lents, c'est-à-dire ceux de grande taille, comme le montre la figure 4.3 où le gain est d'un facteur cinq.
ri=∣aii∣1j>i∑∣aij∣
pi+ri=qi≤q
i
∣wi∣≤q∥v∥∞
Conclure, et en déduire que Gauss–Seidel converge au moins aussi vite que la garantie donnée pour Jacobi.
Cette conclusion signifie-t-elle que ρ(BGS)≤ρ(BJ) en général?
2. Posons V=∥v∥∞ et montrons ∣wi∣≤qV par récurrence forte sur i.
Initialisation, i=1. La première somme est vide, donc
Comme q<1, on a piq+ri≤pi+ri=qi≤q, d'où ∣wi∣≤qV. La récurrence est établie. (Le point fin est que la majoration piq+ri≤qiutiliseq<1: c'est exactement là que la dominance stricte agit, et c'est aussi elle qui montre que la borne obtenue est meilleure que qi dès que pi>0.)
3. De ∣wi∣≤q∥v∥∞ pour tout i on tire ∥BGSv∥∞≤q∥v∥∞ pour tout v, donc ∥BGS∥∞≤q<1 par définition (4.3) de la norme induite. Le théorème 4.5 (implication 3⇒1) donne alors la convergence pour tout x(0), avec la garantie ∥e(k)∥∞≤qk∥e(0)∥∞ — la même que celle du théorème 4.6 pour Jacobi, donc au moins aussi bonne. □
4. Non, et c'est une confusion fréquente. Ce que l'on a établi est une inégalité entre normes, ∥BGS∥∞≤∥BJ∥∞, et les normes ne sont que des majorants des rayons spectraux, par (4.10). Il existe des matrices — non diagonalement dominantes — pour lesquelles Jacobi converge et Gauss–Seidel diverge, et d'autres où c'est l'inverse; le système témoin du cours en est un demi-exemple, puisque Jacobi y diverge (ρ=1,107) tandis que Gauss–Seidel y stagne (ρ=1 exactement). L'égalité ρ(BGS)=ρ(BJ)2, qui donne le facteur 2 en nombre d'itérations, n'est démontrée que pour les matrices cohéremment ordonnées — tridiagonales par blocs, notamment. Hors de ce cadre, la comparaison se fait au cas par cas: sur le système de l'exemple 4.5, ρ(BJ)=0,3457 et ρ(BGS)=0,0477, soit un rapport de logarithmes de 2,86 et non de 2.