Résolution numérique des équations non linéaires avec MATLAB

Kamel Bousnina
0
Résolution numérique des équations non linéaires avec MATLAB 

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 f(x)=0f(x)=0 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 :

f(x)=x3x2f(x) = x^3 - x - 

Cette fonction possède une racine réelle α1.5213797 \alpha \approx 1.52137. 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 f(x)f(x) 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: script pour tracer la fonction et la racine vraie

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:

 

  Vidéo éducative pour comprendre les bases des variables sur MATLAB, par Ubaly Go
 

Méthode de la dichotomie / bisection

Principe

La dichotomie exploite le théorème des valeurs intermédiaires : si ffest continue sur [a,b][a,b et f(a)f(b)<0f(a)f(b)<, alors il existe une racine dans [a,b][a,b]. 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é

  1.  Choisir a,ba,b tels que f(a)f(b)<0f(a)f(b)<0.
  2.  Calculer m=(a+b)/2m=(a+b)/2.
  3.  Si f(m)=0f(m)=0 ou ba/2<ε|b-a|/2<\varepsilon stop.
  4.  Remplacer [a,b][a,b] par [a,m][a,m] ou [m,b][m,b] 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;

graphique: Méthode de la dichotomie  bisection
Figure: Méthode de la dichotomie / bisection

 Après exécution, superposez les points (xn,f(xn)) (x_n, fsur le graphe initial pour visualiser la progression vers xx^\as.

📈 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 xnx_n pour obtenir xn+1=xnf(xn)/f(xn)x_{n+1}=x_n - f(x_n)/f'(x_n). Convergence quadratique si démarrée suffisamment proche et si f 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;


graphe: Méthode de Newton–Raphson

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 y=f(xn)+f(xn)(xxn)y = f(x_n) + f'(x_n)(x-x_n) 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 :

xn+1=xnf(xn)xnxn1f(xn)f(xn1)x_{n+1} = x_n - f(x_n)\frac{x_n - x_{n-1}}{f(x_n)-f(x_{n-1})}

Elle n’exige pas ff' 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;



graphe: Méthode de la sécante

Figure: Méthode de la sécante


Sur le graphe, dessinez chaque sécante reliant (xn1,f(xn1))(x_{n-1}, f(x_{n-1})) et (xn,f(xn))(x_n, f(x_n)); l’intersection avec l’axe des x donne xn+1.

 

Méthode du point fixe

Principe

Reformulez f(x)=0 sous la forme x=g(x)x = g(x) et itérez xn+1=g(xn)x_{n+1}=g(x_n). La convergence dépend fortement de la forme de gg et de g(x)<1|g'(x)|<1 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 ff : x=x+23 x = \sqrt[3]{x+2}

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;


figure: Méthode du point fixe
Figure: Méthode du point fixe

🌀 Ici, la convergence dépend fortement de la fonction g(x)g(x) choisie.
Si la courbe y=g(x)y=g(x)croise y=xy=x 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 ff'et un bon initial.

  • Sécante : compromis: rapide sans dérivée explicite, mais moins robuste que bisection.

  • Point fixe : flexible, dépend du choix de gg ; vérifier g<1.

Exemples de graphiques 2D à produire

  1. Tracé de f(x)f(x) et points d’itération pour chaque méthode.
  2. Courbe des erreurs xnx|x_n - x^\ast| en échelle logarithmique vs itération (compare vitesse de convergence).
  3. 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 f(x)f'(x).
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 [a,b][a,b].

❓3. Comment tracer un graphique de convergence dans MATLAB ?

Pour visualiser la convergence, on peut tracer l’évolution de f(xn)f(x_n) ou de l’erreur xnx∣ en fonction du nombre d’itérations :

semilogy(1:length(x_hist), abs(f(x_hist)), 'o-','LineWidth',1.5);
xlabel('Itération'); ylabel('|f(x_n)|');
title('Graphique de convergence');
grid on;

Ce type de graphe permet de comparer facilement la rapidité de convergence des différentes méthodes.

 

❓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 x=g(x)x=g(x) et ne nécessite pas la dérivée.
    Cependant, il ne converge que si la pente de g(x)g(x) 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 f(x)f(x)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 g(x)g(x).
    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 :


Mots clés

Enregistrer un commentaire

0 Commentaires
Enregistrer un commentaire (0)
Our website uses cookies to enhance your experience. Check Out
Ok, Go it!