Séance de TD 1

publicité
2ème année
ENSEM ANA-2
Séance de TD 1
Optimisation sans contrainte : méthodes de gradient
Soit n ∈ N∗ . On considère la matrice A ∈ Mn (R) et

4 −2 0 . . . 0

..
 −2 4 −2
.


.
.
.
..
..
.. 0
An =  0

 ..
 .
−2 4 −2
0 . . . 0 −2 4
le vecteur b ∈ Rn définis par :





 et bn = (1, 1, . . . , 1).



On cherche à minimiser dans Rn , par différentes méthodes, la fonctionnelle :
1
Jn (x) = (An x, x) − (bn , x).
2
On appelle donc (Pn ) le problème :
(Pn )
min Jn (x)
x ∈ Rn
Remarque : il est important d’exploiter, dans les questions qui suivent, le format « creux » de
la matrice A afin de diminuer les temps de calcul.
Fonctions Matlab utiles : sparse, full, spdiags.
1. Programmer en Matlab la fonctionnelle Jn , et la représenter dans le cas n = 2 sur le pavé
[−10, 10] × [−10, 10].
Fonctions Matlab utiles : meshgrid, mesh.
2. Vérifier numériquement, pour certaines valeurs de n que Jn est coercive.
Calculer la solution théorique du problème (Pn ) dans le cas n = 2.
Fonction Matlab utile : eigs.
3. Nous allons étudier trois méthodes de minimisation. Pour chacune de ces études, on demande :
−→ pour le cas n = 2 :
• d’afficher sur une même figure, et dans le cas n = 2, les courbes de niveau de Jn , et
son gradient.
Fonctions Matlab utiles : contour, quiver.
• pour un point de départ x0 , de stocker la liste des xn obtenu, avant que le critère de
convergence soit atteint.
• de tracer, sur la même courbe que précédemment, les lignes qui relient les points xn .
1
−→ lorsque n prend les valeurs 10, 20, 30, 50, 100 :
• de tester chacune des trois méthodes
• Enfin, de comparer à l’aide d’un graphique ou d’un tableau, la rapidité de convergence
de chacune de ces méthodes, ainsi que le temps de calcul par Matlab, suivant les
différentes valeurs prises par n.
(a) La méthode du gradient à pas fixe.
Écrire une fonction Matlab prenant en argument ρ > 0, un pas fixe et x0 ∈ Rn , un
vecteur d’initialisation, afin de mettre en œuvre l’algorithme du gradient à pas fixe,
puis la tester sur Jn dans chacun des cas ci-dessus. Répondre aux questions initiales.
Expliquer brièvement pourquoi il est important de choisir le pas fixe, ni trop grand,
ni trop petit.
(b) La méthode du gradient à pas optimal.
i. Soient x ∈ Rn , un point, et d ∈ Rn , un vecteur.
Écrire une fonction Matlab permettant de minimiser, à l’aide de la méthode de la
section dorée, la fonction t 7−→ Jn (x + td).
ii. Voici l’algrithme du gradient à pas optimal pour la minimisation d’une fonction f
donnée :

x0 est donné.



 xn+1 = xn + ρn dn
dn = −∇f (xn )



 ρn = min Jn (xn + α.dn ).
α∈R
Programmer cet algorithme et répondre aux questions initiales. On pourra utiliser
la méthode de la section dorée pour calculer ρn .
(c) La méthode du gradient conjugué dans le cas d’une fonctionnelle quadratique elliptique.
Soit f : Rn −→ R
, où A ∈ Mn (R) est une matrice symétrique
1
x 7−→
2 (Ax, x) − (b, x)
définie positive et b est un vecteur de Rn . Alors, dans ce cas, l’algorithme du gradient
conjugué s’écrit :
 0
x est donné, r0 = Ax0 − b et d0 = −r0 .



 xn+1 = xn + ρn dn , ρn = − (rnn,dnn)
(Ad ,d )
n+1 = Axn+1 − b
r



n+1 2
 n+1
d
= −rn+1 + βn dn , βn := krkrn k2k .
Programmer cet algorithme et répondre aux questions initiales.
2
Téléchargement