Partiel1920 Corr

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Optimisation algorithmique - Examen partiel du 4 novembre

2019 - Correction

Exercice 1. On considère la fonction f : R2 → R définie par f (x, y) = x3 + 6x2 + 3y 2 −


12xy + 9x.

1. Calculer le gradient de f et déterminer les points critiques de la fonction.

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

L’équation x2 − 4x + 3 = 0 a pour solutions x = 1 et x = 3. Les points critiques de f sont


donc (1, 2) et (3, 6).

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.

3. La fonction f admet-elle un minimum global ?

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

∀n ∈ N, fn (λx + (1 − λ)y) ≤ λfn (x) + (1 − λ)fn (y),

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

puis en passant à la limite en N ,

f (λx + (1 − λ)y) ≤ λf (x) + (1 − λ)f (y).

Ainsi f est bien aussi une fonction convexe.

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 ,

m = f (a) = f (λy + (1 − λ)b) ≤ λf (y) + (1 − λ)f (b) = λf (y) + (1 − λ)m,

et donc λm ≤ λf (y), et donc puisque λ > 0, m ≤ f (y).

• 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

m = f (b) = f (λa + (1 − λ)y) ≤ λf (a) + (1 − λ)f (y) = λm + (1 − λ)f (y),

ce qui implique (1 − λ)m ≤ (1 − λ)f (y), et comme 1 − λ > 0, on obtient m ≤ f (y).

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 .

Soit d ≥ 1 un entier et y ∈ Rd fixé. On considère la fonction f : Rd → R définie par


f (x) = kx − yk, où k · k désigne la norme euclidienne.
3. Sur quel domaine f est-elle différentiable ?

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

ψ(t) = f (y + th) = ky + th − yk = |t|khk,

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.

4. Montrer que f est une fonction coercive.

Correction On a f (x) = kx − yk ≥ kxk − kyk, ce qui tend vers +∞ lorsque kxk tend vers
+∞. Donc f est coercive.

5. Montrer que f est convexe, mais pas strictement convexe.

Correction Soient x, z ∈ Rd et λ ∈ [0, 1]. On a

f (λx+(1−λ)z) = kλx+(1−λ)z−yk = kλ(x−y)+(1−λ)(z−y)k ≤ λkx−yk+(1−λ)kz−y)k = λf (x)+(1−λ)f (z)

donc f est convexe.


Pour montrer que f n’est pas strictement convexe, on choisit z = x et λ ∈]0, 1[. On a
alors

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.

Partie B. On considère à présent n points fixés x(i) ∈ Rd , et J : Rd → R la fonction


n
X
J(x) = kx − x(i) k.
i=1

3
6. Sur quel domaine la fonction J est-elle différentiable ?

Correction D’après la question 3, chaque fonction x 7→ kx − x(i) k est différentiable partout


sauf en x(i) , donc on en déduit que J est différentiable sur Rd \ {x(1) , . . . , x(n) }. Montrons
maintenant que f n’est pas différentiable en l’un des points x(i0 ) . Si les points x(i) sont tous
distincts, tous les x 7→ kx − x(i) k sont différentiables en x(i0 ) , sauf pour i = i0 , et donc J est
la somme de fonctions différentiables en x(i0 ) et d’une fonction non différentiable en x(i0 ) , et
donc elle n’est pas différentiable en x(i0 ) . Dans le cas où les points en sont pas nécessairement
distincts, et qu’un ou plusieurs x(i) sont confondus avec x(i0 ) , il suffit de voir qu’alors J s’écrit
J(x) = Akx − x(i0 ) k + g(x), où A ≥ 2 entier et g différentiable en x(i0 ) , et donc de la même
manière J ne peut pas être différentiable en x(i0 ) . Ainsi au final J est différentiable partout
sauf aux points x(i) , 1 ≤ i ≤ n.

7. Montrer que J est coercive et convexe.

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.

12. Un algorithme classique de calcul d’une approximation du minimiseur de J consiste à


effectuer les itérations suivantes :
n
, n
X x(i) X 1
y (k+1) = (i) (k)
i=1
kx − y k i=1
kx − y (k) k
(i)

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

Voici un code pour tester : on choisit n = 10 points aléatoires dans R2 ; on calcule le


minimiseur de J grâce à l’algorithme (ce point s’appelle médiane géométrique des points
x(i) ) et on affiche les points, la médiane ainsi que le barycentre pour comparer.

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()

Vous aimerez peut-être aussi