//******************************************************************* // recherche des zéros d'une fonction par la méthode de la dichotomie // Dominique Lefebvre octobre 2012 // www.tangenteX.com //******************************************************************* funcprot(0); // pour éviter un message de warning (redef des fonctions) // Définition de la fonction à traiter function [y] = f(x) y = x^3 + 4*x^2 + 5; endfunction // Fonction de tracé de la fonction function plot_fonction(x1,x2,fn,pas) x = x1:pas:x2; y = fn(x); plot2d(x,y,style = 2,axesflag = 5); endfunction // Méthode de la dichotomie - La fonction retourne la valeur approchée // à epsilon près du zéro dans l'intervalle [a,b] et le nombre d'itérations function [x0,nbiter] = dichotomie(a,b,fonction,eps) n = 0; Ya = f(a); while abs(b - a) > 2*eps n = n + 1; // split de l'intervalle [a,b] X = 0.5*( a + b); Y = f(X); // détermination du sous-intervalle contenant le zéro if (Ya*Y) < 0 then b = X else Ya = Y; a = X; end; end; // retour des résultats x0 = X; nbiter = n; endfunction //************************************************************************* // Programme principal //************************************************************************* // Définition des paramètres x1 = -5.0; x2 = 0.0; pas = 0.1; epsilon = 1.0e-6; // tracé de la fonction plot_fonction(x1,x2,f,pas); // résolution de f(x) = 0 par dichotomie x0 = 0; nbiter = 0; [x0,nbiter] = dichotomie(x1,x2,f,epsilon); printf("Zero : %f nb iterations: %d\n",x0,nbiter);