Cette annexe présente deux exemples complets de pivotage : le pivotage complet (lignes et colonnes) et le pivotage partiel (lignes seulement). Ces exemples illustrent l'importance du pivotage pour la stabilité numérique.
Exemple 1 : Pivotage complet
Le pivotage complet consiste à échanger à la fois des lignes et des colonnes pour placer le plus grand élément (en valeur absolue) de la sous-matrice restante en position de pivot.
Système initial
Considérons le système Ax=b avec :
A=406143−3237,b=312
Matrice augmentée initiale :
406143−3237312
Étape 1 : Recherche du pivot maximal
On cherche l'élément de plus grande valeur absolue dans toute la matrice :
Élément
Valeur absolue
a13=−32
32 ← maximum
a31=6
6
a11=4
4
Le maximum est ∣−32∣=32 en position (1,3).
Pour amener cet élément en position (1,1), on effectue :
Échange de lignes : R1↔R1 (pas nécessaire, déjà en ligne 1)
Échange de colonnes : C1↔C3
⚠️
Attention : ordre des inconnues
L'échange de colonnes modifie l'ordre des inconnues. Il faut garder trace de cet ordre pour reconstruire la solution finale. Initialement : (x1,x2,x3). Après C1↔C3 : (x3,x2,x1).
Après l'échange C1↔C3 :
−3237143406312
Ordre des inconnues : O=(x3,x2,x1)
Étape 2 : Élimination sous le pivot
Maintenant on élimine les éléments sous le pivot −32 :
Multiplicateurs :
m21=a11a21=−323=−323
m31=a11a31=−327=−327
Opérations :
R2←R2−m21⋅R1=R2+323R1
R3←R3−m31⋅R1=R3+327R1
Après élimination (première colonne) :
−320014,0943,21940,3756,87531,2812,656
Étape 3 : Deuxième pivot
On cherche le maximum dans la sous-matrice 2×2 restante (lignes 2-3, colonnes 2-3) :
Élément
Valeur absolue
a33=6,875
6,875 ← maximum
a22=4,094
4,094
Pour amener 6,875 en position (2,2) :
Échange de lignes : R2↔R3
Échange de colonnes : C2↔C3
Après les échanges :
−320046,8750,37513,2194,09432,6561,281
Ordre des inconnues : O=(x3,x1,x2)
Étape 4 : Dernière élimination
Multiplicateur :
m32=6,8750,375≈0,0545
Opération : R3←R3−m32⋅R2
Matrice triangulaire finale :
−320046,875013,2193,91832,6561,136
Étape 5 : Substitution arrière
On résout le système triangulaire :
x2=3,9181,136≈0,290
x1=6,8752,656−3,219×0,290≈0,250
x3=−323−4×0,250−1×0,290≈−0,053
Rappel : L'ordre des inconnues est (x3,x1,x2), donc :
La première composante calculée est x2
La deuxième est x1
La troisième est x3
Solution finale (remise dans l'ordre original (x1,x2,x3)) :
x=x1x2x3≈0,2500,290−0,053
Exemple 2 : Impact du pivotage sur la précision
Cet exemple montre comment le pivotage partiel améliore drastiquement la précision des calculs en arithmétique à précision finie.
Contexte
Considérons un système flottant avec base b=10 et s=4 chiffres significatifs. À chaque opération, le résultat est arrondi à 4 chiffres.
Avec le pivotage partiel, on obtient la solution exacte (1,1,1) malgré l'arithmétique à 4 chiffres !
Comparaison des résultats
Méthode
Solution obtenue
Solution exacte
Erreur relative max
Sans pivotage
(5,000,2,002,0,000)
(1,1,1)
400%
Avec pivotage partiel
(1,000,1,000,1,000)
(1,1,1)
0%
Pourquoi le pivotage fonctionne-t-il ?
Le problème des petits pivots
Quand le pivot est très petit par rapport aux autres éléments :
Multiplicateurs énormes : mij=aij/akk devient très grand
Amplification des erreurs d'arrondi : Multiplier par un grand nombre amplifie les erreurs
Perte de chiffres significatifs : Les petites quantités sont « absorbées » par les grandes
La solution du pivotage
En choisissant le plus grand pivot possible :
Multiplicateurs bornés : ∣mij∣≤1 avec le pivotage partiel
Erreurs contrôlées : Les erreurs d'arrondi ne sont pas amplifiées
Stabilité numérique : Le conditionnement effectif reste raisonnable
💡
Règle pratique
Pivotage partiel : À chaque étape k, chercher le maximum ∣aik∣ pour i≥k et échanger les lignes. Coût négligeable, gain en stabilité énorme.
Pivotage complet : Chercher le maximum dans toute la sous-matrice restante. Plus coûteux mais parfois nécessaire pour des matrices très mal conditionnées.
Résumé
Type de pivotage
Recherche du pivot
Coût
Usage
Aucun
Utilise akk directement
0
Jamais en pratique
Partiel
Max dans la colonne k
O(n2)
Standard (défaut)
Complet
Max dans la sous-matrice
O(n3)
Matrices très mal conditionnées
À retenir : Le pivotage partiel est toujours utilisé en pratique. Son coût est négligeable par rapport au gain en stabilité numérique. Les bibliothèques comme NumPy (np.linalg.solve) et LAPACK l'utilisent systématiquement.