ExerciceMaths Sup – MPSI, chapitre 9 — Dérivabilité et convexité · Fonctions convexes
Exercice 42
Algorithme de trichotomie. Soit convexe et continue. On pose , , et .
1. Si , montrer que atteint son minimum sur en un point de . Si , montrer qu'il l'atteint en un point de .
2. Écrire une fonction Python trichotomie(f, a, b, eps) qui renvoie un encadrement d'amplitude inférieure à eps d'un point où atteint son minimum.
3. Appliquer à sur . Combien d'étapes faut-il pour une amplitude de ?
Corrigé
1. Supposons , et soit . Le lemme des trois pentes (proposition 8), appliqué à , donne donc . La fonction continue atteint son minimum sur le segment en un point (chapitre 8), et pour tout : réalise le minimum sur . Si , le lemme appliqué à donne de même , donc pour , et le minimum est atteint sur .
2. À chaque étape, on élimine un tiers du segment, et l'amplitude est multipliée par . Le signe de est celui de :
def trichotomie(f, a, b, eps):
n = 0 # nombre d'etapes
while b - a >= eps:
a1 = (2*a + b) / 3
a2 = (a + 2*b) / 3
if f(a2) >= f(a1): # mu >= 0 : minimum dans [a, a2]
b = a2
else: # mu < 0 : minimum dans [a1, b]
a = a1
n += 1
return a, b, nL'invariant de boucle est « atteint son minimum sur en un point du segment courant », conservé d'après la question 1, et la boucle termine puisque l'amplitude tend vers .
3. La fonction est convexe, de dérivée seconde . Après étapes, l'amplitude vaut , et
L'appel trichotomie(lambda x: exp(x) + x**2, -1, 0, 1e-6) renvoie bien étapes et un encadrement de , qui est la solution de , où s'annule la dérivée. La dichotomie du chapitre 8 aurait demandé étapes : la trichotomie, qui n'élimine qu'un tiers à chaque fois, est plus lente, mais elle ne demande pas de connaître la dérivée.