clear;

% Hinzuf"ugen eines Suchpfades f"ur M-Files (nur falls erforderlich)
addpath('../routines');

% maximale Anzahl Iterationen
kmax=100;
% Abbruchtoleranz
tol=eps;

v=menu('Auswahl der Iterationsverfahren', ...
       'Newton-Verfahren', ...
       'modifiziertes Newton-Verfahren', ...
       'Vergleich beider', ...
       'Ende');

while (v<4)

       % Vektoren für Zeit, Fehler
       zeit  =zeros(2,1);
       fehler=zeros(2,1);
       w=menu('Testbeispiel', ...
              'Beispiel der Übung', ...
              'Eigenwertproblem');
       if w==1
	  x =[1/2; 0; 0];
	  f ='PHI';
	  Df='DPHI';
       else
	  x =[1/2; 0; 0];
	  f ='PSI';
	  Df='DPSI';	    
	  global A;
	  n=10;
	  A=spdiags(ones(n,1)*[-1 2 -1],-1:1,n,n);
	  x=[ones(n,1); 0];
       end
       
       % 1. Variante, Newton-Verfahren
       if v==1 | v==3
          flops(0);
          [y1,k1,res1]=NEWTON(f,Df,x,tol,kmax);
	  zeit(1)  =flops;
       end % if
       
       % 2. Variante, modifiziertes Newton-Verfahren
       if v==2 | v==3
          flops(0);
          [y2,k2,res2]=MODNEWTON(f,Df,x,tol,kmax);
          zeit(2)  =flops;
       end % if
       
       figure(1);
       hold off;
       if v==1 | v==3
          semilogy(1:length(res1),res1,'+r');
          hold on;
       end % if
       if v==2 | v==3
          semilogy(1:length(res2),res2,'og');
       end % if
       hold off;
       title('Residuum des Fehlers');
       xlabel('# Iterationen, `+`=NEWTON, `o`=mod. NEWTON');
       ylabel('||f(x)||');
       
       v=menu('Auswahl der Iterationsverfahren', ...
              'Newton-Verfahren', ...
              'modifiziertes Newton-Verfahren', ...
              'Vergleich beider', ...
              'Ende');
end % while


