\begin{Tehtava}
\begin{tehtava}
mlLi050.tex \\
Gram-Schmidtin menetelmä vektorijoukon $\lbrace \mathbf{v}_1,\mathbf{v}_2, \ldots ,\mathbf{v}_n \rbrace$ ortonormalisoimiseksi toimii seuraavasti:
\begin{itemize}
\item Ortogonalisoidaan: \\
$\mathbf{u}_1  = \mathbf{v}_1$

$\mathbf{u}_2  = \mathbf{v}_2 - \frac{\mathbf{u}_1 \cdot \mathbf{v_2}}{\mathbf{u}_1 \cdot \mathbf{u}_1} \mathbf{u}_1$

$\vdots$

$\mathbf{u}_n = \mathbf{v}_n - \sum_{k=1}^{n-1} \frac{\mathbf{u}_k \cdot \mathbf{v_n}}{\mathbf{u}_k \cdot \mathbf{u}_k} \mathbf{u}_k$

\item Normitetaan: $\mathbf{e}_i = \frac{\mathbf{u}_i}{||\mathbf{u}_i||}, i = 1\ldots n$
\end{itemize}

Kirjoita MATLAB-funktio \texttt{B = grmsch(A)} joka hakee Gram-Schmidtin menetelmällä ortonormaalin kannan matriisin $\mathbf{A}$ sarakeavaruudelle. Testaa ortonormaalius laskemalla \texttt{B'*B}.

\textbf{Vinkki:} Laskutoimitus $\frac{\mathbf{u}_k \cdot \mathbf{v_n}}{\mathbf{u}_k \cdot \mathbf{u}_k} \mathbf{u}_k$ vastaa toimitusta $(\mathbf{u}_k^T \mathbf{v}_n)\mathbf{u}_k$. 
\textbf{Lisätehtävä nopeille:} Matriisin sarakeavaruuden normalisointi ei poikkea kovin paljon QR-hajotelman tekemisestä. Jos ehdit, toteuta oma algoritmisi QR-hajotelmalle. 
\end{tehtava}
%\begin{vihje} 
%\end{vihje}
\end{Tehtava}
