\begin{enumerate}
\item[(a)]
F\"ur eine selbstgeschriebene Variante des Cholesky-Alg. verwenden wir die 
Routinen aus der Vorlesung zum Vorw\"arts-- / R\"uckw\"artseinsetzen. 

\begin{small}
\verbatiminput{../matlab/routines/CHOLESKY.m}
\end{small}
F\"ur $n=10,20,\dots,100$ bekommen wir folgende Rechenzeiten in flops.

\unitlength1cm
\begin{center}
\begin{picture}(8,7.5)
% \put(0,-.5){\epsfig{file=../026/A05031.ps,height=8cm,clip=}}
\put(0,-.5){\includegraphics[width=0.60\linewidth,height=0.55\linewidth]{../026/flopsa}}
\end{picture}
\end{center}

Beide Cholesky--Zerlegungen sind nahezu gleich schnell. Der '$\backslash$' 
erkennt hier nicht, da{\ss} die Matrix positiv definit ist und verwendet die
normale $LR$--Zerlegung (Gau{\ss}--Algorithmus). Deshalb braucht er doppelt
so lange.\\
\newpage
F\"ur $n=10,20,\dots,100$ bekommen wir folgende relative Fehler in der 
2--Norm.

\unitlength1cm
\begin{center}
\begin{picture}(8,7.5)
% \put(0,-.5){\epsfig{file=../026/A05032.ps,height=8cm,clip=}}
\put(0,-.5){\includegraphics[width=0.60\linewidth,height=0.55\linewidth]{../026/fehlera}}
\end{picture}
\end{center}

Die Fehler sehen hier nicht sonderlich repr\"asentativ aus. Das liegt 
daran, da{\ss} die Matrizen zuf\"allig erzeugt worden sind. 


\item[(b)]
Wir stutzen den Cholesky--Algorithmus f\"ur tridiagonale Matrizen zurecht.
Entsprechend verfahren wir beim Vorw\"arts--/R\"uckw\"artseinsetzen.

\begin{small}
\verbatiminput{../matlab/routines/CHOLTRI.m}
\verbatiminput{../matlab/routines/FORWBI.m}
\verbatiminput{../matlab/routines/BACKWBI.m}
\end{small}
F\"ur $n=10,20,\dots,100$ bekommen wir folgende Rechenzeiten in flops.

\unitlength1cm
\begin{center}
\begin{picture}(8,7.5)
% \put(0,-.5){\epsfig{file=../026/A05041.ps,height=8cm,clip=}}
\put(0,-.5){\includegraphics[width=0.60\linewidth,height=0.55\linewidth]{../026/flopsb}}
\end{picture}
\end{center}

Vorausgesetzt die Matrix ist als 'SPARSE'(schwach besetzt) vereinbart, 
so sind der 
selbstgeschriebene Algorithmus und die Cholesky--Zerlegung aus \ml~praktisch 
gleich
schnell. Der '$\backslash$' braucht auch erstaunlich wenig Zeit. Dies liegt
an der 'intelligenten' Herangehensweise von \ml. Wird die Matrix nicht als
'SPARSE' vereinbart, so \"andert sich das Laufzeitverhalten sofort.

\unitlength1cm
\begin{center}
\begin{picture}(8,7.5)
% \put(0,-.5){\epsfig{file=../026/A05042.ps,height=8cm,clip=}}
\put(0,-.5){\includegraphics[width=0.60\linewidth,height=0.55\linewidth]{../026/flopsb2}}
\end{picture}
\end{center}

F\"ur $n=10,20,\dots,100$ bekommen wir folgende relative Fehler in der 
2--Norm bei der 'SPARSE'--Version:

\unitlength1cm
\begin{center}
\begin{picture}(8,7.5)
% \put(0,-.5){\epsfig{file=../026/A05043.ps,height=8cm,clip=}}
\put(0,-.5){\includegraphics[width=0.60\linewidth,height=0.55\linewidth]{../026/fehlerb}}
\end{picture}
\end{center}

Die Fehler liegen zwar recht dicht beieinander, aber das Ausnutzen der
Symmetrie und Positivdefinitheit in unserem Algorithmus sowie in 'chol' liefert
einen etwas geringeren Fehler.
\end{enumerate}

