Calcul d'un zero d'une droite par une méthode dichotomique

Portrait de furet

La fonction dont on veut calculer le zéro :
fun.m

% Put your fun stuff here :)
function y=fun(x)
y= x^2 -10;

Le script qui calcule numériquement ce zéro (s'il existe) :
dichotomie.m

% auteurs : Erwan Le Guennec & Paul Hillereau
% version 1.0
% fevrier 2008
% script qui permet de résoudre numériquement une équation du type
% f(x)=0 sur un intervalle [a,b]
% Attention on suppose que f ne s'annule qu'une seule fois
% sur [a,b]
% on se fixe une précision epsi pour calculer le zero
% Attention pour éviter de lancer une boucle infinie
% on fixe arbitrairement le nombre max d'itérations
 
% nb d it max
imax = 100;
% epsi precision recherchee
epsi = 1/100; 
% compteur de boucle
I=0;
%Intervalle [a,b]
a=-5;
b=7;
% sert a stocker les resultats numeriques
c=0;
 
% fun() est une fonction du type f(x)
% c'est celle dont on cherche le zéro
% Principe : on divise [a,b] en deux
% on regarde de quel côté est le zéro
% (on teste si le signe change ou pas)
% On se place sur le nouvel intervalle
% et on recommence.
 
while (I < imax)
    c=(a+b)/2	% c milieu de [a,b]
    if (fun(a)*fun(c) <= 0)	% si il y a un changement de signe
        b=c;	% le zéro est compris entre a et c
    else
        a=c;	% le zéro est compris entre c et b
    end
    if (abs(fun(c))<= epsi)
        sprintf 'ok'
        break;
    elseif (I == imax-1)
        sprintf 'pas ok'
        break;
    end
    I = I +1;
end
'nombre d iterations'
I+1
'resultat'
c
Fichier attachéTaille
Icône texte brut fun.txt59 octets
Icône texte brut dichotomie.txt1.23 Ko