11.9 Le procédé d'orthogonalisation et d'orthonormalisation de Gram-Schmidt

Les sections précédentes ont montré tout l'avantage de travailler avec une base orthogonale (ou orthonormée) pour un sous-espace \(W\), puisque cela permet par exemple d'accéder directement aux composantes d'un vecteur relativement à cette base, ou de calculer plus facilement des projections orthogonales sur \(W\).

Mais il se peut que le sous-espace \(W\) soit défini dès le départ par une base \(\mathcal{B}\) qui n'est pas orthogonale. Pour profiter des avantages décrits ci-dessus, il est donc naturel de chercher une autre base de \(W\), \(\mathcal{B}'\), qui soit elle orthogonale.

Nous allons voir qu'une telle base existe toujours, et nous verrons comment la construire en modifiant la base de départ, par un algorithme appelé le procédé d'orthogonalisation de Gram-Schmidt.

L'idée est de ''tordre'' un à un les vecteurs de \(\mathcal{B}\), de façon à les rendre progressivement orthogonaux deux-à-deux, et en garantissant qu'ils engendrent toujours \(W\).

Voyons comment faire sur un exemple très simple d'une base ne contenant que deux vecteurs.

L'idée, sur un exemple où \(\dim(W)=2\)

Considérons le plan de \(\mathbb{R}^3\), \(W=\mathrm{Vect}\{\boldsymbol{w}_1,\boldsymbol{w}_2\}\), où \[ \boldsymbol{w}_1= \begin{pmatrix} 3\\-1 \\2 \end{pmatrix}\,,\qquad \boldsymbol{w}_2= \begin{pmatrix} 1\\ 2 \\1 \end{pmatrix}\,. \] La paire \(\mathcal{B}=\{\boldsymbol{w}_1,\boldsymbol{w}_2\}\) est une base de \(W\), mais elle n'est pas orthogonale car \[\boldsymbol{w}_1\cdotp\boldsymbol{w}_2=3\neq 0\,.\] Voyons comment modifier \(\mathcal{B}\) de façon à la transformer en une autre base pour \(W\), orthogonale cette fois.

La nouvelle base sera \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2\}\), avec \[\begin{aligned} \boldsymbol{v}_1&:= \boldsymbol{w}_1\,,\\ \boldsymbol{v}_2&:= \boldsymbol{w}_2-\alpha \boldsymbol{w}_1\,. \end{aligned}\] Voyons ce qui se passe lorsque \(\alpha\) varie:

Remarquons que l'on ''tord'' \(\boldsymbol{w}_2\) en lui rajoutant un multiple de \(\boldsymbol{w}_1\), ce qui fait que \(\boldsymbol{v}_2\) reste dans le plan \(W\)!

C'est évident sur l'animation ci-dessus, mais écrivons-le explicitement:

Lemme: Peu importe la valeur du scalaire \(\alpha\), \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2\}\) est toujours une base de \(W\).

(en exercice)

Il s'agit ensuite de choisir \(\alpha\) de façon à ce que \(\mathcal{B}'\) soit orthogonale. Or la seule condition à satisfaire est que \[ \boldsymbol{v}_1\cdotp\boldsymbol{v}_2=0\,, \] qui se traduit par \[ \boldsymbol{w}_1\cdotp(\boldsymbol{w}_2-\alpha\boldsymbol{w}_1)=0\,, \] et qui implique \[ \alpha= \frac{\boldsymbol{w}_1\cdotp\boldsymbol{w}_2}{\|\boldsymbol{w}_1\|^2}\,. \] Ainsi, \(\alpha\boldsymbol{w}_1=\frac{\boldsymbol{w}_1\cdotp\boldsymbol{w}_2}{\|\boldsymbol{w}_1\|^2} \boldsymbol{w}_1\), qui n'est autre que la projection de \(\boldsymbol{w}_2\) sur \(\boldsymbol{w}_1\) (c'est-à-dire sur \(\boldsymbol{v}_1\)). En résumé, on a pris \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2\}\), où \[\begin{aligned} \boldsymbol{v}_1&:= \boldsymbol{w}_1\,,\\ \boldsymbol{v}_2&:= \boldsymbol{w}_2-\mathrm{proj}_{\boldsymbol{v}_1}(\boldsymbol{w}_2)\,, \end{aligned}\] qui donne \[ \boldsymbol{v}_1=\begin{pmatrix} 3\\ -1\\ 2 \end{pmatrix}\,,\qquad \boldsymbol{v}_2=\frac{1}{14} \begin{pmatrix} 5\\ 31\\ 8 \end{pmatrix}\,. \] Maintenant, \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2\}\) est orthogonale puisque \(\boldsymbol{v}_1\cdotp\boldsymbol{v}_2=0\).

La construction décrite dans l'exemple ci-dessus n'a rien de particulier à \(\mathbb{R}^3\), et peut s'utiliser pour orthogonaliser la base de n'importe quel sous-espace de dimension \(2\):

Exemple: Considérons le plan de \(\mathbb{R}^5\) engendré par \[ \boldsymbol{w}_1= \begin{pmatrix} 1\\ 0\\ 1\\ -1\\ 0 \end{pmatrix}\,,\qquad \boldsymbol{w}_2= \begin{pmatrix} 0\\ -2\\ 0\\ 1\\ 1 \end{pmatrix}\,. \] La base \(\mathcal{B}=\{\boldsymbol{w}_1,\boldsymbol{w}_2\}\) de ce plan n'est pas orthogonale, mais en prenant \(\boldsymbol{v}_1:= \boldsymbol{w}_1\), et \[ \boldsymbol{v}_2:= \boldsymbol{w}_2-\mathrm{proj}_{\boldsymbol{w}_1}(\boldsymbol{w}_2) = \begin{pmatrix} 0\\ -2\\ 0\\ 1\\ 1 \end{pmatrix} -\frac{-1}{3} \begin{pmatrix} 1\\ 0\\ 1\\ -1\\ 0 \end{pmatrix} = \begin{pmatrix} 1/3\\ -2\\ 1/3\\ 2/3\\ 1 \end{pmatrix}\,, \] on obtient une base \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2\}\) orthogonale.

Cas général

Dans le cas général, considérons un sous-espace \(W\) de \(\mathbb{R}^3\), de dimension \(k\leqslant n\), muni d'une base (a priori pas orthogonale) \[ \mathcal{B}=\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\,, \] et voyons comment l'utiliser pour construire une nouvelle base de \(W\), \[ \mathcal{B}'=\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_k\}\,, \] qui soit orthogonale. Cette construction est le procédé d'orthogonalisation de Gram-Schmidt.

L'idée est de procéder de manière inductive, le \(j\)-ème vecteur \(\boldsymbol{v}_j\) de \(\mathcal{B}'\) étant construit à partir des \(j\) premiers vecteurs de \(\mathcal{B}\), de façon à ce que pour tout \(j=1,\dots,k\), deux conditions soient satisfaites:

La vérification de ces conditions implique qu'à la fin, lorsque \(j=k\), on a bien construit une famille \(\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_k\}\) qui est orthogonale (et donc libre), et qui engendre \(W\).

L'exemple précédent a suggéré de commencer par modifier \(\boldsymbol{w}_2\) en lui soustrayant sa projection sur \(\boldsymbol{w}_1\). Pour les suivants, on peut continuer à soustraire à chaque vecteur sa projection sur l'espace engendré par les précédents: \[\begin{aligned} \boldsymbol{v}_1&:= \boldsymbol{w}_1\,,\\ \boldsymbol{v}_2&:= \boldsymbol{w}_2-\mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1\}}(\boldsymbol{w}_2)\,,\\ \boldsymbol{v}_3&:= \boldsymbol{w}_3-\mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1,\boldsymbol{w}_2\}}(\boldsymbol{w}_3)\,,\\ \vdots&\\ \boldsymbol{v}_j&:= \boldsymbol{w}_j-\mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{j-1}\}}(\boldsymbol{w}_j)\,,\\ \vdots&\\ \boldsymbol{v}_k&:= \boldsymbol{w}_k-\mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1,\dots\dots,\boldsymbol{w}_{k-1}\}}(\boldsymbol{w}_k)\,. \end{aligned}\] Remarquons que le procédé nécessite, à l'étape \(j\), de calculer la projection sur le sous-espace \(\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{j-1}\}\). Or, comme \[ \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{j-1}\}=\mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{j-1}\}\,, \] on a, pour tout \(j\), \[ \mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{j-1}\}}(\boldsymbol{w}_{j}) = \mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{j-1}\}}(\boldsymbol{w}_{j})\,. \] Maintenant, comme \(\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{j-1}\}\) est orthogonale, la formule de la section précédente permet d'écrire cette dernière projection comme \[ \mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{j-1}\}}(\boldsymbol{w}_{j}) =\sum_{i=1}^{j-1}\frac{\boldsymbol{w}_{j}\cdotp\boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2}\boldsymbol{v}_i\,. \] Donc on peut écrire le procédé comme suit: \[\begin{aligned} \boldsymbol{v}_1&:= \boldsymbol{w}_1\,,\\ \boldsymbol{v}_2&:= \boldsymbol{w}_2-\frac{\boldsymbol{w}_2\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1\,,\\ \boldsymbol{v}_3&:= \boldsymbol{w}_3-\sum_{i=1}^2\frac{\boldsymbol{w}_3\cdotp\boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2}\boldsymbol{v}_i\,,\\ \vdots&\\ \boldsymbol{v}_k&:= \boldsymbol{w}_k-\sum_{i=1}^{k-1}\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2}\boldsymbol{v}_i\,.\\ \end{aligned}\]

Remarque:

Méthode d'orthogonalisation et d'orthonormalisation de Gram-Schmidt d'une base \(\mathcal{B}=\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\) d'un sous-espace vectoriel \(W \subseteq \mathbb{R}^n\).

On produit une base orthogonale \(\mathcal{B}'=\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_k\}\) de \(W\) et ensuite une base orthonormée \(\mathcal{B}''=\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_k\}\) de \(W\) via

\noindent \[\begin{aligned} \boldsymbol{v}_1&:= \boldsymbol{w}_1\,, \\ \boldsymbol{v}_2&:= \boldsymbol{w}_2-\frac{\boldsymbol{w}_2\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1\,, \\ \boldsymbol{v}_3&:= \boldsymbol{w}_3-\frac{\boldsymbol{w}_3\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \frac{\boldsymbol{w}_3\cdotp\boldsymbol{v}_2}{\|\boldsymbol{v}_2\|^2}\boldsymbol{v}_2\,, \\ \vdots& \\ \boldsymbol{v}_k&:= \boldsymbol{w}_k-\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \cdots -\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_{k-1}}{\|\boldsymbol{v}_{k-1}\|^2}\boldsymbol{v}_{k-1}\,, \end{aligned}\] \noindent \[\begin{aligned} \boldsymbol{u}_1&:= \frac{\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|}\,, \\ \boldsymbol{u}_2&:= \frac{\boldsymbol{v}_2}{\|\boldsymbol{v}_2\|}\,, \\ \boldsymbol{u}_3&:= \frac{\boldsymbol{v}_3}{\|\boldsymbol{v}_3\|}\,, \\ \vdots& \\ \boldsymbol{u}_k&:= \frac{\boldsymbol{v}_k}{\|\boldsymbol{v}_k\|}\,. \end{aligned}\]

Remarque: La preuve du fait que \(\mathcal{B}'=\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_k\}\) est une base orthogonale de \(W = \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\) suit par récurrence sur \(k\). En effet, c'est clair si \(k = 1\). On suppose que c'est vrai pour \(k - 1 \geqslant 1\) et on va le démontrer pour \(k\). Or, par hypothèse de la récurrence on sait que \(\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1}\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1}\} \) et que \(\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1}\}\) est orthogonale. En outre, par définition de projection orthogonale, \[ \boldsymbol{w}_k - \mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1}\}}(\boldsymbol{w}_{k}) = \boldsymbol{w}_k - \mathrm{proj}_{\mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1}\}}(\boldsymbol{w}_{k}) = \boldsymbol{w}_k-\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \cdots -\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_{k-1}}{\|\boldsymbol{v}_{k-1}\|^2}\boldsymbol{v}_{k-1} \] est orthogonal à \(\mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1}\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1}\} \), où l'on a utilisé que \(\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1}\}\) est orthogonale pour calculer la projection orthogonale de \(\boldsymbol{w}_k\). En conséquence, si l'on pose \[ \boldsymbol{v}_{k} = \boldsymbol{w}_k-\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \cdots -\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_{k-1}}{\|\boldsymbol{v}_{k-1}\|^2}\boldsymbol{v}_{k-1}\,, \] la famille \(\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k}\}\) est orthogonale. En outre, la définition de \(\boldsymbol{v}_k\) nous dit que \[ \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1},\boldsymbol{w}_k\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{w}_k\} \supseteq \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{v}_k\}\,, \] tandis que \[ \boldsymbol{w}_k = \boldsymbol{v}_k + \frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \cdots -\frac{\boldsymbol{w}_k\cdotp\boldsymbol{v}_{k-1}}{\|\boldsymbol{v}_{k-1}\|^2}\boldsymbol{v}_{k-1} \] nous dit que \[ \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1},\boldsymbol{w}_k\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{w}_k\} \subseteq \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{v}_k\}\,. \] On conclut que \[ \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_{k-1},\boldsymbol{w}_k\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{w}_k\} = \mathrm{Vect}\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_{k-1},\boldsymbol{v}_k\}\,, \] et donc \(\mathcal{B}'=\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_k\}\) est une base orthogonale de \(W = \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\). Le fait que \(\mathcal{B}''=\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_k\}\) est une base orthonormée de \(W = \mathrm{Vect}\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\) est direct.

Exemple: Considérons, dans \(\mathbb{R}^4\), le sous-espace \(W\) défini par \[ W=\mathrm{Vect}\{\boldsymbol{w}_1,\boldsymbol{w}_2,\boldsymbol{w}_3\}\,, \] où \[ \boldsymbol{w}_1:= \begin{pmatrix} 1\\ 0\\ 1\\ 0 \end{pmatrix}\,,\quad \boldsymbol{w}_2:= \begin{pmatrix} -1\\ 0\\ 0\\ 1 \end{pmatrix}\,,\quad \boldsymbol{w}_3:= \begin{pmatrix} 0\\ 1\\ -1\\ 0 \end{pmatrix}\,. \] Appliquons le procédé de Gram-Schmidt. D'abord, \(\boldsymbol{v}_1:= \boldsymbol{w}_1\), puis \[\begin{aligned} \boldsymbol{v}_2&:= \boldsymbol{w}_2-\frac{\boldsymbol{w}_2\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1\\ &= \begin{pmatrix} -1\\ 0\\ 0\\ 1 \end{pmatrix} -\frac{(-1)}{2} \begin{pmatrix} 1\\ 0\\ 1\\ 0 \end{pmatrix}= \begin{pmatrix} -1/2\\ 0\\ 1/2\\ 1\end{pmatrix}\,, \end{aligned}\] et pour finir \[\begin{aligned} \boldsymbol{v}_3&:= \boldsymbol{w}_3- \frac{\boldsymbol{w}_3\cdotp\boldsymbol{v}_1}{\|\boldsymbol{v}_1\|^2}\boldsymbol{v}_1 - \frac{\boldsymbol{w}_3\cdotp\boldsymbol{v}_2}{\|\boldsymbol{v}_2\|^2}\boldsymbol{v}_2\\ &= \begin{pmatrix} 0\\ 1\\ -1\\ 0 \end{pmatrix} -\frac{-1}{2} \begin{pmatrix} 1\\ 0\\ 1\\ 0 \end{pmatrix} -\frac{-1/2}{3/2} \begin{pmatrix} -1/2\\ 0\\ 1/2\\ 1\end{pmatrix}\\ &= \begin{pmatrix} 1/3\\ 1\\ -1/3\\ 1/3 \end{pmatrix}\,. \end{aligned}\] Remarquons que \(\mathcal{B}'=\{\boldsymbol{v}_1,\boldsymbol{v}_2,\boldsymbol{v}_3\}\) est bien orthogonale puisque, par construction, \[ \boldsymbol{v}_1\cdotp\boldsymbol{v}_2 =\boldsymbol{v}_1\cdotp\boldsymbol{v}_3 =\boldsymbol{v}_2\cdotp\boldsymbol{v}_3=0\,. \]

Dans ce dernier exemple, on aurait pu remarquer dès le début que \(\boldsymbol{w}_2\perp\boldsymbol{w}_3\), et donc obtenir une base orthogonale \(\{\boldsymbol{v}_1',\boldsymbol{v}_2',\boldsymbol{v}_3'\}\), en gardant deux vecteurs inchangés, et en ne modifiant que \(\boldsymbol{w}_1\): \[\begin{aligned} \boldsymbol{v}_2'&:=\boldsymbol{w}_2\,,\\ \boldsymbol{v}_3'&:=\boldsymbol{w}_3\,,\\ \boldsymbol{v}_1'&:= \boldsymbol{w}_1 -\frac{\boldsymbol{w}_1\cdotp\boldsymbol{v}_2'}{\|\boldsymbol{v}_2'\|^2}\boldsymbol{v}_2' -\frac{\boldsymbol{w}_1\cdotp\boldsymbol{v}_3'}{\|\boldsymbol{v}_3'\|^2}\boldsymbol{v}_3'\,. \end{aligned}\] Donc en général, il y a plusieurs façons d'orthogonaliser une base, mais en général, lorsqu'on implémente le procédé de Gram-Schmidt, la convention est de modifier les vecteurs dans l'ordre donné par la base de départ.

Propriété d'unicité de la base orthonormée obtenue par le procédé de Gram-Schmidt\(^{{\color{red} \star}}\)

La base orthonormée de Gram-Schmidt peut être caractérisée de façon unique à partir de la propriété suivante.

Théorème: Soit \(\mathcal{B}=\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_k\}\) une base d'un sous-espace vectoriel \(W \subseteq \mathbb{R}^n\). Alors, la base orthonormée \(\mathcal{B}''=\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_k\}\) obtenue du procédé de Gram-Schmidt appliqué à \(\mathcal{B}\) est la seule base orthonormée de \(W\) qui satisfait aux propriétés suivantes:

On montre d'abord que la base orthonormée \(\mathcal{B}''=\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_k\}\) obtenue du procédé de Gram-Schmidt appliqué à \(\mathcal{B}\) vérifie les propriétés (GS.1) et (GS.2). L'identité (GS.1) a été démontrée dans la remarque précédente. On va montrer que la propriété (GS.2) est aussi vérifiée. Pour le faire, on note d'abord que \[\begin{aligned} 0 &< \bigg\|\boldsymbol{w}_j - \sum_{i=1}^{j-1} \frac{\boldsymbol{w}_j \cdotp \boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2} \boldsymbol{v}_i\bigg\|^2 = \bigg(\boldsymbol{w}_j - \sum_{i=1}^{j-1} \frac{\boldsymbol{w}_j \cdotp \boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2} \boldsymbol{v}_i\bigg) \cdotp \bigg(\boldsymbol{w}_j - \sum_{i=1}^{j-1} \frac{\boldsymbol{w}_j \cdotp \boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2} \boldsymbol{v}_i\bigg) \\ &= \|\boldsymbol{w}_j\|^2 - \sum_{i=1}^{j-1} \frac{(\boldsymbol{w}_j \cdotp \boldsymbol{v}_i)^2}{\|\boldsymbol{v}_i\|^2} = \bigg(\boldsymbol{w}_j - \sum_{i=1}^{j-1} \frac{\boldsymbol{w}_j \cdotp \boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2} \boldsymbol{v}_i\bigg) \cdotp \boldsymbol{w}_j\,. \end{aligned}\] En conséquence, l'inégalité précédente et la définition de la base \(\mathcal{B}''=\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_k\}\) nous dit que \[ \boldsymbol{u}_j \cdotp \boldsymbol{w}_j = \frac{\boldsymbol{v}_j}{\|\boldsymbol{v}_j\|} \cdotp \boldsymbol{w}_j = \frac{1}{\|\boldsymbol{v}_j\|} \bigg(\boldsymbol{w}_j - \sum_{i=1}^{j-1} \frac{\boldsymbol{w}_j \cdotp \boldsymbol{v}_i}{\|\boldsymbol{v}_i\|^2} \boldsymbol{v}_i\bigg) \cdotp \boldsymbol{w}_j > 0\,, \] ce qui montre que la base orthonormée \(\mathcal{B}''\) obtenue du procédé de Gram-Schmidt appliqué à \(\mathcal{B}\) vérifie les propriétés (GS.1) et (GS.2). On va montrer maintenant que la base \(\mathcal{B}''\) est l'unique base orthonormée de \(W\) qui vérifie les propriétés (GS.1) et (GS.2). Soit \(\mathcal{B}''' = \{\boldsymbol{u}'_1,\dots,\boldsymbol{u}'_k\}\) une base orthonormée de \(W\) qui vérifie les propriétés (GS.1) et (GS.2). On va montrer que \(\boldsymbol{u}'_j = \boldsymbol{u}_j\) pour tout \(j = 1, \dots, k\). D'abord, (GS.1)} pour \(j = 1\) nous dit que \(\mathrm{Vect}{\{\boldsymbol{u}_1\}} = \mathrm{Vect}{\{\boldsymbol{w}_1\}} = \mathrm{Vect}{\{\boldsymbol{u}'_1\}\), ce qui nous dit que \(\boldsymbol{u}_1 = \lambda \boldsymbol{u}'_1\) avec \(\lambda \neq 0\). Comme \( 1 = \|\boldsymbol{u}_1\| = |\lambda| . \|\boldsymbol{u}'_1\| = |\lambda|\), alors \(\lambda = -1\) ou \(\lambda = 1\). Si \(\lambda = -1\), alors \(\boldsymbol{u}'_1 = - \boldsymbol{u}_1\), ce qui implique que \(\boldsymbol{u}'_1 \cdotp \boldsymbol{w}_1 = - \boldsymbol{u}_1 \cdotp \boldsymbol{w}_1 < 0\), par la condition (GS.2) pour \(j = 1\) et la base \(\mathcal{B}''\). Cela nous donne une contradiction avec la condition (GS.2) pour \(j = 1\) et la base \(\mathcal{B}'''\). En conséquence, \(\boldsymbol{u}'_1 = \boldsymbol{u}_1\). On suppose que \(\boldsymbol{u}'_j = \boldsymbol{u}_j\) pour tout \(j = 1, \dots, \ell\). Si \(\ell < k\), on va montrer que \(\boldsymbol{u}'_{\ell + 1} = \boldsymbol{u}_{\ell + 1}\). En effet, comme \(\mathcal{B}''\) et \(\mathcal{B}'''\) sont des bases orthonormées, \(\boldsymbol{u}_{\ell + 1} \in \mathrm{Vect}{\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_\ell\}}^{\perp}\) et \(\boldsymbol{u}'_{\ell + 1} \in \mathrm{Vect}{\{\boldsymbol{u}'_1,\dots,\boldsymbol{u}'_\ell\}}^{\perp}\). La condition (GS.1)} pour \(j = \ell\) nous dit donc que \(\mathrm{Vect}{\{\boldsymbol{u}_1,\dots,\boldsymbol{u}_\ell\}}^{\perp} = \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell\}}^{\perp} = \mathrm{Vect}{\{\boldsymbol{u}'_1,\dots,\boldsymbol{u}'_\ell\}}^{\perp\), ce qui implique que \(\boldsymbol{u}_{\ell + 1}, \boldsymbol{u}'_{\ell + 1} \in \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell\}}^{\perp}\). La condition (GS.1)} pour \(j = \ell+ 1\) nous dit que \(\boldsymbol{u}_{\ell + 1}, \boldsymbol{u}'_{\ell + 1} \in \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell, \boldsymbol{w}_{\ell+1}\}\), ce qui implique que \[ \boldsymbol{u}_{\ell + 1}, \boldsymbol{u}'_{\ell + 1} \in \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell, \boldsymbol{w}_{\ell+1}\}} \cap \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell\}}^{\perp}. \] Or, le sous-espace vectoriel \(\mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell, \boldsymbol{w}_{\ell+1}\}} \cap \mathrm{Vect}{\{\boldsymbol{w}_1,\dots,\boldsymbol{w}_\ell\}}^{\perp}\) a dimension \(1\), ce qui nous dit que \(\boldsymbol{u}_{\ell+1} = \lambda \boldsymbol{u}'_{\ell+1}\) avec \(\lambda \neq 0\). Comme \( 1 = \|\boldsymbol{u}_{\ell+1}\| = |\lambda| . \|\boldsymbol{u}'_{\ell+1}\| = |\lambda|\), alors \(\lambda = -1\) ou \(\lambda = 1\). Si \(\lambda = -1\), alors \(\boldsymbol{u}'_{\ell+1} = - \boldsymbol{u}_{\ell+1}\), ce qui implique que \(\boldsymbol{u}'_{\ell+1} \cdotp \boldsymbol{w}_{\ell+1} = - \boldsymbol{u}_{\ell+1} \cdotp \boldsymbol{w}_{\ell+1} < 0\), par la condition (GS.2) pour \(j = \ell+1\) et la base \(\mathcal{B}''\). Cela nous donne une contradiction avec la condition (GS.2) pour \(j = \ell+1\) et la base \(\mathcal{B}'''\). En conséquence, \(\boldsymbol{u}'_{\ell+1} = \boldsymbol{u}_{\ell+1}\). Par un argument de récurrence sur \(\ell\) on conclut que \(\boldsymbol{u}'_j = \boldsymbol{u}_j\) pour tout \(j = 1, \dots, k\).