//******************************************************************* // recherche des zéros d'une fonction par la méthode de Newton // Dominique Lefebvre octobre 2012 // www.tangenteX.com //******************************************************************* funcprot(0); // pour éviter un message de warning (redef des fonctions) // Définition de la fonction à traiter et sa dérivée function [y] = f(x) y = x^3 + 4*x^2 + 5; endfunction function [y] = df(x) y = 3*x^2 + 8*x; 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 Newton - La fonction retourne la valeur approchée // à epsilon près du zéro et le nombre d'itérations function [x0,nbiter] = Newton(xi,f,df,eps) // initialisation n = 0; X = xi; // boucle de calcul while (abs(f(X)) > eps) n = n + 1; X = X - f(X)/df(X); 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 la méthode de Newton x0 = -4; nbiter = 0; [x0,nbiter] = Newton(x0,f,df,epsilon); printf("Zero : %f nb iterations: %d\n",x0,nbiter);