Retourner au courant

Conditionnement d'une Matrice

Cet article présente ce qu'est le conditionnement d'une matrice inversible et sa norme infinie, illustré par deux exemples.

FR

Définition

Un système linéaire peut s’écrire sous forme de matrice par une équation du type AX=B. On dit de la matrice A qu’elle est mal conditionnée si une petite variation de B entraîne une grande variation de X.

Pour une matrice inversible A, sa fonction de conditionnement est :

κ(A)=AA1\kappa(A)=\Vert A \Vert \Vert A^{-1} \Vert

Note : Plus κ\kappa est élevé, plus la matrice A est mal conditionnée.

Exemple 1

Pour comprendre ce qu’est le conditionnement, prenons un exemple de système linéaire AX=YAX=Y :

Matrice A et sa solution

Soit une matrice A :

A=[1078775658610975910],Y=[32233331]A=\begin{bmatrix} 10 & 7 & 8 & 7 \cr 7 & 5 & 6 & 5 \cr 8 & 6 & 10 & 9 \cr 7 & 5 & 9 & 10 \end{bmatrix}, Y=\begin{bmatrix}32 \cr 23 \cr 33 \cr 31\end{bmatrix}

La solution de ce système sera donc :

X=[1111]X = \begin{bmatrix}1\cr1\cr1\cr1\end{bmatrix}

Exemple de variation

Il est intéressant de remarquer que si on varie faiblement YY :

ΔY=[0.10.10.10.1]\Delta_Y=\begin{bmatrix}0.1\cr-0.1\cr0.1\cr-0.1\end{bmatrix}

Nous obtenons :

X=[9.212.64.51.1]X=\begin{bmatrix}9.2\cr-12.6\cr4.5\cr-1.1\end{bmatrix}

Une petite variation ΔY\Delta_Y sur YY implique une grande variation de XX.
On dira de la matrice AA qu’elle est “mal conditionnée”.

Calcul du conditionnement

La fonction de conditionnement d’une matrice AA est κ(A)=AA1\kappa(A)=\Vert A \Vert \Vert A^{-1} \Vert, AA ayant un déterminant différent de 0 et donc étant inversible. Prenons la norme infini (avec n=dimAn = \dim A)

κ(A)=AA1=max1inj=1nAi,j×max1inj=1n(A1)i,j\kappa_\infty(A)=\Vert A \Vert_{\infty} \Vert A^{-1} \Vert_{\infty} = \max_{1\leq i \leq n} \sum^n_{j=1}|A_{i,j}| \times \max_{1\leq i \leq n} \sum^n_{j=1}|(A^{-1})_{i,j}|

Dans cet exemple: κ(A)=33×136=4488\kappa(A)=33 \times 136 = 4488.

En python

Pour calculer le conditionnement rapidement en python, je vous propose de faire :

import numpy as np 
= np.array([[10,7,8,7],[7,5,6,5],[8,6,10,9],[7,5,9,10]])
print(np.linalg.cond(A,np.inf))

Vous devriez obtenir le même résultat !

Pour en savoir plus sur le conditionnement : Python avec Numpy.

Exemple 2

Pour prendre un autre exemple: La “matrice B” est bien conditionnée:

Soit la matrice inversible B :

B=[17217515861097591]B=\begin{bmatrix}1&7&2&1\cr7&5&1&5\cr8&6&10&9\cr7&5&9&1\end{bmatrix}

Nous avons : κ(B)=33×30367414.8353\kappa_\infty(B)=33\times \frac{303}{674}\approx14.8353.

Cette matrice est relativement bien conditionnée en comparaison avec la matrice AA.

Nous pouvons donc affirmer que pour un système linéaire BX=YBX=Y, une petite variation de YY n’engendra pas une grosse variation XX.

Sources

  1. Conditionnement d’une matrice - bibmath.net
  2. NORMES ET CONDITIONNEMENT D’UNE MATRICE
  3. Conditionnement d’une matrice