dimanche 26 mai 2013

Algorithme de la Méthode de Newton-Hörner pour le calcul des racines d'un polynôme en Matlab

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