function kresli(metoda,f,x0,I);
% function kresli(metoda,f,x0,I);
% Demonstrace iteracnich metod
% Metody: 'I' - prosta iteracni
%         'N' - Newtonova
%         'S' - secen
%         'R' - regula-falsi
% f - retezec obsahujici danou funkci
% X0 - poc. iterace (u metody secen a regula-falsi dvouprvkovy vektor
% I - interval pro kresleni

f1=figure;
konec=0;
hold on;
metoda=metoda(1);
metoda=upper(metoda);
if metoda=='N' df=diff(sym(f)); end
f=strrep(f,'*','.*');
f=strrep(f,'^','.^');
f=strrep(f,'/','./');
a=I(1);
b=I(2);
xx=linspace(a,b,201);
x=xx;
fx=eval(f);
if metoda=='I'
 plot(xx,fx,'b',xx,xx,'b');
else
 plot(xx,fx,'b',xx,zeros(size(xx)),'b');
end
plot(x0(1),0,'r*');
if metoda=='S' | metoda=='R'
 plot(x0(2),0,'r*');
 x1=x0(1);
 x2=x0(2);
end
if metoda=='I'
% plot(xx,xx);
 plot([x0,x0],[0,x0],'r*--');
end
if metoda=='M'
 x=x0(1);
 fx=eval(f);
 plot([x0(1),x0(1)],[0,fx],'r*--');
 x=x0(2);
 fx=eval(f);
 plot([x0(2),x0(2)],[0,fx],'r*--');
 x=x0(3);
 fx=eval(f);
 plot([x0(3),x0(3)],[0,fx],'r*--');
 x1=x0(1);
 x2=x0(2);
 x1=x0(1);
 x3=x0(3);
end
disp('Neco stiskni')
pause
xn=x0;
ni=0;
klavesa=0;
while ni<25 & konec~=1;
 switch metoda
  case 'N',
   xo=xn;
   xn=new1(f,df,xo)
   x=xo;
   fx=eval(f);
   plot([xo,xo,xn],[0,fx,0],'r*--');
  case 'S',
   xn=sec1(f,x1,x2)
   x=x1;
   fx1=eval(f);
   x=x2;
   fx2=eval(f);
   plot([x1,x1,xn],[0,fx1,0],'r*--');
   plot([x2,x2,xn],[0,fx2,0],'r*--');
   x1=x2;
   x2=xn;
  case 'R',
   xn=sec1(f,x1,x2)
   x=x1;
   fx1=eval(f);
   x=x2;
   fx2=eval(f);
   plot([x1,x1,xn],[0,fx1,0],'r*--');
   plot([x2,x2,xn],[0,fx2,0],'r*--');
   x=xn;
   fx=eval(f);
   if fx*fx2<0 x1=x2; end
   x2=xn;
  case 'I'
   xo=xn;
   x=xo;
   xn=eval(f)
   plot([xo,xo,xn],[xo,xn,xn],'r*--');
  case 'M'
   [xn,aa,bb,cc]=mull1(f,x1,x2,x3);
   xn
   x=xn;
   fx=eval(f);
   pp=polyval([aa,bb,cc],xx-x3);
   plot(xx,pp,'r:');
   plot([xn,xn],[0,fx],'r*--');
   x1=x2;
   x2=x3;
   x3=xn;
 end
 pause(2)
 klavesa=get(f1,'CurrentCharacter');
 if isempty(klavesa), klavesa=0; end
 if klavesa==27, konec=1; end
 ni=ni+1;
% pause
end
disp('Neco stiskni')
pause
close(f1)
