%metodo di bisezione per funzioni non lineari
x=linspace(0,pi);
Nmax=100;
tol=sqrt(eps);

f=@(x) cos(x);

[c]=bisezione(f,x,Nmax,tol)
fplot(f)
xline(c)
yline(0)


function [c] = bisezione(f,x,Nmax,tol)
%metodo di bisezione
m=x(1);
M=x(end);
k=1;
t=(M-m)/2;
e(k)=abs(f(t));

while k<Nmax && e(k)>tol
    t=(M-m)/2;

    if f(t)*f(M)<0
        m=t;
       
    elseif f(t)*f(m)<0
        M=t;
    else 
        c=t;
    end 
    e(k)=abs(f(t));
end

c=t;
k=k+1;

end 