152
5 Systèmes linéaires
Remarque 5.3 La commande cond(A) de MATLAB permet le calcul du
conditionnement de n’importe quelle matrice A, y compris celles qui ne sont
pas symétriques définies positives. Noter qu’il existe plusieurs définitions du
conditionnement d’une matrice. Pour une matrice quelconque A, la commande
cond(A) calcule la valeur K2(A) = A2 · ·A
−1 2, où A2 =
λmax(A T A).
Quand A n’est pas symétrique définie positive, K2(A) peut être très différente
du conditionnement spectral K(A). Pour une matrice creuse A, la commande
condest(A) calcule (à faible coût) une approximation du conditionnement
condest
K1(A) = A1 · ·A
−1 1, où A1 = maxj
n
i=1 |aij| est appelée la norme
1 de A. Il existe d’autres définitions du conditionnement pour les matrices
non symétriques, voir [QSS07, Chapitre 3].
Une preuve plus compliquée donnerait le résultat suivant dans le cas
où A est symétrique définie positive et δA est une matrice symétrique
définie positive “assez petite” pour vérifier λ max (δA) < λ min (A)
x −
x
x
≤
K(A)
1 − λ max (δA)/λ min (A)
λ max (δA)
λ max (A)
+
δb
b
(5.29)
Si A et δA ne sont pas symétriques définies positives, et si δA est telle
que δA 2 A
−1
2 < 1, on a l’estimation suivante
x −
x
x
≤
K 2 (A)
1 − K 2 (A)δA 2 /A 2
δA 2
A 2
+
δb
b
(5.30)
Si K(A) est “petit”, c’est-à-dire de l’ordre de l’unité, on dit que A
est bien conditionnée. Dans ce cas, des erreurs sur les données induisent
des erreurs du même ordre de grandeur sur la solution. Cette propriété
intéressante n’est plus vérifiée par les matrices mal conditionnées.
Exemple 5.10 Pour la matrice de Hilbert introduite dans l’Exemple 5.9,
K(An) est une fonction qui croit rapidement avec n. On a K(A4) > 15000,
et si n > 13 le conditionnement est si grand que MATLAB renvoie un avertissement indiquant que la matrice est “presque singulière”. La croissance de
K(An) est en fait exponentielle : K(An) e
3.5n (voir [Hig02]). Ceci explique
de manière indirecte les mauvais résultats obtenus dans l’Exemple 5.9.
L’inégalité (5.27) peut être reformulée à l’aide du résidu
r = b − A x.
(5.31)
Si
x était la solution exacte, le résidu serait nul. Ainsi, on peut voir
r comme un estimateur de l’erreur x −
x. La qualité de cet estimateur
dépend du conditionnement de A. En effet, en observant que δb = A( x−
x) = A x − b = −r, on déduit de (5.27) que
5 Systèmes linéaires
Remarque 5.3 La commande cond(A) de MATLAB permet le calcul du
conditionnement de n’importe quelle matrice A, y compris celles qui ne sont
pas symétriques définies positives. Noter qu’il existe plusieurs définitions du
conditionnement d’une matrice. Pour une matrice quelconque A, la commande
cond(A) calcule la valeur K2(A) = A2 · ·A
−1 2, où A2 =
λmax(A T A).
Quand A n’est pas symétrique définie positive, K2(A) peut être très différente
du conditionnement spectral K(A). Pour une matrice creuse A, la commande
condest(A) calcule (à faible coût) une approximation du conditionnement
condest
K1(A) = A1 · ·A
−1 1, où A1 = maxj
n
i=1 |aij| est appelée la norme
1 de A. Il existe d’autres définitions du conditionnement pour les matrices
non symétriques, voir [QSS07, Chapitre 3].
Une preuve plus compliquée donnerait le résultat suivant dans le cas
où A est symétrique définie positive et δA est une matrice symétrique
définie positive “assez petite” pour vérifier λ max (δA) < λ min (A)
x −
x
x
≤
K(A)
1 − λ max (δA)/λ min (A)
λ max (δA)
λ max (A)
+
δb
b
(5.29)
Si A et δA ne sont pas symétriques définies positives, et si δA est telle
que δA 2 A
−1
2 < 1, on a l’estimation suivante
x −
x
x
≤
K 2 (A)
1 − K 2 (A)δA 2 /A 2
δA 2
A 2
+
δb
b
(5.30)
Si K(A) est “petit”, c’est-à-dire de l’ordre de l’unité, on dit que A
est bien conditionnée. Dans ce cas, des erreurs sur les données induisent
des erreurs du même ordre de grandeur sur la solution. Cette propriété
intéressante n’est plus vérifiée par les matrices mal conditionnées.
Exemple 5.10 Pour la matrice de Hilbert introduite dans l’Exemple 5.9,
K(An) est une fonction qui croit rapidement avec n. On a K(A4) > 15000,
et si n > 13 le conditionnement est si grand que MATLAB renvoie un avertissement indiquant que la matrice est “presque singulière”. La croissance de
K(An) est en fait exponentielle : K(An) e
3.5n (voir [Hig02]). Ceci explique
de manière indirecte les mauvais résultats obtenus dans l’Exemple 5.9.
L’inégalité (5.27) peut être reformulée à l’aide du résidu
r = b − A x.
(5.31)
Si
x était la solution exacte, le résidu serait nul. Ainsi, on peut voir
r comme un estimateur de l’erreur x −
x. La qualité de cet estimateur
dépend du conditionnement de A. En effet, en observant que δb = A( x−
x) = A x − b = −r, on déduit de (5.27) que
