Vous êtes sur la page 1sur 3

ENSTA – Cours AO 101 2023–2024

TP 1 : Algorithmes pour le problème sans contraintes

Objectifs du TP : Prendre en main un code simple d’optimisation - étudier les


comportemements des algorithmes de Gradient à Pas Fixe (GPF), de Gradient à Pas
Optimal (GPO) et de Gradient Conjugué (GC).

Contexte : On cherche à modéliser l’équilibre d’une corde fixée aux points (0, 0) et
(1, 0) et soumise à une force linéique constante g~ey (g < 0). En notant x 7→ u(x) la
fonction représentant le déplacement vertical de la corde, l’énergie mécanique de ce
système est donnée par

1 1
Z Z 1
0 2
Ec (u) = ω |u (x)| dx − g u(x) dx (1)
2 0 0

où ω désigne la raideur de la corde. La déformée de la corde correspond à la fonction


u ∈ H01 ([0, 1]) qui minimise cette énergie. Pour résoudre ce problème, on discrétise la
corde en N + 2 points, avec le point 0 et le point N + 1 comme extrémités (0, 0) et
(1, 0). En approchant la fonction u par son interpolé continu et affine par intervalle on
obtient, en posant h = 1/(N + 1)
N +1 N
X ω (ui − ui−1 )2 X (ui + ui−1 )
Ec (u) ' Ed (U ) = − hg (2)
i=1
h 2 i=1
2

où le composantes ui représentent une approximation du déplacement au noeud xi = ih


et où, comme la membrane est fixée aux extrémités, u0 = 0 et uN +1 = 0. Nous avons
ainsi ramené le problème de minimisation en la variable u ∈ H01 ([0, 1]) en un problème
de minimisation sur RN pour la variable U = (u1 , . . . , uN ).

La fonctionnelle Ed est quadratique et peut s’écrire sous la forme canonique :

ω hAU, U i
Ed (U ) = − gh hE, U i (3)
h 2
avec E le vecteur de taille N contenant que des 1 et A la matrice
 
2 −1 0 ... 0
.. 
−1 2 −1 . 


A :=  .. .. .. 
0 . . . 0 .
 .
 ..

−1 2 −1
0 ... 0 −1 2

1
Cette écriture est une conséquence de l’identité (la justification est laissée comme en-
trainement)
N
X +1
hAU, U i = (ui − ui−1 )2 ,
i=1

qui montre au passage que la matrice A est définie positive.

Il est clair que la minimisation de Ed est équivalente à la minimisation de


1
Ẽd (U ) := hAU, U i − hB, U i
2
2
avec B := hωg E, qui elle-même est équivalente à la résolution de l’équation d’Euler
∇Ẽd (U ) = 0, soit AU = B.

Comparaison des algorithmes de gradient : Le but de ce TP est de tester et


comprendre le fonctionnement numérique des algorithmes de gradient pour résoudre
ce type de problèmes quadratiques avec une matrice A définie positive. Un rappel de
ces algorithmes est donné en bas ainsi que les routines Matlab correspondantes.

1. Pour l’algorithme du gradient à pas fixe, observer le comportement de l’algo-


rithme pour N = 10, 100, 500. Tester la sensibilité au paramètre ρ.
2. Comparer la rapidité des trois algorithmes pour N = 10, 100, 500.
3. Pour l’algorithme le plus rapide, faire varier le paramètre ω (g = −9.61 est la
constante de gravité) et commenter son influence sur la déformation de la corde.

Rappel des algorithmes de gradient pour la minimisation sur RN de J(x) =


1
2
hAx, xi − hb, xi avec A ∈ RN × RN et b ∈ RN . Les codes Matlab sont donnés : les
trois algorithmes de gradient sont chacun dans un fichier, et un fichier général sert à
créer les variables : A, B selon les paramètres N, ω, g...

Algorithme du Gradient à pas fixe :


(GPF) On choisit x0 un vecteur de RN et ρ > 0 un pas fixe.
Itérer pour n ≥ 0 : xn+1 = xn + ρdn et dn = b − Axn .
Cet algorithme est programmé dans la routine GPF.m avec un test d’arrêt qui porte sur
la petitesse du résidu relatif kb − Axn k/kbk.

Algorithme du Gradient à Pas Optimal :


(GPO) On se donne x0 un vecteur de RN .
Itérer pour n ≥ 0 :
hdn , dn i
xn+1 = xn + ρn dn , avec ρn := et dn = b − Axn .
hAdn , dn i

2
Cet algorithme est programmé dans la routine GPO.m avec un test d’arrêt qui porte sur
la petitesse du résidu relatif kb − Axn k/kbk.

Algorithme du Gradient conjugué :


(GC) On se donne x0 un vecteur de RN , et on pose r0 = Ab − x0 , d0 = r0 .
Itérer pour n ≥ 0 :
krn k2
xn+1 = xn + ρn dn , ρn := ,
hAdn , dn i
rn+1 = b − Axn+1 ,
krn+1 k2
dn+1 = rn+1 + βn dn , βn :=
krn k2
Cet algorithme est programmé dans la routine GC.m avec un test d’arrêt qui porte sur
la petitesse de krn k/kbk.

Vous aimerez peut-être aussi