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
3
Université de Skikda 20 août 55
Niveau : 2eme année LMD Sciences et Technologie
TP : Analyse numérique, 2013/2014
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
5
Université de Skikda 20 août 55
Niveau : 2eme année LMD Sciences et Technologie
TP : Analyse numérique, 2013/2014
6