Salta ai contenuti

Gram-Schmidt 3D senza normalizzazione

Questa è la variante del procedimento di Gram-Schmidt che si ferma all’ortogonalizzazione: a partire da tre vettori v⃗1,v⃗2,v⃗3\vec v_1,\vec v_2,\vec v_3 di R3\mathbb{R}^3 produce tre vettori w⃗1,w⃗2,w⃗3\vec w_1,\vec w_2,\vec w_3 mutuamente ortogonali, ma non di lunghezza 11 (manca l’ultimo passo di normalizzazione). Le punte dei vettori sono trascinabili in modalità “Modifica v₁ v₂ v₃”.

1.00×
v₁, v₂, v₃ = —w₁, w₂, w₃ = —‖w₁‖, ‖w₂‖, ‖w₃‖ = — (non necessariamente 1)w₁·w₂, w₁·w₃, w₂·w₃ = —

Passo 1. Il primo vettore risultato coincide con v⃗1\vec v_1: non c’è nulla da togliere né da normalizzare.

w⃗1=v⃗1\vec w_1=\vec v_1

Passo 2. Da v⃗2\vec v_2 si toglie la sua proiezione su w⃗1\vec w_1. Poiché w⃗1\vec w_1 non è un versore, il coefficiente di proiezione è v⃗2⋅w⃗1w⃗1⋅w⃗1\dfrac{\vec v_2\cdot\vec w_1}{\vec w_1\cdot\vec w_1} (non basta il solo prodotto scalare, come accadrebbe con un versore):

w⃗2=v⃗2−v⃗2⋅w⃗1w⃗1⋅w⃗1 w⃗1\vec w_2=\vec v_2-\dfrac{\vec v_2\cdot\vec w_1}{\vec w_1\cdot\vec w_1}\,\vec w_1

Passo 3. Da v⃗3\vec v_3 si tolgono entrambe le proiezioni, su w⃗1\vec w_1 e su w⃗2\vec w_2, con lo stesso tipo di coefficiente normalizzato per la norma al quadrato del vettore su cui si proietta:

w⃗3=v⃗3−v⃗3⋅w⃗1w⃗1⋅w⃗1 w⃗1−v⃗3⋅w⃗2w⃗2⋅w⃗2 w⃗2\vec w_3=\vec v_3-\dfrac{\vec v_3\cdot\vec w_1}{\vec w_1\cdot\vec w_1}\,\vec w_1-\dfrac{\vec v_3\cdot\vec w_2}{\vec w_2\cdot\vec w_2}\,\vec w_2

Premendo “Calcola e mantieni” questa sequenza viene animata sul simulatore, colore per colore, nello stesso ordine appena descritto. Lo slider “rallentatore” permette di seguirla con più calma, senza modificare il risultato finale.

Sotto i pulsanti del simulatore compaiono quattro righe numeriche, sempre aggiornate dal vivo:

  • le coordinate dei vettori di partenza v⃗1,v⃗2,v⃗3\vec v_1,\vec v_2,\vec v_3 (modificabili anche digitandole direttamente, in modalità “Modifica v₁ v₂ v₃”);
  • le coordinate dei vettori risultato w⃗1,w⃗2,w⃗3\vec w_1,\vec w_2,\vec w_3, che compaiono uno alla volta durante “Calcola e mantieni”, in sincrono con l’animazione;
  • le norme ∥w⃗1∥,∥w⃗2∥,∥w⃗3∥\lVert\vec w_1\rVert,\lVert\vec w_2\rVert,\lVert\vec w_3\rVert, segnate come “non necessariamente 1” perché qui, a differenza della versione ortonormalizzata, non ci si aspetta in generale che valgano 11: la lunghezza dei vettori risultato dipende dai vettori di partenza (può capitare, per alcune terne di partenza, che valgano comunque 11: è un caso particolare, non la regola);
  • i prodotti scalari incrociati w⃗1⋅w⃗2, w⃗1⋅w⃗3, w⃗2⋅w⃗3\vec w_1\cdot\vec w_2,\ \vec w_1\cdot\vec w_3,\ \vec w_2\cdot\vec w_3, che invece devono restare pari a 00 (i vettori risultato sono a due a due ortogonali, anche se non unitari).

Il prodotto scalare nullo è, da solo, la proprietà che definisce l’ortogonalità: quel numero dal vivo è un modo per verificare, per qualunque terna di vettori di partenza linearmente indipendenti, che il procedimento ha funzionato correttamente, indipendentemente dalla lunghezza dei vettori ottenuti.