In matematica, e in particolare in algebra lineare, l'ortogonalizzazione Gram-Schmidt è un algoritmo che permette di ottenere un insieme di vettori ortogonali a partire da un generico insieme di vettori linearmente indipendenti in uno spazio vettoriale dotato di un prodotto scalare definito positivo.[1]
Il procedimento è così chiamato in onore del matematico danese Jørgen Pedersen Gram (1850-1916) e del matematico tedesco Erhard Schmidt (1876-1959); esso però è stato introdotto precedentemente ai loro studi e si trova in lavori di Laplace e Cauchy.
Quando si implementa l'ortogonalizzazione su un computer, al processo di Gram-Schmidt di solito si preferisce la trasformazione di Householder, in quanto questa è numericamente più stabile, cioè gli errori causati dall'arrotondamento sono minori.
Sia V {\displaystyle V} uno spazio vettoriale reale con un prodotto scalare definito positivo. Siano v 1 , … , v n {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{n}} vettori linearmente indipendenti in V {\displaystyle V} . L'algoritmo di Gram-Schmidt restituisce n {\displaystyle n} vettori linearmente indipendenti e 1 , … , e n {\displaystyle \mathbf {e} _{1},\ldots ,\mathbf {e} _{n}} tali che:
e
In altre parole, i vettori restituiti sono ortonormali, ed i primi i {\displaystyle i} generano lo stesso sottospazio dei primi i {\displaystyle i} vettori iniziali.[1]
La proiezione ortogonale è la funzione che "proietta" il vettore v {\displaystyle \mathbf {v} } in modo ortogonale su u {\displaystyle \mathbf {u} } :[2]
Il procedimento di Gram–Schmidt permette di costruire una base ortogonale u 1 , … , u n {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{n}} a partire da una base generica v 1 , … , v n {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{n}} . Per calcolare u i {\displaystyle \mathbf {u} _{i}} si proietta v i {\displaystyle \mathbf {v} _{i}} ortogonalmente sul sottospazio U i − 1 {\displaystyle U_{i-1}} generato da { u 1 , u 2 , … , u i − 1 } {\displaystyle \{\mathbf {u} _{1},\mathbf {u} _{2},\dots ,\mathbf {u} _{i-1}\}} . Si definisce allora u i {\displaystyle \mathbf {u} _{i}} come differenza tra v i {\displaystyle \mathbf {v} _{i}} e questa proiezione, in modo che risulta garantito che esso sia ortogonale a tutti i vettori nel sottospazio U i − 1 {\displaystyle U_{i-1}} . Normalizzando poi la base ortogonale (cioè dividendo ogni vettore u i {\displaystyle \mathbf {u} _{i}} che la compone per la propria norma ‖ u i ‖ {\displaystyle \|\mathbf {u} _{i}\|} ) si ottiene una base ortonormale dello spazio.[3]
Nello specifico:
dove { e i } {\displaystyle \{\mathbf {e} _{i}\}} è la base normalizzata.
Una verifica immediata della correttezza del procedimento eseguito, ovvero che si è ottenuto un insieme di vettori mutuamente ortogonali, è il calcolo del prodotto scalare fra u i {\displaystyle \mathbf {u} _{i}} e e j {\displaystyle \mathbf {e} _{j}} .
Il processo di Gram-Schmidt si applica anche ad una successione infinita { v i } i {\displaystyle \{\mathbf {v} _{i}\}_{i}} di vettori linearmente indipendenti. Il risultato è sempre una successione { e i } i {\displaystyle \{\mathbf {e} _{i}\}_{i}} di vettori ortogonali e con norma unitaria, tale che:
Il risultato del procedimento di Gram-Schmidt può essere espresso in modo non ricorsivo utilizzando il determinante:
dove D 0 = 1 {\displaystyle D_{0}=1} , e per j ≥ 1 {\displaystyle j\geq 1} si indica con D j {\displaystyle D_{j}} il determinante della matrice di Gram:
Dati i vettori v 1 = ( 3 , 1 ) {\displaystyle \mathbf {v} _{1}=(3,1)} e v 2 = ( 2 , 2 ) {\displaystyle \mathbf {v} _{2}=(2,2)} nel piano euclideo R 2 {\displaystyle \mathbb {R} ^{2}} munito del prodotto scalare standard, applicando il procedimento di Gram-Schmidt si ha:
ottenendo i vettori u 1 {\displaystyle \mathbf {u} _{1}} e u 2 {\displaystyle \mathbf {u} _{2}} che sono ortogonali fra loro, come mostra il loro prodotto scalare: