Tp 1 résolution des équations non linéaires - analyse num

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.

Tp 1 résolution des équations non linéaires - analyse num -

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

  1. 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.
  2. Si la valeur de |b - a| est inférieure à tol, on s'arrête, la précision désirée est atteinte.
  3. On calcule le milieu de l'intervalle [a, b] par : x = (a+b)/2.
  4. 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.
  5. 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é');
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

Questions d'application

Considérons 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 la bissection.
  2. 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.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, la précision change
X = -1.0000
N = 17

>> [X,N] = bissection (f,1.5,2,0.001)
% Pour le 3ème intervalle [1.5,2]
X = 1.7314
N = 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

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

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 < tol
return
end
end
disp('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))
  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 ?

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éthode
X = 1.3654
E = 5.3184e-004
N = 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
E = NaN
N = 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

  1. On commence par un point initial x0 (n = 0).
  2. On calcule : xn+1 = xn - f(xn)/f'(xn).
  3. 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.
  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).

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 < tol
return
end
end
disp('Pas de convergence avec le nombre d''itérations indiqués')

Questions d'application

  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.

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.5671
E = 2.2106e-007
N = 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.2599
E = 9.8764e-006
N = 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.

```

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne