Algorithme de la Méthode de Newton en Matlab :
function [zero,res ,niter]=newton(fun ,dfun,x0,tol ,... nmax,varargin) %NEWTON Cherche les zéros d’une fonction. % ZERO=NEWTON(FUN ,DFUN,X0,TOL ,NMAX) tente de trouver % un zéro ZERO de la fonction dérivable FUN au % voisinage de X0 en utilisant la méthode de Newton. % FUN et sa dérivée DFUN prennent en entrée un réel x % et retournent une valeur réelle. Si la recherche % échoue, un message d’erreur est affiché. FUN et % DFUN peuvent aussi être des objets inline, des % fonctions anonymes ou bien être définies par des % M-files. % ZERO=NEWTON(FUN ,DFUN,X0,TOL ,NMAX,P1,P2 ,...) passe % les paramètres P1,P2 ,... aux fonctions: % FUN(X,P1,P2 ,...) et DFUN(X,P1 ,P2 ,...). % [ZERO,RES ,NITER]= NEWTON(FUN ,...) retourne la % valeur approchée du zéro, la valeur du résidu en % ZERO et le numéro de l’itération à laquelle ZERO a % été calculé. x = x0; fx = feval(fun ,x,varargin {:}); dfx = feval(dfun,x,varargin {:}); niter = 0; diff = tol+1; while diff >= tol & niter < nmax niter = niter + 1; diff = - fx/dfx; x = x + diff; diff = abs(diff); fx = feval(fun ,x,varargin {:}); dfx = feval(dfun,x,varargin {:}); end if (niter==nmax & diff > tol) fprintf ([’La méthode de Newton est arrêtée ’ ,... ’sans converger avec la tolérance souhaitée car\n’ ,... ’le nombre maximal d’’itérations a été atteint\n’]); end zero = x; res = fx; return |
Aucun commentaire:
Enregistrer un commentaire