Partiel1920 Corr
Partiel1920 Corr
Partiel1920 Corr
2019 - Correction
Correction ∇f (x, y) = (3x2 + 12x − 12y + 9 , 6y − 12x). Les points critiques de f vérifient
donc
3x2 + 12x − 12y + 9 = 0
2 2
x + 4x − 4y + 3 = 0 x − 4x + 3 = 0
⇔ ⇔
6y − 12x = 0 y = 2x y = 2x
2. Pour chacun des points critiques, dire s’il s’agit d’un minimiseur local, d’un maximiseur
local, ou d’un point selle.
6x + 12 −12
Correction La matrice hessienne de f vaut Hf (x, y) = . On a donc :
−12 6
18 −12 3 −2
• en (1, 2): Hf (1, 2) = = 6 . Les deux valeurs propres λ1 , λ2
−12 6 −2 1
de cette dernière matrice vérifient λ1 λ2 = 3 × 1 − (−2)2 = −1 < 0, donc elles ont des
signes opposés. Par conséquent le point critique (1, 2) est un point selle.
30 −12 5 −2
• en (3, 6): Hf (3, 6) = =6 . Les deux valeurs propres λ1 , λ2 de
−12 6 −2 1
cette dernière matrice vérifient λ1 λ2 = 5 × 1 − (−2)2 = 1 > 0, donc elles sont de même
signe. De plus leur somme vaut λ1 + λ2 = 5 + 1 = 6 > 0, donc il s’agit de deux valeurs
propres strictement positives. Par conséquent le point critique (3, 6) est un minimiseur
local.
Correction On peut facilement voir que f n’admet pas de minimum global. En effet le long
de la droite y = 0 on a : f (x, 0) = x3 + 6x2 + 9x, ce qui est un polynôme de degré 3 en x, et
ne peut donc pas admettre d’extremum. Plus précisément, f (x, 0) tend vers −∞ lorsque x
tend vers −∞, le terme x3 étant dominant. Ainsi f n’admet pas de minimum global.
1
Exercice 2. Partie A (questions préliminaires).
1. Montrer qu’une somme de fonctions convexes est convexe.
Correction En toute généralité, une ”somme” ne contient pas que deux termes, ni même
un nombre fini, et donc pour répondre le plus rigoureusement possible il faut considérer une
fonction de la forme X
f (x) = fn (x),
n∈N
où chaque fn est une fonction convexe, définie sur un même sous-ensemble convexe C d’un
espace vectoriel
P E, et à valeurs dans R. La fonction f est supposée bien définie, au sens où
chaque série n∈N fn (x) converge (la convergence simple suffit). On considère alors x, y ∈ C
quelconques, et λ ∈ [0, 1]. Par convexité de C, le point λx + (1 − λ)y est bien aussi un élément
de C, et comme chaque fn est convexe, on a
et donc en sommant, d’abord sur une nombre fini de termes, on a (puisque λ et 1 − λ sont
positifs) :
N
X N
X N
X
∀N ∈ N, fn (λx + (1 − λ)y) ≤ λ fn (x) + (1 − λ) fn (y),
n=0 n=0 n=0
2. Montrer que si une fonction f : R → R est convexe et constante sur un intervalle [a, b],
alors tout x ∈ [a, b] minimise f .
Correction remarque : L’énoncé aurait du préciser qu’on suppose a 6= b, sinon c’est évidemment
faux. Soit y ∈ R quelconque. On distingue trois cas :
• si y < a : alors y < a < b et donc il existe λ ∈]0, 1[ tel que a = λy + (1 − λ)b (plus
précisément, λ = (b − a)/(b − y)). On a donc par convexité de f ,
• si a ≤ y ≤ b : alors f (y) = m,
• si y > b : il existe alors λ ∈]0, 1[ tel que b = λa+(1−λ)y, et donc comme précédemment,
on peut écrire
2
Ainsi dans tous les cas, f (y) ≥ m, ce qui prouve que m est la valeur minimale de f sur R.
Par conséquent, tout x ∈ [a, b] est un minimiseur de f .
qP
d Pd 2
p
2
Correction On a f (x) = i=1 (xi − yi ) = h◦g(x) où g(x) = i=1 (xi −yi ) et h(t) = (t)
pour t ∈ R+ . La fonction g est polynomiale donc différentiable partout, et h est dérivable
sur R∗+ mais pas en t = 0. Or g(x) = 0 si et seulement si x = y, donc par composition de
fonctions, on voit que f est différentiable pour tout x ∈ Rd \ {y}. En x = y la fonction f
n’est pas différentiable, mais ceci doit être prouvé. Pour cela il suffit par exemple de montrer
que les dérivées directionnelles de f en y = x n’existent pas. On pose donc pour h ∈ Rd
quelconque (non nul), ψ(t) = f (y + th) et on veut montrer que ψ 0 (0) n’existe pas. Or
et on sait que la fonction valeur absolue n’est pas dérivable en 0. Ainsi ψ n’est pas dérivable
en t = 0. En conclusion f est différentiable partout sauf en x = y.
Correction On a f (x) = kx − yk ≥ kxk − kyk, ce qui tend vers +∞ lorsque kxk tend vers
+∞. Donc f est coercive.
f (λx + (1 − λ)y) = kλx + (1 − λ)y − yk = kλ(x − y) = λkx − yk = λf (x) = λf (x) + (1 − λ)f (y)
(puisque f (y) = 0). Donc l’inégalité de stricte convexité n’est pas vérifiée. Ainsi f n’est pas
strictement convexe.
3
6. Sur quel domaine la fonction J est-elle différentiable ?
Correction D’après la question 5, chaque x 7→ kx − x(i) k est convexe, et comme une somme
de fonctions convexes est convexe (question 1), J est bien une fonction convexe. De même
d’après la question 4, chaque x 7→ kx − x(i) k est coercive, est il est clair qu’une somme de
fonctions coercives est coercive (chaque fonction dans la somme tend vers +∞, donc la somme
également).
8. Montrer que si les points x(i) ne sont pas tous alignés, alors la fonction J est strictement
convexe. En déduire que dans ce cas la fonction J admet un minimiseur unique.
Correction Supposons que les points x(i) ne sont pas tous alignés. Soient x, y ∈ Rd distincts
et λ ∈]0, 1[. On a
n
X
J(λx + (1 − λ)y) = kλx + (1 − λ)y − x(i) k
i=1
Xn
= kλ(x − x(i) ) + (1 − λ)(y − x(i) )k
i=1
Or kλ(x − x(i) ) + (1 − λ)(y − x(i) )k ≤ kλ(x − x(i) )k + k(1 − λ)(y − x(i) )k avec égalité possible
seulement si λ(x − x(i) ) et (1 − λ)(y − x(i) ) sont colinéaires, donc seulement si x − x(i)
et y − x(i) sont colinéaires, autrement dit si x(i) est situé sur la droite passant par x et y.
D’après l’hypothèse, les x(i) n’étant pas tous alignés, il existe forcément un indice i pour lequel
x(i) n’est pas situé sur cette droite, et donc pour lequel kλ(x − x(i) ) + (1 − λ)(y − x(i) )k <
kλ(x−x(i) )k+k(1−λ)(y−x(i) )k. Alors nécessairement J(λx+(1−λ)y) < λJ(x)+(1−λ)J(y),
et donc J est strictement convexe.
La fonction J est donc d’une part continue et coercive, ce qui implique qu’elle admet un
minimiseur unique, et d’autre part strictement convexe, ce qui implique que ce minimiseur
est unique.
4
9. Dans cette question on suppose d = 1, que les x(i) sont tous distincts, et que n est pair.
Montrer qu’alors la fonction J est minimisée sur un certain intervalle à déterminer.
Correction On peut remarquer d’abord que comme d = 1 les points x(i) sont nécessairement
alignés, et donc l’hypothèse précédente ne tient pas. Il s’agit donc ici de regarder un contre-
exemple au cas d’unicité du minimiseur.
Comme d = 1, la fonction J est une fonction d’une variable réelle qui s’écrit
n
X
J(x) = |x − x(i) |.
i=1
On peut trouver une permutation σ des indices de telle manière que x(σ(1)) < x(σ(2)) < · · · <
x(σ(n)) . Si x(σ(n/2)) < x < x(σ(n/2+1)) on a alors
n/2 n
X X
J(x) = (x − x(i) ) + (x(i) − x)
i=1 i=n/2+1
n/2 n
X X
= (n/2)x − x(i) + x(i) − (n/2)x
i=1 i=n/2+1
n/2 n
X X
(i)
= − x + x(i) .
i=1 i=n/2+1
Cette expression est indépendante de x, et donc on voit que J est constante sur l’intervalle
[x(σ(n/2)) , x(σ(n/2+1)) ]. J étant de plus convexe, d’après la question 2 on en conclut que J est
minimisée sur cet intervalle.
10. On revient au cas d quelconque. Montrer que si le point x minimise J et qu’il est
distinct de tous les x(i) , alors on a
n
X x − x(i)
(i) k
= 0. (∗)
i=1
kx − x
Correction Si le point x est distinct de tous les x(i) , alors J est différentiable en x d’après
la question 6. Donc si de plus J est minimisée en x, alors x est P un point critique de J. √ On
doit donc calculer le gradient de J. Pour cela on écrit que J = ni=1 h ◦ gi où h(t) = t et
gi (x) = kx − x(i) k2 . On a alors pour tout h ∈ Rd ,
n
X
DJ(x).h = h0 (gi (x))Dgi (x).h.
i=1
Or h0 (t) = 1
√
2 t
et Dgi (x).h = 2 x − x(i) , h . D’où
n n n
* +
X 2 x − x(i) , h X x − x(i) , h X x − x(i)
DJ(x).h = p = = , h .
i=1
2 gi (x) i=1
kx − x(i) k i=1
kx − x(i) k
5
Pn x−x(i)
Ainsi par identification, ∇J(x) = i=1 kx−x(i) k , et donc comme x est un point critique,
n
X x − x(i)
= 0.
i=1
kx − x(i) k
11. Montrer que réciproquement, si un point x ∈ Rd est distinct de tous les x(i) et vérifie
(∗), alors J est minimisée en x.
Correction J est différentiable en x, avec ∇J(x) = 0, et par ailleurs on sait que J est
convexe. Donc tout point critique est un minimiseur, et ainsi x minimise J.
en partant d’un point y (0) quelconque. Écrire une fonction Python MinimiseJ(x,N)
qui effectue N itérations de cet algorithme et renvoie l’approximation du minimiseur
obtenue. x est supposé être un tableau de taille n × d contenant les coordonnées des
points x(i) .
Correction
def MinimiseJ(x,N):
d = x.shape[1]
y = np.zeros((n,1))
for k in range(N):
# calcul des ||x^(i)-y|| :
norms = np.linalg.norm(x-y,axis=1).reshape((n,1))
# mise à jour de y :
y = np.sum(x/norms,axis=0) / np.sum(1/norms)
return y
import numpy as np
import matplotlib.pyplot as plt
n = 10
x = np.random.rand(n,2)
med_x = MinimiseJ(x,N=100)
6
bar_x = np.mean(x,axis=0)
plt.plot(x[:,0],x[:,1],’o’, label=’points x^(i)’)
plt.plot(med_x[0],med_x[1],’xr’, label=’médiane’)
plt.plot(bar_x[0],bar_x[1],’+g’, label=’barycentre’)
plt.legend()
plt.show()