
f=inline('sin(x)-x');
a=-0.3; b=0.4;

tolres=10^(-6);
tolintv=10^(-6);
maxit=20;


% PONI "a < b" ANCHE IN CASO DI ERRORE DELL'UTENTE.
if b < a
    s=b; b=a; a=s;
end

fa=feval(f,a);
fb=feval(f,b);

% SE UNO TRA a E b E' LA SOLUZIONE, ALLORA ESCI DOPO AVER
% ASSEGNATO L'OUTPUT.

if fa == 0 
    c=a; k=0; semilunghezza=(b-a)/2; residuopesato=0;
    return; 
end

if fb == 0 
    c=b; k=0; semilunghezza=(b-a)/2; residuopesato=0;
    return; 
end

% SE IL NUMERO DI ITERAZIONI NON E' ECCESSIVO ALLORA PROCEDI.

for index=1:maxit
    
    fprintf('\n \t a: %3.8f b: %3.8f',a,b)
    
    c=(a+b)/2; fc=feval(f,c);
    
    fprintf('\n \t c: %3.8f',c)
    
    % CALCOLA IL NUOVO INTERVALLO [a,b].
    if sign(fc) == sign(fa)
        a=c; fa=fc;  %SUB INTV. DX.
    else
        b=c; fb=fc;  %SUB INTV. SX.
    end
    
    residuo(index)=abs(fc); lunghezza(index)=(b-a);
    
    fprintf('\n \t a: %3.8f b: %3.8f c: %3.8f',a,b,c)
   
end

k=maxit;

fprintf('\n')