Python en mathématiques - Niveau 1

Algorithmes de dichotomie

Pour une fonction dont le tableau de variations est donné, approximation numérique d'un extremum par dichotomie

On souhaite définir une fonction Python nommée approx_extrem() ainsi spécifiée:

Paramètres a et b deux nombres (a < b) et une fonction définie sur [a;b] qui est croissante puis décroissante sur cet intervalle [a;b].
Valeur renvoyée une approximation de l'abscisse $\alpha$ du maximum de la fonction f.

On propose une réponse dans ce fichier jupyter notebook.

Version html statique:

Les fonctions testées semblent confirmer la validité de ce code.

Faîtes quelques autres tests puis justifier l'algorithme mis en oeuvre.

  • Éléments de justification
On a $a \leqslant c \leqslant m \leqslant d \leqslant b$. On raisonne sur la position de $\alpha$.
  • Si f(c) > f(m), alors $\alpha$ n'est pas dans [m;b]. En effet, lorsque $\alpha\in [m;b]$, on a $m \leqslant \alpha$, et $[c;m] \subset [a; \alpha]$ et donc f(c) ≤ f(m) puisque f croît sur $[a; \alpha]$.

    Ainsi lorsque f(c) > f(m), on a $\alpha \in [a;m]$ (ce qui explique l'instruction a, b = a, m).
  • Si f(d) > f(m), alors $\alpha$ n'est pas dans [a;m]. En effet, lorsque $\alpha\in [a;m]$, on a $\alpha \leqslant m$, et $[m;d] \subset [\alpha;b]$ et donc f(d) ≤ f(m) puisque f décroît sur $[\alpha; b]$.

    Ainsi lorsque f(d) > f(m), on a $\alpha \in [m;b]$ (ce qui explique l'instruction a, b = m, b).
  • Si f(c) < f(m) et f(d) < f(m) alors $\alpha \in [c;d]$. En effet:
    • Si on avait $\alpha$ avant c, alors f serait décroissante sur [c;b] et on aurait f(c) > f(m).
    • Si on avait $\alpha$ après d, alors f serait croissante sur [a;d] et on aurait f(d) > f(m).
    Ce qui explique l'instruction a,b = c,d.