Vous êtes sur la page 1sur 9

1.

Méthodes classiques :
1) La méthode de Bissection (dichotomie) :

Dichotomie nom féminin (en Grec dikhotomia)

Division de quelque chose en deux éléments que l'on oppose nettement : Dichotomie entre la raison et la
passion.

La description de la methode

Le balayage est une méthode efficace, mais laborieuse.On s’épargne de nombreux calculs
intermédiaires en visant de suite au milieu de l’intervalle :c’est le principe de la dichotomie.On
récupère de plus à chaque étape un encadrement de la solution cherchée.

 Traduison cette approche en termes de suite.

Les entrées Les sorties


f la fonction concernée X La racine trouvée par la méthode
a et b les limites de l’intervalle [a,b] Niter Le nombre d’itérations effectuées
tol l’erreur tolérée par le résultat

1) Si f(a).f(b)>0 alors l’intervalle [a, b] ne contient pas de racines et on s’arrête


2) Si la valeur de |b  ‐  a| est inférieure à tol on s’arrête
3) On calcule le milieu de l’intervalle [a, b] par : x = (a+b)/2
4) Si f(a).f(x)>0 alors a  x (l’intervalle [a, b] devient [x, b]) Sinon b  x (l’intervalle [a, b] devient [a, x])
5) Aller à l’étape 2.
function [x,niter] = bissection(f,a,b,tol)     

niter = 0;        

   if f(a)*f(b)>0        

 error('Intervalle inadapté');    

  end           

while abs(b‐a) > tol         

x = (a+b)/2;        

  if f(a)*f(x) > 0           

   a = x;        

 else            

 b = x;        

  end        

  niter = niter +1;    

  end

2) La méthode du point fixe :

Les entrées Les sorties


g la fonction étudiée Zero La racine trouvée par la méthode
x0 le point initial erreur L’erreur estimée.
nmax le nombre maximal d’itérations niter Le nombre d’itérations effectuées.
tol Le critère d’arrêt (erreur tolérée)

1) On commence par choisir le point initial x0 (n=0)


2) On calcule xn+1 = g(xn)
3) Si |xn+1 ‐  xn| < tol alors la méthode a convergé, et on s’arrête
4) Si niter atteint nmax alors la méthode a divergé, ou elle n’a pas pu converger avec nmax
itérations et on s’arrête.
5) Sinon, on passe à l’étape 2 pour une nouvelle itération n+1 (n devient n+1).
function [zero,erreur,niter] = pointfixe(g,x0,tol,nmax)     

zero = x0;   

for niter = 1 : nmax     

x = zero;    

 zero = g(x);     

erreur = abs(zero‐x);     

if erreur < tol        

  return    

  end

end

disp ('Pas de convergence avec le nombre d''itérations indiqués')

3) La méthode de Newton :

Les entrées Les sorties


f la fonction concernée zero La racine trouvée par la méthode.
df la fonction dérivée de f Erreur L’erreur estimée
x0 le point initial niter Le nombre d’itérations effectuées
nmax le nombre maximal d’itérations
tol Le critère d’arrêt (erreur tolérée)

1) On commence par x0 (n = 0)

2) On calcule :

3) Si   < tol alors la méthode a convergé, et on s’arrête.

4) Si niter atteint nmax alors la méthode a divergé ou elle n’a pas pu converger avec nmax itérations et on
s’arrête.

5) Sinon, on passe à l’étape 2 avec une nouvelle itération n+1 (n devient n+1).
function [zero, erreur, niter] = newton(f, df, x0, nmax, tol)        

  zero = x0;         

   for niter = 1 : nmax   

      x = zero;     

    zero = x ‐ f(x)/df(x);      

    erreur = abs(zero‐x)/abs(zero);         

if erreur < tol        

    return   

      end

    end  

    disp('Pas de convergence avec le nombre d''itérations indiqués')

Les questions (La méthode de bisection):

Considérant l’équation :

F(x)=x^3+x^2-3x-3

1. Dessinez la courbe de f(x)sur l’intervalle [‐2,2], puis trouvez des intervalles convenables pour appliquer la
méthode de bissection.

2. Pour chaque intervalle (un pour chaque racine), appliquez la fonction Matlab ‘bissection.m’ sur f(x) en
considérant : tol=0.001.
La solution (La méthode de bissection)

 Dessiner la courbe >> f = inline ('x ^3+x2‐3*x‐3','x');

>> fplot (f,[‐2,2]), grid on

 Choisir les intervalles :

Il existe 3 racines, donc on choisit 3 intervalles

I1=[‐2, ‐1.5] Pour la première racine

I2=[‐1.5, ‐0.5] Pour la deuxième racine

I3=[1.5, 2] Pour la troisième racine

(Chaque intervalle [a,b] est choisie tel que f(a).f(b)<0)


 Appliquer la fonction ‘bisection.m’ :

>> [X,N] = bissection (f,‐2,‐1.5,0.001)       % Pour l’intervalle [‐2,‐1.5]

X =    

‐1.7314

N =     

 9

>> f(X)                      % voir si f(‐1.7314)  0

ans =     0.0015

>> [X,N] = bissection (f,‐1.5,‐0.5,0.001)     % Pour l’intervalle [‐1.5,‐0.5]

X =    

‐1.0010

N =    

 10

>> [X,N] = bissection (f,‐1.5,‐0.5,0.00001)   % avec tol le précision change

X =    

1.0000

N =     

17

>> [X,N] = bissection (f,1.5,2,0.001)        % Pour le 3eme intervalle [1.5,2]

X =     

1.7314

N =     

 9
Les questions (La méthode du point fixe) :

Considérons l’équation non linéaire : f (x) = x3 + 4x2 − 10 = 0

Qui admet une racine r dans l’intervalle [1, 2].

Voici trois façons d’écrire f (x)=0 sous la forme d’un point‐fixe :

 F(x)=x^3+4x^2-10= 0 ⟹ 4x^2=10-x^3 ⟹ x= =g (x)


 F(x)= x^3+4x^2-10= 0 ⟹ (x+4)x^2=10 ⟹x= =g (x)
 F(x)= )= x^3+4x^2-10= 0 ⟹ x= x-f(x) ⟹ ݃ g (x)= x-x^3-4x^2+10

1. Appliquez la fonction Matlab ‘pointfixe.m’ sur g1(x), g2(x), et g3(x), en mettant :

x0=1.5, tol=0.001, nmax=50.

2. Quelle est la fonction (g1, g2 ou g3) qui donne la convergence la plus rapide

La solution (La méthode du point fixe) :


 Appliquer la fonction ‘pointfixe.m’ sur g1(x):
>> g1 = inline('sqrt(10‐x^3)/2','x')    % Créer la fonction g1(x)
>> [X,E,N] = pointfixe(g1,1.5,0.001,50) % Appliquer la méthode
X =     
1.3654 La racine trouvée
E =     
5.3184e‐004
L’erreur
N =     
10
Le nombre d’itération effectués
 Appliquer la fonction ‘pointfixe.m’ sur g2(x):

>> g2=inline('sqrt(10/(x+4))','x')    % Créer la fonction g2(x)


>> [X,E,N] = pointfixe(g2,1.5,0.001,50) % Appliquer la méthode
X =   
  1.3653
E =    
 3.0773e‐004
N =    
 4
 Appliquer la fonction ‘pointfixe.m’ sur g3(x) :
>> g3 = inline('x‐x^3‐4*x^2+10','x')    % Créer la fonction g3(x
) >> [X,E,N] = pointfixe(g3,1.5,0.001,50) % Appliquer la méthode
Pas de convergence avec le nombre d'itérations indiqués
X=
   NaN
NaN(Not a Number) et causée par La divergence
E =   
de la méthode (dépassement de capacité)
 NaN

N =    
Le nomber d’itérations effectuées a
50

 La meilleure fonction :

La fonction g1(x) converge avec N=10 (donc avec dix itérations).

La fonction g2(x) converge avec N=4 (donc avec quatre itérations).

La fonction g3(x) diverge avec N=50= nmax (présume la non convergence).

Donc, c’est la fonction g2(x) qui donne la convergence la plus rapide

Les questions (La méthode de Newton):

1. Considérant l’équation : f(x) = e^-x -x


Appliquez la fonction Matlab ‘newton.m’ sur f(x), en mettant :
x0= 0, tol= 10^‐3=0.001, nmax=50.
2. Montrez que l’équation f(x) = x3 -2 possède une racine et qu’on peut obtenir
celle‐ci en utilisant la méthode de Newton à partir de x0 = 1.
La solution (La méthode de Newton) :
>> f  = inline('exp(‐x)‐x')
>> df = inline('‐exp(‐x)‐1')
>> [X,E,N] = newton(f, df, 0, 50, 0.001)
X =     
0.5671
E=
  2.2106e‐007
N =   
   4
Pour la deuxième fonction
>> f  = inline('x^3‐2')
>> df = inline('3*x^2')
>> [X,E,N] = newton(f, df, 1, 50,0.001)
X =     
1.2599
E =   
9.8764e‐006
N =   
   4

Vous aimerez peut-être aussi