2ème année

publicité
2ème année
Séance de T.P. n◦ 2 (Cours électif : optimisation)
Optimisation non-linéaire
EXERCICE N◦ 1 (résolution de l’équation de Laplace)
On souhaite utiliser différentes méthodes d’optimisation pour résoudre l’équation différentielle
−u00 (x) = f (x)
x ∈]0, 1[
u(0) = u(1) = 0.
On se donne une subdivision de [0, 1] en N intervalles de longueur h = N 1+1 et on considère
les points {xk }k∈J0,N +1K de l’intervalle [0, 1] définis par xk = kh. On cherche alors une solution
approchée uN = (uk )k∈J0,N +1K telle que uk ' u(xk ) pour tout k ∈ J0, N + 1K, où les uk vérifient
le schéma aux différences finies
( u
k+1 − 2uk + uk−1
−
= f (xk ), k ∈ J1, N K
(1)
h2
u0 = uN +1 = 0.
1. Réécriture sous la forme d’un problème d’optimisation.
(a) Montrer que l’équation (1) peut se mettre sous la forme AN uN = fN , où AN et fN
sont donnés par


2 −1 0 . . . 0



.. 
−1 2 −1 . . .
. 
f (x1 )


1 



AN = 2  0 . . . . . . . . . 0 
et
fN =  ...  .

h 
 ..

..
f (xN )
 .
. −1 2 −1
0 . . . 0 −1 2
(b) Montrer que résoudre (1) revient à minimiser la fonction JN définie par
JN : RN −→ R
u 7−→ JN (u) = 12 hAN u, uiRN − hfN , uiRN .
Rappeler les expressions de ∇JN et Hess JN .
Dans toute la suite, on choisira f constante, telle que h2 fN = (1, . . . , 1)> .
2. Première méthode : l’algorithme de Newton-Raphson.
On cherche à appliquer l’algorithme de Newton-Raphson à ∇JN . On rappelle la méthode
de Newton multi-dimensionnelle pour la résolution de l’équation F(x) = 0, avec F : RN →
RN . On se reportera au cours pour davantage de précisions sur les hypothèses, la mise en
œuvre et la convergence de cette méthode.
1
on se donne ε > 0 et mmax ∈ N∗
poser k = 0
choisir x(0)
dans un voisinage
de x∗
(m+1)
tant que (x
− x(m) RN ≥ ε) et (m ≤ mmax ) faire
resoudre le systeme lineaire [DF(x(m) )]δ (m) = F(x(m) )
poser x(m+1) = x(m) − δ (m)
poser m = m + 1
fin tant que
On notera um , la suite des itérés obtenus par la méthode de Newton-Raphson.
(a) Montrer que le calcul des um est donné formellement par
m
um+1 = um − A−1
N (AN u − fN ).
Expliquer pourquoi il est cependant déconseillé d’utiliser cette formule en vue de la
résolution numérique du problème.
(b) Ecrire une fonction newton.m qui prend en argument AN , f N , un point de départ u0
et un test d’arrêt (ε, mmax ), et qui renvoie le vecteur uN qui minimise JN ainsi que le
nombre d’itérations effectuées.
(c) Créer un script scriptTP2_newton.m et tester la fonction newton.m pour ε = 10−12
et N = 2, 5, 20, 50. Afficher à l’aide de la fonction fprintf le nombre d’itérations
ainsi que le temps de calcul pour chaque N . Tracer sur une même figure les solutions
approchées uN , ainsi que la solution exacte de (1).
3. Deuxième méthode : le gradient conjugué.
On notera um , la suite des itérés obtenus par la méthode du gradient conjugué.
On rappelle l’algorithme du gradient conjugué pour la minimisation de x 7→ 21 hAx, xiRN −
++
(R) et b ∈ RN .
hb, xiRN avec A ∈ SN
on se donne ε > 0 et mmax ∈ N∗ .
poser k = 0
(0)
(0)
(0) ;
choisir x(0)
et poser r(0)
(m+1)
= AN x − b et dmax= −r
(m)
−x
≥ ε) et (m ≤ m ) faire
tant que ( x
RN
hr(m) ,d(m) i
x(m+1) = x(m) + ρm d(m) , avec ρm = − hAd(m) ,d(m)Ri N
RN
poser r(m+1) = Ax(m+1) − b
poser d(m+1) = −r(m+1) + βm d(m) avec βm =
kr(m+1) k2 N
R
kr(m) k2 N
R
poser m = m + 1
fin tant que
Écrire un programme gradConj.m résolvant à l’aide de l’algorithme de gradient conjugué
le système AN uN = fN .
−→ L’entier N sera placé dans les arguments d’entrée du programme, de même que le
point permettant d’initialiser l’algorithme et le second membre du système à résoudre.
−→ On testera le programme pour différentes valeurs de N , en allant au maximum
jusqu’à N = 1000.
2
−→ On utilisera un double critère pour stopper l’algorithme : un critère sur le nombre
maximal d’itération et un autre critère sur la norme du résidu. On notera à chaque
fois le nombre d’itérations nécessaires pour atteindre la solution.
−→ On pourra comparer la solution trouvée par ce programme avec la solution réelle de
ce système calculée par Matlab.
4. Troisième méthode : la méthode du gradient conjugué préconditionné.
Cette méthode sert à réduire le nombre d’itérations de l’algorithme. L’idée de cette méthode est basée sur la remarque suivante : si M est une matrice inversible, alors, la
solution du système AN uN = fN est la solution du système M −1 AN uN = M −1 fN .
Des difficultés numériques peuvent survenir si le conditionnement de la matrice AN est
mauvais. On va donc choisir M pour que le conditionnement de M −1 AN soit meilleur que
le conditionnement de AN , et pour que l’inverse de M soit aisée à calculer.
(a) Expliquer brièvement le principe de factorisation de Cholesky.
(b) AN étant une matrice creuse, on note RI, la factorisée incomplète de Cholesky de AN ,
et on pose M = t RI × RI. Vérifier que le conditionnement de la matrice M −1 AN est
meilleur que celui de AN et que l’inverse de M se calcule aisément.
Fonction Matlab utile : inv, cholinc(avec l’option 0 00 ).
(c) Nouveau système à résoudre. Une difficulté de cette méthode réside dans le fait que la
matrice M −1 AN n’est a priori pas symétrique. Pour contourner cette difficulté, justifier
f := t RI −1 AN RI −1 sont semblables. Que peut-on dire
que les matrices M −1 AN et M
du conditionnement de ces matrices ? En déduire qu’il est pertinent de résoudre le
système
fyN = t RI −1 fN
M
avec yN = RIuN .
(d) En utilisant les remarques précédentes, améliorer le programme précédent pour calculer
la solution du système AN uN = fN . Le nouveau programme s’appellera gradConjPre.m.
On tiendra compte des remarques faites pour la méthode du gradient conjugué sans
préconditionnement.
(e) Comparaison des deux méthodes.
Compléter les deux programmes précédents (gradient conjugué et gradient conjugué
préconditionné) afin de tracer, à chaque appel des programmes le résidu logarithmique
en fonction du nombre d’itérations. Conclure.
5. Autres exemples. En réutilisant les approches précédentes, déterminer une solution
approchée du problème
−u00 (x) + xu(x) = sin x x ∈]0, 1[
u(0) = u(1) = 0.
EXERCICE N◦ 2 (distance d’un point à un plan)
Dans cet exercice, on cherche à déterminer numériquement la plus courte distance entre un point
x0 ∈ Rn et un hyperplan (H) d’équation Ax = b, où les lignes de la matrice A sont linéairement
indépendantes et b, un vecteur colonne de taille n. Ce problème peut s’écrire comme un problème
de programmation quadratique :
inf
Ax=b
1
(x − x0 )> (x − x0 ).
2
1. Étude théorique.
3
(a) Montrer que le multiplicateur de Lagrange, à l’optimum est :
λ∗ = −(AA> )−1 (b − Ax0 ).
(b) Montrer que la solution est
x∗ = x0 + A> (AA> )−1 (b − Ax0 ).
(c) Montrer que, dans le cas où A est un vecteur ligne, la plus petite distance entre x0 et
l’hyperplan vaut
|b − Ax0 |
d(x0 , H) =
.
kAk
On précisera les notations utilisées dans cette formule.
2. Étude numérique.
Faites-vous confirmer les résultats précédents à l’aide d’une étude numérique. On pourra
par exemple utiliser l’algorithme d’Uzawa.
4
Téléchargement