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).
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')
2
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
3
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.
4
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.
5
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
6