Exercices Python sur les équations

Dans cette page, on considère une {f:[a,b]\to\mathbb{R}}, continue (et peut-être même dérivable).
On suppose que {f} admet une racine unique {\alpha} sur {[a,b]}.
On s’intéresse à des méthodes d’approximation de {\alpha}.

À titre d’exemple, on considérera {f\colon x\mapsto x^{3}-2x^{2}-x+1}, donc les racines sur {\mathbb{R}} sont
{\begin{array}{c}x_{1}\approx -.801937735804838\\[6pts]x_{2}\approx 0.554958132087371\\[6pts] x_{3}\approx2.24697960371747\end{array}}Voici la définition Python de la fonction {f}

Exercice (méthode par dichotomie)
La méthode d’approximation de {\alpha} par dichotomie, consiste en les opérations suivantes:

  • On pose {a_{0}=a} et {b_{0}=b}. On suppose bien sûr que {f(a_{0})f(b_{0})\le0}.
  • Soit {n} dans {\mathbb{N}}. Si {a_{n}} et {b_{n}} sont connus, avec {f(a_{n})f(b_{n})\le 0}, on pose {c_{n}=\dfrac{a_{n}+b_{n}}{2}}.

    Si {f(a_{n})f(c_{n})\le0}, on pose {\begin{cases}a_{n+1}=a_{n}\\ b_{n+1}=c_{n}\end{cases}} sinon on pose {\begin{cases}a_{n+1}=c_{n}\\ b_{n+1}=b_{n}\end{cases}}

Les suites {(a_{n})_{n\ge0},(b_{n})_{n\ge0}} ainsi définies convergent vers {\alpha}.
Dans la pratique, on se donne {\varepsilon\gt0}, et on s’arrête dès que {0\le b_{n}-a_{n}\le\varepsilon}

  1. Écrire dichotomie({f,a,b,\varepsilon})} renvoyant le premier segment {[a_{n},b_{n}]} de longueur {\lt \varepsilon} et contenant la racine {\alpha} de {f}.
  2. Illustrer cette fonction pour obtenir une valeur approchée des racines de {f(x)=x^3-2x^2-x+1}.

Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice (méthode de la sécante)
On va maintenant résoudre {f(x)=0} (de façon approchée) par la “méthode de la sécante”.

On part de deux points {a,b} considérés comme les deux valeurs initiales {x_{0}=a} et {x_{1}=b} d’une suite {(x_{n})_{n\ge0}} (et encadrant la racine {\alpha} de {f}).
Supposons connus {x_{n}} et {x_{n+1}}, avec {f(x_{n})\ne f(x_{n+1})}.
On trace la droite {\Delta_{n}} passant par {(x_{n},f(x_{n}))} et {(x_{n+1},f(x_{n+1}))}.
Cette droite rencontre {Ox} en {x_{n+2}=\dfrac{x_{n}f(x_{n+1})-x_{n+1}f(x_{n})}{f(x_{n+1})-f(x_{n})}}.
Sous certaines conditions, {(x_{n})_{n\ge0}} converge vers la racine {\alpha} de {f}.
Étant donné {\varepsilon>0}, on peut par exemple s’arrêter dès que {\left|x_{n+2}-x_{n+1}\right|\le\varepsilon} et considérer que {x_{n+2}} est une approximation acceptable de {\alpha}.
Méthode de la sécante

  • Écrire une fonction secante({f,a,b,eps})} implémentant cette méthode et renvoyant (si elle existe!) la première absisse {x_{n+2}} telle que {\left|x_{n+2}-x_{n+1}\right|\le\varepsilon}.
  • Illustrer cette fonction pour obtenir une valeur approchée des racines de {f(x)=x^3-2x^2-x+1}.
  • Cliquer ici pour voir (ou cacher) le corrigé
      Pour voir ce contenu, vous devez : 

    Exercice (méthode de Newton)
    On va maintenant résoudre {f(x)=0} (de façon approchée) par la “méthode de Newton”.

    Pour approcher {\alpha} tel que {f(\alpha)=0}, on choisit {x_{0}} dans {I} (si possible “assez proche” de {\alpha}).
    Si {x_{n}} est connu, {x_{n+1}} est l’abscisse de l’intersection de {Ox} avec la tangente en {(x_{n},f(x_{n}))} à {C_{f}}.
    Sous certaines conditions, {(x_{n})_{n\ge0}} converge vers la racine {\alpha} de {f}.
    Étant donné {\varepsilon>0}, on peut par exemple s’arrêter dès que {\left|x_{n+2}-x_{n+1}\right|\le\varepsilon} et considérer que {x_{n+2}} est une approximation acceptable de {\alpha}.
    Méthode de Newton

  • Exprimer {x_{n+1}} en fonction de {x_{n}}.
    Écrire une fonction newton({f,x_{0},eps}), où {f} est une fonction.
  • Illustrer cette fonction pour obtenir une valeur approchée des racines de {f(x)=x^3-2x^2-x+1}.Remarque: on prévoira un argument supplémentaire df (par défaut None) contenant la fonction {f’}.
    En cas d’absence de ce paramètre, on approchera {f'(x)} par {\dfrac{f(x+h)-f(x-h)}{2h}}, avec {h=10^{-2}}.
  • Cliquer ici pour voir (ou cacher) le corrigé
      Pour voir ce contenu, vous devez :