MAT1112 - Optimisation avec ou sans contrainte
Notes de cours supplémentaires
d’après M. Anel
L’optimisation est la recherche de maxima ou de minima (locaux) d’une fonction f . L’étude se fait toujours
en deux étapes :
1. on cherche les points critiques de la fonction f qui sont les candidats pour être des maxima ou des minima,
2. pour chaque point critique, on utilise un test sur les dérivées secondes de f pour savoir s’il donne un
maximum ou un minimum (mais ce test n’est pas toujours concluant).
1 Optimisation sans contraintes
1.1 Recette pour les fonctions à une variable
Soit f : D ⊂ R −→ R une fonction deux fois différentiable dont la dérivée seconde est continue, on calcule
ses maxima et ses minima locaux de la manière suivante.
1. on trouve les points critiques : ce sont les solutions à l’équation f 0 (x) = 0
2. pour chaque point critique x0 , on calcule f 00 (x0 )
(a) si f 00 (x0 ) > 0 alors f atteint en x0 un minimum local,
(b) si f 00 (x0 ) < 0 alors f atteint en x0 un maximum local,
(c) si f 00 (x0 ) = 0 on ne peut rien dire.
1.2 Recette pour les fonctions à plusieurs variables
Soit f : D ⊂ Rn −→ R une fonction deux fois différentiable dont les dérivés secondes sont continues, on
calcule ses maxima et ses minima locaux de la manière suivante.
1. On trouve les points critiques : ce sont les solutions (x1 , . . . , xn ) à l’équation
∂f
∂x1 =0
(x1 ,...,xn )
∇f |(x1 ,...,xn ) = 0 ⇐⇒ ...
∂f
=0
∂xn
(x1 ,...,xn )
2. La suite de la méthode ne marche que pour une fonction à deux variables f (x, y).
Pour chaque point critique (x0 , y0 ) de f , on calcule la matrice hessienne de f en (x0 , y0 ) :
2 2
∂ f ∂ f
∂x2 ∂x∂y
(x0 ,y0 ) (x0 ,y0 )
H(f )|(x0 ,y0 ) =
∂2f ∂2f
∂y∂x ∂y 2
(x0 ,y0 ) (x0 ,y0 )
1
(ce doit être une matrice symétrique). Puis on calcule le "discriminant" de la matrice (c’est en fait l’opposé
du déterminant) :
!2
∂2f ∂2f ∂2f
∆= −
∂x∂y (x0 ,y0 ) ∂x2 (x0 ,y0 ) ∂y 2 (x0 ,y0 )
(Cette formule est un peu complexe à lire, si on note
A B
B C
la matrice hessienne, la formule pour ∆ est ∆ = B 2 − AC.)
3. Le critère est alors le suivant :
∂2f
(a) si ∆ < 0 et ∂x2 < 0 alors f admet en (x0 , y0 ) un maximum local
(x0 ,y0 )
∂2f
(b) si ∆ < 0 et ∂x2 > 0 alors f admet en (x0 , y0 ) un minimum local
(x0 ,y0 )
(c) si ∆ > 0 alors (x0 , y0 , f (x0 , y0 )) est un point selle du graphe de f (on dit aussi un point col) : en
particulier, ce n’est ni un maximum, ni un minimum.
(d) dans tous les autres cas, on ne peut pas conclure.
2 Optimisation sous contraintes
Une contrainte sur les points de Rn est une équation du type g(x1 , . . . , xn ) = 0 pour une certaine fonction
g : Rn → R.
On cherche maintenant à maximiser ou minimiser une fonction f (x1 , . . . , xn ) sous la contrainte g(x1 , . . . , xn ) = 0.
On suppose que f et g sont des fonctions deux fois différentiables dont les dérivées partielles secondes sont
continues. On résout le problème de la manière suivante.
1. On définit la fonction de Lagrange
L(x1 , . . . , xn , λ) = f (x1 , . . . , xn ) + λg(x1 , . . . , xn ).
2. On résout le sytème
∂f ∂g
∂x1 = −λ ∂x1
(x1 ,...,xn ) (x1 ,...,xn )
...
∇L|(x1 ,...,xn ,λ) = 0 ⇐⇒
∂f ∂g
= −λ
∂xn ∂xn
(x1 ,...,xn ) (x1 ,...,xn )
g(x1 , . . . , xn ) = 0
C’est un système de n + 1 équations à n + 1 inconnues, il admet en général plusieurs solutions.
Si (x1 , . . . , xn , λ) est une solution, le vecteur (x1 , . . . , xn ) est appelé un point critique de f (x1 , . . . , xn )
sous la contrainte g(x1 , . . . , xn ) = 0.
2
3. La suite de la méthode ne marche que pour les fonctions à deux variables f (x, y) et g(x, y) (et est hors
programme). Pour chaque point critique (x0 , y0 , λ0 ) de L(x, y, λ) = f (x, y)+λg(x, y), on calcule la matrice
hessienne de L en (x0 , y0 , λ0 ) :
2 2 2
∂ L ∂ L ∂ L
∂x2 ∂x∂y ∂x∂λ
(x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 )
∂2L ∂2L ∂2L
H(L)|(x0 ,y0 ,λ0 ) = ∂y∂x ∂y 2 ∂y∂λ
(x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 )
∂2L ∂2L ∂2L
∂λ∂x ∂λ∂y ∂λ2
(x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 ) (x0 ,y0 ,λ0 )
(rappel : ce doit être une matrice symétrique). Puis on calcule le déterminant det(H(L)) de cette matrice.
(Le déterminant d’une matrice 3 × 3
a b c
M = d e f
g h i
est donné par la formule
e f d f d e
det(M ) = a det − b det + c det
h i g i g h
= a(ei − hf ) − b(di − gf ) + c(dh − ge).)
4. Le critère est alors le suivant :
(a) si det(H(L)) > 0 alors, en (x0 , y0 ), f atteint un maximum local sous la contrainte g(x, y) = 0,
(b) si det(H(L)) < 0 alors, en (x0 , y0 ), f atteint un minimum local sous la contrainte g(x, y) = 0,
(c) si det(H(L)) = 0 alors on ne peut rien dire.