# CAMA : ma40 Méthode du gradient conjugué # Cours du 24 / 05 ## Méthode du gradient conjugue Si on a calculé le $\mu$ optimal alors la plus forte pente $\nabla J ({\bf x}^{k+1})$ sera orthogonale à la pente qui définie la droite sur laquelle on cherche $\mu$. On a donc $$ \nabla J ({\bf x}^{k+1})^T \, . \, \nabla J ({\bf x}^k) = 0 $$ Le minimum suivant ${\bf x^{k+2}}$ sera le minimum de l'espace généré par $\nabla J ({\bf x}^{k+1})$ et $\nabla J ({\bf x}^k)$. :::warning On ne sait pas si ${\bf x^{k+3}}$ sera calculé le long de la direction $\nabla J ({\bf x}^k)$. ::: Une recherche optimale du minimum d'une fonction convexe dans un espace $\mathbb{R}^n$ ne devrait pas prendre plus de $n$ itérations si on est capable de calculer le $\mu$ optimal dans la direction choisie. On cherche le minimum dans les directions des vecteurs de la base de notre espace $\mathbb{R}^n$ afin de trouver le **minimum global**. ## Générer une base de $\mathbb{R}^n$ Si on veut trouver notre minimum global en $n$ itérations au maximum, il faut que nos directions ne soient pas redondantes et que les $n$ premières directions génèrent $\mathbb{R}^n$ ou en forment une base. La nouvelle direction $d^k$ doit être orthogonale à toutes les directions précédentes et permet de trouver une base qui génère un espace de dimension $k + 1$. ### Le cas ${\bf Ax = b}$ La fonctionnelle à minimiser est : $$ J({\bf x}) = \frac{1}{2} \, {\bf x}^T \, A \, {\bf x} - {\bf b}\, . {\bf x} $$ * Si A est symétrique, son gradient est $\nabla J({\bf x}) = A \; {\bf x} - {\bf b}$ Si on calcule ${\bf x^k}$ comme avant on a l'orthogonnalité de 2 directions successives. *Que se passe-t-il si ${\bf x^k+1}$ minimise $J$ dans l'espace $G_k$ généré par toutes les directions précédentes ?* $$ J({\bf x}^{k+1}) = \min_{\bf v \in G_k} J({\bf x}^k + {\bf v}) $$ avec ${\bf G_k} = span\{ {\bf d}^0, {\bf d}^1,\dots, {\bf d}^k\} = \left\{ {\bf v} = \sum_{i=0}^{k} \alpha_i \, {\bf d}^i \quad \forall \alpha_i \in ℝ \right\}$. :::danger Toutes les dérivées partielles par rapport aux vecteurs de ${\bf G_k}$ sont nulles : $$ \nabla J({\bf x}^{k+1}) \, . \, {\bf w} = 0 \quad \forall {\bf w} \in {\bf G_k} $$ ::: :::success Cela se vérifie si ${\bf w}$ est un des vecteurs de la base: $$ \nabla J({\bf x}^{k+1}) \, . \, {\bf e}_i = \begin{bmatrix} \partial J / \partial x_{1} \\ \partial J / \partial x_{2} \\ \vdots \\ \partial J / \partial x_{i} \\ \vdots \\ \partial J / \partial x_{n} \\ \end{bmatrix} \, . \, \begin{bmatrix} 0 \\ 0 \\ \vdots \\ 1 \\ \vdots \\ 0 \\ \end{bmatrix} = \frac{\partial J}{\partial x_i}({\bf x}^{k+1}) $$ ::: :::warning La dérivée partielle de $J$ dans une direction ${\bf w}$ de ${\bf G_k}$ est nulle revient a dire $\nabla J({\bf x}^{k+1})$ est orthogonal à ${\bf w}$. ::: #### Générer les directions ${\bf d}^i$ La formule itérative devient : $$ {\bf x}^{k+1} = {\bf x}^k - µ^k\, {\bf d}^k $$ * Pour calculer les ${\bf d}^k$ on utilise la formule des dérivées partielles de $J$ par rapport à un vecteur ${\bf w \in G_k}$ où elles sont nulles. * ${\bf d}^i$ génèrent l'espace ${\bf G_k}$, il suffit que les dérivées partielles de $J$ par rapport ${\bf d}^i$ soient nulles $$ \nabla J({\bf x}^{k+1}) \, . \, {\bf d}^i = 0 \quad \forall i \le k \qquad (1) \\ $$ :::danger En déroulant les calculs on obtient : $$ \begin{align} \nabla J({\bf x}^{k}) \, . \, {\bf d}^i - µ^k \, A \, {\bf d}^k \, . \, {\bf d}^i &= 0 \quad \forall i \le k \\ \end{align} $$ ::: * Si $i \lt k$, le premier terme est nul : $$ A \, {\bf d}^k \, . \, {\bf d}^i = 0 \quad \forall i < k \qquad (2)$$ * On a les conditions pour construire la nouvelle direction ${\bf d}^k$ $${\bf d}^k = \nabla J({\bf x}^k) - \sum_{i=0}^{k-1} \frac{A\, \nabla J({\bf x}^k) \, . \, {\bf d}^i} {A\, {\bf d}^i \, . \, {\bf d}^i} \; {\bf d}^i $$ * Si $i =k$, on obtient la valeur nécessaire $µ^k$ pour garantir que $\nabla J({\bf x}^{k+1}) \, . \, {\bf d}^k = 0$ : $$ µ^k = \frac{\nabla J({\bf x}^{k}) \, . \, {\bf d}^k} {A \, {\bf d}^k \, . \, {\bf d}^k} = \frac{(A \, {\bf x}^{k} - b) \, . \, {\bf d}^k} {A \, {\bf d}^k \, . \, {\bf d}^k} \\ \, $$ ## Propriété L'ensemble des gradients de $J$ aux points $\bf{x}^i$ forment une base de l'espace ${\bf G_k}$ : $$ \nabla J({\bf x}^{k+1}) \perp \nabla J({\bf x}^i) \quad \forall i \le k $$