Báza vektorového priestoru V[3] je množina lineárne nezávislých vektorov, ktorých lineárnym obalom je priestor V. Každý vektor z V sa dá jednoznačne vyjadriť ako lineárna kombinácia bázových vektorov. Teda voľba bázy súčasne každému vektoru priraďuje súradnice - koeficienty takejto lineárnej kombinácie.
Gramov-Schmidtov ortogonalizačný proces je proces, ktorým z množiny lineárne nezávislých vektorov priestoru vytvárame jeho ortonormálnu bázu. Ortonormálna báza sa vyznačuje vlastnosťou, že jej vektory majú normovanú jednotkovú dĺžku a navzájom sú ortogonálne. Vektorový priestor dimenzie n môže byť všeobecne generovaný ľubovoľnou n-ticou lineárne nezávislých vektorov. Tieto však majú rôznu orientáciu a nejednotnú dĺžku (normu). Na odstránenie respektíve normalizáciu sa využíva práve spomínaný Gram-Schimdtov ortogonalizačný proces.
\[ \phi=\left\{{\phi_1,\phi_2,\phi_3}\right\} \tag{1.1} \] kde \(\phi\) — vami zvolena báza, ktorú ortonormalizujete
\[
\begin{split}
\psi_1 & ={\frac{\phi_1}{|\phi_1|}}\\
g_2 &=\phi_2-<\phi_2,\psi_1>\psi_1\\
\psi_2 &= {\frac{g_2}{|g_2|}}\\
g_3 &=\phi_3-<\phi_3,\psi_1>\psi_1-<\phi_3,\psi_2>\psi_2\\
\psi_3 &= {\frac{g_3}{|g_3|}}\\
\end{split}
\]
\[
\psi=\left\{{\psi_1,\psi_2,\psi_3}\right\}
\]
kde:
\(\psi\) — ortonormalizovana báza - všetky vektory sú na seba kolme a maju jednitkovy dlžky
g — ortogonálna báza — všetky vektory sú na seba kolme
<U,V> — skalárny sučin
|U| - norma vektora
Skúsme ortonormalizovať bázy (1.1) v R. (Napriklad \(\phi\)={ (3,-1,0), (1,2,0), (0,1,2) })
Bacigál ukázal, že v R môžeme pracovať s vektormi. (pozri [2], str. 9)
Zapíšem bázu \(\phi\) do tabuĺky:
| Vektor | x | y | z |
|---|---|---|---|
| ϕ1 | 3 | -1 | 0 |
| ϕ2 | 1 | 2 | 0 |
| ϕ3 | 0 | 1 | 2 |
Vypočet v R: (postup v kapitole 1.2)
ϕ1 <- c(3, -1, 0)
ϕ2 <- c(1, 2, 0)
ϕ3 <- c(0, 1, 2)
ψ1 <- ϕ1/sqrt(ϕ1[1]^2+ϕ1[2]^2+ϕ1[3]^2)
g2 <- ϕ2-(ϕ2[1]*ψ1[1]+ϕ2[2]*ψ1[2]+ϕ2[3]*ψ1[3])*ψ1
ψ2 <- g2/sqrt(g2[1]^2+g2[2]^2+g2[3]^2)
g3 <- ϕ3-(ϕ3[1]*ψ1[1]+ϕ3[2]*ψ1[2]+ϕ3[3]*ψ1[3])*ψ1-(ϕ3[1]*ψ2[1]+ϕ3[2]*ψ2[2]+ϕ3[3]*ψ2[3])*ψ2
ψ3 <- g3/sqrt(g3[1]^2+g3[2]^2+g3[3]^2)
ψ <- c(ψ1, ψ2, ψ3)
ψ
## [1] 9.486833e-01 -3.162278e-01 0.000000e+00 3.162278e-01 9.486833e-01
## [6] 0.000000e+00 -2.775558e-17 -5.551115e-17 1.000000e+00
xϕ <- c(0,ϕ1[1],0,ϕ2[1],0,ϕ3[1])
yϕ <- c(0,ϕ1[2],0,ϕ2[2],0,ϕ3[2])
zϕ <- c(0,ϕ1[3],0,ϕ2[3],0,ϕ3[3])
xψ <- c(0,ψ1[1],0,ψ2[1],0,ψ3[1])
yψ <- c(0,ψ1[2],0,ψ2[2],0,ψ3[2])
zψ <- c(0,ψ1[3],0,ψ2[3],0,ψ3[3])
bazaϕ <- data.frame(xϕ,yϕ,zϕ)
bazaψ <- data.frame(xψ,yψ,zψ)
bazaϕ
## xϕ yϕ zϕ
## 1 0 0 0
## 2 3 -1 0
## 3 0 0 0
## 4 1 2 0
## 5 0 0 0
## 6 0 1 2
bazaψ
## xψ yψ zψ
## 1 0.000000e+00 0.000000e+00 0
## 2 9.486833e-01 -3.162278e-01 0
## 3 0.000000e+00 0.000000e+00 0
## 4 3.162278e-01 9.486833e-01 0
## 5 0.000000e+00 0.000000e+00 0
## 6 -2.775558e-17 -5.551115e-17 1
Vyreskime grafy báz: (alternativne v Wolfram Mathematics)
g1<-plot_ly(data = bazaϕ,
x = ~xϕ, y = ~yϕ, z= ~zϕ,
type = "scatter3d", mode = "lines+markers") |>
layout(
title = "Zvolena báza, ktorú ortonormalizujete (ϕ)")
g1
g2<-plot_ly(data = bazaψ,
x = ~xψ, y = ~yψ, z= ~zψ,
type = "scatter3d", mode = "lines+markers") |>
layout(
title = "Ortonormalizovana báza ψ")
g2
Pred niekoľkými týždňami som urobil rovnakú úlohu vo Wolfram Mathematics a vyzeralo to takto:
Pri porovnaní procesu programovania ortonormalizácie bázy vo Wolfram Mathematics a R môžem poznamenať, že výpočty sú jednoduchšie a pohodlnejšie vo Wolfram Mathematics a vykresľovanie grafov je oveľa rýchlejšie a pohodlnejšie v R. Celkovo, Gram-Schmidtov ortogonalizačný proces je dôležity nastroj pre pracu s vektormi a zohrava velku rolu v efektivnom rieseni roznych matematickych problemov.