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 :
- Pour tout $k \in \{1, \dots, p\}$, $\text{Vect}(e_1, \dots, e_k) = \text{Vect}(u_1, \dots, u_k)$.
- 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)$.
