Normes vectorielles et matricielles

Objectifs d'apprentissage

À la fin de cette leçon, vous serez en mesure de :

  • Calculer différentes normes vectorielles (1, 2, infinie)
  • Comprendre les propriétés axiomatiques des normes
  • Calculer les normes matricielles induites
  • Vérifier la compatibilité entre normes vectorielles et matricielles
  • Interpréter géométriquement les différentes normes

Prérequis

  • Algèbre linéaire de base
  • Notion de distance

Pourquoi les normes ?

En calcul numérique, nous avons constamment besoin de mesurer des quantités :

  • Quelle est la taille d'une erreur ? Si notre solution approchée est x=(2,001,3,002)Tx^* = (2{,}001, 3{,}002)^T au lieu de x=(2,3)Tx = (2, 3)^T, l'erreur est-elle acceptable ?
  • Est-ce qu'un algorithme converge ? Les itérations successives se rapprochent-elles de la solution ?
  • À quel point une matrice amplifie-t-elle les erreurs ? Si les données d'entrée ont une petite erreur, l'erreur de sortie sera-t-elle grande ?

Les normes généralisent la notion de « longueur » ou « taille » à des vecteurs et matrices de dimension quelconque. Elles permettent de répondre rigoureusement à ces questions.

💡

Analogie

Une norme est comme une règle graduée pour mesurer des vecteurs. Tout comme on peut mesurer une distance en kilomètres, en miles ou en pas, il existe plusieurs normes différentes, chacune adaptée à certains contextes.


Normes vectorielles

Définition axiomatique

Une norme sur Rn\mathbb{R}^n est une fonction :RnR\|\cdot\| : \mathbb{R}^n \to \mathbb{R} vérifiant :

PropriétéFormuleSignification
Positivitéx0\|x\| \geq 0Toujours positive ou nulle
Séparationx=0x=0\|x\| = 0 \Leftrightarrow x = 0Nulle seulement pour le vecteur nul
Homogénéitéλx=λx\|\lambda x\| = |\lambda| \|x\|Mise à l'échelle
Inégalité triangulairex+yx+y\|x + y\| \leq \|x\| + \|y\|Le chemin direct est le plus court

Les normes p

La famille des normes p est définie par :

xp=(i=1nxip)1/p,p1\|x\|_p = \left( \sum_{i=1}^{n} |x_i|^p \right)^{1/p}, \quad p \geq 1

Normes courantes

Les trois normes les plus utilisées en pratique correspondent à p=1,2,p = 1, 2, \infty.

Norme 1 (Manhattan, taxicab) :

x1=i=1nxi=x1+x2++xn\|x\|_1 = \sum_{i=1}^{n} |x_i| = |x_1| + |x_2| + \cdots + |x_n|
💡

Intuition

Imaginez un taxi à Manhattan qui ne peut se déplacer que le long des rues (horizontalement) et des avenues (verticalement). La norme 1 mesure la distance totale parcourue : on additionne les déplacements dans chaque direction.

Norme 2 (euclidienne) :

x2=i=1nxi2=x12+x22++xn2\|x\|_2 = \sqrt{\sum_{i=1}^{n} x_i^2} = \sqrt{x_1^2 + x_2^2 + \cdots + x_n^2}
💡

Intuition

C'est la distance « à vol d'oiseau », celle qu'on mesure avec une règle. C'est l'extension du théorème de Pythagore à nn dimensions. La plus naturelle et la plus utilisée.

Norme infinie (max, Tchebychev) :

x=maxixi\|x\|_\infty = \max_{i} |x_i|
💡

Intuition

La norme infinie ne retient que la plus grande composante (en valeur absolue). Elle mesure « l'excursion maximale » du vecteur. Elle est utile quand on veut contrôler l'erreur maximale sur chaque composante.

Boules unités : interprétation géométrique

La boule unité d'une norme est l'ensemble des vecteurs de norme inférieure ou égale à 1 :

Bp={xRn:xp1}B_p = \{ x \in \mathbb{R}^n : \|x\|_p \leq 1 \}

La forme de la boule unité révèle le « caractère » de chaque norme :

  • Norme 1 : Losange (diamant). Favorise les vecteurs « sparse » (peu de composantes non nulles).
  • Norme 2 : Cercle. Traite toutes les directions de manière égale.
  • Norme ∞ : Carré. Limite chaque composante individuellement.

Exemples de calcul

Pour x=(3,4)Tx = (3, -4)^T :

NormeCalculRésultat
x1\|x\|_13+4|3| + |-4|7
x2\|x\|_232+(4)2\sqrt{3^2 + (-4)^2}5
x\|x\|_\inftymax(3,4)\max(|3|, |-4|)4
normes_vectorielles.pypython
import numpy as np

def norme_vecteur(x, p=2):
  """
  Calcule la norme p du vecteur x.
  """
  if p == np.inf:
      return np.max(np.abs(x))
  else:
      return np.sum(np.abs(x) ** p) ** (1/p)

# Exemple
x = np.array([3, -4])

print(f"||x||_1   = {norme_vecteur(x, 1)}")
print(f"||x||_2   = {norme_vecteur(x, 2)}")
print(f"||x||_inf = {norme_vecteur(x, np.inf)}")

Équivalence des normes

💡

Théorème

En dimension finie, toutes les normes sont équivalentes : pour deux normes a\|\cdot\|_a et b\|\cdot\|_b, il existe des constantes c,C>0c, C > 0 telles que :

cxaxbCxac \|x\|_a \leq \|x\|_b \leq C \|x\|_a

Pour les normes 1, 2 et infinie :

xx2x1nx\|x\|_\infty \leq \|x\|_2 \leq \|x\|_1 \leq n \|x\|_\infty

Normes matricielles

Les normes vectorielles mesurent la « taille » des vecteurs. Mais comment mesurer la « taille » d'une matrice ?

Une matrice AA transforme des vecteurs : elle prend un vecteur xx et produit AxAx. La question naturelle est : de combien la matrice peut-elle amplifier un vecteur ?

Norme induite (naturelle)

La norme matricielle induite par une norme vectorielle est :

A=maxx0Axx=maxx=1Ax\|A\| = \max_{x \neq 0} \frac{\|A x\|}{\|x\|} = \max_{\|x\| = 1} \|A x\|
💡

Interprétation

La norme induite mesure le facteur d'amplification maximal : parmi tous les vecteurs possibles, quel est celui qui est le plus étiré par la matrice ? Le ratio Ax/x\|Ax\| / \|x\| donne le facteur d'étirement, et la norme matricielle est le maximum de ce ratio.

Exemple concret : Considérons A=(2003)A = \begin{pmatrix} 2 & 0 \\ 0 & 3 \end{pmatrix}. Cette matrice étire les vecteurs par 2 dans la direction xx et par 3 dans la direction yy. Le facteur d'amplification maximal est donc 3 (atteint pour x=(0,1)Tx = (0, 1)^T).

Formules pour les normes induites

Contrairement à la définition (qui nécessite un maximum sur tous les vecteurs), les normes induites ont des formules explicites simples :

Norme 1 matricielle :

A1=maxji=1maij(max des sommes de colonnes)\|A\|_1 = \max_{j} \sum_{i=1}^{m} |a_{ij}| \quad \text{(max des sommes de colonnes)}
💡

Astuce mnémotechnique

Norme 1 = somme sur les colonnes (le 1 est vertical comme une colonne).

Norme infinie matricielle :

A=maxij=1naij(max des sommes de lignes)\|A\|_\infty = \max_{i} \sum_{j=1}^{n} |a_{ij}| \quad \text{(max des sommes de lignes)}
💡

Astuce mnémotechnique

Norme = somme sur les lignes (le symbole ∞ est horizontal comme une ligne).

Norme 2 matricielle (spectrale) :

A2=σmax(A)=λmax(ATA)\|A\|_2 = \sigma_{\max}(A) = \sqrt{\lambda_{\max}(A^T A)}

σmax\sigma_{\max} est la plus grande valeur singulière de AA.

Exemple de calcul détaillé

Pour A=(1234)A = \begin{pmatrix} 1 & -2 \\ 3 & 4 \end{pmatrix} :

Norme 1 : On calcule la somme des valeurs absolues de chaque colonne :

  • Colonne 1 : 1+3=4|1| + |3| = 4
  • Colonne 2 : 2+4=6|-2| + |4| = 6
  • A1=max(4,6)=6\|A\|_1 = \max(4, 6) = 6

Norme ∞ : On calcule la somme des valeurs absolues de chaque ligne :

  • Ligne 1 : 1+2=3|1| + |-2| = 3
  • Ligne 2 : 3+4=7|3| + |4| = 7
  • A=max(3,7)=7\|A\|_\infty = \max(3, 7) = 7

Propriétés des normes matricielles

PropriétéFormule
Sous-multiplicativitéABAB\|A \cdot B\| \leq \|A\| \cdot \|B\|
CompatibilitéAxAx\|A \cdot x\| \leq \|A\| \cdot \|x\|
Norme de l'identitéI=1\|I\| = 1

Normes consistantes et compatibles

Ces deux notions sont fondamentales pour l'analyse numérique. Elles garantissent que les normes « se comportent bien » lors des opérations matricielles.

Norme consistante (sous-multiplicative)

Une norme matricielle \|\cdot\| est consistante (ou sous-multiplicative) si :

ABAB\|A \cdot B\| \leq \|A\| \cdot \|B\|

pour toutes matrices AA et BB de dimensions compatibles.

💡

Pourquoi c'est important ?

La consistance garantit que les erreurs ne « explosent » pas lors des multiplications matricielles successives. Si on calcule A1A2AkA_1 \cdot A_2 \cdot \ldots \cdot A_k, la norme du produit est bornée par le produit des normes :

A1A2AkA1A2Ak\|A_1 A_2 \cdots A_k\| \leq \|A_1\| \cdot \|A_2\| \cdots \|A_k\|

Exemple : Les normes induites (1,2,\|\cdot\|_1, \|\cdot\|_2, \|\cdot\|_\infty) et la norme de Frobenius sont toutes consistantes.

Norme compatible (avec une norme vectorielle)

Une norme matricielle M\|\cdot\|_M est compatible avec une norme vectorielle V\|\cdot\|_V si :

AxVAMxV\|A \cdot x\|_V \leq \|A\|_M \cdot \|x\|_V

pour toute matrice AA et tout vecteur xx.

💡

Pourquoi c'est important ?

La compatibilité permet de borner l'erreur de sortie en fonction de l'erreur d'entrée. Si xx a une erreur δx\delta x, alors l'erreur sur AxAx est bornée :

AδxAδx\|A \cdot \delta x\| \leq \|A\| \cdot \|\delta x\|

C'est la base de l'analyse d'erreur dans les systèmes linéaires.

Propriété clé : Les normes induites sont automatiquement compatibles avec la norme vectorielle qui les a induites. C'est leur définition même !

Tableau récapitulatif

Norme matricielleConsistante ?Compatible avec
A1\|A\|_1 (induite)✓ Ouix1\|x\|_1
A2\|A\|_2 (induite)✓ Ouix2\|x\|_2
A\|A\|_\infty (induite)✓ Ouix\|x\|_\infty
AF\|A\|_F (Frobenius)✓ Ouix2\|x\|_2
⚠️

Attention aux mélanges !

Il faut utiliser des normes compatibles ensemble. Par exemple, on ne peut pas écrire Ax1Ax1\|Ax\|_1 \leq \|A\|_\infty \cdot \|x\|_1 car \|\cdot\|_\infty n'est pas compatible avec 1\|\cdot\|_1.

En pratique, on choisit une norme vectorielle (souvent 2\|\cdot\|_2) et on utilise la norme matricielle induite correspondante.

Norme de Frobenius

La norme de Frobenius est une norme matricielle non induite mais extrêmement utilisée en pratique. Elle généralise la norme euclidienne aux matrices : c'est simplement la racine carrée de la somme des carrés de tous les éléments.

AF=i=1mj=1naij2=trace(ATA)\|A\|_F = \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij}^2} = \sqrt{\text{trace}(A^T A)}
💡

Intuition

Si on « aplatit » la matrice en un seul vecteur contenant tous ses éléments ligne par ligne, la norme de Frobenius est simplement la norme euclidienne de ce vecteur. C'est pourquoi on l'appelle parfois la norme euclidienne matricielle.

Exemple de calcul

Pour A=(1234)A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} :

AF=12+22+32+42=1+4+9+16=305,48\|A\|_F = \sqrt{1^2 + 2^2 + 3^2 + 4^2} = \sqrt{1 + 4 + 9 + 16} = \sqrt{30} \approx 5{,}48

À comparer avec :

  • A1=max(4,6)=6\|A\|_1 = \max(4, 6) = 6
  • A=max(3,7)=7\|A\|_\infty = \max(3, 7) = 7
  • A25,46\|A\|_2 \approx 5{,}46 (plus grande valeur singulière)

Propriétés

💡

Propriétés de Frobenius

  • Consistante : ABFAFBF\|AB\|_F \leq \|A\|_F \|B\|_F
  • Compatible avec 2\|\cdot\|_2 : Ax2AFx2\|Ax\|_2 \leq \|A\|_F \|x\|_2
  • Facile à calculer : O(mn)O(mn) opérations (pas besoin de valeurs propres)
  • Invariante par rotation : QAF=AQF=AF\|QA\|_F = \|AQ\|_F = \|A\|_F pour QQ orthogonale
  • Lien avec les valeurs singulières : AF=σ12+σ22++σr2\|A\|_F = \sqrt{\sigma_1^2 + \sigma_2^2 + \cdots + \sigma_r^2}

Relation avec la norme spectrale :

A2AFrA2\|A\|_2 \leq \|A\|_F \leq \sqrt{r} \, \|A\|_2

r=rang(A)r = \text{rang}(A). L'égalité A2=AF\|A\|_2 = \|A\|_F est atteinte si et seulement si AA est de rang 1.

Pourquoi utiliser Frobenius plutôt que les normes induites ?

CritèreNorme spectrale ‖A‖₂Norme de Frobenius ‖A‖_F
CalculCoûteux : nécessite SVD ou valeurs propres O(n3)O(n^3)Simple : somme des carrés O(n2)O(n^2)
DifférentiabilitéNon différentiable en généralDifférentiable partout (sauf en 0)
InterprétationAmplification maximale« Taille totale » de la matrice

Applications pratiques de la norme de Frobenius

1. Approximation de rang faible (compression de données)

En apprentissage automatique et traitement d'images, on cherche souvent à approximer une matrice AA par une matrice A^\hat{A} de rang k<rk < r. Le problème d'optimisation est :

minrang(A^)=kAA^F\min_{\text{rang}(\hat{A}) = k} \|A - \hat{A}\|_F

La solution est donnée par la SVD tronquée : on garde les kk plus grandes valeurs singulières. C'est la base de la compression d'images et de la réduction de dimensionnalité (PCA).

2. Régularisation en apprentissage automatique

Dans la régression ridge et les réseaux de neurones, on pénalise la norme de Frobenius des poids pour éviter le surapprentissage :

Ltotal=Ldonneˊes+λWF2\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{données}} + \lambda \|W\|_F^2

WW est la matrice des poids et λ\lambda le coefficient de régularisation.

3. Distance entre matrices

La norme de Frobenius définit naturellement une distance entre matrices :

d(A,B)=ABFd(A, B) = \|A - B\|_F

Utile pour mesurer à quel point deux matrices sont « proches », par exemple :

  • Comparer une matrice de covariance empirique à une matrice théorique
  • Mesurer l'erreur d'une factorisation matricielle
  • Évaluer la convergence d'un algorithme itératif sur matrices

4. Sensibilité numérique

Pour analyser comment une perturbation δA\delta A affecte un calcul matriciel, on utilise souvent :

δAFAF\frac{\|\delta A\|_F}{\|A\|_F}

comme mesure de l'erreur relative sur la matrice.


Calcul en Python

normes_matricielles.pypython
import numpy as np

def norme_matrice_1(A):
  """Norme 1 matricielle : max des sommes de colonnes."""
  return np.max(np.sum(np.abs(A), axis=0))

def norme_matrice_inf(A):
  """Norme infinie matricielle : max des sommes de lignes."""
  return np.max(np.sum(np.abs(A), axis=1))

def norme_matrice_2(A):
  """Norme 2 matricielle (spectrale)."""
  return np.max(np.linalg.svd(A, compute_uv=False))

def norme_frobenius(A):
  """Norme de Frobenius."""
  return np.sqrt(np.sum(A ** 2))

# Exemple
A = np.array([[1, 2],
            [3, 4]])

print(f"||A||_1   = {norme_matrice_1(A)}")
print(f"||A||_inf = {norme_matrice_inf(A)}")
print(f"||A||_2   = {norme_matrice_2(A):.4f}")
print(f"||A||_F   = {norme_frobenius(A):.4f}")

# Avec NumPy
print(f"\nNumPy:")
print(f"||A||_1   = {np.linalg.norm(A, 1)}")
print(f"||A||_inf = {np.linalg.norm(A, np.inf)}")
print(f"||A||_2   = {np.linalg.norm(A, 2):.4f}")
print(f"||A||_F   = {np.linalg.norm(A, 'fro'):.4f}")

Applications

Mesure des erreurs

Pour mesurer l'erreur entre une solution approchée xx^* et la solution exacte xx :

  • Erreur absolue : xx\|x - x^*\|
  • Erreur relative : xxx\frac{\|x - x^*\|}{\|x\|}

Exemple : On résout un système et on obtient x=(2.001,2.998,4.002)Tx^* = (2.001, 2.998, 4.002)^T au lieu de x=(2,3,4)Tx = (2, 3, 4)^T.

L'erreur est e=xx=(0.001,0.002,0.002)Te = x - x^* = (-0.001, 0.002, -0.002)^T.

  • e1=0.001+0.002+0.002=0.005\|e\|_1 = 0.001 + 0.002 + 0.002 = 0.005
  • e2=0.0012+0.0022+0.00220.003\|e\|_2 = \sqrt{0.001^2 + 0.002^2 + 0.002^2} \approx 0.003
  • e=max(0.001,0.002,0.002)=0.002\|e\|_\infty = \max(0.001, 0.002, 0.002) = 0.002

L'erreur relative (norme 2) est : e2/x2=0.003/290.06%\|e\|_2 / \|x\|_2 = 0.003 / \sqrt{29} \approx 0.06\%

Quelle norme choisir ?

NormeUtilisation typique
1\|\cdot\|_1Favorise les solutions « sparse » (peu de composantes non nulles). Utilisée en régression LASSO.
2\|\cdot\|_2Choix par défaut. Correspond à la distance euclidienne intuitive.
\|\cdot\|_\inftyQuand on veut borner l'erreur maximale sur chaque composante.

Convergence d'algorithmes

Un algorithme itératif converge si x(k+1)x(k)0\|x^{(k+1)} - x^{(k)}\| \to 0.

Exemple : La méthode de Jacobi pour résoudre Ax=bAx = b produit une suite x(0),x(1),x(2),x^{(0)}, x^{(1)}, x^{(2)}, \ldots. On s'arrête quand x(k+1)x(k)<ε\|x^{(k+1)} - x^{(k)}\| < \varepsilon pour une tolérance ε\varepsilon choisie (par exemple 10810^{-8}).

Conditionnement (prochaine leçon)

Le nombre de condition utilise les normes pour mesurer la sensibilité d'un système aux perturbations :

κ(A)=AA1\kappa(A) = \|A\| \cdot \|A^{-1}\|
  • Si κ(A)1\kappa(A) \approx 1 : le système est bien conditionné, les erreurs restent petites.
  • Si κ(A)1\kappa(A) \gg 1 : le système est mal conditionné, de petites erreurs dans bb peuvent causer de grandes erreurs dans xx.

Remarques sur les normes

Deux propriétés importantes découlent de la sous-multiplicativité des normes matricielles.

1. La norme de l'identité est toujours ≥ 1

Pour toute matrice AA et la matrice identité II :

A=IAIA\|A\| = \|I \cdot A\| \leq \|I\| \cdot \|A\|

En divisant par A\|A\| (pour A0A \neq 0), on obtient :

I1\|I\| \geq 1
💡

Note

Pour les normes induites, on a exactement I=1\|I\| = 1 (le maximum est atteint pour tout vecteur unitaire). Pour d'autres normes comme Frobenius, IF=n\|I\|_F = \sqrt{n} en dimension nn.

2. La norme de l'inverse est bornée inférieurement

Pour une matrice inversible AA, en utilisant AA1=IA \cdot A^{-1} = I :

1I=AA1AA11 \leq \|I\| = \|A \cdot A^{-1}\| \leq \|A\| \cdot \|A^{-1}\|

En divisant par A\|A\| :

A11A\|A^{-1}\| \geq \frac{1}{\|A\|}
💡

Interprétation

Si une matrice AA « réduit » les vecteurs (petite norme), son inverse les « amplifie » nécessairement (grande norme). On ne peut pas avoir une matrice et son inverse qui réduisent toutes deux les vecteurs.


Résumé

TypeNormeFormule
Vecteurx1\|x\|_1Somme des valeurs absolues
Vecteurx2\|x\|_2Distance euclidienne
Vecteurx\|x\|_\inftyMaximum des valeurs absolues
MatriceA1\|A\|_1Max somme colonnes
MatriceA\|A\|_\inftyMax somme lignes
MatriceA2\|A\|_2Plus grande valeur singulière
MatriceAF\|A\|_FRacine de la somme des carrés

Propriété clé de compatibilité : AxAx\|A x\| \leq \|A\| \cdot \|x\|


Pour aller plus loin

La prochaine leçon utilisera les normes pour définir le conditionnement d'une matrice, qui mesure la sensibilité d'un système linéaire aux perturbations.