Optimisation, algorithmique (MML1E31) (M1 Maths, 2016-2017)
Feuille de TD/TP n2:
Méthode de Newton
Exercice 1. Le but de cet exercice est d’implémenter la méthode de Newton en dimension 1.
1. Quelles sont les hypothèses du théorème de convergence de la méthode de Newton pour
une fonction f:RR?
2. Ecrire le pseudo-code de la méthode de Newton pour une fonction f:RR.
3. On considère la fonction
f(x) = log ex+ex.
(a) Justifier que la méthode de Newton converge pour cette fonction.
(b) En quel point x?fatteint-elle son minimum ?
4. Implémenter une fonction
function [Xk, FXk] = newton_dim1(x0,eps,alph, bet)
qui applique la méthode de Newton en appelant les trois fonctions suivantes (supposées
bien définies et à adapter pour chaque cas particulier)
f(x) qui calcule f(x)pour un réel xdonné.
der_(x) qui calcule f0(x)pour un réel xdonné.
dersec_f(x) qui calcule f00(x)pour un réel xdonné.
Afficher à chaque itération les valeurs de l’itération ket du pas tretenu avec la commande
disp([k, t]).
5. Tester cette fonction avec la fonction f(x) = log (ex+ex)pour les points initiaux x0
valant 1, 1.1 et 10.
6. Implémenter une nouvelle fonction
function [Xk, FXk] = newton_dim1_pure(x0,eps,alph, bet)
qui prend toujours t= 1 pour le pas de descente (suppression de la méthode de rebrous-
sement) et qui s’arrête au bout de 10 itérations. Tester cette fonction avec la fonction
f(x) = log (ex+ex)pour les points initiaux x0 1, 1.1 et 10.
Exercice 2.
Le but de cet exercice est de comparer les performances de l’algorithme de descente de
gradient et de l’algorithme de Newton pour une fonctionnelle fdéfinie sur Rnavec n>2.
Etant donnée une matrice A∈ Mp,n(R), dont on note a1, . . . , apRnles pvecteurs lignes,
et bRp, on considère la fonction f:RnRdéfinie pour tout xRnpar
f(x) =
p
X
j=1
ehaj,xi+bj.
1
1. En Scilab, écrire les fonctions
fx = objectif(x,A,b) qui calcule f(x),
gfx = gradient_obj(x,A,b) qui calcule f(x),
hfx = hess_obj(x,A,b) qui calcule la matrice hessienne 2f(x).
Afin de ne pas avoir à recopier les paramètres A,b dans les algorithmes de descente, on
définira ensuite les trois fonctions f,gradf,hessf par
// Attention : Besoin de definir les variables A et b avant d’appeler ces fonctions
deff(’fx=f(x)’,’fx = objectif(x,A,b)’);
deff(’gfx=gradf(x)’,’gfx = grad_obj(x,A,b)’);
deff(’hfx=hessf(x)’,’hfx = hess_obj(x,A,b)’);
2. Implémenter une fonction
function [Xk, FXk] = desc_newton(x0,eps,alph, bet)
qui applique la méthode de Newton en appelant les trois fonctions f(x),gradf(x),
hessf(x).
3. Tester la fonction pour n= 2,p= 3 et
f(x) = ex1+3x20.1+ex13x20.1+ex10.1,
et la valeur initiale x0=[-2 ; 3]. On prendra eps = 10^(-8); alph = 0.4; bet = 0.8;
Afficher les contours de la fonction et la séquence de points calculés par l’algorithme de
Newton.
4. Implémenter également une fonction
function [Xk, FXk] = desc_gradient_r(x0,eps,alph, bet)
qui applique la méthode de descente de gradient avec le méthode de rebroussement pour
le calcul du pas de descente.
5. On reprend l’exemple en dimension 2.
(a) Lancer l’algorithme de descente de gradient et afficher les points calculés sur la
graphique précédent.
(b) Afin de comparer la vitesse de convergence, on va déterminer la solution du pro-
blème avec une fonction de scilab à l’aide des lignes suivantes :
// determination de la solution
[xstar, vg_min] = fsolve(x0, gradf)
pstar = f(xstar)
(c) Afficher sur un même un graphique en échelle logarithmique les erreurs f(x(k))p?
pour la méthode de Newton et pour la descente de gradient.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !