6.2 Une approche g´ eom´ etrique de la d´ etermination des racines
221
Newton converge vers α en 6 it´ erations au lieu de 7, mais la m´ ethode de la s´ ecante
effectue 94 flops au lieu de 177 flops pour celle de Newton.
•
Les m´ ethodes de la corde, de la s´ ecante, de la fausse position et de Newton
sont impl´ ement´ ees dans les Programmes 43, 44, 45 et 46. Ici et dans le reste
du chapitre, x0 et xm1 d´ esignent les donn´ ees initiales x
(0) et x
(−1) . La variable
tol sert pour le test d’arrˆ et (qui est, dans le cas de la m´ ethode de la fausse
position, |f(x
(k) )| < tol, et pour les autres m´ ethodes |x
(k+1)
− x
(k)
| < tol).
Enfin, dfun contient l’expression de f
pour la m´ ethode de Newton.
Programme 43 - chord : M´ ethode de la corde
function [xvect,xdif,fx,nit]=chord(a,b,x0,tol,nmax,fun)
%CHORD M´ ethode de la corde
% [XVECT,XDIF,FX,NIT]=CHORD(A,B,X0,TOL,NMAX,FUN) tente de trouver un
% z´ ero de la fonction continue FUN sur l’intervalle [A,B] en utilisant
% la m´ ethode de la corde. FUN accepte une variable r´ eelle scalaire x et
% renvoie une valeur r´ eelle scalaire.
% XVECT est le vecteur des it´ er´ ees, XDIF est le vecteur des diff´ erences
% entre it´ er´ ees cons´ ecutives, FX est le r´ esidu. TOL est la tol´ erance de
% la m´ ethode.
x=a; fa=eval(fun);
x=b; fb=eval(fun);
r=(fb-fa)/(b-a);
err=tol+1; nit=0; xvect=x0; x=x0; fx=eval(fun); xdif=[];
while nittol
nit=nit+1;
x=xvect(nit);
xn=x-fx(nit)/r;
err=abs(xn-x);
xdif=[xdif; err];
x=xn;
xvect=[xvect;x]; fx=[fx;eval(fun)];
end
return
Programme 44 - secant : M´ ethode de la s´ ecante
function [xvect,xdif,fx,nit]=secant(xm1,x0,tol,nmax,fun)
%SECANT M´ ethode de la s´ ecante
% [XVECT,XDIF,FX,NIT]=SECANT(XM1,X0,TOL,NMAX,FUN) tente de trouver un
% z´ ero de la fonction continue FUN en utilisant la m´ ethode de la
% s´ ecante. FUN accepte une variable r´ eelle scalaire x et
% renvoie une valeur r´ eelle scalaire.
% XVECT est le vecteur des it´ er´ ees, XDIF est le vecteur des diff´ erences
% entre it´ er´ ees cons´ ecutives, FX est le r´ esidu. TOL est la tol´ erance de
% la m´ ethode.
x=xm1; fxm1=eval(fun);
Précédent

- 231/540

Suivant