Algorithme de Gram-Schmidt
En algèbre linéaire, dans un espace préhilbertien (c'est-à-dire un espace vectoriel sur le corps des réels ou celui des complexes, muni d'un produit scalaire), le procédé ou algorithme de Gram-Schmidt<ref>Modèle:Ouvrage</ref> est un algorithme pour construire, à partir d'une famille libre finie, une base orthonormée du sous-espace qu'elle engendre. On peut aussi utiliser le procédé de Gram-Schmidt sur une famille infinie dénombrable de vecteurs. Ceci permet de démontrer l'existence d'une base hilbertienne si l'espace est séparable.
Énoncé
Précisément, en notant Modèle:Math avec Modèle:Mvar dans Modèle:Math, ou Modèle:Math : Modèle:Théorème
On oublie souvent la seconde condition, qui assure l'unicité. Elle permet de parler de la famille orthonormalisée de Gram-Schmidt associée à <math>(x_n)_{n \in N}\,</math>.
L'étape générale de l'algorithme consiste à soustraire au vecteur Modèle:Math son projeté orthogonal sur le sous-espace engendré par Modèle:Math. On s'appuie sur la famille orthonormale déjà construite pour le calcul de ce projeté.
Cette méthode a été publiée par Jørgen Pedersen Gram en 1883 et reformulée par Erhard Schmidt en 1907, mais on la trouve déjà dans des travaux de 1816 de Laplace<ref>{{#invoke:Langue|indicationDeLangue}} Gram-Schmidt orthogonalization, dans Earliest Known Uses of Some of the Words of Mathematics (G)</ref>.
Applications
- Le procédé d'orthonormalisation de Gram-Schmidt donne constructivement l'existence de bases orthonormées pour tout espace euclidien ou hermitien.
- On peut aussi orthonormaliser la base canonique (1,X, …) de ℝ[X] et obtenir ainsi une famille de polynômes orthogonaux.
- Le procédé de Schmidt peut être utilisé dans la décomposition QR d'une matrice<ref>A. Quarteroni, R. Sacco, F. Saleri, Méthodes numériques pour le calcul scientifique, Programmes en Matlab, éd. Springer, 2000, p. 83 et suiv. Lire en ligne</ref>.
Procédé de Gram-Schmidt
Nous définissons l'opérateur de projection orthogonale sur une droite vectorielle dirigée par le vecteur Modèle:Math par<ref>La convention choisie pour le produit scalaire hermitien étant ici : linéarité à droite et semi-linéarité à gauche.</ref> :
- <math>\mathrm{proj}_{\mathbf{u}}\,(\mathbf{v}) = {\langle\mathbf{u},\mathbf{v}\rangle\over\langle\mathbf{u},\mathbf{u}\rangle}\mathbf{u}. </math>
Le procédé de Gram-Schmidt est alors :
<math>\mathbf{u}_1 = \mathbf{v}_1,</math> | \mathbf{u}_1\|}</math> | ||
<math>\mathbf{u}_2 = \mathbf{v}_2-\mathrm{proj}_{\mathbf{u}_1}\,(\mathbf{v}_2), </math> | \mathbf{u}_2\|}</math> | ||
<math>\mathbf{u}_3 = \mathbf{v}_3-\mathrm{proj}_{\mathbf{u}_1}\,(\mathbf{v}_3)-\mathrm{proj}_{\mathbf{u}_2}\,(\mathbf{v}_3), </math> | \mathbf{u}_3\|}</math> | ||
<math>\vdots</math> | <math>\vdots</math> | ||
<math>\mathbf{u}_k = \mathbf{v}_k-\sum_{j=1}^{k-1}\mathrm{proj}_{\mathbf{u}_j}\,(\mathbf{v}_k), </math> | \mathbf{u}_k\|}</math> |
Avec :
- Modèle:Math, le produit scalaire dans l'espace considéré
- Modèle:Math, un ensemble de vecteurs non liés
- Modèle:Math, un ensemble de vecteurs orthogonaux deux à deux
- Modèle:Math, l'ensemble de vecteurs orthonormaux deux à deux recherché