Calcul d'un zero d'une droite par la méthode de Descartes

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) :
descartes.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
 
% nombre max d'iterations
imax=100;
% epsi precision recherchee
epsi=1/100;
% compteur de boucle
I=0;
 
% intervalle [a,b]
a=-5;
b=7;
 
% utilise pour stocker les resultats numeriques
z=0;
e=0;
d=0;
 
% fun() est une fonction du type f(x)
% c'est celle dont on cherche le zéro
% on utilise la méthode de Descartes
% qui consiste à remplacer le zéro de la courbe
% par le zéro de la corde (a,b)
 
while (I<imax)
    d=( (fun(b)-fun(a)) / (b-a) );
    e = fun(a) - (d*a);    % equation de droite y = dz +e
    z = -(e/d);     % 0 = dz + e
    if (fun(a)*fun(z) <= 0)
        a=z;
    else
        b=z;
    end
    if( abs(fun(z)) <= epsi )
        'ok'
        break;
    elseif (I==imax-1)
        'pas ok'
        break;
    end
    I = I + 1;
end
 
'nb d iterations'
I+1
'resultat'
z
Fichier attachéTaille
Icône texte brut fun.txt59 octets
Icône texte brut descartes.txt1.17 Ko