% Klassillinen skalaariorientoitunut bisektio
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


f=inline('exp(x)-1.5-atan(x)','x')  % Määritellään (taas sama) funktio.
tol=10^(-5);    % Asetetaan toleranssi.

a(1)=-1.4;b(1)=5; 
i=1;
fa=f(a(i));fb=f(b(i));

if sign(fa) == sign(fb)
   error('Funktio ei saa erimerkkisiä arvoja päätepisteissä')
end;

while ( (b(i)-a(i) > tol) & (i < 7) )
  x0=(a(i)+b(i))/2;
  f0=f(x0);
   if (sign(fa) == sign(f0))
     a(i+1)=x0; b(i+1)=b(i);fa=f0;  
   elseif (sign(fb) == sign(f0))
     a(i+1)=a(i); b(i+1)=x0;fb=f0; 
   end;
   i=i+1;
end;
format long          % Tulostustarkkuus maksimiarvoonsa
ab=[a' b']           % Transponoidaan a-vektori ja b-vektori ja laitetaan vierekkäin.
                     % näin nähdään havainnollisesti algoritmin eteneminen.
virheet=diff(ab')    % Muodostetaan välien pituudet.
format short
[(1:i)' a' b']       % Laitetaan iteraatiokierrosnumero 1. sarakkeeksi.

