dimanche 26 mai 2013

Algorithme de la Méthode de Newton pour les Systèmes non Linéaires en Matlab

Algorithme de la Méthode de Newton pour les Systèmes non Linéaires en Matlab :

function [x,F,niter] = newtonsys(Ffun,Jfun,x0,tol ,...
nmax, varargin)
%NEWTONSYS cherche un zéro d’un système non linéaire
% [ZERO,F,NITER]=NEWTONSYS(FFUN,JFUN,X0,TOL ,NMAX)
% tente de trouver le vecteur ZERO, racine d’un
% système non linéaire défini dans FFUN et dont
% la matrice jacobienne est définie dans la
% fonction JFUN. La racine est cherchée autour
% du vecteur X0.
% La variable F renvoie le résidu dans ZERO
% NITER renvoie le nombre d’ itérations nécessaires
% pour calculer ZERO. FFUN et JFUN sont des fonctions
% MATLAB définies dans des M-files.
niter = 0; err = tol + 1; x = x0;
while err >= tol & niter < nmax
J = feval(Jfun,x,varargin {:});
F = feval(Ffun,x,varargin {:});
delta = - J\F;
x = x + delta;
err = norm(delta);
niter = niter + 1;
end
F = norm(feval(Ffun,x,varargin {:}));
if (niter==nmax & err > tol)
fprintf ([’Pas de convergence dans le nombre’ ,...
’ d’’iterations imparti\n ’]);
fprintf ([’ La valeur retournée a un résidu ’ ,...
’ relatif de %e\n’],F);
else
fprintf ([’La méthode a convergé à l’’itération’ ,...
’ %i avec un résidu %e\n’],niter,F);
end
return

Aucun commentaire:

Enregistrer un commentaire