Synthèse
Vue d’ensemble
Section intitulée « Vue d’ensemble »La synthèse est organisée par grands thèmes plutôt que par CM. La structure reste volontairement flexible : les chapitres pourront être ajoutés, fusionnés, déplacés ou retirés à mesure que le cours 2026–2027 se précise.
1. Systèmes linéaires et méthodes directes
Section intitulée « 1. Systèmes linéaires et méthodes directes »Élimination de Gauss
Section intitulée « Élimination de Gauss »Le problème de départ est la résolution d’un système
L’élimination de Gauss transforme progressivement en une matrice triangulaire supérieure en annulant les coefficients sous les pivots. Les opérations sur les lignes peuvent être représentées par des matrices élémentaires.
À l’étape , une transformation de Gauss s’écrit
où contient les multiplicateurs utilisés pour éliminer les coefficients sous le pivot.
L’idée importante n’est pas seulement de trianguler : les transformations successives expliquent directement la factorisation LU.
Factorisation LU
Section intitulée « Factorisation LU »Si tous les pivots nécessaires sont non nuls,
En inversant les transformations,
est triangulaire inférieure à diagonale unité et contient les multiplicateurs de l’élimination ; est triangulaire supérieure.
En pratique, la factorisation peut être stockée in-place : la partie strictement inférieure de la matrice contient les coefficients de , tandis que la diagonale et la partie supérieure contiennent . La diagonale unité de n’est pas stockée.
Pivotage et permutations
Section intitulée « Pivotage et permutations »Une matrice inversible peut avoir un pivot nul pendant l’élimination. L’inversibilité de ne suffit donc pas à garantir que LU sans permutation fonctionne.
Le pivotage partiel choisit à l’étape
puis échange les lignes et .
On obtient alors
Le pivotage partiel garantit également que les multiplicateurs satisfont
Cette propriété limite la croissance provoquée par l’élimination et joue un rôle central dans sa stabilité numérique.
Méthode — construire avec Gauss et pivotage partiel
Section intitulée « Méthode — construire LULULU avec Gauss et pivotage partiel »À chaque colonne , on applique toujours la même procédure :
- Choisir le pivot dans la colonne :
Si , échanger les lignes et . Les échanges successifs sont enregistrés dans .
- Calculer un multiplicateur pour chaque ligne sous le pivot :
- Éliminer le coefficient sous le pivot :
- Ne pas jeter les multiplicateurs. Une fois la colonne éliminée, ranger chaque à la position de . On fait cela colonne après colonne. La diagonale de vaut :
La matrice obtenue après les éliminations est .
Avec pivotage, le résultat est
Le point essentiel est donc : LU = élimination de Gauss + conservation des multiplicateurs. En stockage in-place, on ne construit même pas deux matrices séparées : les remplacent les coefficients éliminés sous la diagonale, tandis que la diagonale et la partie supérieure contiennent .
Lors d’un échange de lignes à une étape ultérieure, les multiplicateurs déjà stockés dans les colonnes précédentes doivent suivre les lignes échangées.
Code C — LU in-place avec pivotage partiel
Section intitulée « Code C — LU in-place avec pivotage partiel »Le code du cours traduit directement la méthode précédente : recherche du pivot, échange des lignes, calcul de , puis élimination.
#include <math.h>
int LU_DecompositionPartialPivoting(FullMatrix *A) { if (A == NULL || A->m != A->n || A->n <= 0) return -1;
const int n = A->n;
for (int k = 0; k < n - 1; ++k) { int p = k; double maxPivot = fabs(FM(A, k, k));
for (int i = k + 1; i < n; ++i) { const double candidate = fabs(FM(A, i, k)); if (candidate > maxPivot) { maxPivot = candidate; p = i; } }
if (maxPivot == 0.0) return -1;
swapRows(A, k, p);
const double akk = FM(A, k, k);
for (int i = k + 1; i < n; ++i) { FM(A, i, k) /= akk; // stocke l_ik
for (int j = k + 1; j < n; ++j) FM(A, i, j) -= FM(A, i, k) * FM(A, k, j); } }
return FM(A, n - 1, n - 1) == 0.0 ? -1 : 0;}Résolution triangulaire
Section intitulée « Résolution triangulaire »Une fois connue, résoudre
revient à effectuer deux résolutions triangulaires :
La première utilise une substitution avant et la seconde une substitution arrière.
Avec pivotage, , donc le second membre doit lui aussi être permuté :
Coût des méthodes directes
Section intitulée « Coût des méthodes directes »Pour une matrice dense , la factorisation LU demande
Chaque résolution triangulaire coûte . Ainsi, si plusieurs systèmes possèdent la même matrice mais des seconds membres différents, on factorise une seule fois puis on réutilise et .
2. Arithmétique flottante, conditionnement et stabilité
Section intitulée « 2. Arithmétique flottante, conditionnement et stabilité »Représentation en virgule flottante
Section intitulée « Représentation en virgule flottante »En IEEE 754 binary64 (double), un nombre normalisé possède 53 bits de précision significative. L’espacement immédiatement au-dessus de 1 vaut
tandis que l’unit roundoff pour l’arrondi au plus proche est
Modèle d’erreur d’arrondi
Section intitulée « Modèle d’erreur d’arrondi »Pour une opération élémentaire et en l’absence d’overflow ou d’underflow,
Une élimination correcte en arithmétique exacte peut donc se comporter différemment en machine. En particulier, un pivot très petit peut produire un multiplicateur énorme et amplifier les effets des arrondis.
Conditionnement d’un système linéaire
Section intitulée « Conditionnement d’un système linéaire »Pour , en gardant fixe et en perturbant de , l’analyse au premier ordre donne
D’où
avec
Attention :
mais le nombre de condition utilise le produit des normes
et non la norme du produit . En général,
donc, pour les normes matricielles usuelles, .
Le conditionnement est une propriété du problème : un grand signifie qu’une petite perturbation des données peut provoquer une grande variation de la solution.
Erreur backward et erreur forward
Section intitulée « Erreur backward et erreur forward »En arithmétique flottante, les facteurs calculés par LU vérifient
Le backward error mesure donc la perturbation nécessaire pour interpréter le résultat calculé comme la solution exacte d’un problème voisin.
L’erreur forward mesure directement l’écart entre la solution calculée et la solution exacte .
Schématiquement,
Ainsi, un algorithme peut être numériquement stable tout en donnant une solution peu précise si le problème lui-même est mal conditionné.
Stabilité de l’élimination de Gauss
Section intitulée « Stabilité de l’élimination de Gauss »Sans pivotage, un petit pivot peut créer des multiplicateurs très grands et conduire à une forte perte de précision.
Avec pivotage partiel, . La croissance des coefficients de est mesurée par le growth factor
Le backward error dépend notamment de ce facteur. Le cours donne la borne de Wilkinson
qui peut être atteinte dans le pire cas. Cette borne est pessimiste mais montre que le pivotage partiel ne donne pas une garantie absolue contre toute croissance.