Ce document de Travaux Pratiques (TP) d'Analyse numérique est destiné aux étudiants de 2ème année LMD Sciences et Technologie de l'Université de Skikda. Il aborde la problématique fondamentale de la résolution des équations non linéaires, un sujet central en mathématiques appliquées et en ingénierie.
Il couvre les notions suivantes:
- La méthode de Bissection (dichotomie)
- La méthode du point fixe
- La méthode de Newton
Pour chaque méthode, les principes théoriques sont exposés, suivis d'exemples d'application concrets et d'implémentations pratiques sous MATLAB.
Analyse Numérique : Résolution d'Équations Non Linéaires
Université de Skikda 20 août 55 - Niveau : 2ème année LMD Sciences et Technologie (TP : Analyse numérique, 2013/2014)
La Méthode de la Bissection (Dichotomie)
Description et Algorithme
La méthode de la bissection, aussi appelée dichotomie, est une technique numérique simple et robuste pour trouver les racines d'une équation non linéaire f(x) = 0 dans un intervalle donné [a, b]. Elle est basée sur le théorème des valeurs intermédiaires.
Paramètres de la fonction bissection.m
- f
- La fonction concernée (dont on cherche la racine).
- a et b
- Les limites de l'intervalle [a, b].
- tol
- L'erreur tolérée pour le résultat (critère d'arrêt).
- x
- La racine trouvée par la méthode.
- niter
- Le nombre d'itérations effectuées.
Étapes de l'algorithme
- Si f(a) × f(b) > 0, alors l'intervalle [a, b] ne contient pas de racine et la méthode s'arrête. L'intervalle doit encadrer un changement de signe.
- Si la valeur de |b - a| est inférieure à tol, on s'arrête, la précision désirée est atteinte.
- On calcule le milieu de l'intervalle [a, b] par : x = (a+b)/2.
- Si f(a) × f(x) > 0, alors la racine se trouve dans [x, b] ; on met à jour a ← x. Sinon, la racine se trouve dans [a, x] ; on met à jour b ← x.
- Retourner à l'étape 2.
Implémentation Matlab (bissection.m)
function [x,niter] = bissection(f,a,b,tol)
niter = 0;
if f(a)*f(b)>0
error('Intervalle inadapté');endwhile abs(b-a) > tol
x = (a+b)/2;
if f(a)*f(x) > 0
a = x;elseb = x;endniter = niter +1;
end
Questions d'application
Considérons l'équation : f(x) = x3 + x2 - 3x - 3
- Dessinez la courbe de f(x) sur l'intervalle [-2, 2], puis trouvez des intervalles convenables pour appliquer la méthode de la bissection.
- Pour chaque intervalle (un pour chaque racine), appliquez la fonction Matlab 'bissection.m' sur f(x), en considérant : tol = 0.001.
Solution
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 choisi tel que f(a) × f(b) < 0 (condition de changement de signe).
Appliquer la fonction 'bissection.m'
>> [X,N] = bissection (f,-2,-1.5,0.001)% Pour l'intervalle [-2,-1.5]X = -1.7314N = 9
>> f(X)% voir si f(-1.7314) ≈ 0ans = 0.0015
>> [X,N] = bissection (f,-1.5,-0.5,0.001)% Pour l'intervalle [-1.5,-0.5]X = -1.0010N = 10
>> [X,N] = bissection (f,-1.5,-0.5,0.00001)% avec tol, la précision changeX = -1.0000N = 17
>> [X,N] = bissection (f,1.5,2,0.001)% Pour le 3ème intervalle [1.5,2]X = 1.7314N = 9
La Méthode du Point Fixe
Description et Algorithme
La méthode du point fixe est une technique itérative pour trouver les racines d'une équation f(x) = 0 en la transformant en une forme équivalente x = g(x). Une racine r est un point fixe si r = g(r).
Paramètres de la fonction pointfixe.m
- g
- La fonction étudiée (point fixe).
- x0
- Le point initial.
- nmax
- Le nombre maximal d'itérations.
- tol
- Le critère d'arrêt (erreur tolérée).
- zero
- La racine trouvée par la méthode.
- erreur
- L'erreur estimée.
- niter
- Le nombre d'itérations effectuées.
Étapes de l'algorithme
- 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.
- Sinon, on passe à l'étape 2 pour une nouvelle itération n+1 (n devient n+1).
Implémentation Matlab (pointfixe.m)
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 < tolreturnendenddisp('Pas de convergence avec le nombre d''itérations indiqués')
Questions d'application
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 x = g(x) :
- g1(x) = sqrt((10 - x3)/2) (Dérivée de 4x2 = 10 - x3)
- g2(x) = sqrt(10/(x+4)) (Dérivée de x2(x+4) = 10)
- g3(x) = x - (x3 + 4x2 - 10) (Forme x - f(x))
- Appliquez la fonction Matlab 'pointfixe.m' sur g1(x), g2(x), et g3(x), en mettant : x0 = 1.5, tol = 0.001, nmax = 50.
- Quelle est la fonction (g1, g2 ou g3) qui donne la convergence la plus rapide ?
Solution
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éthodeX = 1.3654E = 5.3184e-004N = 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éthodeX = 1.3653E = 3.0773e-004N = 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éthodePas de convergence avec le nombre d'itérations indiquésX = NaNE = NaNN = 50
Note : NaN (Not a Number) est causée par la divergence de la méthode (dépassement de capacité). 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.
La Méthode de Newton (Newton-Raphson)
Description et Algorithme
La méthode de Newton est une méthode itérative très efficace pour trouver les racines d'une fonction différentiable. Elle utilise la tangente à la courbe de la fonction pour approcher la racine.
Paramètres de la fonction newton.m
- f
- La fonction concernée (dont on cherche la racine).
- df
- La fonction dérivée de f.
- x0
- Le point initial.
- nmax
- Le nombre maximal d'itérations.
- tol
- Le critère d'arrêt (erreur tolérée).
- zero
- La racine trouvée par la méthode.
- erreur
- L'erreur estimée.
- niter
- Le nombre d'itérations effectuées.
Étapes de l'algorithme
- On commence par un point initial x0 (n = 0).
- On calcule : xn+1 = xn - f(xn)/f'(xn).
- Si |xn+1 - xn| / |xn+1| < tol, alors la méthode a convergé, et on s'arrête. Ce critère est une erreur relative.
- 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.
- Sinon, on passe à l'étape 2 avec une nouvelle itération n+1 (n devient n+1).
Implémentation Matlab (newton.m)
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 < tolreturnendenddisp('Pas de convergence avec le nombre d''itérations indiqués')
Questions d'application
- 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.
- 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.
Solution
Pour la première fonction f(x) = e-x - x
>> f = inline('exp(-x)-x')>> df = inline('-exp(-x)-1')>> [X,E,N] = newton(f, df, 0, 50, 0.001)X = 0.5671E = 2.2106e-007N = 4
Pour la deuxième fonction f(x) = x3 - 2
>> f = inline('x^3-2')>> df = inline('3*x^2')>> [X,E,N] = newton(f, df, 1, 50,0.001)X = 1.2599E = 9.8764e-006N = 4
Foire Aux Questions (FAQ)
Qu'est-ce qu'une racine d'une équation non linéaire ?
Une racine d'une équation non linéaire f(x) = 0 est une valeur de x pour laquelle la fonction f(x) est égale à zéro. Graphiquement, c'est le point où la courbe de la fonction croise l'axe des abscisses.
Quand choisir la méthode de la bissection par rapport aux autres méthodes ?
La méthode de la bissection est garantie de converger si la fonction est continue sur l'intervalle initial et qu'il y a un changement de signe. Elle est plus lente que les méthodes de point fixe ou de Newton, mais elle est très robuste et ne nécessite pas le calcul de la dérivée de la fonction.
Pourquoi la méthode de Newton est-elle souvent préférée malgré sa complexité ?
La méthode de Newton est généralement préférée pour sa convergence rapide, souvent quadratique, lorsqu'elle converge. Cependant, elle nécessite le calcul de la dérivée de la fonction et une bonne estimation initiale de la racine pour assurer la convergence.
```