$\newcommand{\Rsp}{\mathbb{R}}
\newcommand{\nr}[1]{\Vert#1\Vert}$
Dans toute la suite, on supposera que $n=30$. La solution du problème de minimisation (P) a été calculée et est stockée dans le vecteur xsol
(ce qui permettra d'étudier la vitesse de convergence des deux algorithmes considérés):
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
n = 30
i1 = 10
i2 = 20
t = np.linspace(0,1,n)
# solution exacte du problème
xsol = np.zeros(30)
xsol[0:11] = np.linspace(0,1,12)[1:]
xsol[10:21] = np.linspace(1,-1,11)
xsol[20:30] = np.linspace(-1,0,11)[:-1]
plt.plot(xsol)
[<matplotlib.lines.Line2D at 0x7f1842ede358>]
QN1. Calculer la matrice $G$ décrite dans le sujet. Écrire une fonction projK
calculant la projection d'un vecteur $x
\in \Rsp^n$ sur le convexe $K$.
QN2 Implémenter l'algorithme de gradient projeté décrit dans la première partie du sujet:
QN3 Illustrer l'instabilité de l'algorithme pour $\tau > .5$.
QN4. Calculer la matrice $B$ décrite dans le sujet. Écrire une fonction projP
calculant la projection d'un vecteur $\lambda \in \Rsp^2$ sur $\Rsp_+^{2}$.
QN5 Implémenter l'algorithme d'Uzawa décrit dans la deuxième partie du sujet:
$R = B(G^T G)^{-1} B^T$ (on rappelle np.linalg.eigh(B)[0] permet de calculer les valeurs propres d'une matrice symétrique B)..