Add the missing bits on quadratic problems solving.
[Projet_Recherche_Operationnelle.git] / rapport / ProjetOptimRO.tex
index 00ee5839229dfe8831f6a0f8745565384f486fbe..7207b7b1694752ee9496074494c296e748fce276 100644 (file)
@@ -23,6 +23,7 @@
 \usepackage{enumitem}
 \usepackage{algorithm2e}
 \usepackage{algorithmic}
+\usepackage{float}
 
 
 %%%%%Marges & en-t\^etes
@@ -334,13 +335,19 @@ On peut en déduire que une condition nécessaire et suffisante pour que $ x^\as
  Soient $ x^\ast \in \mathbb{R}^n $, $ I = \{ 1,\ldots,p \} $ et $ J = \{ 1,\ldots,q \} $.
  \newline
  Les conditions nécessaires pour que $ x^\ast \in \mathcal{C}$ soit un minimum local de $ J $ sont :
- \newline
- \newline
- \centerline{$ \{ \nabla g_1(x^\ast),\ldots,\nabla g_p(x^\ast),\nabla h_1(x^\ast),\ldots,\nabla h_q(x^\ast) \} $ sont linéairement indépendants.}
- \newline
- \newline
+ \begin{center}
+  $ \{ \nabla g_1(x^\ast),\ldots,\nabla g_p(x^\ast),\nabla h_1(x^\ast),\ldots,\nabla h_q(x^\ast) \} $ sont linéairement indépendants.
+ \end{center}
  et
- $$ \forall i \in I \ \exists \mu_i \in \mathbb{R}_{+} \land \forall j \in J \ \exists \lambda_j \in \mathbb{R} \ \nabla J(x^\ast) + \sum_{i \in I}\mu_i{\nabla g_i(x^\ast)} + \sum_{j \in J}\lambda_j{\nabla h_j(x^\ast)} = 0 \land \forall i \in I \ \mu_i \nabla g_i(x^\ast) = 0 $$
+ \begin{center}
+  $ \forall i \in I \ \exists \mu_i \in \mathbb{R}_{+} \land \forall j \in J \ \exists \lambda_j \in \mathbb{R} $ tels que :
+ \end{center}
+ \begin{center}
+  $ \nabla J(x^\ast) + \sum\limits_{i \in I}\mu_i{\nabla g_i(x^\ast)} + \sum\limits_{j \in J}\lambda_j{\nabla h_j(x^\ast)} = 0 \land \forall i \in I \ \mu_i \nabla g_i(x^\ast) = 0 $
+ \end{center}
+ \begin{center}
+  $ \iff \nabla L(x^\ast,\lambda,\mu) = 0 \land \forall i \in I \ \mu_i \nabla g_i(x^\ast) = 0 $ où $ \lambda = (\lambda_1,\ldots,\lambda_q) $ et $ \mu = (\mu_1,\ldots,\mu_p) $.
+ \end{center}
  On appelle $ (\mu_i)_{i \in I}$ les multiplicateurs de Kuhn-Tucker et $ (\lambda_j)_{j \in J}$ les multiplicateurs de Lagrange.
  \newline
  On nomme également les conditions \textit{KTT} conditions nécessaires d'optimalité du premier ordre.
@@ -400,7 +407,7 @@ Cette dernière inégalité garantit une décroissance minimum de la fonction $
 
 \hrulefill
 \newline
-ALGORITHME DE DESCENTE MODÈLE.
+ALGORITHME DE DESCENTE GÉNÉRIQUE.
 \newline
 \textit{Entrées}: $ J : \mathbb{R}^n \longrightarrow \mathbb{R} $ différentiable, $ x_0 \in \mathbb{R}^n $ point initial arbitraire.
 \newline
@@ -429,7 +436,7 @@ Remarquons que si $ x_k $ est un point stationnaire ($ \iff \nabla J(x_k) = 0 $)
 
 \subsection{Critère d’arrêt}
 
-Soit $ x^\ast $ un minimum local de l'objectif $ J $ à optimiser. Supposons que l’on choisisse comme test d’arrêt dans l’algorithme de descente modèle, le critère idéal : "$ x_k = x^\ast $". Dans un monde idéal (i.e. en supposant tous les calculs exacts et la capacité de calcul illimitée), soit l’algorithme s’arrête après un nombre fini d’itérations, soit il construit (théoriquement) une suite infinie $ x_0,x_1,\ldots,x_k,\ldots $ de points de $ \mathbb{R}^n $ qui converge vers $ x^\ast $.
+Soit $ x^\ast $ un minimum local de l'objectif $ J $ à optimiser. Supposons que l’on choisisse comme test d’arrêt dans l’algorithme de descente générique, le critère idéal : "$ x_k = x^\ast $". Dans un monde idéal (i.e. en supposant tous les calculs exacts et la capacité de calcul illimitée), soit l’algorithme s’arrête après un nombre fini d’itérations, soit il construit (théoriquement) une suite infinie $ x_0,x_1,\ldots,x_k,\ldots $ de points de $ \mathbb{R}^n $ qui converge vers $ x^\ast $.
 \newline
 En pratique, un test d’arrêt devra être choisi pour garantir que l’algorithme s’arrête toujours après un nombre fini d’itérations et que le dernier point calculé soit suffisamment proche de $ x^\ast $.
 
@@ -531,7 +538,7 @@ Les propriétés remarquables de cet algorithme sont :
  \hline
                                                                                                      & le coût de résolution du système linéaire $ H[J](x_k )(x_{k+1} - x_k) = \nabla J(x_k) $.                                                                          \\
  \hline
-                                                                                                     & l’absence de convergence si le premier itéré est trop loin de la solution, ou si la    hessienne est singulière.                                                  \\
+                                                                                                     & l’absence de convergence si le premier itéré est trop loin de la solution, ou si la hessienne est singulière.                                                     \\
  \hline
                                                                                                      & pas de distinction entre minima, maxima et points stationnaires.                                                                                                  \\
  \hline
@@ -570,17 +577,88 @@ $$
  \right .
 $$
 où $$ \mathcal{Q} \in \mathcal{M}_n(\mathbb{R}) \ symétrique, c \in \mathbb{R}^n, A \in  \mathcal{M}_{n,p}(\mathbb{R}), b \in \mathbb{R}^p, A^\prime \in \mathcal{M}_{n,q}(\mathbb{R}), b^\prime \in \mathbb{R}^q $$
-Or
-$$  A^{\prime^\top} x + b^\prime = 0 \iff A^{\prime^\top} x + b^\prime \leq 0 \land   -A^{\prime^\top} x - b^\prime \leq 0 $$
-Donc le problème se ramène à :
+% Or
+% $$  A^{\prime^\top} x + b^\prime = 0 \iff A^{\prime^\top} x + b^\prime \leq 0 \land   -A^{\prime^\top} x - b^\prime \leq 0 $$
+On peut ramener le problème à :
+$$
+ \mathcal{PQ} \left \{
+ \begin{array}{l}
+  \displaystyle\min_{x \in \mathbb{R}^n} c^\top x + \frac{1}{2} x^\top \mathcal{Q} x \\
+  A^\top x + b + z = 0                                                               \\
+  A^{\prime^\top} x + b^\prime = 0
+ \end{array}
+ \right .
+$$
+où $$ z \in \mathbb{R}^p $$
+On peut donc ramener l'étude de ce type de problème à :
+$$
+ \mathcal{PQ} \left \{
+ \begin{array}{l}
+  \displaystyle\min_{x \in \mathbb{R}^n} c^\top x + \frac{1}{2} x^\top \mathcal{Q} x \\
+  A^\top x + b = 0                                                                   \\
+ \end{array}
+ \right .
+$$
+où $$ \mathcal{Q} \in \mathcal{M}_n(\mathbb{R}) \ symétrique, c \in \mathbb{R}^n, A \in  \mathcal{M}_{n,p}(\mathbb{R}), b \in \mathbb{R}^p $$
+Conditions \textit{KKT} appliquées à $ \mathcal{PQ} $ :
+$$
+ \begin{array}{r c l}
+  \mathcal{Q} x + A \lambda^\ast & = & - c \\
+  A^\top x                       & = & -b  \\
+ \end{array}
+$$
+On obtient donc :
+$$ \lambda^\ast = (A^\top \mathcal{Q} A)^{-1} A^\top \mathcal{Q} c $$
+En posant $ \mathcal{Q} = Id_{\mathbb{R}^n} $, on a une bonne évaluation de $ \lambda^\ast $ :
+$$ \lambda^\ast = (A^\top A)^{-1} A^\top c $$
 
-\subsubsection{Algorithme 1}
+\subsubsection{Méthode des points intérieurs}
+
+Soit $ F_\mu $ définit par :
+$$ F_\mu(x, \lambda, s) =
+ \begin{pmatrix}
+  \mathcal{Q}x - A^\top \lambda -s -c \\
+  A x + b                             \\
+  XS - \mu
+ \end{pmatrix}
+$$
+où
+$$ X = diag(x) \in \mathcal{M}_n(\mathbb{R}), S = diag(s) \in \mathcal{M}_n(\mathbb{R}), s > 0 \ et \ \mu \in \mathbb{R}^n $$
+\hrulefill
+\newline
+ALGORITHME DES POINTS INTÉRIEURS.
+\newline
+\textit{Entrées}: $ F_\mu : \mathbb{R}^n \times \mathbb{R}^p \times  \mathbb{R}^n \longrightarrow \mathcal{M}_{n,2n+p}(\mathbb{R}) $, $ (x_0,\lambda_0,s_0) \in \mathbb{R}^n \times \mathbb{R}^p \times  \mathbb{R}^n $ où $ (x_0,s_0) > 0 $ point initial arbitraire, $ \varepsilon > 0 $ précision demandée.
+\newline
+\textit{Sortie}: une approximation $ x_k $ de la solution $ x^\ast $, avec son coefficient $ \lambda_k $, du problème $ \mathcal{PQ} $.
+\begin{enumerate}
+ \item $ k := 0 $.
+ \item Tant que $ \frac{x_k^\top s_k}{n} > \varepsilon $,
+       \begin{enumerate}
+        \item Choisir $ \sigma_k \in [\sigma_{min},\sigma_{max}]$
+        \item Résoudre le sytème linéaire d'équations où $ J_{F_\mu}(x_k,\lambda_k,s_k) $ désigne la matrice jacobienne de $ F_\mu $:
+              $$ J_{F_\mu}(x_k,\lambda_k,s_k) d = -
+               \begin{pmatrix}
+                \mathcal{Q}x - A^\top \lambda -s -c \\
+                A x + b                             \\
+                XS - \sigma_k \mu
+               \end{pmatrix} $$
+              pour déterminer $ d_k = (d_{x_k},d_{\lambda_k},d_{s_k}) $.
+        \item Choisir $ \alpha_{max} $ la plus grande valeur $ \alpha $ tel que $ (x_k,s_k) + \alpha(d_{x_k},d_{s_k}) > 0 $.
+        \item Choisir $ \alpha_k = \min \{1, \eta_k \sigma_{max} $ tel que $ \exists \eta_k \in [0,1]\} $.
+        \item $ \mu_k = \frac{x_k^\top s_k}{n} $; $ (x_{k+1},\lambda_{k+1},s_{k+1}) := (x_k,\lambda_k,s_k) + \alpha_k d_k $; $ k := k + 1 $.
+       \end{enumerate}
+ \item Retourner $ (x_k,\lambda_k,s_k) $.
+\end{enumerate}
 
-\subsubsection{Algorithme 2}
+\hrulefill
+\newline
+On note que c'est un algorithme de descente avec recherche d'un pas optimal.
+La détermination de $ \sigma_{min} $ et $ \sigma_{max} $ se fait dans l'intervalle ouvert $ ]0, 1[ $. Il existe d'autres méthodes de résolution du problème $ \mathcal{PQ} $ mais celle-ci à l'avantage de passer à l'échelle et a des vitesses de convergence efficientes. La résolution du système linéaire d'équations peut être faite soit directement, soit en utilisant une méthode itérative de résolution de problèmes d'algèbre linéaire.
 
 \subsection{Algorithmes Newtoniens}
 
-Les algorithmes newtoniens sont basés sur la linéarisation d’équations caractérisant les solutions que l’on cherche, fournies par les conditions d’optimalité d’ordre $ 1 $. Ces algorithmes sont \textit{primaux-duaux} dans le sens où ils génèrent à la fois une suite primale $ (x_k )_{k \in \mathbb{N}} $ convergeant vers une solution $ \overline{x} $ du problème considéré, et une suite duale $ (\lambda_k)_{k \in \mathbb{N}} $ (resp. $ ((\lambda_k, \mu_k))_{k \in \mathbb{N}} $) de multiplicateurs convergeant vers un multiplicateur optimal $ \overline{\lambda} $ (resp. $ (\overline{\lambda},\overline{\mu})) $ associé à $ \overline{x} $.
+Les algorithmes newtoniens sont basés sur la linéarisation d’équations caractérisant les solutions que l’on cherche, fournies par les conditions d’optimalité d’ordre $ 1 $. Ces algorithmes sont \textit{primaux-duaux} dans le sens où ils génèrent à la fois une suite primale $ (x_k )_{k \in \mathbb{N}} $ convergeant vers une solution $ \overline{x} $ du problème considéré, et une suite duale $ (\lambda_k)_{k \in \mathbb{N}} $ (resp. $ ((\lambda_k, \mu_k))_{k \in \mathbb{N}} $) de multiplicateurs convergeant vers un multiplicateur optimal $ \overline{\lambda} $ (resp. $ (\overline{\lambda},\overline{\mu}) $) associé à $ \overline{x} $.
 
 \subsection{Algorithme PQS}
 
@@ -601,9 +679,9 @@ Les conditions d’optimalité de Lagrange (ou \textit{KKT}) s’écrivent :
 $$ \nabla J(x) + \sum\limits_{i=1}^{q} \lambda_i \nabla h_i(x) = 0 \iff \nabla L(x,\lambda) = 0 $$
 donc $ \mathcal{P} $ devient :
 $$ \begin{pmatrix}
- \nabla J(x) + \sum\limits_{i=1}^{q} \lambda_i \nabla h_i(x) \\
- h(x)
- \end {pmatrix} = 0 $$
 \nabla J(x) + \sum\limits_{i=1}^{q} \lambda_i \nabla h_i(x) \\
 h(x)
+ \end{pmatrix} = 0 $$
 Pour résoudre ce système d’équations, utilisons la méthode de Newton dont une itération s’écrit ici :
 $$ H[L](x_k,\lambda_k)\begin{pmatrix}
   x_{k+1} - x_k \\
@@ -719,10 +797,20 @@ et à l'ordre 1 pour les contraintes :
 $$ g(x) \approx g(x_k) + \nabla g(x_k)^\top(x - x_k) $$
 $$ h(x) \approx h(x_k) + \nabla h(x_k)^\top(x - x_k) $$
 En posant $ d = x - x_k $ et $ H_k = H[L](x_k,\lambda_k,\mu_k) $, on obtient le sous problème quadratique $ \mathcal{PQ}_k $ :
-
+$$
+ \mathcal{PQ}_k \left \{
+ \begin{array}{l}
+  \displaystyle\min_{d \in \mathbb{R}^n} \nabla J(x_k)^\top d + \frac{1}{2}d^\top H_k d \\
+  g(x_k) + \nabla g(x_k)^\top d \leq 0                                                  \\
+  h(x_k) + \nabla h(x_k)^\top d = 0
+ \end{array}
+ \right .
+$$
+Comme pour la cas précédent, on résoud alors le sous problème quadratique $ \mathcal{PQ}_k $ qui est plus simple avec une méthode vue plus haut en posant $ \mathcal{Q} = H_k = H[L](x_k,\lambda_k,\mu_k) $.
+\newpage
 \hrulefill
 \newline
-ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INEGALITÉ.
+ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INÉGALITÉ.
 \newline
 \textit{Entrées}: $ J : \mathbb{R}^n \longrightarrow \mathbb{R} $, $g: \mathbb{R}^n \longrightarrow \mathbb{R}^p$, $ h : \mathbb{R}^n \longrightarrow \mathbb{R}^q $ différentiables, $ x_0 \in \mathbb{R}^n $ point initial arbitraire, $ \lambda_0 \in \mathbb{R}_+^p $ et $ \mu_0 \in \mathbb{R}_+^q $ multiplicateurs initiaux, $ \varepsilon > 0 $ précision demandée.
 \newline
@@ -736,7 +824,7 @@ ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INEGALITÉ.
                \mathcal{PQ}_k \left \{
                \begin{array}{l}
                 \displaystyle\min_{d \in \mathbb{R}^n} \nabla J(x_k)^\top d + \frac{1}{2}d^\top H_k d \\
-                g_j(x_k) + \nabla g_j(x_k)^\top d \leq 0 \\, \ \forall j \in \{1,\ldots,p\}                 \\
+                g_j(x_k) + \nabla g_j(x_k)^\top d \leq 0, \ \forall j \in \{1,\ldots,p\}              \\
                 h_i(x_k) + \nabla h_i(x_k)^\top d = 0, \ \forall i \in \{1,\ldots,q\}
                \end{array}
                \right .
@@ -751,7 +839,7 @@ ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INEGALITÉ.
 \newline
 Afin que le sous-programme quadratique $ \mathcal{PQ}_k $ admette une unique solution, la plupart des implémentations actuelles de PQS utilisent une approximation du hessien $ H_k $ du Lagrangien qui soit définie positive, en particulier celle fournie par les techniques quasi-newtonienne (BFGS) par exemple.
 \newline
-Etant une méthode newtonienne, l’algorithme PQS converge localement quadratiquement pourvu que les points initiaux  $ (x_0,\lambda_0 ) $ (resp. $ (x_0,\lambda_0,\mu_0) $) soient dans un voisinage d’un point stationnaire $ \overline{x} $ et de ses multiplicateurs associés $ \overline{\lambda} $ (resp. $ (\overline{\lambda},\overline{\mu}) $). Bien entendu, il est possible de globaliser l’algorithme en ajoutant une étape de recherche linéaire.
+Étant une méthode newtonienne, l’algorithme PQS converge localement quadratiquement pourvu que les points initiaux $ (x_0,\lambda_0 ) $ (resp. $ (x_0,\lambda_0,\mu_0) $) soient dans un voisinage d’un point stationnaire $ \overline{x} $ et de ses multiplicateurs associés $ \overline{\lambda} $ (resp. $ (\overline{\lambda},\overline{\mu}) $). Bien entendu, il est possible de globaliser l’algorithme en ajoutant une étape de recherche linéaire.
 
 \subsection{Stratégie d'approximation de la hessienne}
 
@@ -769,8 +857,21 @@ Dans les deux cas, les équations de quasi-Newton forment un système sous-déte
 \newline
 Une stratégie commune est de calculer $ (x_{k+1},\lambda_{k+1},\mu_{k+1}) $ pour une matrice $ H_k $ donnée et faire une mise à jour de $ H_k $ de rang 1 ou 2 :
 $$ H_{k+1} = H_k + U_k $$
+Les méthodes de mises à jour PSB et BFGS suivent par exemple cette stratégie.
 
-\subsubsection{Mises à jour DFP et BFGS}
+\subsubsection{Mises à jour PSB}
+
+$$ H_{k+1} = H_k + \frac{1}{d^\top d} ((y - H_k d)d^\top + d(y - H_k d)^\top) - \frac{(y - H_k d)^\top d}{(d^\top d)^2}d^\top d $$
+où
+$$ d = x_{k+1} - x_k $$
+$$ y = \nabla L(x_{k+1},\lambda_{k+1},\mu_{k+1}) - \nabla L(x_{k},\lambda_{k+1},\mu_{k+1}) $$
+
+\subsubsection{Mises à jour BFGS}
+
+$$ H_{k+1} = H_k + \frac{y y^\top}{y^\top d} - \frac{H_k d d^\top H_k}{d^\top H_k d}$$
+où
+$$ d = x_{k+1} - x_k $$
+$$ y = \nabla L(x_{k+1},\lambda_{k+1},\mu_{k+1}) - \nabla L(x_{k},\lambda_{k+1},\mu_{k+1}) $$
 
 \subsection{Exemple d'utilisation de PQS}
 
@@ -783,7 +884,7 @@ $$
  \end{array}
  \right .
 $$
-où $$ (r,r_1,r_2) \in \mathbb{R}_+^3. $$
+où $$ (r,r_1,r_2) \in \mathbb{R}_+^{*^3} \land r < r_1 \land r < r_2. $$
 \textit{Entrées} : $ J $ et $ g $ de classe $ \mathcal{C}^2 $, $ \varepsilon = 0.01 $ la précision, $ (x_0,y_0,z_0) = $ point initial et $ (\lambda_{0_1},\lambda_{0_2}) = $ multiplicateur initial.
 \newline
 Le Lagrangien $ L $ de $ \mathcal{P} $ : $$ L((x,y,z),(\lambda_1,\lambda_2)) = x^2 + y^2 + z^2 -r^2 + \lambda_1(x^2 + y^2 - r_1^2) + \lambda_2(x^2 + z^2 -r_2^2). $$
@@ -796,6 +897,7 @@ $$ = ((2x,2y,0),(2x,0,2z)). $$
 \newline
 Le gradient du Lagrangien $ L $ :
 $$ \nabla L((x,y,z),(\lambda_1,\lambda_2)) = \nabla J(x,y,z) + \lambda_1 \nabla g_1(x,y,z) + \lambda_2 \nabla g_2(x,y,z)) $$
+$$ = (2x(1 + \lambda_1 + \lambda_2),2y(1 + \lambda_1),2z(1 + \lambda_2)) $$
 \newline
 La matrice hessienne de $ J $ : $$ H[J](x,y,z) =
  \begin{pmatrix}
@@ -810,240 +912,240 @@ La matrice hessienne de $ J $ : $$ H[J](x,y,z) =
  \end{pmatrix} = 2Id_{\mathbb{R}^3} $$
 On en déduit que $ H[J](x,y,z) $ est inversible et que $ H[J](x,y,z)^{-1} = \frac{1}{2}Id_{\mathbb{R}^3} $.
 
-\hrulefill
+\newpage
+
+\subsection{Trace d'éxécution de l'algorithme pour la méthode de Newton}
 
-\subsection{Trace d'éxécution de PQS}
+\begin{center}
+ \includegraphics[scale=0.2]{sphere2.jpg} \\
+ \footnotesize{
+  \small \it Fig : Exemple de la sphère \\
+  \vspace*{0.5cm}
+ }
+\end{center}
 
-Utilisons le problème $ \mathcal{P} $ précédent :
+En utilisant le problème $ \mathcal{P} $ précédent :
 
-$$
- \mathcal{P} \left \{
- \begin{array}{l}
-  \displaystyle\min_{(x,y,z) \in \mathbb{R}^3} J(x,y,z) = x^2 + y^2 + z^2 -r^2       \\
-  g(x,y,z) = (g_1(x,y,z), g_2(x,y,z)) = (x^2 + y^2 - r_1^2, x^2 + z^2 -r_2^2) \leq 0 \\
- \end{array}
- \right .
-$$
-où $$ (r,r_1,r_2) \in \mathbb{R}_+^3. $$
-\textit{Entrées} : $ J $ et $ g $ de classe $ \mathcal{C}^2 $, $ \varepsilon = 0.01 $, $ (x_0,y_0,z_0) = (100, 100 ,0)$  et $(\lambda_{0_1},\lambda_{0_2}) = (1 , 1)$, les rayons : $r= 100$  et $r1 = r2 = 10$.
-\newline
-Le Lagrangien $ L $ de $ \mathcal{P} $ : $$ L((x,y,z),(\lambda_1,\lambda_2)) = x^2 + y^2 + z^2 -r^2 + \lambda_1(x^2 + y^2 - r_1^2) + \lambda_2(x^2 + z^2 -r_2^2). $$
+\textit{Entrées} : $ J $ et $ g $ de classe $ \mathcal{C}^2 $, $ \varepsilon = 0.01 $, $ (x_0,y_0,z_0) = (100, 100 ,0)$  et $(\lambda_{0_1},\lambda_{0_2}) = (1 , 1)$, les rayons : $r = 100$ et $r_1 = r_2 = 10$.
 \newline
-Le Lagrangien $ L $ de $ \mathcal{P} $ avec les valeurs :
- $ L((100,100,0),(1,1)) = 100^2 + 100^2 + 0^2 -100^2 + 1 * (100^2 +100^2 - 10^2) + \lambda_2(100^2 + 100^2 -10^2). $
- $ L((100,100,0),(1,1)) = 1000 + 1000 - 1000 + (1000 + 1000 - 100) + (1000 + 1000 -100). $
- $ L((100,100,0),(1,1)) = 4800. $
-
-\begin{algorithmfloat}[#1]
- \caption {PQS du problème $ \mathcal{P} $}
- \begin{algorithmic}
- \REQUIRE $g(x_0,y_0,z_0)\leq 0$, $(x_0,y_0,z_0) = (10, 10 ,10)$
- \ENSURE $\min_{(x,y,z) \in \mathbb{R}^3} J(x,y,z) = x^2 + y^2 + z^2 -r^2$ and \newline $g(x,y,z) = (g_1(x,y,z), g_2(x,y,z)) = (x^2 + y^2 - r_1^2, x^2 + z^2 -r_2^2) \leq 0 $
- \STATE \textbf{Data :}
- \STATE $k \leftarrow 0, (x_k, y_k, z_k)  \leftarrow (100, 100, 0), r \leftarrow 100$
- \STATE $r_1 = r2 \leftarrow 10, \varepsilon \leftarrow 0.01$
- \STATE $\lambda_1 = \lambda_2 = 1$
- \STATE $ H[J](x,y,z)^{-1}\leftarrow  \begin{pmatrix}
-  0.5 & 0 & 0 \\
-  0 & 0.5 & 0 \\
-  0 & 0 & 0.5 \\ \end{pmatrix} $
+Calcul du Lagrangien $ L $ de $ \mathcal{P} $ en $(x_0,y_0,z_0)$ :
 \newline
+$ L((100,100,0),(1,1)) = 100^2 + 100^2 + 0^2 - 100^2 + 1 * (100^2 +100^2 - 10^2) + 1 * (100^2 + 100^2 -10^2). $
+$ L((100,100,0),(1,1)) = 1000 + 1000 - 1000 + (1000 + 1000 - 100) + (1000 + 1000 - 100). $
+$ L((100,100,0),(1,1)) = 4800. $
 
- \STATE{//Calcule du gradient de $ J $ :}
- \STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (100,100,0) $
-\newline
- \STATE {//calcule des deux sous partie de du gradient de $ g $: }
- \STATE $ \nabla g_1(x_a,y_a,z_a) = ((2x_a,2y_a,0)$  \hfill $ //résultat : (20, 20, 0)$
- \STATE $ \nabla g_2(x_a,y_a,z_a) = (2x_a,0,2z_a))$  \hfill $ //résultat : (20, 0, 20)$
- \STATE $ \nabla g(x_k,y_k,z_k) = (\nabla g_1(x_k,y_k,z_k), \nabla g_2(x_k,y_k,z_k))$
+\newpage
+\textbf{Trace d'éxécution de l'algorithme :}
 \newline
- \WHILE{$ (\norme{\nabla L(x_k,\lambda_k,\mu_k)} > \varepsilon $ or k $ \leq 10)$}
+\newfloat{algorithm}{t}
 
- \STATE { //première itération :}
+\begin{algorithmic}
+ \REQUIRE $(x_0,y_0,z_0) = (100, 100 ,0), g(x_0,y_0,z_0) \leq 0$
+ \ENSURE $\displaystyle\min_{(x,y,z) \in \mathbb{R}^3} J(x,y,z) = x^2 + y^2 + z^2 -r^2$ and \newline $g(x,y,z) = (g_1(x,y,z), g_2(x,y,z)) = (x^2 + y^2 - r_1^2, x^2 + z^2 -r_2^2) \leq 0$
+ \STATE \textbf{Data :}
+ \STATE $k \leftarrow 0, (x_k, y_k, z_k) \leftarrow (100, 100, 0), r \leftarrow 100$
+ \STATE $r_1 = r_2 \leftarrow 10, \varepsilon \leftarrow 0.01$
+ \STATE $\lambda_1 = \lambda_2 \leftarrow 1$
+ \STATE $s_k \leftarrow \frac{1}{2}$
+ \STATE $ H[J](x,y,z)^{-1} \leftarrow
+  \begin{pmatrix}
+   0.5 & 0   & 0   \\
+   0   & 0.5 & 0   \\
+   0   & 0   & 0.5 \\
+  \end{pmatrix} $
+ \newline
 
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (220, 220, 40)$
- \STATE $  \nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = (x_L , y_L, z_L) $
-\newline
- \STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
- \STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(50,50,0))$
+ \WHILE{$ (\norme{\nabla L(x_k,\lambda_k,\mu_k)} > \varepsilon $ or k $ \leq 10)$}
+
+ \STATE {//Première itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (200,200,0) $
  \newline
- \STATE {//Calcul nouvelles valeurs des coordonnées}
- \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (50,50,0)$
+ % \STATE {//Calcul des deux composantes du gradient de $ g $:}
+ % \STATE $ \nabla g_1(x_k,y_k,z_k) = (2x_k,2y_k,0)$ \hfill $ //résultat : (200, 200, 0)$
+ % \STATE $ \nabla g_2(x_k,y_k,z_k) = (2x_k,0,2z_k)$ \hfill $ //résultat : (200, 0, 0)$
+ % \STATE $ \nabla g(x_k,y_k,z_k) = (\nabla g_1(x_k,y_k,z_k), \nabla g_2(x_k,y_k,z_k))$
+ % \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*100, 4*100, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ % \STATE $ \nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = (x_L , y_L, z_L) $
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(100,100,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (50,50,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 1$
  \newline
- \STATE {//Incrémentation de k}
- \STATE $ k \leftarrow k+1$\hfill $ //k = 1$
-\newline
 
  \STATE {//Deuxième itération :}
- \STATE{//Calcule du gradient de $ J $ :}
- \STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (100,100,0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (120, 120, 0)$
- \STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
- \STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
- \STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(25,25,0))$
- \STATE {//Calcul nouvelles valeurs des coordonnées}
- \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (25,25,0)$
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (100,100,0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*50, 4*50, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(50,50,0))$
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (25,25,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $ }
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 2$
  \newline
- \STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1$\hfill $ //k = 2$
-\newline
-
-\STATE {//Troisième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (50,50,0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (70, 70, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(12.5,12.5,0))$
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\newline
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (12.5,12.5,0)$
-\STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1$\hfill $ //k = 3$
-\newline
 
-\STATE {//Quatrième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (25,25,0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (45, 45, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(6.25,6.25,0))$
-\newline
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (6.25,6.25,0)$
-\STATE {//Incrémentation de k}
-\newline
-\STATE $ k \leftarrow k+1$\hfill $ //k = 4$
-\STATE $ $
+ \STATE {//Troisième itération :}
+ \STATE {//Calcul du gradient de $ J $:}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (50,50,0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*25, 4*25, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x,y,z)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(25,25,0))$
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \newline
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (12.5,12.5,0)$
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 3$
+ \newline
 
-\STATE {//Cinquième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (12.5,12.5,0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (32.5, 32.5, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(3.125,3.125,0))$
-\newline
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (3.125,3.125,0)$
-\newline
-\STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1$\hfill $ //k = 5$
-\newline
+ \STATE {//Quatrième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (25,25,0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*12.5, 4*12.5, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(12.5,12.5,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (6.25,6.25,0)$
+ \STATE {//Incrémentation de $ k $}
+ \newline
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 4$
+ \newline
 
-\STATE {//Sixième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (6.25,6.25,0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (26.25, 26.25, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(1.5625,1.5625,0))$
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\newline
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (1.5625,1.5625,0)$
-\STATE {//Incrémentation de k}
-\newline
-\STATE $ k \leftarrow k+1$\hfill $ //k = 6$
-\newline
+ \STATE {//Cinquième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (12.5,12.5,0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*6.25, 4*6.25, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(6.25,6.25,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (3.125,3.125,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 5$
+ \newline
 
-\STATE {//Septième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (3.125, 3.125, 0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (23.125, 23.125, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(0.78125,0.78125,0))$
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\newline
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0.78125,0.78125,0)$
-\STATE {//Incrémentation de k}
-\newline
-\STATE $ k \leftarrow k+1$\hfill $ //k = 7$
-\newline
+ \STATE {//Sixième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (6.25,6.25,0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*3.125, 4*3.125, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(3.125,3.125,0))$
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \newline
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (1.5625,1.5625,0)$
+ \STATE {//Incrémentation de $ k $}
+ \newline
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 6$
+ \newline
 
-\STATE {//Huitième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (1.5625, 1.5625, 0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (21.5625, 21.5625, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(0.390625,0.390625,0))$
-\newline
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0.390625,0.390625,0)$
-\newline
-\STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1$\hfill $ //k = 8$
-\newline
+ \STATE {//Septième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (3.125, 3.125, 0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ : }
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*1.5625, 4*1.5625, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(1.5625,1.5625,0))$
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \newline
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (0.78125,0.78125,0)$
+ \STATE {//Incrémentation de $ k $}
+ \newline
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 7$
+ \newline
 
-\STATE {//neuvième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (0.78125, 0.78125, 0) $
-\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (20.78125, 20.78125, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(0.1953125,0.1953125,0))$
-\newline
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0.1953125,0.1953125,0)$
-\newline
-\STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1 \hfill  //k = 9$
-\STATE $ $
-
-\STATE {//Dixième itération :}
-\STATE{//Calcule du gradient de $ J $ :}
-\STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (0.390625, 0.390625, 0) $
-\newline\newline
-\STATE {//Calcule du gradient de $ L $ : }
-\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (20.390625, 20.390625, 0)$
-\STATE $  \varepsilon _1 = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
-\newline
-\STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
-\STATE $ d_k = -H[J](x,y,z)^{-1}* J(x,y,z)$ \hfill $ //résultat : (-(0.097665625,0.097665625,0))$
-\newline
-\STATE {//Calcul nouvelles valeurs des coordonnées}
-\STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0.097665625,0.097665625,0)$
-\newline
-\STATE {//Incrémentation de k}
-\STATE $ k \leftarrow k+1$\hfill $ //k = 10$
+ \STATE {//Huitième itération :}
+ \STATE{//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (1.5625, 1.5625, 0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ : }
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*0.78125, 4*0.78125, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(0.78125,0.78125,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (0.390625,0.390625,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résulat : k = 8$
+ \newline
 
-\STATE $ // Fin de la boucle "while" car nous avons atteint k =10, condition mettant fin à la boucle$
+ \STATE {//Neuvième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (0.78125, 0.78125, 0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*0.390625, 4*0.390625, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(0.390625,0.390625,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (0.1953125,0.1953125,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 \hfill //résultat : k = 9$
+ \newline
 
+ \STATE {//Dixième itération :}
+ \STATE {//Calcul du gradient de $ J $ :}
+ \STATE $ \nabla J(x_k,y_k,z_k) = (2x_k,2y_k,2z_k)$ \hfill $ //résultat : (0.390625, 0.390625, 0) $
+ \newline
+ \STATE {//Calcul du gradient de $ L $ :}
+ \STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_k,y_k,z_k) + \lambda_2 \nabla g_2(x_k,y_k,z_k)) $ \hfill $ //résultat : (6*0.1953125, 4*0.1953125, 0)$
+ \STATE $ \varepsilon_k = \norme{\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2))}$
+ \newline
+ \STATE {//Calcul de la direction de la pente $ d_k $ (méthode de Newton) :}
+ \STATE $ d_k = -H[J](x_k,y_k,z_k)^{-1} * \nabla J(x_k,y_k,z_k) $ \hfill $ //résultat : (-(0.1953125,0.1953125,0))$
+ \newline
+ \STATE {//Calcul des nouvelles valeurs des coordonnées}
+ \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k) + s_k d_k $ \hfill $ //résultat : (0.097665625,0.097665625,0)$
+ \newline
+ \STATE {//Incrémentation de $ k $}
+ \STATE $ k \leftarrow k + 1 $ \hfill $ //résultat : k = 10$
+ \newline
+ \STATE {//Fin de la boucle "while" car nous avons atteint $ k = 10 $, condition mettant fin à la //boucle}
+ \newline
 
  \ENDWHILE
 
 \end{algorithmic}
-\end{algorithmfloat}
-
-
-\hrulefill
 
 \bibliographystyle{plain}
 \bibliography{stdlib_sbphilo}