""" Ce fichier contient toutes fonctions utilisés dans les tests des algorithmes : - L'algorithme de Newton - Les régions de confiance - Le Lagrangien augmenté """ # Les points initiaux # pour les problèmes sans contraintes struct Pts_sans_contraintes x011 x012 x021 x022 x023 end x011 = [1; 0; 0] x012 = [10; 3; -2.2] x021 = [-1.2; 1] x022 = [10; 0] x023 = [0; 1/200 + 1/10^12] # les points initiaux utilisés dans les problèmes sans contraintes pts1 = Pts_sans_contraintes(x011,x012,x021,x022,x023) # pour les problèmes avec contraintes struct Pts_avec_contraintes x01 x02 x03 x04 end x01 = [0; 1; 1] x02 = [0.5; 1.25; 1] x03 = [1; 0] x04 = [sqrt(3)/2 ;sqrt(3)/2] pts2 = Pts_avec_contraintes(x01,x02,x03,x04) # Les solutions exactes # sol_exacte_fct1 = -hess_fct1(x011)\grad_fct1(zero(similar(x011))) sol_exacte_fct1 = [1;1;1] sol_exacte_fct2 = [1;1] """ La première fonction de test # Expression fct1(x) = 2*(x[1]+x[2]+x[3]-3)^2 + (x[1]-x[2])^2 + (x[2]-x[3])^2 """ fct1(x) = 2*(x[1]+x[2]+x[3]-3)^2 + (x[1]-x[2])^2 + (x[2]-x[3])^2 # la gradient de la fonction fct1 function grad_fct1(x) y1 = 4*(x[1]+x[2]+x[3]-3) + 2*(x[1]-x[2]) y2 = 4*(x[1]+x[2]+x[3]-3) - 2*(x[1]-x[2]) +2*(x[2]-x[3]) y3 = 4*(x[1]+x[2]+x[3]-3) - 2*(x[2]-x[3]) return [y1;y2;y3] end # la hessienne de la fonction fct1 hess_fct1(x) = [6 2 4;2 8 2;4 2 6] """ La première fonction de test # Expression fct2(x)=100*(x[2]-x[1]^2)^2+(1-x[1])^2 """ fct2(x)=100*(x[2]-x[1]^2)^2+(1-x[1])^2 # la gradient de la fonction fct2 grad_fct2(x)=[-400*x[1]*(x[2]-x[1]^2)-2*(1-x[1]) ; 200*(x[2]-x[1]^2)] #la hessienne de la fonction fct2 hess_fct2(x)=[-400*(x[2]-3*x[1]^2)+2 -400*x[1];-400*x[1] 200] # Pour les problèmes avec contraintes # solutions sol_fct1_augm = [0.5 ; 1.25 ; 0.5] sol_fct2_augm = [0.9072339605110892; 0.82275545631455] """ La première contrainte # Expression contrainte1(x) = x[1]+x[3]-1 """ contrainte1(x) = x[1]+x[3]-1 grad_contrainte1(x) = [1 ;0; 1] hess_contrainte1(x) = [0 0 0;0 0 0;0 0 0] """ La deuxième contrainte # Expression contrainte2(x) = (x[1]^2) + (x[2]^2) -1.5 """ contrainte2(x) = (x[1]^2) + (x[2]^2) -1.5 grad_contrainte2(x) = [2*x[1] ;2*x[2]] hess_contrainte2(x) = [2 0;0 2] # Affichage les sorties de l'algorithme des Régions de confiance function afficher_resultats(algo,nom_fct,point_init,xmin,fxmin,flag,sol_exacte,nbiters) println("-------------------------------------------------------------------------") printstyled("Résultats de : "*algo*" appliqué à "*nom_fct*" au point initial "*point_init*" :\n",bold=true,color=:blue) println(" * xsol = ",xmin) println(" * f(xsol) = ",fxmin) println(" * nb_iters = ",nbiters) println(" * flag = ",flag) println(" * sol_exacte : ", sol_exacte) end