TP 01 : Résolution des équations non linéaires

 TP 01 : Résolution des équations non linéaires
1)
La méthode de Bissection (dichotomie) Les entrées 2)
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 Université de Skikda 20 août 55 Niveau : 2eme année LMD Sciences et Technologie
TP : Analyse numérique, 2013/2014
1)
2)
3)
4)
5)
Si f(a).f(b)>0 alors l’intervalle [a, b] ne contient pas de racines et on s’arrête
Si la valeur de |b ‐ a| est inférieure à tol on s’arrête On calcule le milieu de l’intervalle [a, b] par : x = (a+b)/2 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]) 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 bissection.m
bisection.m
La méthode du point fixe Les entrées g x0 nmax tol 1.
2.
3.
4.
Les sorties la fonction étudiée zero La racine trouvée par la méthode. le point initial erreur L’erreur estimée. le nombre maximal d’itérations niter Le nombre d’itérations effectuées. Le critère d’arrêt (erreur tolérée) On commence par choisir le point initial x0 (n=0)
On calcule xn+1 = g(xn) Si |xn+1 ‐ xn| < tol alors la méthode a convergé, et on s’arrête 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) On commence par x0 (n = 0)
1)
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
Lesquestions Laméthodedebisection :
Considérantl’équation:
f x x3 x2‐3x‐3
1. Dessinez la courbe de f x sur l’intervalle ‐2,2 , puis trouvez des intervalles
convenablespourappliquerlaméthodedebissection.
2. Pour chaque intervalle un pour chaque racine , appliquez la fonction Matlab
‘bissection.m’surf x ,enconsidérant:tol 0.001.
Lasolution Laméthodedebissection :
 Dessinerlacourbe
>> f = inline ('x^3+x^2‐3*x‐3','x'); >> fplot (f,[‐2,2]), grid on  Choisirlesintervalles:
Ilexiste3racines,donconchoisit3intervalles
I1 ‐2,‐1.5 Pourlapremièreracine
I2 ‐1.5,‐0.5 Pourladeuxièmeracine
I3 1.5,2 Pourlatroisièmeracine
Chaqueintervalle[a,b]estchoisietelquef(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
 Appliquerlafonction‘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 Lesquestions Laméthodedupointfixe :
Considéronsl’équationnonlinéaire:f (x) = x3 + 4x2 − 10 = 0
Quiadmetuneracinerdansl’intervalle[1, 2].
Voicitroisfaçonsd’écriref x 0souslaformed’unpoint‐fixe:

4
10
0 ⟹ 4

4
10
0 ⟹

4
10
0 ⟹
10
4
⟹
√
10 ⟹
⟹
4
10
1. AppliquezlafonctionMatlab‘pointfixe.m’surg1 x ,g2 x ,etg3 x ,enmettant:
x0 1.5,tol 0.001,nmax 50.
2. Quelleestlafonction g1,g2oug3 quidonnelaconvergencelaplusrapide.
4 Université de Skikda 20 août 55 Niveau : 2eme année LMD Sciences et Technologie
TP : Analyse numérique, 2013/2014
Lasolution Laméthodedupointfixe :
 Appliquerlafonction‘pointfixe.m’surg1 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 = La racine trouvée
1.3654 E = L’erreur
5.3184e‐004 N = Le nombre d’itérations effectués
10  Appliquerlafonction‘pointfixe.m’surg2 x :
>> g2=inline('sqrt(10/(x+4))','x') >> [X,E,N] = pointfixe(g2,1.5,0.001,50) % Créer la fonction g2(x) % Appliquer la méthode X = 1.3653 E = 3.0773e‐004 N = 4  Appliquerlafonction‘pointfixe.m’surg3 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 E = NaN (Not a Number) est causée par la divergence de la
méthode (dépassement de capacité)
NaN N = 50 Le nombre d’itérations effectuées a atteint nmax
 Lameilleurefonction:
Lafonctiong1 x convergeavecN 10 doncavecdixitérations .
Lafonctiong2 x convergeavecN 4 doncavecquatreitérations .
Lafonctiong3 x divergeavecN 50 nmax présumelanonconvergence .
Donc,c’estlafonctiong2 x quidonnelaconvergencelaplusrapide.
5 Université de Skikda 20 août 55 Niveau : 2eme année LMD Sciences et Technologie
TP : Analyse numérique, 2013/2014
Lesquestions LaméthodedeNewton :
1. Considérantl’équation:f(x) = e-x-x
AppliquezlafonctionMatlab‘newton.m’surf x ,enmettant:
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‐cienutilisantlaméthodedeNewtonàpartirdex0 1.
Lasolution LaméthodedeNewton :
>> 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