% Angewandte Numerik 1, SoSe 2014
% Uebungsblatt 02, Aufgabe 15: Cholesky-Zerlegung
%
% Testprogramm testRuntime zum Vergleich der Laufzeiten der
% LR-Zerlegung, der Cholesky-Zerlegung und der Cholesky-
% Zerlegung fuer Bandmatrizen

clear all;
close all;
clc;


%% Konstanten, Speicherplatz anlegen

N = [2.^(3:9)];             % Dimension der Band-Matrix

time_LR = zeros(1,length(N));
time_cholesky = zeros(1,length(N));
time_choleskyBand = zeros(1,length(N));


%% Rechenzeit fuer viele Matrixdimensionen n

i = 1;
for n = N
    fprintf('Matrixdimension: n = %d\n', n);
    A = rand(5,n); 
    A = diag(A(1,:))+diag(A(2,2:end),1)+diag(A(3,2:end),-1)...
            + diag(A(4,6:end),5)+diag(A(5,6:end),-5);
    A = A+A';
    A = A+(norm(A,1)+norm(A,Inf))*eye(n);
    
    tic
    [L, R] = lr(A);
    time_LR(i) = toc;
   
    tic
    L = cholesky(A);
    time_cholesky(i) = toc;
    
    tic
    Lb = choleskyBand(A,5);
    time_choleskyBand(i) = toc;
    
    i = i+1;
end

%% Visualisierung: Daten plotten

loglog(N,time_LR,'g*--',N,time_cholesky,'b*-.',N,time_choleskyBand,'r*-')
title('Vergleich der Laufzeiten: Funktionen lr, cholesky und choleskyBand.'...
            , 'FontSize', 12)
xlabel('Matrix-Dimension n', 'FontSize', 12)
ylabel('Rechenzeit in Sekunden', 'FontSize', 12);
legend('lr', 'cholesky','choleskyBand', 'Location', 'NorthWest')
