1 Méthode par dichotomie 2 Méthode de Newton

publicité
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2016-2017
1
TP : «résolution d’équations algébriques»
Objectifs du TP
• implémenter la méthode de dichotomie et de Newton pour la recherche de zéros
• Observer les points forts et les limites des deux méthodes
• Savoir estimer une dérivée
1
Méthode par dichotomie
Exercice 1 (Implémentation de la dichotomie) Écrire une fonction dichotomie qui renvoie la valeur approchée du zéro α dans [a, b] d’une fonction continue f selon la méthode de dichotomie :
• les arguments de dichotomie devront être : la fonction f , des réels a et b, avec a < b et un réel ε > 0 qui
peut être égal à 10−10 par défaut.
• le résultat renvoyé doit être une valeur approchée de α à ε près.
• on testera au préalable si f (a)f (b) > 0, et dans ce cas, on renverra None.
Exercice 2 (Utilisation) On note f la fonction définie par f (x) = (x − 2)2 + 1. Les racines de f sont 1 et 3.
1. Choisir différentes valeurs de a et b, de façon que dichotomie approxime ces deux racines.
2. On prend a = 0 et b = 4. Réfléchir un instant, et deviner la valeur qui sera renvoyée. Vérifier.
3. Comment utiliser la fonction dichotomie pour obtenir une valeur approchée du nombre π.
√
4. Comment utiliser la fonction dichotomie pour obtenir une valeur approchée du nombre 3 2 à 10−4 près.
Exercice 3 (Complexité, efficacité)
1. Modifier votre fonction dichotomie de façon à ce qu’elle affiche le nombre d’itérations effectuées. Tester
là avec la fonction g : x 7→ x2 − 2 entre 0 et 2 pour des ε de la forme 2k puis de la forme 10k .
2. Combien faut-il d’itérations supplémentaires pour gagner une décimale de précision ?
√
3. Pour approximer 2, on a exécuté dichotomie(g, 0, 2, 10**(-n)) avec g une fonction bien choisie.
On sait que l’algorithme a effectué 17 itérations. Déterminer la valeur de la variable n.
4. Exécuter dichotomie(g, 0, 2, 2**(-n)) pour n ∈ {51, 52, 53, 54}. Observer le problème et proposer
une solution.
5. La fonction dichotomie est déjà implémentée sous Python par la fonction bisect du module scipy.optimize.
Afficher la notice de cette fonction, et indiquer quel est l’argument optionnel évitant la difficulté rencontrée
à la question précédente.
2
Méthode de Newton
Exercice 4 (Méthode de Newton) Soit f : R → R une fonction dérivable et x0 ∈ R. On construit par
récurrence la suite (xn ) : si xn est construit, on note Tn la tangente à la courbe de f au point d’abscisse xn et
on pose xn+1 le point d’intersection de Tn avec l’axe des abscisses.
1. Déterminer l’expression de xn+1 .
2. Écrire une fonction newton prenant en entrée f , f ′ , le premier terme x0 , un réel ε > 0 et renvoyant le
premier terme xk de la suite tel que |xk − xk−1 | 6 ε. On pourra démarrer par : def newton(f, fprime,
x0, epsilon = 10**-6):
2
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2016-2017
Exercice 5 (Utilisation)
1. Donner une approximation de
√
2 avec la méthode de Newton en partant du point 2.
2. Modifier votre fonction newton de façon à ce qu’elle affiche les valeurs intermédiaires et le nombre d’itérations effectuées. Tester là avec la fonction g : x 7→ x2 − 2 en partant du point de votre choix. Comparer
avec la méthode de dichotomie.
3. Combien faut-il d’itérations supplémentaires pour gagner une décimale de précision ? Quelle précision est
gagné à chaque itération ?
Exercice 6 (Difficultés) Une des difficultés de la méthode de Newton est de bien choisir x0 de sorte que l’on
ne tombe pas sur un point où la dérivée s’annule.
1. Tracer l’exécution de newton avec la fonction cos en partant des points 1, 0.5, 0.1 puis 0.01. Commenter.
2. Si une fonction s’annule plusieurs fois, il se peut que la suite de points obtenus par la méthode de Newton
converge vers la «mauvaise» racine (pas celle que l’on voulait approximer). Faire un schéma qui illustre
cette situation : tracer l’allure d’une courbe d’une fonction admettant deux zéros et choisir un x0 tel que
la suite converge vers la racine la plus éloignée de x0 .
3
Approximation de la dérivée
Si la fonction f n’est pas définie par une formule mais par ses valeurs en certains points, on ne peut pas
calculer la dérivée f ′ . On peut toutefois en obtenir des approximations :
3.1
Approximation par le taux d’accroissement à droite
Si f est une fonction dérivable en x0 , pour h > 0 proche de 0, on a
f ′ (x0 ) ≈
f (x0 + h) − f (x0 )
.
h
On peut estimer l’erreur commise par cette approximation à l’aide du résultat mathématique suivant :
Si f de classe C 1 sur [x0 , x0 +h] avec M1 = sup[x0 ,x0 +h] |f ′ |, on démontre par l’inégalité de Taylor-Lagrange :
′
f (x0 ) − f (x0 + h) − f (x0 ) 6 hM1 .
h
2
Exercice 7 Écrire une fonction prenant en entrée f, x0 , h et renvoyant une approximation de f ′ (x0 ) par le taux
d’accroissement.
Exercice 8 Tester la fonction précédente pour des valeurs de h de la forme
1
10k
pour différents fonctions :
1. la fonction exp en 0. Pour cela, on calculera l’erreur commise en fonction de h. Les observations sont-elles
conforment à l’erreur théorique.
2. la fonction cos en
π
6.
3. la fonction sin en 0. L’erreur vous paraît-elle linéaire en h ? Une explication : au vosinage de 0, On a
2
3
sin h − h ∼ h6 donc sinh h − 1 ∼ h6 .
3
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2016-2017
3.2
Approximation par la moyenne des taux d’accroissement à gauche et à droite
pour h > 0 proche de 0,
f (x0 + h) − f (x0 − h)
1 f (x0 − h) − f (x0 ) f (x0 + h) − f (x0 )
=
+
.
f ′ (x0 ) ≈
2
−h
h
2h
Comme toujours, en moyennant on obtient une approximation meilleure, on peut montrer que si f est de classe
C 3 sur [x0 , x0 + h] avec M3 = sup[x0 ,x0 +h] |f (3) |, on a :
2
′
f (x0 ) − f (x0 + h) − f (x0 − h) 6 h M3 .
2h
6
Exercice 9 Écrire une fonction prenant en entrée f, x0 , h et renvoyant une approximation de f ′ (x0 ) par la
moyenne des taux d’accroissement.
Exercice 10 Tester la fonction précédente pour des valeurs de h de la forme
1
10k
pour différents fonctions :
1. la fonction exp en 0. Pour cela, on calculera l’erreur commise en fonction de h. Les observations sont-elles
conforment à l’erreur théorique.
2. la fonction cos en
π
6.
Exercice 11 En déduire une fonction newtonBis implémentant l’algorithme de Newton mais en remplaçant la
fonction dérivée par son approximation obtenue à la question précédente.
4
Une ouverture vers les fractals, bassins d’attraction
Les deux exercices qui suivent sont inspirés du blog de Stéphane Gonnord et de l’article suivant sur les
fractals http://images.math.cnrs.fr/La-methode-de-Newton-et-son.html.
Exercice 12 (Bassin d’attraction des racines carrées) Soit Z un nombre complexe. On sait par le cours
de mathématiques que Z admet deux racines carrées complexes opposées (identiques si Z = 0).
1. On applique la méthode de Newton à la fonction x 7→ x2 − 882. Donner l’expression de la suite récurrente
que l’on calcule. Vers quel réel peut-on espérer la convergence ? Tester en prenant comme points de départ
2, 1 puis −1, −2.
2. Au lieu de choisir un réel comme point de départ, nous allons chosir un nombre complexe. Testons avec
1 + i, 1 − i, −1 + i, −1 − i, i, −i. En Python, l’instruction complex(1,i) représente le nombre complexe
1 + i.
Commentaire : l’axe des ordonnées est donc une ligne de séparation de deux comportements
différents de la
√
882
;
et à sa droite,
suite selon
la
valeur
de
départ.
A
sa
gauche,
c’est
le
«bassin
d’attraction»
de
la
solution
−
√
celui de 882.
3. Dessiner le bassin d’attraction pour la fonction complexe z 7→ 12 (z +
Z
z)
avec Z = 1 + i.
Exercice 13 (Bassins d’attraction d’une fonction cubique) Si on applique la méthode de Newton à l’application complexe f : z 7→ z 3 −1, on peut montrer que la suite converge pour sauf pour un ensemble dénombrable
de valeurs initiales (celles qui conduisent à un zéro de la dérivée de f ) vers 1, j ou j 2 les racines cubiques de
l’unité.
Nous allons maintenant construire un graphique : si u0 ∈ C est une valeur initiale, on calcule u le 20-ième
terme obtenue par la méthode de Newton :
• si |u − 1| 6 10−5 , on considère que la suite converge vers 1, et on colorie le point d’affixe u0 en rouge.
• si |u − j| 6 10−5 , on considère que la suite converge vers j, et on colorie le point d’affixe u0 en vert
• si |u − j 2 | 6 10−5 , on considère que la suite converge vers j 2 , et on colorie le point d’affixe u0 en bleue
• sinon, on colorie le point d’affixe u0 en noir.
Tracer 10000 points de départ d’affixe u0 uniformément répartis dans le carré [−2, 2]2 .
Téléchargement