Le procédé de Gram-Schmidt est un algorithme fondamental de l’algèbre linéaire permettant de construire, à partir d’une famille libre de vecteurs d’un espace préhilbertien, une nouvelle famille orthonormée qui engendre le même sous-espace vectoriel. Cet outil est indispensable pour la construction de bases orthonormées.

Contexte : Espaces Préhilbertiens

L’algorithme de Gram-Schmidt s’applique dans le cadre des espaces préhilbertiens, c’est-à-dire des espaces vectoriels munis d’un produit scalaire.

Produit Scalaire et Norme

Soit $E$ un espace vectoriel sur le corps $\mathbb{K}$ (où $\mathbb{K}=\mathbb{R}$ ou $\mathbb{C}$). Un produit scalaire est une application $\langle \cdot, \cdot \rangle : E \times E \to \mathbb{K}$ qui est :

  • Linéaire à gauche : $\langle \lambda u + v, w \rangle = \lambda \langle u, w \rangle + \langle v, w \rangle$
  • Hermitienne (ou symétrique si $\mathbb{K}=\mathbb{R}$): $\langle u, v \rangle = \overline{\langle v, u \rangle}$
  • Définie positive : $\langle u, u \rangle \ge 0$ et $\langle u, u \rangle = 0 \iff u = 0_E$

La norme associée à un vecteur $u$ est définie par $ \|u\| = \sqrt{\langle u, u \rangle} $.

Familles Orthogonales et Orthonormées

Une famille de vecteurs $(v_1, \dots, v_p)$ est dite orthogonale si ses vecteurs sont deux à deux orthogonaux :

$$ \forall i \neq j, \quad \langle v_i, v_j \rangle = 0 $$

Elle est dite orthonormée (ou orthonormale) si elle est orthogonale et si chaque vecteur est de norme 1 :

$$ \forall i, j, \quad \langle v_i, v_j \rangle = \delta_{ij} = \begin{cases} 1 & \text{si } i=j \\ 0 & \text{si } i \neq j \end{cases} $$

Toute famille orthogonale de vecteurs non nuls est libre.

Théorème et Algorithme de Gram-Schmidt

Le théorème formalise l’existence et l’unicité (à des facteurs de phase près) de la base orthonormée construite.

Énoncé du Théorème

Soit $E$ un espace préhilbertien. Soit $(u_1, u_2, \dots, u_p)$ une famille libre de vecteurs de $E$.

Il existe une unique famille orthonormée $(e_1, e_2, \dots, e_p)$ telle que :

  1. Pour tout $k \in \{1, \dots, p\}$, $\text{Vect}(e_1, \dots, e_k) = \text{Vect}(u_1, \dots, u_k)$.
  2. Pour tout $k \in \{1, \dots, p\}$, $\langle u_k, e_k \rangle > 0$.

La deuxième condition assure l’unicité. Sans elle, on peut changer chaque $e_k$ en $-e_k$.

Construction Algorithmique

Le procédé se déroule en deux étapes : orthogonalisation puis normalisation.

Étape 1 : Orthogonalisation. On construit une base orthogonale $(v_1, \dots, v_p)$.

$$ v_1 = u_1 $$ $$ v_2 = u_2 – \text{proj}_{v_1}(u_2) = u_2 – \frac{\langle u_2, v_1 \rangle}{\|v_1\|^2} v_1 $$

Et de manière générale, pour $k \in \{2, \dots, p\}$ :

$$ v_k = u_k – \sum_{j=1}^{k-1} \text{proj}_{v_j}(u_k) = u_k – \sum_{j=1}^{k-1} \frac{\langle u_k, v_j \rangle}{\|v_j\|^2} v_j $$

Étape 2 : Normalisation. On normalise chaque vecteur de la base orthogonale.

$$ e_k = \frac{v_k}{\|v_k\|} \quad \text{pour } k=1, \dots, p. $$

Démonstration du Procédé de Gram-Schmidt

Preuve :

Nous allons prouver par récurrence sur $k \in \{1, \dots, p\}$ l’hypothèse $H_k$ : « La famille $(e_1, \dots, e_k)$ est orthonormée et $\text{Vect}(e_1, \dots, e_k) = \text{Vect}(u_1, \dots, u_k)$ ». Pour la construction, nous utilisons directement la formule avec les vecteurs $e_j$ déjà construits, ce qui est équivalent.

Initialisation ($k=1$) :

On pose $v_1 = u_1$. La famille $(u_i)$ étant libre, $u_1 \neq 0$, donc $v_1 \neq 0$ et $\|v_1\| \neq 0$.

On définit $e_1 = \frac{v_1}{\|v_1\|} = \frac{u_1}{\|u_1\|}$. La famille $(e_1)$ est bien orthonormée. De plus, $\text{Vect}(e_1) = \text{Vect}(u_1)$. $H_1$ est vraie.

Hérédité :

Supposons $H_k$ vraie pour un $k \in \{1, \dots, p-1\}$. On construit $(e_1, \dots, e_k)$ orthonormée telle que $\text{Vect}(e_1, \dots, e_k) = \text{Vect}(u_1, \dots, u_k)$.

Définissons un vecteur auxiliaire $v_{k+1}$ :

$$ v_{k+1} = u_{k+1} – \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle e_j $$

Ce vecteur est non nul. En effet, si $v_{k+1} = 0$, alors $u_{k+1} = \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle e_j \in \text{Vect}(e_1, \dots, e_k)$. Par l’hypothèse de récurrence, $\text{Vect}(e_1, \dots, e_k) = \text{Vect}(u_1, \dots, u_k)$. Ceci impliquerait que $u_{k+1}$ est une combinaison linéaire de $(u_1, \dots, u_k)$, ce qui contredit la liberté de la famille $(u_1, \dots, u_{k+1})$. Donc $v_{k+1} \neq 0$.

Montrons que $v_{k+1}$ est orthogonal à chaque $e_i$ pour $i \in \{1, \dots, k\}$.

$$ \langle v_{k+1}, e_i \rangle = \left\langle u_{k+1} – \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle e_j, e_i \right\rangle $$

Par linéarité du produit scalaire :

$$ \langle v_{k+1}, e_i \rangle = \langle u_{k+1}, e_i \rangle – \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle \langle e_j, e_i \rangle $$

Comme la famille $(e_1, \dots, e_k)$ est orthonormée, $\langle e_j, e_i \rangle = \delta_{ij}$. La somme se réduit à un seul terme pour $j=i$.

$$ \langle v_{k+1}, e_i \rangle = \langle u_{k+1}, e_i \rangle – \langle u_{k+1}, e_i \rangle \cdot 1 = 0 $$

On pose alors $e_{k+1} = \frac{v_{k+1}}{\|v_{k+1}\|}$. Par construction, $\|e_{k+1}\|=1$ et $e_{k+1}$ est orthogonal à tous les $e_i$ pour $i \le k$. La famille $(e_1, \dots, e_{k+1})$ est donc orthonormée.

Enfin, vérifions l’égalité des sous-espaces :

$e_{k+1}$ est une combinaison linéaire de $u_{k+1}$ et de $(e_1, \dots, e_k)$. Par $H_k$, il est donc dans $\text{Vect}(u_{k+1}, u_1, \dots, u_k)$. Ainsi, $\text{Vect}(e_1, \dots, e_{k+1}) \subseteq \text{Vect}(u_1, \dots, u_{k+1})$.

Réciproquement, $u_{k+1} = v_{k+1} + \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle e_j = \|v_{k+1}\| e_{k+1} + \sum_{j=1}^{k} \langle u_{k+1}, e_j \rangle e_j$. Donc $u_{k+1} \in \text{Vect}(e_1, \dots, e_{k+1})$. Comme on a aussi $\text{Vect}(u_1, \dots, u_k) = \text{Vect}(e_1, \dots, e_k)$, on en déduit que $\text{Vect}(u_1, \dots, u_{k+1}) \subseteq \text{Vect}(e_1, \dots, e_{k+1})$.

L’égalité des sous-espaces est démontrée. $H_{k+1}$ est vraie.

Par récurrence, le théorème est prouvé pour $k=p$. $\blacksquare$

Exemple d’Application dans $\mathbb{R}^3$

Appliquons le procédé de Gram-Schmidt à la base de $\mathbb{R}^3$ constituée des vecteurs :

$$ u_1 = (1, 1, 0), \quad u_2 = (1, 0, 1), \quad u_3 = (0, 1, 1) $$

On utilise le produit scalaire canonique $\langle x, y \rangle = x^T y$.

Calcul de $e_1$

$$ v_1 = u_1 = (1, 1, 0) $$ $$ \|v_1\|^2 = 1^2 + 1^2 + 0^2 = 2 $$ $$ e_1 = \frac{v_1}{\|v_1\|} = \frac{1}{\sqrt{2}}(1, 1, 0) $$

Calcul de $e_2$

On calcule d’abord $v_2$.

$$ \langle u_2, v_1 \rangle = \langle (1, 0, 1), (1, 1, 0) \rangle = 1 \cdot 1 + 0 \cdot 1 + 1 \cdot 0 = 1 $$ $$ v_2 = u_2 – \frac{\langle u_2, v_1 \rangle}{\|v_1\|^2} v_1 = (1, 0, 1) – \frac{1}{2}(1, 1, 0) = \left(\frac{1}{2}, -\frac{1}{2}, 1\right) $$

Puis on normalise $v_2$.

$$ \|v_2\|^2 = \left(\frac{1}{2}\right)^2 + \left(-\frac{1}{2}\right)^2 + 1^2 = \frac{1}{4} + \frac{1}{4} + 1 = \frac{3}{2} $$ $$ e_2 = \frac{v_2}{\|v_2\|} = \frac{1}{\sqrt{3/2}} \left(\frac{1}{2}, -\frac{1}{2}, 1\right) = \sqrt{\frac{2}{3}} \left(\frac{1}{2}, -\frac{1}{2}, 1\right) = \frac{1}{\sqrt{6}}(1, -1, 2) $$

Calcul de $e_3$

On calcule $v_3$.

$$ \langle u_3, v_1 \rangle = \langle (0, 1, 1), (1, 1, 0) \rangle = 1 $$ $$ \langle u_3, v_2 \rangle = \left\langle (0, 1, 1), \left(\frac{1}{2}, -\frac{1}{2}, 1\right) \right\rangle = 0 – \frac{1}{2} + 1 = \frac{1}{2} $$ $$ v_3 = u_3 – \frac{\langle u_3, v_1 \rangle}{\|v_1\|^2} v_1 – \frac{\langle u_3, v_2 \rangle}{\|v_2\|^2} v_2 $$ $$ v_3 = (0, 1, 1) – \frac{1}{2}(1, 1, 0) – \frac{1/2}{3/2}\left(\frac{1}{2}, -\frac{1}{2}, 1\right) $$ $$ v_3 = (0, 1, 1) – \left(\frac{1}{2}, \frac{1}{2}, 0\right) – \frac{1}{3}\left(\frac{1}{2}, -\frac{1}{2}, 1\right) $$ $$ v_3 = \left(-\frac{1}{2}, \frac{1}{2}, 1\right) – \left(\frac{1}{6}, -\frac{1}{6}, \frac{1}{3}\right) = \left(-\frac{2}{3}, \frac{2}{3}, \frac{2}{3}\right) $$

Finalement, on normalise $v_3$.

$$ \|v_3\|^2 = \left(-\frac{2}{3}\right)^2 + \left(\frac{2}{3}\right)^2 + \left(\frac{2}{3}\right)^2 = 3 \cdot \frac{4}{9} = \frac{4}{3} $$ $$ e_3 = \frac{v_3}{\|v_3\|} = \frac{1}{\sqrt{4/3}}\left(-\frac{2}{3}, \frac{2}{3}, \frac{2}{3}\right) = \frac{\sqrt{3}}{2} \cdot \frac{2}{3}(-1, 1, 1) = \frac{1}{\sqrt{3}}(-1, 1, 1) $$

La base orthonormée est : $(e_1, e_2, e_3)$.