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.
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'instructiona, 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'instructiona, 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).
a,b = c,d
.