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}
1
deff(x):returnx**3-2*x**2-x+1
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}
É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}.
Illustrer cette fonction pour obtenir une valeur approchée des racines de {f(x)=x^3-2x^2-x+1}.
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}.
É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}.
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}.
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}}.