AlgèbreMéthode · Glossaire
algorithme de Gram-Schmidt
Méthode d'orthogonalisation de vecteurs. L'algorithme de Gram-Schmidt permet, à partir d'une famille de n vecteurs linéairement indépendants, de construire une famille de n vecteurs deux à deux orthogonaux. Il est notamment appliqué à la résolution de problèmes de moindres carrés et au calcul de valeurs propres.
Sommaire
Ce que vous allez apprendre
- Identifier le rôle du produit scalaire, des projections et de la normalisation.
- Appliquer la formule de Gram-Schmidt aux vecteurs (1, 1) et (1, 0), puis contrôler l'orthogonalité.
- Distinguer famille orthogonale, famille orthonormée, projection et matrice orthogonale.
- Repérer la dépendance linéaire, l'effet de l'ordre et les pertes de précision numérique.
En clair
Imaginez deux flèches obliques tracées sur une feuille. Pour rendre la seconde perpendiculaire à la première, on lui retire toute la part qui pointe dans la direction de la première. La flèche restante forme alors un angle droit avec elle.
Gram-Schmidt répète ce geste avec chaque nouveau vecteur : il soustrait ses ombres sur les directions déjà construites. On obtient des vecteurs non nuls et orthogonaux, donc indépendants les uns des autres. En ajustant ensuite chacun à une longueur de 1, la famille devient orthonormée.
Définition
Dans un espace vectoriel réel muni d'un produit scalaire, considérons une famille ordonnée de vecteurs linéairement indépendants, notés u1, …, un. L'algorithme de Gram-Schmidt construit des vecteurs v1, …, vn deux à deux orthogonaux. Il conserve en outre les sous-espaces successifs engendrés : pour chaque indice k, les k premiers vecteurs u et les k premiers vecteurs v engendrent le même sous-espace.
Le premier vecteur est conservé. Pour chaque indice k à partir de 2, on retire à uk sa projection sur chacune des directions v déjà obtenues : . Le nombre est le coefficient scalaire de projection ; multiplié par vj, il donne la composante projetée de uk dans cette direction.
L'indépendance linéaire garantit que chaque vk est non nul. Si l'on divise ensuite chaque vk par sa norme, on obtient un vecteur qk de longueur 1 et une famille orthonormée : . L'ordre des vecteurs d'entrée fait partie des données : le changer peut produire une autre famille orthogonale, tout en conservant le même espace final.
Le principe
Soit une famille ordonnée et libre (u1, …, un) dans un espace réel muni d'un produit scalaire.
1. Poser v1 = u1.
2. Pour chaque indice k de 2 à n, calculer .
3. Si une famille orthonormée est souhaitée, poser pour chaque indice k.
2. Pour chaque indice k de 2 à n, calculer .
3. Si une famille orthonormée est souhaitée, poser pour chaque indice k.
À l'issue du procédé, les vecteurs v sont non nuls et deux à deux orthogonaux ; les vecteurs q sont en plus de norme 1.
Quand l'utiliser
Le procédé demande un espace muni d'un produit scalaire, car les projections et les normes en dépendent. La famille d'entrée doit être ordonnée et linéairement indépendante. Avec ces données, chaque dénominateur est strictement positif et le résultat contient autant de vecteurs que la famille initiale.
Ces conditions se contrôlent pendant le calcul : avant de normaliser vk, sa norme doit être non nulle. Dans un calcul approché, les vecteurs doivent aussi être suffisamment éloignés de la dépendance linéaire pour que les soustractions ne détruisent pas la précision.
Par exemple, si u2 = 2u1, sa projection sur v1 est u2 tout entier : le second résidu vaut zéro et sa normalisation est impossible. Il faut alors supprimer le vecteur redondant ou extraire d'abord une famille libre.
Un exemple, pas à pas
Orthogonalisons deux vecteurs du plan avec le produit scalaire usuel.
Données :
Le premier vecteur est u1 = (1, 1).
Le second vecteur est u2 = (1, 0).
La famille est libre, car les deux vecteurs ne sont pas colinéaires.
Données :
Le premier vecteur est u1 = (1, 1).
Le second vecteur est u2 = (1, 0).
La famille est libre, car les deux vecteurs ne sont pas colinéaires.
1. Le premier vecteur est conservé : v1 = u1 = (1, 1). Son produit scalaire avec lui-même vaut 2.
2. La projection de u2 sur v1 est .
3. On retire cette projection : .
4. Le contrôle d'orthogonalité donne . Les deux directions sont bien perpendiculaires.
5. En normalisant, on obtient . Chacun a une norme égale à 1. La construction géométrique montre que u2 se décompose en une projection parallèle à v1 et un résidu v2 perpendiculaire.
En pratique
Pour ajuster un modèle par moindres carrés, on peut orthonormaliser les colonnes indépendantes de la matrice des données. Les vecteurs obtenus forment la matrice Q ; la matrice triangulaire R regroupe les coefficients de projection sur les directions précédentes et, sur sa diagonale, les normes des résidus successifs. Sur des données presque redondantes, une factorisation de Householder est généralement préférée pour mieux préserver la précision numérique.
Dans l'algorithme QR de calcul des valeurs propres, une factorisation orthogonale est répétée à chaque itération. Gram-Schmidt explique la construction de Q, mais les logiciels emploient souvent des transformations de Householder lorsque la stabilité est prioritaire.
À la main, le procédé transforme aussi une base peu commode en directions perpendiculaires pour calculer des coordonnées, des distances ou des projections. Si une seule projection sur un sous-espace déjà orthonormé est recherchée, il suffit de la calculer directement sans reconstruire toute la base.
À ne pas confondre
Famille orthogonale et famille orthonormée. Dans une famille orthogonale, les produits scalaires entre vecteurs distincts sont nuls ; leurs longueurs restent quelconques. Elle est orthonormée seulement si chaque norme vaut aussi 1. Les vecteurs v1 et v2 de l'exemple sont orthogonaux, tandis que q1 et q2 sont orthonormés.
Gram-Schmidt et projection orthogonale. Une projection donne la composante d'un vecteur sur un sous-espace fixé. Gram-Schmidt enchaîne plusieurs projections et soustractions afin de construire de nouvelles directions. Dans l'exemple, la projection orthogonale de u2 sur la droite engendrée par v1 donne le vecteur p ; le passage de la famille (u1, u2) à (v1, v2) est le procédé complet.
Famille orthonormée et matrice orthogonale. Une matrice carrée réelle est orthogonale lorsque ses colonnes forment une base orthonormée, ce qui se teste par QTQ = I. Une famille orthonormée de deux vecteurs dans un espace de dimension trois ne forme pas, à elle seule, une matrice orthogonale carrée.
Limites et pièges
Dépendance exacte. Si un nouveau vecteur appartient au sous-espace déjà construit, toutes ses composantes sont retirées et le résidu vaut exactement zéro. La division par sa norme est alors impossible. Il faut écarter ce vecteur ou sélectionner une sous-famille libre.
Ordre des entrées. Le sous-espace final ne change pas, mais la base produite peut changer. Avec u1 = (1, 1) puis u2 = (1, 0), l'exemple donne deux directions diagonales. Dans l'ordre inverse, le procédé donne les directions (1, 0) et (0, 1). Il faut donc conserver un ordre imposé par le problème.
Vecteurs presque dépendants en machine. Des soustractions entre nombres très proches peuvent faire perdre des chiffres significatifs ; des produits scalaires censés valoir 0 deviennent visiblement non nuls. Il n'existe pas de seuil universel, car il dépend de l'échelle et de la précision. Il faut employer Gram-Schmidt modifié, réorthogonaliser ou préférer des transformations de Householder.
Pour aller plus loin
produit scalaire. Précise l'opération qui mesure les composantes projetées et certifie l'orthogonalité.
famille libre. Explique la condition qui empêche un résidu de devenir nul pendant le procédé.
matrice orthogonale. Relie une base orthonormée aux matrices Q utilisées dans les factorisations numériques.
valeur propre. Présente la notion recherchée par l'algorithme QR, auquel l'orthogonalisation contribue.
Explorez les mathématiques autrement
Retrouvez nos magazines, podcasts et jeux pour explorer les mathématiques autrement.
Découvrir les offres
