function x = bisekt(f, int, tol)
% bisekt - bisektionsalgoritmen för den skalära ekvationen f(x) = 0
% 
%   Syntax: 
%           x = bisekt(f, int, tol)
%   Inargument: 
%           f - funktionshandtag till en funktionsfil
%           int - 1x2-matris som specificerar ett intervall int = [a,b]
%           tol - en tolerans 
%   Utargument: 
%           x - en approximativ lösning i intervallet int = [a,b]
%   Beskrivning:
%           Programmet bisekt använder bisektionsalgoritmen för att 
%           beräkna en approximativ lösning till den skalära ekvationen
%           f(x) = 0 i intervallet int = [a,b].  Funktionsfilen som f
%           pekar på måste innehålla funktionen y = f(x). Funktionsvärdena
%           f(a) och f(b) måste ha olika tecken.  Programmet beräknar
%           en approximativ lösning x med ett fel |x-x_exakt| < tol. 
%           Programmet returnerar en tom matris x = [] som utargument
%           om f(a) och f(b) har samma tecken.  
%   Exempel: 
%          x = bisekt(@sin,[1,4],1e-7)   beräknar pi med 6 decimaler
%
%----------------------------------------------------------------------

% Ersätt ?? med MATLAB-kod för att få en fungerande bisektionslösare.

a=int(1);                  % startintervallets vänstra ändpunkt
b=    ??;                  % startintervallets högra ändpunkt

while b-a ??       % fortsätt så länge som aktuellt intervall är längre
                   % än angiven tolerans
                      
  x=??;            % beräkna mittpunkten x på aktuellt intervall [a,b]
  fx=??;           % beräkna värdet på f i mittpunkten

  if fx==0         % x är en lösning
      return       %    avbryt och returnera x
  end
  
  if f(a)*fx<0     % lösning ligger i vänster hälft av aktuellt intervall 
    b=??;          %    flytta höger ändpunkt b
  else             % lösning ligger i höger hälft av aktuellt intervall 
    a=??;          %    flytta vänster ändpunkt a
  end

end

x=??;              % beräkna mittpunkten x på sista intervallet
                   % detta x returneras
