Résolution numérique des équations non linéaires avec MATLAB
Méthodes : dichotomie (bisection), Newton–Raphson, sécante, point fixe — explications, codes MATLAB et graphiques (2D)
Trouver les racines d’une équation non linéaire est une tâche récurrente en ingénierie, sciences et programmation scientifique. Cet article explique, illustre et compare concrètement quatre méthodes numériques classiques, dichotomie (bisection), Newton–Raphson, sécante et point fixe, en donnant pour chacune : principe, algorithme, code MATLAB prêt à l’emploi, et un exemple de graphique 2D montrant l’évolution des itérations. Les explications sont conçues pour être directement utilisables dans vos travaux et TP MATLAB.
Formation sur les variables dans Matlab:
Vidéo éducative pour comprendre les bases des variables sur MATLAB, par Ubaly Go
Contexte et choix d’exemple
Pour illustrer toutes les méthodes nous prendrons l’exemple simple et représentatif :
Cette fonction possède une racine réelle . Les codes ci-dessous utilisent cette fonction pour montrer convergence et tracés. Vous pouvez remplacer f
dans chaque script par n’importe quelle autre fonction continue et différentiable quand nécessaire.
Visualisation initiale : tracer la fonction
Avant d’appliquer une méthode, il est très utile de tracer et de repérer grossièrement l’intervalle contenant la racine.
MATLAB — script pour tracer la fonction et la racine vraie (si connue) :
% plot_function.m
f = @(x) x.^3 - x - 2;
x = linspace(-2,3,500);
y = f(x);
figure;
plot(x,y); hold on;
plot([min(x) max(x)],[0 0],'k--'); % axe des x
xlabel('x'); ylabel('f(x)');
title('f(x)=x^3 - x - 2'); grid on;
% approximate root with fzero for display
r = fzero(f,1.5);
plot(r,0,'ro','MarkerSize',8,'DisplayName',sprintf('root ~ %.6f',r));
legend('f(x)','x-axis','root approx');
Figure: Graphique d'une fonction et la racine vraie
Ce tracé aide à choisir les intervalles ou estimations initiales pour les méthodes. (Utiliser fzero
uniquement comme référence visuelle si besoin.)
Avant de continuer la formation il est important de comprendre les opérations sur les variables avec Matlab, vous trouvez une formation bien structurée sur ce thème au dessous:
Méthode de la dichotomie / bisection
Principe
La dichotomie exploite le théorème des valeurs intermédiaires : si est continue sur et , alors il existe une racine dans . On réduit l’intervalle en divisant par deux jusqu’à atteindre la tolérance. C’est monotone, robuste et garanti (si condition initiale respectée)
Algorithme résumé
- Choisir tels que .
- Calculer .
- Si ou stop.
- Remplacer par ou selon le signe et répéter.
Code MATLAB
clc; clear; close all;
f = @(x) x.^3 - x - 2;
a = 1; b = 2; tol = 1e-6; maxIter = 50;
x_hist = []; f_hist = [];
for k = 1:maxIter
m = (a+b)/2;
x_hist(end+1) = m;
f_hist(end+1) = f(m);
if abs(f(m)) < tol || (b-a)/2 < tol
break
end
if f(a)*f(m) < 0
b = m;
else
a = m;
end
end
% Graphe de convergence
x = linspace(0,3,400);
figure;
plot(x, f(x),'b','LineWidth',1.5); hold on;
plot(x_hist, f_hist, 'ro-','LineWidth',1.2);
yline(0,'k--');
xlabel('x'); ylabel('f(x)');
title('Méthode de Dichotomie : convergence vers la racine');
grid on;
Après exécution, superposez les points sur le graphe initial pour visualiser la progression vers .
📈 Ce graphe montre les points d’itération qui s’approchent progressivement de la racine.
Méthode de Newton–Raphson
Principe
Newton utilise la tangente en une approximation pour obtenir . Convergence quadratique si démarrée suffisamment proche et si non nulle. Très rapide localement, mais nécessite la dérivée et un bon départ
Code MATLAB
clc; clear; close all;
f = @(x) x.^3 - x - 2;
df = @(x) 3*x.^2 - 1;
x = 1.5; tol = 1e-8; maxIter = 50;
x_hist = x; f_hist = f(x);
for k=1:maxIter
x_new = x - f(x)/df(x);
x_hist(end+1) = x_new;
f_hist(end+1) = f(x_new);
if abs(x_new - x) < tol, break; end
x = x_new;
end
% Graphe
xv = linspace(0,3,400);
figure;
plot(xv, f(xv),'b','LineWidth',1.5); hold on;
yline(0,'k--');
plot(x_hist, f_hist,'ro-','LineWidth',1.2);
xlabel('x'); ylabel('f(x)');
title('Méthode de Newton–Raphson : convergence vers la racine');
grid on;
Figure: Méthode de Newton–Raphson
Tracer la tangente utilisée à chaque itération peut aider à comprendre la mécanique de Newton : superposez la droite sur le graphe.
Méthode de la sécante
Principe
La sécante remplace la dérivée par un quotient de différences entre deux estimations précédentes :
Elle n’exige pas analytique et a un ordre de convergence ≈1.618 (supérieur à la simple convergence linéaire)
Code MATLAB
clc; clear; close all;
f = @(x) x.^3 - x - 2;
x0 = 1; x1 = 2; tol = 1e-8; maxIter = 50;
x_hist = [x0 x1];
f_hist = [f(x0) f(x1)];
for k = 1:maxIter
if abs(f(x1)-f(x0)) < eps, break; end
x2 = x1 - f(x1)*(x1-x0)/(f(x1)-f(x0));
x_hist(end+1) = x2;
f_hist(end+1) = f(x2);
if abs(x2 - x1) < tol, break; end
x0 = x1; x1 = x2;
end
% Graphe
xv = linspace(0,3,400);
figure;
plot(xv, f(xv),'b','LineWidth',1.5); hold on;
yline(0,'k--');
plot(x_hist, f_hist,'ro-','LineWidth',1.2);
xlabel('x'); ylabel('f(x)');
title('Méthode de la Sécante : convergence vers la racine');
grid on;
Figure: Méthode de la sécante
Sur le graphe, dessinez chaque sécante reliant et ; l’intersection avec l’axe des x donne .
Méthode du point fixe
Principe
Reformulez sous la forme et itérez . La convergence dépend fortement de la forme de et de près de la solution. Cette méthode est simple et flexible mais il faut une transformation judicieuse.
Exemple & code
Une réécriture possible pour notre :
clc; clear; close all;
g = @(x) (x+2).^(1/3);
f = @(x) x.^3 - x - 2;
x = 1.5; tol = 1e-8; maxIter = 100;
x_hist = x; f_hist = f(x);
for k=1:maxIter
x_new = g(x);
x_hist(end+1) = x_new;
f_hist(end+1) = f(x_new);
if abs(x_new - x) < tol, break; end
x = x_new;
end
% Graphe
xv = linspace(0,3,400);
figure;
plot(xv, f(xv),'b','LineWidth',1.5); hold on;
yline(0,'k--');
plot(x_hist, f_hist,'ro-','LineWidth',1.2);
xlabel('x'); ylabel('f(x)');
title('Méthode du Point Fixe : convergence vers la racine');
grid on;
🌀 Ici, la convergence dépend fortement de la fonction choisie.
Si la courbe croise avec une pente < 1 en valeur absolue, la convergence est assurée.
Comparaisons pratiques et recommandations
-
Dichotomie : robuste, simple, toujours convergente si condition initiale. Utile pour bracketing initial.
-
Newton : très rapide localement (convergence quadratique) mais nécessite et un bon initial.
-
Sécante : compromis: rapide sans dérivée explicite, mais moins robuste que bisection.
Exemples de graphiques 2D à produire
- Tracé de et points d’itération pour chaque méthode.
- Courbe des erreurs en échelle logarithmique vs itération (compare vitesse de convergence).
- Pour Newton : tangentes successives montrées sur le graphe.
(Les scripts ci-dessous montrent comment extraire history
de chaque méthode et produire ces graphiques dans MATLAB.)
Exemple : erreur en fonction de l'itération
% assume hist contains x_n sequence and root_true from fzero
errors = abs(hist(:,1) - root_true);
figure; semilogy(1:length(errors), errors,'-o');
xlabel('iteration'); ylabel('error'); title('Erreur |x_n - x*|');
grid on;
Téléchargez les Codes MATLAB pour Vos Graphiques
Boostez vos compétences en résolution des équations non linéaires avec ces 6 codes MATLAB téléchargeables ! Chaque fichier contient un exemple complet issu de notre formation, prêt à être exécuté. Des courbes 2D, en passant par les solutions aux erreurs courantes, ces codes sont commentés pour une prise en main facile. Cliquez sur les liens pour télécharger et expérimenter directement dans MATLAB !
Télécharger Tous les codes dans un seul fichier: Lien
Après le téléchargement copier les codes et vous pouvez les utilisés séparément
Formation en ligne Sur UDEMY: Lien
Conclusion
Ce guide fournit des implémentations prêtes à l’emploi et des tracés pour comprendre, comparer et visualiser la résolution numérique d’équations non linéaires sous MATLAB. Vous pouvez reprendre chaque fonction, changer f
/df
/g
et les options de tolérance/itérations pour l’adapter à vos besoins. Pour approfondir : consultez les ressources pédagogiques et les pages MathWorks et supports de cours qui détaillent avantages et conditions d’application de chaque méthode.
🧩 FAQ — Résolution des Équations Non Linéaires avec MATLAB
❓1. Quelle est la méthode la plus rapide pour résoudre une équation non linéaire ?
La méthode de Newton–Raphson est généralement la plus rapide grâce à sa convergence quadratique, à condition de disposer d’une bonne estimation initiale et de connaître la dérivée .
Cependant, si la dérivée est difficile à calculer, la méthode de la sécante est un excellent compromis.
❓2. Quelle méthode utiliser si la fonction change de signe sur un intervalle connu ?
Dans ce cas, la méthode de dichotomie (ou bisection) est la plus fiable.
Elle garantit la convergence vers une racine si la fonction est continue et change de signe dans l’intervalle .
❓3. Comment tracer un graphique de convergence dans MATLAB ?
Pour visualiser la convergence, on peut tracer l’évolution de ou de l’erreur en fonction du nombre d’itérations :
❓4. Quelle est la différence entre la méthode de Newton-Raphson et la méthode du Point Fixe ?
-
Newton–Raphson utilise la dérivée pour linéariser localement la fonction et converge très vite près de la racine.
-
Le Point Fixe, lui, repose sur une transformation et ne nécessite pas la dérivée.
Cependant, il ne converge que si la pente de reste inférieure à 1 en valeur absolue autour de la solution.
❓5. Comment choisir le point initial dans les méthodes itératives ?
Le point initial influence fortement la convergence.
-
Pour Newton–Raphson, il doit être proche de la racine réelle.
-
Pour la sécante, deux valeurs initiales dans l’intervalle de changement de signe suffisent.
Une visualisation préalable du graphe de avec MATLAB aide à faire le bon choix.
❓6. Peut-on résoudre des systèmes non linéaires avec les mêmes méthodes ?
Oui ✅
MATLAB propose des fonctions comme fsolve
qui généralisent ces méthodes aux systèmes d’équations non linéaires.
Par exemple :
f = @(x) [x(1)^2 + x(2)^2 - 1; x(1)^3 - x(2)];
x0 = [1; 1];
sol = fsolve(f, x0);
❓7. Quelle est la tolérance idéale à utiliser dans les codes MATLAB ?
La tolérance dépend du niveau de précision recherché et du temps de calcul disponible.
Une valeur courante est :
tol = 1e-6;
Pour des calculs plus précis, on peut descendre jusqu’à 1e-10
, mais cela augmente le nombre d’itérations.
❓8. Comment enregistrer les figures MATLAB générées en PNG ?
Chaque figure peut être enregistrée automatiquement en format PNG avec la commande :
saveas(gcf, 'nom_de_la_figure.png');
Par exemple :
saveas(gcf, 'Newton_Raphson_convergence.png');
Cela crée un fichier PNG directement réutilisable pour ton blog ou tes posts sociaux.
❓9. Quelles sont les limites de ces méthodes numériques ?
-
Dichotomie : lente mais toujours convergente.
-
Newton–Raphson : rapide mais sensible au choix initial.
-
Sécante : bon compromis, mais possible divergence.
-
Point Fixe : dépend du choix de .
Le choix de la méthode doit donc être adapté à la nature du problème.
❓10. Où apprendre davantage sur les méthodes numériques dans MATLAB ?
Tu peux approfondir ces techniques via :
-
Le cours officiel MATLAB Fundamentals
-
Ton propre cours sur Udemy : “MATLAB : Fondamentaux de la Programmation” (par Kamel Bousnina)
-
Ou encore les documentations MATLAB :
👉 https://www.mathworks.com/help/matlab/