Source: https://w3.mi.parisdescartes.fr/~bgalerne/m1_optimisation/examen2016_corrige.pdf