% Sök nollställe till f(x)=x^2-x-2.
% Fixpunktsmetoden: x(n+1)=g(x(n)), n=1, 2, ...
clf;
%Rita kurvor:
%alt1:                 x = g(x): x = x^2-2
%      xfin=-2:.01:3;
%      yfin=xfin.^2-2;
%      plot(xfin,xfin,'b-');
% 	 hold on;
% 	 plot(xfin,yfin,'k-');

%alt2                  x = g(x): x = sqrt(x+2)
	 xfin=-2:.01:3;      
     yfin=sqrt(xfin+2);
     plot(xfin,xfin,'b-');
	 hold on;
	 plot(xfin,yfin,'k-');

%alt3                  x = g(x): x = 1+2/x
%      xfin=-2:.01:-0.5; 
% 		yfin=1+2./xfin;
%      plot(xfin,xfin,'b-');
% 		hold on;
% 		plot(xfin,yfin,'k-');
%      xfin=0.5:0.01:3;
%      yfin=1+2./xfin;
% 		plot(xfin,xfin,'b-');
% 		plot(xfin,yfin,'k-');
      
%alt4                   x = g(x): x = (x^2+2)/(2*x-1)
%      xfin=-2:.01:0; 
% 		yfin=(xfin.^2+2)./(2*xfin-1);
%      plot(xfin,xfin,'b-');
% 		hold on;
% 		plot(xfin,yfin,'k-');
%      xfin=1:0.01:3;
%      yfin=(xfin.^2+2)./(2*xfin-1);
% 		plot(xfin,xfin,'b-');
%      plot(xfin,yfin,'k-')
%       
xlabel('x led');
ylabel('fi led');
title('Graf över iterationsstegen');
grid

%Startvärde:
text(0,-1.8,'Markera startpunkt i grafen på räta linjen');
[xg,yg]= ginput(1);

%Iterera:
antal_iterationer=0;

while 1      %(Anm:nollskilda element motsvarar "sant")
   val= menu('Ett steg till?','ja','nej');
   if val==2
      break;
   end;
   antal_iterationer=antal_iterationer+1;
   %alt1
%     xny=xg.^2-2;
   %alt2
   xny=sqrt(xg+2);
   %alt3
%     xny=1+2/xg;
   %alt4
%     xny=(xg.^2+2)./(2*xg-1);
      
    plot([xg,xg,xny],[xg,xny,xny],'r*')
    plot([xg,xg,xny],[xg,xny,xny],'r-')
    
    if abs(xny-xg)<1e-8 |antal_iterationer==20 % Klar??
        break
    end
    xg=xny;
 end;
 % Resultatet:
 
 if antal_iterationer==20
     disp('Avbrott efter 20 iterationer:')
     disp(['Sista värdet: ',num2str(xny)])  %Läs i Help om num2str
 elseif val==2
     disp('Du har valt att stanna')
     disp(['Sista värdet: ',num2str(xny)])
 else
     disp('De två sista iteraten:')
     disp([xg,xny])
     disp(['efter ',num2str(antal_iterationer),' iterationer'])
 end
 