2ème année
Séance de T.P. n2(Cours électif : optimisation)
Optimisation non-linéaire
EXERCICE N1(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 Nintervalles de longueur h=1
N+1 et on considère
les points {xk}kJ0,N+1Kde l’intervalle [0,1] définis par xk=kh. On cherche alors une solution
approchée uN= (uk)kJ0,N+1Ktelle que uk'u(xk)pour tout kJ0, N + 1K, où les ukvérifient
le schéma aux différences finies
(uk+1 2uk+uk1
h2=f(xk), k J1, NK
u0=uN+1 = 0.
(1)
1. Réécriture sous la forme d’un problème d’optimisation.
(a) Montrer que l’équation (1) peut se mettre sous la forme ANuN=fN,ANet fN
sont donnés par
AN=1
h2
21 0 . . . 0
1 2 1....
.
.
0.........0
.
.
....1 2 1
0. . . 01 2
et fN=
f(x1)
.
.
.
f(xN)
.
(b) Montrer que résoudre (1) revient à minimiser la fonction JNdéfinie par
JN:RNR
u7−JN(u) = 1
2hANu,uiRN− hfN,uiRN.
Rappeler les expressions de JNet Hess JN.
Dans toute la suite, on choisira fconstante, telle que h2fN= (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 ε > 0et mmax N
poser k= 0
choisir x(0) dans un voisinage de x
tant que (
x(m+1) x(m)
RNε)et (mmmax)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 umest donné formellement par
um+1 =umA1
N(ANumfN).
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,fN, un point de départ u0
et un test d’arrêt (ε, mmax), et qui renvoie le vecteur uNqui minimise JNainsi que le
nombre d’itérations effectuées.
(c) Créer un script scriptTP2_newton.m et tester la fonction newton.m pour ε= 1012
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 x7→ 1
2hAx, xiRN
hb, xiRNavec AS++
N(R)et bRN.
on se donne ε > 0et mmax N.
poser k= 0
choisir x(0) et poser r(0) =ANx(0) bet d(0) =r(0) ;
tant que (
x(m+1) x(m)
RNε)et (mmmax)faire
x(m+1) =x(m)+ρmd(m), avec ρm=hr(m),d(m)iRN
hAd(m),d(m)iRN
poser r(m+1) =Ax(m+1) b
poser d(m+1) =r(m+1) +βmd(m)avec βm=kr(m+1)k2
RN
kr(m)k2
RN
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 ANuN=fN.
L’entier Nsera 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 Mest une matrice inversible, alors, la
solution du système ANuN=fNest la solution du système M1ANuN=M1fN.
Des difficultés numériques peuvent survenir si le conditionnement de la matrice ANest
mauvais. On va donc choisir Mpour que le conditionnement de M1ANsoit meilleur que
le conditionnement de AN, et pour que l’inverse de Msoit 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=tRI ×RI. Vérifier que le conditionnement de la matrice M1ANest
meilleur que celui de ANet que l’inverse de Mse calcule aisément.
Fonction Matlab utile : inv, cholinc(avec l’option 000).
(c) Nouveau système à résoudre. Une difficulté de cette méthode réside dans le fait que la
matrice M1ANn’est a priori pas symétrique. Pour contourner cette difficulté, justifier
que les matrices M1ANet f
M:= tRI1ANRI1sont semblables. Que peut-on dire
du conditionnement de ces matrices ? En déduire qu’il est pertinent de résoudre le
système f
MyN=tRI1fNavec yN=RIuN.
(d) En utilisant les remarques précédentes, améliorer le programme précédent pour calculer
la solution du système ANuN=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 N2(distance d’un point à un plan)
Dans cet exercice, on cherche à déterminer numériquement la plus courte distance entre un point
x0Rnet un hyperplan (H)d’équation Ax =b, où les lignes de la matrice Asont 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
2(xx0)>(xx0).
1. Étude théorique.
3
(a) Montrer que le multiplicateur de Lagrange, à l’optimum est :
λ=(AA>)1(bAx0).
(b) Montrer que la solution est
x=x0+A>(AA>)1(bAx0).
(c) Montrer que, dans le cas où Aest un vecteur ligne, la plus petite distance entre x0et
l’hyperplan vaut
d(x0,H) = |bAx0|
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
1 / 4 100%