addpath('../routines/');

v=10:10:100;
for n=v
    fprintf('n=%d\n',n);
    A=spdiags(ones(n,1)*[-1 2 -1],-1:1,n,n);
    ew=sort(eig(A));

    % QR-Algorithmus, implizite Variante, ohne Shifts
    fprintf('Ohne Shifts, ');
    flops(0);
    [m,V,T]=SYMQRALG(A,'SYMIQRSTEP1');
    fprintf('Anzahl Iterationen: %d\n',m);
    fl1(n)=flops; 
    m1(n)=m;
    f1(n)=norm(sort(diag(T))-ew,'inf');
    
    % QR-Algorithmus, implizite Variante, mit Wilkinson-Shift
    fprintf('Mit Shifts,  ');
    flops(0);
    [m,V,T]=SYMQRALG(A,'SYMIQRSTEP2');
    fprintf('Anzahl Iterationen: %d\n',m);
    fl2(n)=flops; 
    m2(n)=m;
    f2(n)=norm(sort(diag(T))-ew,'inf');
end; % for

figure(1);
loglog(v, fl1(v), '+', v, fl2(v),'o');
title('Rechenzeitvergleich QR mit/ohne shifts');
xlabel('n, `+` ohne Shifts, `o` mit Wilkinson-Shift');
ylabel('flops');

figure(2);
loglog(v, m1(v), '+', v, m2(v),'o');
title('Vergleich der Iterationszahlen QR mit/ohne shifts');
xlabel('n, `+` ohne Shifts, `o` mit Wilkinson-Shift');
ylabel('Anzahl Iterationen');

figure(3);
loglog(v, f1(v), '+', v, f2(v),'o');
title('Genauigkeitsvergleich QR mit/ohne shifts');
xlabel('n, `+` ohne Shifts, `o` mit Wilkinson-Shift');
ylabel('maximaler Fehler');
