TP d`informatique : résolution approchée d`équation 1 Dichotomie 2

publicité
TP d’informatique : résolution approchée d’équation
On propose dans ce TP de mettre en œuvre deux méthode permettant de résoudre de manière approchée des
équations de type f (x) = 0 d’inconnue x ∈ R.
1) Pourquoi est-ce que de savoir résoudre les équations de type f (x) = 0 permet en fait de résoudre n’importe quelle
équation réelle ?
1
Dichotomie
Soit I un segment non vide, soit a = min(I) et b = max(I). Soit f : I → R continue et telle que f (a). f (b) ≤ 0.
On rappelle très succinctement le principe de la méthode dite par dichotomie pour obtenir un encadrement d’une
solution de l’équation f (x) = 0 d’inconnue x ∈ I. Nous utilisons trois variables debut, fin, milieu. Au début,
debut prend la valeur a, fin la valeur b et milieu la valeur (a + b)/2.
• Si f (debut). f (milieu) ≤ 0 alors l’équation admet une solution sur [debut, milieu] : nous allons alors poursuivre
les calculs dans l’intervalle [debut, milieu]. En pratique, fin va prendre la valeur milieu, et milieu va devenir
(debut + f in)/2 (debut ne change pas).
• Si f (debut). f (milieu) > 0, il y a alors une solution sur [milieu, f in]. A vous de voir quelles opérations faire dans ce
cas.
On poursuit ainsi jusqu’à ce que la précision demandée soit obtenue.
1) Écrire l’algorithme correspondant. Il prendra en entrée : une fonction f , deux nombres a et b tels que f est définie
sur [a, b] et f (a). f (b) ≤ 0, ainsi qu’un nombre h > 0. Il renverra deux nombres α, β tels que l’équation f (x) = 0 a
une solution sur [α, β] et |β − α| ≤ h.
2) √
Traduire l’algorithme pour python et procéder aux tests. Par exemple on pourra calculer une valeur approchée de
2, ou de π à 10−4 près.
3) Pour tout n ∈ N, calculer la précision obtenue lorsque la boucle a été itérée n fois.
4) Démontrer que l’algorithme termine. Puis démontrer que l’algorithme renvoie un résultat correct.
5) $Soit h ∈ R+∗
% . Montrer que pour atteindre la précision h, le nombre d’itérations de la boucle à effectuer est
b−a
b−a
log2 (
) + 1 (sauf si par hasard log2 (
) était entier, ce qui en pratique n’arrive jamais).
h
h
6) Dans l’algorithme, quelle est l’opération élémentaire que vous pensez être la plus longue à effectuer ? Pour atteindre
la précision h, combien de fois a-t-elle été effectuée ? Bonus : pouvez-vous améliorer votre algorithme pour réduire
ce nombre ?
2
Méthode de Newton
Voici maintenant une méthode proposée par Isaac Newton, à l’origine pour résoudre des équations polynomiales.
On conserve les notations f, I, a, b précédentes. On suppose en outre que f est dérivable, et que f 0 ne s’annule pas
(Remarque: pour être sûr que la méthode fonctionne correctement, il vaut mieux que f soit C2 ).
On part d’un point x0 qu’on espère assez proche de la solution cherchée. On calcule la tangente à la courbe C f
au point d’abscisse x0 . Notons-là T f (x0 ). Normalement, cette tangente devrait être proche de la courbe C f , au moins
au voisinage de x0 . D’où l’idée : au lieu de chercher l’intersection de C f avec l’axe des abscisses, nous cherchons
l’intersection de T f (x0 ) avec l’axe des abscisses. On note x1 l’abscisse du point obtenu.
Ensuite on recommence en partant de x1 . On obtient ainsi x2 , on recommence encore, etc... On obtient une suite
(xn )n∈N qu’on espère converger vers une solution de f (x) = 0.
1) Faire des dessins.
2) Donner la formule exprimant pour tout n ∈ N xn+1 en fonction de xn .
3) Proposer un algorithme appliquant la méthode de Newton. (Réfléchissez aux variables que vous pouvez demander
à l’utilisateur en entrée.)
4) Implémenter cet algorithme sous python.
5) Comparer la vitesse d’exécution avec la dichotomie. Par exemple, sur un même exemple calculer la précision
obtenue avec Newton pour n = 5, puis faire afficher par la dichotomie le nombre d’itérations nécessaires pour
obtenir la même précision.
6) Écrire un algorithme permettant de visualiser le comportement de la suite. On tracera d’abord le graphe de f , puis
les points (x0 , f (x0 )), (x1 , 0), (x1 , f (x1 )), (x2 , 0), ... (xn−1 , f (xn−1 )), (xn , 0).
7) Appliquer la méthode pour résoudre sin(x) = 0, en choisissant diverses valeurs de x0 .
8) Appliquer la méthode pour résoudre th(x) = 0.
9) Autre exemple : soit a ∈ R+∗ , appliquer la méthode avec la fonction f : x 7→
1
− a. Quel intérêt ?
x
10) Identifier les défauts de la méthode de Newton.
11) Supposons que la suite (xn )n∈N converge. Démontrer que sa limite est une solution de f (x) = 0.
Commentaire : On dit que f est ”convexe” lorsque f 0 est croissante (la courbe est alors au dessus de ses tangentes).
On démontre par exemple que la méthode de Newton fonctionne toujours dès que f est convexe, croissante, et que x0
est choisi de sorte que f (x0 ) > 0.
Si en plus, f est C2 , on démontre qu’il existe une constante C et un rang n0 ∈ N tel que,en notant x∞ la solution
cherchée,
∀n ≥ n0 , |xn+1 − x∞ | ≤ C.|xn − x∞ |2
En gros, la précision est mise au carré à chaque itération, autrement dit le nombre de décimale justes est multiplié
par 2. La convergence est donc extrêmement rapide, on dit que la convergence est ”quadratique”.
2
Téléchargement