Ortogonalizacja Grama-Schmidta – przekształcenie układu liniowo niezależnych wektorów przestrzeni unitarnej w układ wektorów ortogonalnych . Przestrzenie liniowe rozpinane przez układy przed i po ortogonalizacji są tożsame, tak więc proces może służyć do ortogonalizowania bazy .
Opisana w tym artykule metoda nazwana została na cześć Jørgena Grama , matematyka duńskiego oraz Erharda Schmidta , matematyka niemieckiego.
Dwa pierwsze kroki procesu ortogonalizacji Operator rzutowania ortogonalnego wektora v {\displaystyle \mathbf {v} } na wektor u {\displaystyle \mathbf {u} } definiujemy jako:
p r o j u v = ⟨ v , u ⟩ ⟨ u , u ⟩ u . {\displaystyle \mathrm {proj} _{\mathbf {u} }\,\mathbf {v} ={\frac {\langle \mathbf {v} ,\mathbf {u} \rangle }{\langle \mathbf {u} ,\mathbf {u} \rangle }}\mathbf {u} .} Wówczas dla układu k wektorów { v 1 , … , v k } {\displaystyle \{\mathbf {v} _{1},\dots ,\mathbf {v} _{k}\}} proces przebiega następująco:
u 1 = v 1 , {\displaystyle \mathbf {u} _{1}=\mathbf {v} _{1},} u 2 = v 2 − p r o j u 1 v 2 , {\displaystyle \mathbf {u} _{2}=\mathbf {v} _{2}-\mathrm {proj} _{\mathbf {u} _{1}}\,\mathbf {v} _{2},} u 3 = v 3 − p r o j u 1 v 3 − p r o j u 2 v 3 , {\displaystyle \mathbf {u} _{3}=\mathbf {v} _{3}-\mathrm {proj} _{\mathbf {u} _{1}}\,\mathbf {v} _{3}-\mathrm {proj} _{\mathbf {u} _{2}}\,\mathbf {v} _{3},} ⋮ {\displaystyle \vdots } u k = v k − ∑ j = 1 k − 1 p r o j u j v k , {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}-\sum _{j=1}^{k-1}\mathrm {proj} _{\mathbf {u} _{j}}\,\mathbf {v} _{k},} czyli wektor u k {\displaystyle u_{k}} to wektor v k {\displaystyle v_{k}} po odjęciu od niego rzutu wektora v k {\displaystyle v_{k}} na podprzestrzeń rozpiętą przez wektory u 1 , . . . , u k − 1 . {\displaystyle u_{1},...,u_{k-1}.} Otrzymany zbiór { u 1 , … , u k } {\displaystyle \{\mathbf {u} _{1},\dots ,\mathbf {u} _{k}\}} jest zbiorem wektorów ortogonalnych.
Aby zbudować w ten sposób zbiór ortonormalny , każdy wektor należy podzielić przez jego normę :
e n = u n | | u n | | , n = 1 , 2 , . . . , k {\displaystyle \mathbf {e} _{n}={\frac {\mathbf {u} _{n}}{||\mathbf {u} _{n}||}},n=1,2,...,k} Proces ortogonalizacji pozwala na wskazanie bazy ortogonalnej w dowolnej przestrzeni unitarnej (niekoniecznie skończenie wymiarowej).
Własności numeryczne tego algorytmu nie są zbyt dobre i uzyskane wektory nadal nie są ortogonalne (za sprawą błędów zaokrągleń), toteż w praktyce powtarza się proces dokonując reortogonalizacji.
Dowód ortogonalności tak otrzymanego układu opiera się na indukcji .
Niech u 1 , … , u k {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k}} jest układem wektorów uzyskanym w procesie ortogonalizacji Grama-Schmidta z bazy v 1 … v k . {\displaystyle \mathbf {v} _{1}\dots \mathbf {v} _{k}.} Załóżmy, że wektory u 1 , … , u k − 1 {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k-1}} są wzajemnie prostopadłe, czyli spełniają ⟨ u s , u t ⟩ = 0 {\displaystyle \langle \mathbf {u} _{s},\mathbf {u} _{t}\rangle =0} dla wszystkich t , s ∈ { 1 … k − 1 } , t ≠ s {\displaystyle t,s\in \{1\dots k-1\},~t\neq s} oraz u s ≠ 0 {\displaystyle \mathbf {u} _{s}\neq 0} dla s ∈ { 1 … k − 1 } . {\displaystyle s\in \{1\dots k-1\}.}
Pokażemy, że wektor u k {\displaystyle \mathbf {u} _{k}} otrzymany z algorytmu ortogonalizacji Grama-Schmidta jest prostopadły z dowolnym wektorem u l , {\displaystyle \mathbf {u} _{l},} gdzie l ∈ { 1 , … , k − 1 } . {\displaystyle l\in \{1,\dots ,k-1\}.}
u k = v k − ∑ j = 1 k − 1 ⟨ v k , u j ⟩ ⟨ u j , u j ⟩ u j {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}-\sum \limits _{j=1}^{k-1}{\frac {\langle \mathbf {v} _{k},\mathbf {u} _{j}\rangle }{\langle \mathbf {u} _{j},\mathbf {u} _{j}\rangle }}\mathbf {u} _{j}} Mnożąc skalarnie u k {\displaystyle \mathbf {u} _{k}} i u l {\displaystyle \mathbf {u} _{l}} i korzystając z własności iloczynu skalarnego (rozdzielności iloczynu względem sumy, przemienności i zgodności z mnożeniem przez skalar ) otrzymujemy:
⟨ u k , u l ⟩ = ⟨ v k − ∑ j = 1 k − 1 ⟨ v k , u j ⟩ ⟨ u j , u j ⟩ u j , u l ⟩ = ⟨ v k , u l ⟩ − ∑ j = 1 k − 1 ⟨ v k , u j ⟩ ⟨ u j , u j ⟩ ⟨ u j , u l ⟩ {\displaystyle \langle \mathbf {u} _{k},\mathbf {u} _{l}\rangle =\left\langle \ \mathbf {v} _{k}-\sum \limits _{j=1}^{k-1}{\frac {\langle \mathbf {v} _{k},\mathbf {u} _{j}\rangle }{\langle \mathbf {u} _{j},\mathbf {u} _{j}\rangle }}\mathbf {u} _{j},\mathbf {u} _{l}\right\rangle =\langle \mathbf {v} _{k},\mathbf {u} _{l}\rangle -\sum \limits _{j=1}^{k-1}{\frac {\langle \mathbf {v} _{k},\mathbf {u} _{j}\rangle }{\langle \mathbf {u} _{j},\mathbf {u} _{j}\rangle }}\langle \mathbf {u} _{j},\mathbf {u} _{l}\rangle } Na mocy założenia indukcyjnego w ostatniej sumie wszystkie składniki o indeksie j ≠ l {\displaystyle j\neq l} są zerowe, więc:
⟨ u k , u l ⟩ = ⟨ v k , u l ⟩ − ⟨ v k , u l ⟩ ⟨ u l , u l ⟩ ⟨ u l , u l ⟩ = 0 {\displaystyle \langle \mathbf {u} _{k},\mathbf {u} _{l}\rangle =\langle \mathbf {v} _{k},\mathbf {u} _{l}\rangle -{\frac {\langle \mathbf {v} _{k},\mathbf {u} _{l}\rangle }{\langle \mathbf {u} _{l},\mathbf {u} _{l}\rangle }}\langle \mathbf {u} _{l},\mathbf {u} _{l}\rangle =0} co oznacza, że wektor u k {\displaystyle \mathbf {u} _{k}} jest prostopadły z każdym innym wektorem u 1 , … , u k − 1 {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k-1}}
Wektor u k {\displaystyle \mathbf {u} _{k}} jest kombinacją liniową wektorów u 1 , … , u k − 1 , v k . {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k-1},\mathbf {v} _{k}.} Z kolei u k − 1 {\displaystyle \mathbf {u} _{k-1}} jest kombinacją liniową wektorów u 1 , … , u k − 2 , v k − 1 . {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k-2},\mathbf {v} _{k-1}.} Analogicznie dla wektora u k − 2 {\displaystyle \mathbf {u} _{k-2}} i tak dalej. Ostatecznie wektor u k {\displaystyle \mathbf {u} _{k}} jest kombinacją liniową wektorów v 1 , … , v k − 1 , v k {\displaystyle \mathbf {v} _{1},\dots ,\mathbf {v} _{k-1},\mathbf {v} _{k}} a dokładniej
u k = α 1 v 1 + … + α k − 1 v k − 1 + 1 ⋅ v k . {\displaystyle \mathbf {u} _{k}=\alpha _{1}\mathbf {v} _{1}+\ldots +\alpha _{k-1}\mathbf {v} _{k-1}+1\cdot \mathbf {v} _{k}.} Gdyby u k = 0 , {\displaystyle \mathbf {u} _{k}=0,} to układ v 1 , … , v k − 1 , v k {\displaystyle \mathbf {v} _{1},\dots ,\mathbf {v} _{k-1},\mathbf {v} _{k}} wbrew założeniom byłby liniowo zależny, bo nie wszystkie współczynniki liczbowe kombinacji są zerowe.
Ponieważ ortogonalny układ wektorów jest liniowo niezależny, a każdy z wektorów u i {\displaystyle \mathbf {u} _{i}} jest kombinacją liniową elementów z bazy v 1 , … , v k , {\displaystyle \mathbf {v} _{1},\dots ,\mathbf {v} _{k},} więc tak wyznaczone wektory u 1 , … , u k {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{k}} istotnie są bazą.
Rozważmy zbiór wektorów w R 2 {\displaystyle \mathbf {R} ^{2}} (ze standardowym iloczynem skalarnym):
S = { v 1 = [ 3 1 ] , v 2 = [ 2 2 ] } . {\displaystyle S=\left\{\mathbf {v} _{1}={\begin{bmatrix}3\\1\end{bmatrix}},\mathbf {v} _{2}={\begin{bmatrix}2\\2\end{bmatrix}}\right\}.} Teraz przeprowadzamy ortogonalizację, aby otrzymać wektory parami prostopadłe:
u 1 = v 1 = [ 3 1 ] {\displaystyle \mathbf {u} _{1}=\mathbf {v} _{1}={\begin{bmatrix}3\\1\end{bmatrix}}} u 2 = v 2 − p r o j u 1 ( v 2 ) = [ 2 2 ] − p r o j [ 3 1 ] ( [ 2 2 ] ) = [ − 2 / 5 6 / 5 ] . {\displaystyle \mathbf {u} _{2}=\mathbf {v} _{2}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{2})={\begin{bmatrix}2\\2\end{bmatrix}}-\mathrm {proj} _{\left[{3 \atop 1}\right]}\,\left({\begin{bmatrix}2\\2\end{bmatrix}}\right)={\begin{bmatrix}-2/5\\6/5\end{bmatrix}}.} Sprawdzamy, że wektory u 1 i u 2 rzeczywiście są prostopadłe:
⟨ u 1 , u 2 ⟩ = ⟨ [ 3 1 ] , [ − 2 / 5 6 / 5 ] ⟩ = − 6 5 + 6 5 = 0 , {\displaystyle \langle \mathbf {u} _{1},\mathbf {u} _{2}\rangle =\left\langle {\begin{bmatrix}3\\1\end{bmatrix}},{\begin{bmatrix}-2/5\\6/5\end{bmatrix}}\right\rangle =-{\frac {6}{5}}+{\frac {6}{5}}=0,} ponieważ jeśli dwa wektory są prostopadłe, to ich iloczyn skalarny wynosi 0 .
Następnie normalizujemy wektory, dzieląc każdy przez ich normy:
e 1 = 1 10 [ 3 1 ] {\displaystyle \mathbf {e} _{1}={\frac {1}{\sqrt {10}}}{\begin{bmatrix}3\\1\end{bmatrix}}} e 2 = 1 40 25 [ − 2 / 5 6 / 5 ] = 1 10 [ − 1 3 ] . {\displaystyle \mathbf {e} _{2}={\frac {1}{\sqrt {\frac {40}{25}}}}{\begin{bmatrix}-2/5\\6/5\end{bmatrix}}={\frac {1}{\sqrt {10}}}{\begin{bmatrix}-1\\3\end{bmatrix}}.} W przestrzeni wielomianów R [ x ] {\displaystyle R[x]} wielomiany postaci x k {\displaystyle x^{k}} stanowią bazę. Iloczyn skalarny w tej przestrzeni można wprowadzić np. w ten sposób:
⟨ f , g ⟩ w = ∫ − 1 1 f ( x ) g ( x ) d x f , g ∈ R [ x ] {\displaystyle \langle f,g\rangle _{w}=\int \limits _{-1}^{1}f(x)g(x)dx\ \ \ f,g\in R[x]} Przeprowadzając proces ortogonalizacji układu 1 , x , x 2 , x 3 , … , {\displaystyle 1,\,x,\,x^{2},\,x^{3},\dots ,} dostaniemy układ ortogonalny 1 , x , x 2 − 1 3 , x 3 − 3 5 x , … {\displaystyle 1,\,x,\,x^{2}-{\tfrac {1}{3}},\,x^{3}-{\tfrac {3}{5}}x,\,\dots }
Są to z dokładnością do czynnika wielomiany Legendre’a :
P n ( x ) = d n d x n ( x 2 − 1 ) n ( n = 0 , 1 , … ) . {\displaystyle P_{n}(x)={\frac {d^{n}}{dx^{n}}}(x^{2}-1)^{n}\quad (n=0,1,\dots ).} Po znormalizowaniu powstanie układ
P n ~ ( x ) = n + 1 2 ⋅ 1 ( 2 n ) ! ! P n ( x ) . {\displaystyle {\tilde {P_{n}}}(x)={\sqrt {n+{\tfrac {1}{2}}}}\cdot {\frac {1}{(2n)!!}}P_{n}(x).} Mostowski A. , Stark, M., Algebra liniowa , Państwowe Wydawnictwo Naukowe , Warszawa 1958, wydanie czwarte, s. 140–142. Gleichgewicht B. , Algebra. Podręcznik dla kierunków nauczycielskich studiów matematycznych , PWN, Warszawa 1976, s. 184–186. Piotr Stachura, nagrania dla Khan Academy na YouTube [dostęp 2024-06-22]: