Le procédé d’orthonormalisation de Gram-Schmidt expliqué simplement

Le procédé d’orthonormalisation de Gram-Schmidt

Le procédé de Gram-Schmidt est un algorithme qui transforme n’importe quelle base d’un espace vectoriel euclidien (muni d’un produit scalaire) en une base orthonormale. L’idée est de « redresser » et de « rétrécir » les vecteurs un par un pour qu’ils soient tous perpendiculaires entre eux et de longueur 1.

L’Algorithme Étape par Étape

Soit $(v_1, v_2, \dots, v_n)$ une base. On veut construire une base orthonormale $(e_1, e_2, \dots, e_n)$.

  1. Premier vecteur : On prend le premier vecteur $v_1$, on le garde tel quel pour la direction, et on le normalise (on le divise par sa propre norme pour qu’il ait une longueur de 1).
    $u_1 = v_1$
    $e_1 = \frac{u_1}{\|u_1\|}$
  2. Deuxième vecteur : On prend $v_2$. On lui retire sa « partie » qui est dans la même direction que $e_1$ (sa projection sur $e_1$). Ce qui reste, $u_2$, est forcément orthogonal à $e_1$. On normalise ensuite $u_2$.
    $u_2 = v_2 – \langle v_2, e_1 \rangle e_1$
    $e_2 = \frac{u_2}{\|u_2\|}$
  3. Troisième vecteur : On prend $v_3$ et on lui retire ses projections sur les vecteurs déjà construits ($e_1$ et $e_2$). Le reste, $u_3$, sera orthogonal à $e_1$ et $e_2$. On le normalise.
    $u_3 = v_3 – \langle v_3, e_1 \rangle e_1 – \langle v_3, e_2 \rangle e_2$
    $e_3 = \frac{u_3}{\|u_3\|}$
  4. On continue… On généralise pour le $k$-ième vecteur :
    $u_k = v_k – \sum_{j=1}^{k-1} \langle v_k, e_j \rangle e_j$
    $e_k = \frac{u_k}{\|u_k\|}$

Exemple 1 : Base de $\mathbb{R}^2$

Soit la base de $\mathbb{R}^2$ donnée par $v_1 = (3, 4)$ et $v_2 = (1, 2)$.

1. Premier vecteur $e_1$ :
$\|v_1\| = \sqrt{3^2 + 4^2} = \sqrt{9+16} = \sqrt{25} = 5$.
$e_1 = \frac{v_1}{\|v_1\|} = (\frac{3}{5}, \frac{4}{5})$.

2. Deuxième vecteur $e_2$ :
D’abord, calculons le vecteur orthogonal $u_2$.
$\langle v_2, e_1 \rangle = 1 \cdot \frac{3}{5} + 2 \cdot \frac{4}{5} = \frac{3+8}{5} = \frac{11}{5}$.
$u_2 = v_2 – \langle v_2, e_1 \rangle e_1 = (1, 2) – \frac{11}{5}(\frac{3}{5}, \frac{4}{5}) = (1, 2) – (\frac{33}{25}, \frac{44}{25}) = (\frac{25-33}{25}, \frac{50-44}{25}) = (-\frac{8}{25}, \frac{6}{25})$.
Maintenant, on normalise $u_2$.
$\|u_2\| = \sqrt{(-\frac{8}{25})^2 + (\frac{6}{25})^2} = \sqrt{\frac{64+36}{625}} = \sqrt{\frac{100}{625}} = \frac{10}{25} = \frac{2}{5}$.
$e_2 = \frac{u_2}{\|u_2\|} = \frac{1}{2/5} (-\frac{8}{25}, \frac{6}{25}) = \frac{5}{2} (-\frac{8}{25}, \frac{6}{25}) = (-\frac{4}{5}, \frac{3}{5})$.

La base orthonormale est $((\frac{3}{5}, \frac{4}{5}), (-\frac{4}{5}, \frac{3}{5}))$.

Exemple 2 : Base de $\mathbb{R}^3$

Soit la base de $\mathbb{R}^3$ : $v_1=(1,1,1)$, $v_2=(1,0,1)$, $v_3=(0,1,1)$.

1. Premier vecteur $e_1$ :
$\|v_1\| = \sqrt{3}$. Donc $e_1 = \frac{1}{\sqrt{3}}(1,1,1)$.

2. Deuxième vecteur $e_2$ :
$\langle v_2, e_1 \rangle = \frac{1}{\sqrt{3}}(1 \cdot 1 + 0 \cdot 1 + 1 \cdot 1) = \frac{2}{\sqrt{3}}$.
$u_2 = (1,0,1) – \frac{2}{\sqrt{3}} \cdot \frac{1}{\sqrt{3}}(1,1,1) = (1,0,1) – \frac{2}{3}(1,1,1) = (\frac{1}{3}, -\frac{2}{3}, \frac{1}{3})$.
$\|u_2\| = \sqrt{\frac{1}{9}+\frac{4}{9}+\frac{1}{9}} = \frac{\sqrt{6}}{3}$.
$e_2 = \frac{3}{\sqrt{6}}(\frac{1}{3}, -\frac{2}{3}, \frac{1}{3}) = \frac{1}{\sqrt{6}}(1, -2, 1)$.

3. Troisième vecteur $e_3$ :
$\langle v_3, e_1 \rangle = \frac{1}{\sqrt{3}}(0+1+1) = \frac{2}{\sqrt{3}}$.
$\langle v_3, e_2 \rangle = \frac{1}{\sqrt{6}}(0-2+1) = -\frac{1}{\sqrt{6}}$.
$u_3 = v_3 – \frac{2}{\sqrt{3}}e_1 – (-\frac{1}{\sqrt{6}})e_2 = (0,1,1) – \frac{2}{3}(1,1,1) + \frac{1}{6}(1,-2,1)$.
$u_3 = (-\frac{2}{3}+\frac{1}{6}, 1-\frac{2}{3}-\frac{2}{6}, 1-\frac{2}{3}+\frac{1}{6}) = (-\frac{3}{6}, 0, \frac{3}{6}) = (-\frac{1}{2}, 0, \frac{1}{2})$.
$\|u_3\| = \sqrt{\frac{1}{4}+\frac{1}{4}} = \frac{\sqrt{2}}{2} = \frac{1}{\sqrt{2}}$.
$e_3 = \sqrt{2}(-\frac{1}{2}, 0, \frac{1}{2}) = \frac{1}{\sqrt{2}}(-1, 0, 1)$.

Exemple 3 : Espace de polynômes

Soit l’espace des polynômes de degré $\le 1$ sur $[-1,1]$, avec le produit scalaire $\langle P, Q \rangle = \int_{-1}^1 P(t)Q(t)dt$. Partons de la base $(1, t)$.

1. Premier vecteur $e_1$ :
Soit $v_1(t) = 1$. $\|v_1\|^2 = \int_{-1}^1 1 \cdot 1 dt = [t]_{-1}^1 = 2$. Donc $\|v_1\|=\sqrt{2}$.
$e_1(t) = \frac{1}{\sqrt{2}}$.

2. Deuxième vecteur $e_2$ :
Soit $v_2(t) = t$.
$\langle v_2, e_1 \rangle = \int_{-1}^1 t \cdot \frac{1}{\sqrt{2}} dt = \frac{1}{\sqrt{2}}[\frac{t^2}{2}]_{-1}^1 = 0$. Les vecteurs sont déjà orthogonaux !
$u_2(t) = v_2(t) – 0 \cdot e_1(t) = t$.
$\|u_2\|^2 = \int_{-1}^1 t^2 dt = [\frac{t^3}{3}]_{-1}^1 = \frac{1}{3} – (-\frac{1}{3}) = \frac{2}{3}$. Donc $\|u_2\| = \sqrt{\frac{2}{3}}$.
$e_2(t) = \frac{t}{\sqrt{2/3}} = \sqrt{\frac{3}{2}} t$.

La base orthonormale est $(\frac{1}{\sqrt{2}}, \sqrt{\frac{3}{2}}t)$. Ce sont les deux premiers polynômes de Legendre (à un facteur près).

Pourquoi est-ce si utile ?

Les bases orthonormales simplifient énormément les calculs. Par exemple, pour trouver les coordonnées d’un vecteur $v$ dans une base orthonormale $(e_1, \dots, e_n)$, pas besoin de résoudre un système ! Les coordonnées sont simplement les produits scalaires :
$v = \langle v, e_1 \rangle e_1 + \langle v, e_2 \rangle e_2 + \dots + \langle v, e_n \rangle e_n$.
C’est aussi le point de départ de nombreux algorithmes numériques, comme la décomposition QR d’une matrice.