6.1- TP - Recherche du zéro
Objectif
Le but de cette activité est d'étudier différents algorithmes permettant de déterminer le zéro d'une fonction. Notre point de départ est donc un intervalle
Pour s’appuyer sur un exemple, on prend la fonction suivante :
avec
fonctions mathématiques
Le module math contient des fonctions cos, sin, sqrt que vous pouvez importer. Attention, les fonctions trigonométriques prennent des radiants en argument !
Pour convertir les degrés en radiants, le module math a une fonction radians qui fait la conversion, ou bien une variable pi pour la valeur de pi.
Question 1
Écrire une fonction python Y(theta) qui prend en argument et renvoie un flottant, permettant de calculer la fonction mathématiques définie au-dessus. Faire attention aux unités des angles.
Loading editor...
Question 2
Définir en python la liste vec_theta contenant des valeurs allant de -50° à 50° avec un pas de 0,1.
Loading editor...
Courbes en python
Pour tracer une courbe en python, il faut commencer par importer le module matplotlib.pyplot :
import matplotlib.pyplot as plt Puis, on peut :
- déclarer des courbes avec
plt.plot(Lx, Ly)oùLxetLycontiennent les valeurs des abscisses et des ordonnées (en général sous forme de liste). - afficher une grille en arrière-plan avec
plt.grid(visible=True) - afficher toutes les courbes déclarées avec
plt.show() - remettre à zéro l'affichage avec
plt.clf(), ou bien en ré-important la librairie.
Question 3
Affichez, sur une courbe, la valeur de theta et de Y(theta) pour toutes les valeurs de vec_theta. Déterminer graphiquement la valeur de θ pour laquelle la fontion Y est nulle.
Loading editor...
1. Recherche exhaustive
La première solution, est de tester la valeur de notre fonction sur chaque valeur de l'intervalle, et de trouver la plus proche de zéro.
Question 4
Déterminez (à l'aide d'un code python), parmis les valeurs de vec_theta, celle qui est la plus proche d'un zéro de la fonction Y (c'est à dire la valeur theta telle que Y(theta) soit la plus proche de zero).
Combien d'opérations cette recherche a-t-elle demandé ?
Loading editor...
2. Méthode de la dichotomie
On suppose que la fonction s'annule exactement une fois sur notre intervalle.
L'idée est de découper l'intervalle en deux, et de regarder au milieu. En fonction du signe de l'image de la fonction au milieu, on sait si la fonction s'annule à droite ou à gauche de celui-ci.
On répète alors l'opération sur la moitiée choisie, jusqu'à ce qu'on soit suffisemment proche du résultat.
Voici les étapes de la dichotomie sur un exemple, la fonction décroissante
étape 0 : [a, b] = [0.0000, 1.5000], h(milieu) = -0.0183 ≤ 0 : on garde [a, milieu]
Question 5
Écrire une fonction dichotomie(f, a, b, eps) permettant de trouver le zéro de la fonction f (supposée croissante) à eps près sur l’intervalle correct [a, b] par la méthode de dichotomie. La fonction renvoie la liste des couples (an, bn) des valeurs de a et b à chaque étape de l'algorithme.
Inspirez-vous de la fonction de recherche dichotomique vue en cours si besoin ! Le cours est disponible ici.
On demande de s'arrêter lorsque l'intervalle [an, bn] est de longueur inférieur à eps.
Loading editor...
Question 6
Déterminer par dichotomie la valeur de θ pour laquelle la fonction Y est nulle à
Visualisation
Le module affichage du site permet d'animer les étapes : animer_dichotomie(Y, dichotomie(Y, -50, 50, 1e-6)), après avoir fait from affichage import animer_dichotomie.
Loading editor...
3. Méthode de Newton
Le principe de la méthode de Newton est de chercher le zéro d’une fonction en prenant comme nouvelle approximation l’abscisse du point d’intersection de la tangente à la fonction au point d’approximation précédente.
L’équation générale de la tangente à la fonction
$$ tangente(x) = f'(x_k)(x-x_k) + f(x_k) $$
On choisit
la tangente en x0 = 4.5000 coupe l'axe en x1 = 2.6944
Quand cette dérivée n'est pas connue, on peut déterminer une approximation. Ici, on l'approchera par :
Question 7
Écrire une fonction derivee(f,x) permettant d'évaluer la dérivée de la fonction f à l'abscisse x. On pourra utiliser la formule du taux d'accroissement décrit plus haut avec
Loading editor...
Question 8
Écrire une fonction newton(f,x0,eps) permettant de trouver le zéro de la fonction f à eps au voisinage du point x0 par la méthode de newton. La fonction renvoie la liste des éléments de la suite des zéros trouvés par la méthode de Newton.
Loading editor...
Question 9
Déterminer par la méthode de Newton la valeur de θ pour laquelle la fonction Y est nulle à
Visualisation
De même, animer_newton(Y, newton(Y, x0, 1e-6)) anime la suite des approximations (après from affichage import animer_newton).
Loading editor...
Si vous avez fini : aidez vos voisins, demandez un exercice au professeur, ou bien lisez cette page, sur une technique "connue" par son apparence "magique", qui repose en fait sur la méthode de newton de manière cachée.
Entrez le code donné en cours pour accéder à la solution :