addpath('../routines');

% Wähle maximale Anzahl Stützstellen als Zweierpotenz zum besseren Vergleich
% mit der Extrapolation
l=9; % Hier 2^l

k=menu('Integration mittels summierter Regeln',...
       'Trapezregel',...
       'Mittelpunktregel',...
       'Simpsonregel',...
       'Vergleich aller',...
       'Ende');
   
   
while k<5

      lf=menu('Funktion',...
	      'int sin(x) auf  [0,pi/2]',...
	      'int x^(1/2) auf [0,1]',...
	      'int x^(3/2) auf [0,1]',...
	      'int x^(5/2) auf [0,1]');
      if lf==1
	 fname='sin';
	 a=0; b=pi/2;
         intexakt=1;
      elseif lf==2
	 fname='FUNKTION3';
	 a=0; b=1;
         intexakt=2/3;
      elseif lf==3
	 fname='FUNKTION4';
	 a=0; b=1;
         intexakt=2/5;
      elseif lf==4
	 fname='FUNKTION5';
	 a=0; b=1;
         intexakt=2/7;
      end
	
	
	
      w =zeros(3,l+1);
      fl=zeros(3,l+1);
      m =zeros(1,l+1);
                 
      N=1;
      for i=1:l+1

	    % stückweise Trapezregel zur geg. Funktion f auf [a,b]
	    if k==1 | k==4
	       flops(0);
	       w(1,i) =TRAPEZ(fname,a,b,N);
	       fl(1,i)=flops;
	    end % if
	    
	    % stückweise Mittelpunktregel zur Funktion f auf [a,b]
	    if k==2 | k==4
	       flops(0);
	       w(2,i) =MITTELP(fname,a,b,N);
	       fl(2,i)=flops;
	    end % if
	    
	    % stückweise Simpsonregelregel zur Funktion f auf [a,b]
	    % N=1 nicht möglich für summierte Simpson-Regel
	    if (k==3 | k==4) & N>1
	       flops(0);
	       w(3,i) =SIMPSON(fname,a,b,N);
	       fl(3,i)=flops;
	    end % if
	     
	    m(i)=N;
	    N=N*2;
      end;

      % Grafische Auswertung, Teil 1: Fehler
      figure(1);
      txt='N, ';
      if k==1 | k==4
         loglog(m, abs(intexakt-w(1,:)), '+r');
	 txt=[txt '`+` Trapez, '];
	 hold on;
      end % if
	    
      if k==2 | k==4
	 loglog(m, abs(intexakt-w(2,:)), 'ob');
	 txt=[txt '`o` Mittelpunkt, '];
      end % if

      if k==3 | k==4
	 loglog(m, abs(intexakt-w(3,:)), 'xm');
	 txt=[txt '`x` Simpson'];
      end % if
      
      hold off;
      xlabel(txt);
      ylabel('Fehler');
      title('Genauigkeit der summierten Regel(n)')
      

      % Grafische Auswertung, Teil 2: flops
      figure(2)
      if k==1 | k==4
	 loglog(m, fl(1,:), '+r');
	 hold on;
      end % if
      if k==2 | k==4
	 loglog(m, fl(2,:), 'ob');
      end % if
      if k==3 | k==4
	 loglog(m, fl(3,:), 'xm');
      end % if

      hold off;
      xlabel(txt);
      ylabel('flops');
      title('Rechenzeit de summierten Regel(n)');

      

      k=menu('Integration mittels summierter Regeln',...
             'Trapezregel',...
	     'Mittelpunktregel',...
	     'Simpsonregel',...
	     'Vergleich aller',...
	     'Ende');
	
end % while 
