Objectifs du chapitre
À la fin de ce chapitre, vous serez capable de:
- calculer les normes , 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 et comme un maximum de sommes de lignes et de colonnes, et comme la plus grande valeur singulière;
Deux questions, un seul chapitre
Le chapitre 3 a fourni un algorithme qui résout en un nombre fini d'étapes: l'élimination de Gauss et sa factorisation , avec pivot partiel. Cet algorithme est stable au sens du chapitre 1, il coûte 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 obtenu vérifie à près. Que vaut ? Le chapitre 1 a annoncé la réponse sans la démontrer: elle dépend d'un nombre attaché à seule, le conditionnement, et ce nombre peut valoir , ou , 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 est une condamnation dès que dépasse quelques dizaines de milliers: une matrice pleine d'ordre demanderait opérations et 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 : chaque ligne ne porte que trois, cinq ou sept coefficients non nuls. Une méthode qui ne ferait que multiplier par , 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 la valeur absolue s'impose; en dimension , 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 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 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 et soit un indice où le maximum est atteint.
Première chaîne. On a , d'où ; et , d'où . Les deux bornes sont atteintes, la première par , la seconde par .
Deuxième chaîne. En développant,
puisque les termes croisés sont positifs ou nuls. Dans l'autre sens, l'inégalité de Cauchy–Schwarz appliquée à et au vecteur donne
La troisième chaîne se déduit des deux premières, ou se vérifie directement.
Cas général. Toute norme est continue pour la topologie usuelle, car . Elle atteint donc sur la sphère unité , qui est compacte, un minimum (strictement positif par séparation) et un maximum . L'homogénéité propage ces bornes à tout .
Un calcul en dimension renvoie un vecteur d'erreur dont vous savez seulement que . Que pouvez-vous garantir sur la plus grande composante de , c'est-à-dire sur ?
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:
On dit qu'une norme induite est sous-multiplicative. La démonstration tient en une ligne: , puis on prend le supremum sur les de norme . Notons aussi que pour toute norme induite, ce qui n'est pas vrai de la norme de Frobenius , laquelle vaut 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 nombres.
Démonstration. Démontrons (4.6) en entier; (4.7) suit le même plan et (4.8) est discutée ensuite.
Posons et soit avec , c'est-à-dire pour tout . Pour toute ligne ,
En prenant le maximum sur , , donc .
Pour l'égalité, il faut exhiber un vecteur qui atteint . Soit une ligne réalisant le maximum. Définissons par
Alors et
d'où et donc . Les deux inégalités donnent (4.6).
Pour (4.7), on écrit où est la -ième colonne, d'où
et l'égalité est atteinte en prenant pour le vecteur de base associé à la colonne de plus grande somme.
La formule (4.8) demande davantage. Le quotient s'écrit , c'est-à-dire le de la matrice symétrique semi-définie positive . 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 sont les de , 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 est
Si est une valeur propre de et un vecteur propre associé, alors, pour toute norme induite, , d'où
Le rayon spectral est donc en dessous de toutes les normes. Il n'en est pas une lui-même: la matrice non nulle a un rayon spectral nul.
Écrivez norme_inf_vecteur, norme_inf_matrice et conditionnement_inf. Le programme affiche à quatre décimales, puis et pour le système témoin du cours, à une décimale. Vous devez retrouver et .
Le conditionnement d'une matrice
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:
- . En effet par (4.5).
- pour tout . Multiplier une équation par ne change rien au problème, et le conditionnement le reflète: . En particulier, : la matrice a pour déterminant et pour conditionnement .
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: , donc
par la propriété (4.4) appliquée à .
Il faut maintenant convertir cette majoration absolue en majoration relative, et c'est le second membre qui fournit le dénominateur. De on tire, toujours par (4.4),
où l'on a utilisé (conséquence de ) et . En multipliant (4.13) par (4.14):
ce qui est (4.12).
Pour l'optimalité, il suffit de rendre les deux inégalités (4.13) et (4.14) simultanément exactes. Choisissons réalisant le maximum de (4.3) pour , c'est-à-dire tel que , et posons : (4.14) devient une égalité. Choisissons ensuite réalisant le maximum de (4.3) pour , c'est-à-dire tel que : (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: .
La lecture géométrique
En dimension , chaque équation est une droite, et la solution est le point d'intersection. Perturber la droite sans la tourner. Toute la théorie précédente se lit alors sur un dessin.
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 est atteint pour : en norme infinie, le meilleur système possible est celui dont les droites sont perpendiculaires, et son conditionnement vaut , pas . Un angle de , soit radian, donne déjà .
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.
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, est choisi dans la direction 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.
Deux droites du plan se coupent sous un angle de . En utilisant l'approximation 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, 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 et sont inversibles et , alors
Le même facteur gouverne les deux sources. C'est ce qui justifie de parler du conditionnement du problème , 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 , : le vecteur est donc la solution exacte du système dont le second membre est . En posant et , 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 , d'où ; et de , d'où . En divisant la première inégalité par la seconde:
ce qui est la minoration annoncée.
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 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 est grand, l'encadrement est large de 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'a que des coefficients simples, est symétrique, définie positive, et son conditionnement est multiplié par une trentaine chaque fois que augmente de . Elle apparaît naturellement: c'est la matrice de Gram de la base pour le produit scalaire , donc la matrice des équations normales de l'ajustement polynomial sur — 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 en fractions, puis arrondi pour l'affichage:
La dernière colonne est , c'est-à-dire l'estimation du nombre de chiffres décimaux perdus. Elle croît d'environ chiffre par ordre: chaque ligne ajoutée à une matrice de Hilbert coûte un chiffre et demi sur seize. À il n'en reste guère plus d'un, et à , où , plus aucun.
Mettons cette prédiction à l'épreuve. Résolvons en double précision par élimination de Gauss avec pivot partiel (le code du chapitre 3), avec construit pour que la solution exacte soit :
| erreur relative observée | résidu relatif observé | borne résidu | |
|---|---|---|---|
| 3 |
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 à . 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 à de marge. À , 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.
Vous obtenez une solution approchée 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
- Estimer le conditionnement , par exemple en norme infinie
- Convertir en chiffres significatifs: environ en double précision
- Former le résidu relatif et vérifier qu'il est de l'ordre de
- Majorer l'erreur relative par fois le résidu relatif
- Calculer le résidu , la seule quantité mesurable sans connaître la solution exacte
Les méthodes itératives: décomposer pour itérer
Changeons de question. Pour grand et creuse, la factorisation souffre d'un défaut que le chapitre 3 a nommé: le remplissage. Les zéros de ne sont pas des zéros de et de , et une matrice creuse d'ordre peut avoir des facteurs denses, donc impossibles à stocker. Une méthode qui n'utiliserait que pour calculer des produits 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 vérifie , alors , donc . On dit que la méthode est consistante. Cela ne garantit rien sur la convergence, exactement comme au chapitre 2 où ne garantissait pas que l'itération converge.
Ensuite, l'erreur suit une récurrence d'une simplicité totale. En soustrayant de (4.21) écrite avec , et en posant :
Toute la question de la convergence tient donc dans une seule question de théorie des matrices: quand tend-il vers la matrice nulle? Ce sera le théorème 4.5. Auparavant, choisissons .
On écrit traditionnellement
où est la diagonale de , sa partie strictement triangulaire inférieure et sa partie strictement triangulaire supérieure. Les deux décompositions classiques sont alors immédiates.
La méthode de Jacobi
On prend et . Inverser est gratuit — ce sont divisions — pourvu qu'aucun coefficient diagonal ne soit nul.
La lecture de (4.24) est parlante: on résout la -ième équation par rapport à sa -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]
Une itération coûte multiplications et autant d'additions pour une matrice pleine, soit environ opérations, plus pour le résidu si on le recalcule à chaque tour. Sur une matrice creuse à coefficients non nuls par ligne, ce coût tombe à . À comparer aux de la factorisation :
La méthode de Gauss–Seidel
Le calcul de par (4.24) utilise alors que 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 avec triangulaire inférieure coûte 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]
L'écriture en place x[i] = ... fait que la somme de droite lit les valeurs déjà mises à jour pour et les anciennes pour : 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.
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.
É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 .
Quand l'itération converge-t-elle?
La récurrence (4.22) réduit la question à l'étude des puissances de .
Démonstration. Nous démontrons et , qui suffisent aux applications, et nous admettons .
: si pour une norme induite, la sous-multiplicativité (4.5) donne , donc par (4.22), et ceci quel que soit , c'est-à-dire quel que soit .
: supposons et soit une valeur propre de module maximal, un vecteur propre associé (complexe s'il le faut). Alors , dont la norme ne tend pas vers zéro. Donc ne tend pas vers , et l'itération initialisée en ne converge pas. Par contraposée, impose .
est le théorème de Householder: pour tout il existe une norme induite telle que . Sa démonstration passe par la forme normale de Jordan de 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 (formule de Gelfand, également admise): gagner un facteur demande tel que , soit .
Le critère du théorème 4.5 est exact mais coûteux: calculer 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 , donc pour tout : la matrice diagonale est inversible et l'itération de Jacobi (4.24) est bien définie.
La matrice d'itération a pour coefficients
Sa -ième somme de ligne vaut donc, en modules,
La dominance stricte (4.26) dit exactement que pour tout . Par la formule (4.6) du théorème 4.2,
le maximum d'un nombre fini de quantités strictement inférieures à étant lui-même strictement inférieur à — c'est ici, et seulement ici, que la finitude de la dimension intervient.
L'implication 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 .
Il reste l'inversibilité de . Si avec , alors , donc , d'où avec : impossible pour . Le noyau de est donc réduit à zéro et est inversible.
Une itération vérifie et . 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 , avec le même que pour Jacobi (exercice 4.6). 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).
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 appartient à la réunion des disques de centre et de rayon . Appliqué à , dont la diagonale est nulle, il redonne exactement le théorème 4.6 — les disques sont centrés à l'origine et de rayons , donc . C'est le même calcul que (4.27), vu autrement:
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 : 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.
La relaxation: accélérer en dosant le pas
Gauss–Seidel calcule, pour chaque composante, une valeur censée améliorer . 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: . Avec on 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 est triangulaire inférieure de diagonale , et est triangulaire supérieure de diagonale . Donc
Le déterminant étant le produit des valeurs propres, , et le plus grand module est au moins la moyenne géométrique: . Si , c'est-à-dire si ou , alors 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 un peu longue, le second sur l'analyse de la relation entre les valeurs propres de et celles de 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.
Le système de la figure 4.3 est avec tridiagonale d'ordre , de diagonale et de sous-diagonales — 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:
et (4.30) donne
Le tableau des itérations effectivement comptées, pour un résidu relatif inférieur à , 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 |
| 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: itérations contre , pour un coût par itération identique et une ligne de code de différence. Contre Jacobi, qui demande balayages sur le même système, le facteur est de .
Ensuite, la courbe est très pointue au voisinage de l'optimum: de à , soit un écart de , le nombre d'itérations passe de à . 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, coûte itérations et en coûterait environ . Pour on a exactement , une droite de pente ; en dessous, décroît beaucoup plus vite. , jamais l'inverse.
Une itération a pour rayon spectral . Combien d'itérations faut-il, asymptotiquement, pour diviser l'erreur par ? 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 :
- factorisation puis deux substitutions: opérations, une fois pour toutes;
- itérations de Jacobi ou de Gauss–Seidel: environ opérations.
L'itératif l'emporte si , c'est-à-dire si . Pour , il faudrait converger en moins de 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.
Tout change sur une matrice creuse. Soit le nombre moyen de coefficients non nuls par ligne ( pour une tridiagonale, pour le laplacien 2D à cinq points, en 3D). Alors:
- une itération coûte 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 , donc inconnues et une largeur de bande , une factorisation de Cholesky en bande coûte environ opérations et demande cases mémoire.
Chiffrons, avec une tolérance de et optimal (pour lequel le nombre d'itérations croît comme ):
| grille | Cholesky en bande | SOR optimal | mémoire: bande / creux | |
|---|---|---|---|---|
| 2 500 | op. | 149 iter., op. | / |
Le croisement se produit vers , et l'écart s'ouvre ensuite: le coût direct croît comme , le coût itératif comme . À un million d'inconnues, SOR est fois moins cher en opérations et fois moins cher en mémoire — et c'est la mémoire qui décide en premier, car un milliard de cases, c'est 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 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
Trois remarques, dans l'ordre d'importance.
(1) Il est relatif, et il doit l'être. Un critère absolu dépend des unités: multiplier par — 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,
Choisir sur un système de conditionnement 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 , qui ne coûte rien. Mais l'incrément et l'erreur sont reliés par
Si est proche de — 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 est énorme, et un incrément minuscule accompagne une erreur considérable. Pour , l'erreur peut valoir mille fois l'incrément. Un critère sur 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 .
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 4.8.
Méthodes de gradient pour les matrices symétriques définies positives
Jacobi, Gauss–Seidel et la relaxation traitent toutes les matrices de la même façon, et la meilleure d'entre elles demande un paramètre que l'on ne connaît pas. Or une grande partie des systèmes de la pratique ont une structure de plus: la matrice est symétrique définie positive (SDP, définition A.6 de l'annexe A). C'est le cas de la matrice de la figure 4.3, des matrices de rigidité des éléments finis, des matrices de diffusion, et de la matrice des équations normales du chapitre 7. Pour elles, résoudre le système revient à minimiser une énergie, et cette reformulation donne une famille de méthodes entièrement différente, sans paramètre à régler, dont le gradient conjugué est le représentant le plus utilisé du calcul scientifique.
Résoudre, c'est minimiser
Démonstration. Posons et développons en utilisant la symétrie, qui donne :
puisque . Comme pour , pour tout . Le gradient se lit sur le même développement écrit autour d'un quelconque: , dont la partie linéaire en est (Analyse II, chapitre 4).
Géométriquement, les courbes de niveau de sont des ellipses (des ellipsoïdes en dimension ) centrées en , d'axes dirigés selon les vecteurs propres de et de demi-axes proportionnels à . Leur — le rapport du grand au petit axe — vaut donc , puisque pour une matrice SDP (propriété 4 qui suit la définition 4.3). Le conditionnement, que la première moitié du chapitre voyait comme une sensibilité aux perturbations, devient ici une : un grand, c'est une vallée longue et étroite, et c'est là que les méthodes de descente peinent.
La plus profonde descente
La façon la plus naturelle de descendre une vallée est de suivre la pente. En , la direction de plus forte décroissance de est : le résidu lui-même. On avance donc dans la direction du résidu, d'un pas choisi pour minimiser le long de cette droite. La fonction est un trinôme du second degré, minimal en
La dernière relation se vérifie en appliquant à la deuxième; elle évite de recalculer , de sorte qu'une itération ne coûte qu'un seul produit matrice-vecteur, , plus deux produits scalaires et deux mises à jour de vecteurs: opérations sur une matrice creuse à coefficients par ligne.
def plus_profonde_descente(A, b, tol=1e-8, kmax=10000):
n = len(b)
x = [0.0] * n
r = b[:] # r = b - A x avec x = 0
nb = max(abs(v) for v in b)
for k in range(kmax):
if max(abs(v)
Le choix optimal de a une conséquence qu'il faut voir: la dérivée du trinôme s'annule en , ce qui s'écrit . : chaque pas s'arrête là où la droite de descente est tangente à une courbe de niveau, et le pas suivant repart à angle droit. Dans une vallée étroite, cela produit le zigzag de la figure 4.4.
Démonstration. L'idée est de comparer le pas optimal à un pas fixe bien choisi. Pour un quelconque, le point a pour erreur , puisque . Par (4.33), minimiser sur la droite revient à minimiser la norme de l'énergie de l'erreur; le pas optimal fait donc que n'importe quel pas fixe:
Développons sur une base orthonormée de vecteurs propres de (théorème spectral, annexe A). Alors et , d'où
Choisissons . La fonction est maximale sur à l'une des deux extrémités, où elle vaut dans les deux cas .
Le taux est proche de dès que est grand: gagner un chiffre demande de l'ordre de itérations. La plus profonde descente est lente exactement quand le système est mal conditionné, et le zigzag en est la raison géométrique: dans une vallée étroite, la pente pointe presque perpendiculairement à la direction où il faudrait aller.
Le gradient conjugué
Le zigzag vient de ce que chaque pas défait en partie le travail des précédents: après avoir minimisé dans la direction , puis dans , on n'est plus au minimum dans la direction , et il faudra y revenir. L'idée du gradient conjugué, due à Hestenes et Stiefel (1952), est de choisir des directions qui ne se gâchent pas mutuellement.
Si l'on dispose de directions deux à deux -conjuguées, elles forment une base, orthogonale pour , et l'erreur initiale s'y décompose: . Minimiser le long de détermine exactement le coefficient — c'est tout l'intérêt de l'orthogonalité —, si bien qu'après minimisations unidimensionnelles on a la solution exacte. Le gradient conjugué construit ces directions au fur et à mesure, chacune à partir du résidu courant corrigé d'un multiple de la direction précédente:
Le coefficient est exactement celui qui rend conjuguée à . Le miracle — c'est le mot qu'emploient les manuels — est qu'elle l'est alors automatiquement à toutes les directions précédentes, sans qu'on ait à les stocker.
def gradient_conjugue(A, b, tol=1e-8, kmax=1000):
n = len(b)
x = [0.0] * n
r = b[:]
p = r[:]
rr = sum(v * v for v in r)
nb = max(abs(v) for v in
Une itération coûte un produit , deux produits scalaires et trois mises à jour de vecteurs, soit opérations sur une matrice creuse — à peine plus que la plus profonde descente, et la mémoire se limite à quatre vecteurs. La matrice n'intervient que par des produits matrice-vecteur, comme dans toutes les méthodes itératives de ce chapitre.
Démonstration. Les points 1 et 2 s'établissent ensemble par récurrence sur , en utilisant à chaque étape la définition de (qui rend orthogonal à ), celle de (qui rend conjuguée à ) et la symétrie de pour les indices plus anciens. Le calcul est élémentaire mais long, et nous l'admettons; on le trouve dans Quarteroni, Sacco et Saleri, ou dans Saad (voir les références). Le point 3 en découle: par récurrence, et appartiennent à , et l'erreur est -orthogonale à , qui engendrent : c'est la caractérisation de la meilleure approximation pour le produit scalaire de l'énergie.
La terminaison finie, elle, se démontre en une ligne à partir du point 1. Si sont tous non nuls, ce sont vecteurs non nuls deux à deux orthogonaux de , donc une base orthogonale; , orthogonal à tous, est nul. Donc .
Le point 3 dit plus que la terminaison: il dit que le gradient conjugué fait, à chaque itération, le mieux possible avec l'information qu'il a recueillie. Il en découle une borne qui fait apparaître la racine carrée du conditionnement.
Nous admettons ce théorème, dont voici l'idée. Tout élément de a une erreur de la forme , où est un polynôme de degré au plus avec . Par le point 3 et le même développement spectral que dans la démonstration du théorème 4.9, pour tel . La plus profonde descente revenait à prendre à chaque pas; le gradient conjugué choisit implicitement le meilleur polynôme de degré , et le meilleur polynôme pour ce problème de minimax est un polynôme de déplacé — les mêmes polynômes dont le chapitre 6 tire ses nœuds d'interpolation. Leur croissance hors de donne (4.37).
Comparez (4.35) et (4.37): contre . Pour , les taux valent et : gagner six chiffres demande environ itérations dans le premier cas et dans le second, en ignorant le facteur 2 de (4.37). , et c'est ce qui en fait la méthode de référence pour les grands systèmes SDP.
Le préconditionnement. La borne (4.37) dit que tout se joue sur . Si l'on dispose d'une matrice symétrique définie positive, proche de et facile à inverser, on applique le gradient conjugué au système équivalent , réécrit de façon symétrique: c'est le gradient conjugué préconditionné. Une itération demande en plus la résolution d'un système , et la vitesse est gouvernée par le conditionnement de au lieu de celui de . Le choix de est un arbitrage du même type que celui de la décomposition des méthodes de Jacobi et de Gauss–Seidel. Le plus simple est la diagonale, — qui ne change rien sur , dont la diagonale est constante, et c'est un bon rappel qu'un préconditionneur se juge sur le problème. Les plus utilisés sont la , qui calcule les facteurs du chapitre 3 en refusant tout remplissage, et les méthodes multigrilles, pour lesquelles le nombre d'itérations ne dépend plus de sur les matrices de discrétisation. Le principe est toujours le même: .
Un système SDP a un conditionnement . Par quel facteur, environ, le passage de la plus profonde descente au gradient conjugué divise-t-il le nombre d'itérations nécessaires pour une précision donnée?
Le squelette ci-dessous est la plus profonde descente: la direction est toujours le résidu, et sur la tridiagonale d'ordre 10 il lui faut 388 itérations. Transformez-la en gradient conjugué (4.36) en ajoutant la direction p et le coefficient beta. Le programme doit afficher le nombre d'itérations, puis les deux composantes extrêmes de la solution.
Synthèse
- Les trois normes , et sont équivalentes en dimension finie, avec des constantes en ou (théorème 4.1): les conclusions qualitatives ne dépendent pas du choix, les chiffres si. , y compris sur le conditionnement.
Calculez pour la matrice dont les lignes sont, dans l’ordre, , et .
Exercices
Vous pouvez afficher le corrigé directement sous chaque énoncé après avoir cherché la solution.
Soit
On considère le système où les lignes de sont les normales unitaires de deux droites du plan faisant entre elles l'angle :
On reprend avec , et .
On considère
On considère
Soit à diagonale strictement dominante en lignes, et . On note la matrice d'itération de Gauss–Seidel. On veut montrer que
Références
- 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), chap. 5 et 6 (plus profonde descente, espaces de Krylov et gradient conjugué) et chap. 9 et 10 (préconditionnement).
- Hestenes, M. R. et Stiefel, E., «Methods of conjugate gradients for solving linear systems», Journal of Research of the National Bureau of Standards, vol. 49, 1952 (l'article fondateur du gradient conjugué).
- Burden, R. L. et Faires, J. D., Numerical Analysis, Cengage, Boston, chap. 7.