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.

Logo Devmath
devmath

This article has been written by Robin Pourtaud ([email protected]) and published on April 11, 2020.
The content of this article is licensed under CC BY NC 4.0 : You can freely share and adapt the content for non-commercial purposes as long as you give appropriate credit and provide a link to the license. In my case, the link to the original article is enough. Confidentiality if relevant: https://devmath.fr/page/confidentialite/

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 :

$$\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=Y$ :

Matrice A et sa solution

Soit une matrice A :

$$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 = \begin{bmatrix}1\cr1\cr1\cr1\end{bmatrix}$$

Exemple de variation

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

$$\Delta_Y=\begin{bmatrix}0.1\cr-0.1\cr0.1\cr-0.1\end{bmatrix}$$

Nous obtenons :

$$X=\begin{bmatrix}9.2\cr-12.6\cr4.5\cr-11\end{bmatrix}$$

Une petite variation $\Delta_Y$ sur $Y$ implique une grande variation de $X$.
On dira de la matrice $A$ qu’elle est “mal conditionnée”.

Calcul du conditionnement

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

$$\kappa(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_{i,j}^{-1}|$$

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

En python

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

import numpy as np 
A = 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=\begin{bmatrix}1&7&2&1\cr7&5&1&5\cr8&6&10&9\cr7&5&9&1\end{bmatrix}$$

Nous avons : $\kappa(B)=33\times 0.4496=14.8368$

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

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

Sources

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