// Resolution de f (z) = 0 par dichotomie 
// entree a < b intervalle initial
// epsilon pour le test d'arret |f (c)| < epsilon
// K pour limiter le nombre d'iterations. 
// Sortie : k, nombre d'iterations
// X=(ci, 0 ≤ i ≤ k), les iteres
// E=(|f (ci)|,0 ≤ i ≤ k) if f(a)*f(b)>0 then return end c=(a+b)*0.5;fc=f(c);

K = 100;
eps = 0.00001;
a = 10;
b = -3;
 
function res = f(x); res = x*x*x - 2*x*x + x +3; endfunction


if ( f(a)*f(b) > 0) then return 
end
c= 0.5*(a+b);
fc = f(c);
C = c;
E = abs(fc);
k = 1;

while abs(fc)>eps & k < K do
     k=k+1;
     if f(a)*fc<0 then
        b=c; 
     else
        a=c; 
     end
     
     c=(a+b)*0.5;
     fc=f(c);
     E=[E,abs(fc)]
     disp([k,c])
end



