Algorithme de la Méthode de Newton-Hörner pour le calcul des racines d'un polynôme en Matlab :
function [roots,iter]=newtonhorner(a,x0,tol ,nmax) %NEWTONHORNER méthode de Newton-Horner % [ROOTS,ITER]=NEWTONHORNER(A,X0) calcule les racines % du polynôme % P(X) = A(1)*X^N + A(2)*X^(N -1)+...+ A(N)*X + A(N+1) % en utilisant la méthode de Newton -Horner démarrant % d’une donnée initiale X0. L’algorithme s’arrête % après 100 iterations ou quand la valeur absolue de % la différence entre deux itérées consécutives est % plus petite que 1.e-04. % [ROOTS,ITER]=NEWTONHORNER(A,X0,TOL ,NMAX) permet de % définir la tolérance pour le critère d’arrêt et le % nombre maximal d’itérations. if nargin == 2 tol = 1.e-04; nmax = 100; elseif nargin == 3 nmax = 100; end n=length(a)-1; roots = zeros(n,1); iter = zeros(n,1); for k = 1:n % Itération de Newton niter = 0; x = x0; diff = tol + 1; while niter < nmax & diff >= tol [pz,b] = horner(a,x); [dpz ,b] = horner(b,x); xnew = x - pz/dpz; diff = abs(xnew-x); niter = niter + 1; x = xnew; end if (niter==nmax & diff> tol) fprintf ([’Ne converge pas après avoir atteint ’ ,... ’le nombre maximum d’’itérations\n’]); end % Déflation [pz,a] = horner(a,x); roots(k) = x; iter(k) = niter; end return |
Aucun commentaire:
Enregistrer un commentaire