222
6 R´ esolution des ´ equations et des syst` emes non lin´ eaires
xvect=[x]; fx=[fxm1];
x=x0; fx0=eval(fun);
xvect=[xvect;x]; fx=[fx;fx0];
err=tol+1; nit=0; xdif=[];
while nittol
nit=nit+1;
x=x0-fx0*(x0-xm1)/(fx0-fxm1);
xvect=[xvect;x];
fnew=eval(fun); fx=[fx;fnew];
err=abs(x0-x);
xdif=[xdif;err];
xm1=x0; fxm1=fx0;
x0=x; fx0=fnew;
end
return
Programme 45 - regfalsi : M´ ethode de la fausse position
function [xvect,xdif,fx,nit]=regfalsi(xm1,x0,tol,nmax,fun)
%REGFALSI M´ ethode de la fausse position
% [XVECT,XDIF,FX,NIT]=REGFALSI(XM1,X0,TOL,NMAX,FUN) tente de
% trouver un z´ ero de la fonction continue FUN sur l’intervalle
% [XM1,X0] en utilisant la m´ ethode de la fausse position.
% 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.
nit=0;
x=xm1; f=eval(fun); fx=[f];
x=x0; f=eval(fun); fx=[fx, f];
xvect=[xm1,x0]; xdif=[]; f=tol+1; kprime=1;
while nittol
nit=nit+1;
dim=length(xvect);
x=xvect(dim);
fxk=eval(fun);
xk=x; i=dim;
while i>=kprime
i=i-1; x=xvect(i); fxkpr=eval(fun);
if fxkpr*fxk<0
xkpr=x; kprime=i; break;
end
end
x=xk-fxk*(xk-xkpr)/(fxk-fxkpr);
xvect=[xvect, x]; f=eval(fun);
fx=[fx, f]; err=abs(x-xkpr); xdif=[xdif, err];
end
return
6 R´ esolution des ´ equations et des syst` emes non lin´ eaires
xvect=[x]; fx=[fxm1];
x=x0; fx0=eval(fun);
xvect=[xvect;x]; fx=[fx;fx0];
err=tol+1; nit=0; xdif=[];
while nit
nit=nit+1;
x=x0-fx0*(x0-xm1)/(fx0-fxm1);
xvect=[xvect;x];
fnew=eval(fun); fx=[fx;fnew];
err=abs(x0-x);
xdif=[xdif;err];
xm1=x0; fxm1=fx0;
x0=x; fx0=fnew;
end
return
Programme 45 - regfalsi : M´ ethode de la fausse position
function [xvect,xdif,fx,nit]=regfalsi(xm1,x0,tol,nmax,fun)
%REGFALSI M´ ethode de la fausse position
% [XVECT,XDIF,FX,NIT]=REGFALSI(XM1,X0,TOL,NMAX,FUN) tente de
% trouver un z´ ero de la fonction continue FUN sur l’intervalle
% [XM1,X0] en utilisant la m´ ethode de la fausse position.
% 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.
nit=0;
x=xm1; f=eval(fun); fx=[f];
x=x0; f=eval(fun); fx=[fx, f];
xvect=[xm1,x0]; xdif=[]; f=tol+1; kprime=1;
while nit
nit=nit+1;
dim=length(xvect);
x=xvect(dim);
fxk=eval(fun);
xk=x; i=dim;
while i>=kprime
i=i-1; x=xvect(i); fxkpr=eval(fun);
if fxkpr*fxk<0
xkpr=x; kprime=i; break;
end
end
x=xk-fxk*(xk-xkpr)/(fxk-fxkpr);
xvect=[xvect, x]; f=eval(fun);
fx=[fx, f]; err=abs(x-xkpr); xdif=[xdif, err];
end
return
