Vous êtes sur la page 1sur 6

Université 

de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014

TP 01 : Résolution des équations non linéaires
1) La méthode de Bissection (dichotomie) 
    
 
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; 
bissection.m
       
    if f(a)*f(b)>0 
 
        error('Intervalle inadapté');  bisection.m
      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). 

Université de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014
function [zero,erreur,niter] = pointfixe(g,x0,tol,nmax) pointfixe.m
     
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) 
newton.m
     
    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') 


Université de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014

Les questions La méthode de bisection :


Considérant l’équation :
f x x3 x2‐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+x^2‐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


Université de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014

 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 :


 4 10 0 ⟹ 4 10 ⟹

 4 10 0 ⟹ 4 10 ⟹
 4 10 0 ⟹ ⟹ 4 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.


Université de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014

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 = 
L’erreur
    5.3184e‐004 
N = 
Le nombre d’itérations effectués
    10 

 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) est causée par la divergence de la
méthode (dépassement de capacité)
E = 
   NaN 
N = 
   50  Le nombre d’itérations effectuées a atteint nmax

 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.


Université de Skikda 20 août 55 
Niveau : 2eme année LMD Sciences et Technologie
  TP : Analyse numérique, 2013/2014

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