{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Expériences numériques du chapitre 2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Récupération du schéma via l'opérateur proximal " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Opérateur proximal de la norme de la norme $\\ell_1$ ordonnée :** Cet opérateur est la solution du problème d'optimisation \n", "$${\\rm prox}_{\\tau \\lambda}(y)=\\arg \\min_{b\\in \\mathbb{R}^p} \\left\\{ \\frac{1}{2}\\|y-b\\|_2^2+\\tau J_\\lambda(b) \\right\\}.$$\n", "Une implémentation naïve de cet opérateur est donnée ci-dessous" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# La suite de Cesàro permet de déterminer les premiers termes de l'opérateur. \n", "\n", "def Cesaro(y,Lambda):\n", " p = len(y)\n", " C = np.cumsum(y-Lambda)/np.linspace(1,p,p)\n", " k = np.argmax(C)+1\n", " if C[k] <= 0:\n", " k = p\n", " C[-1] = 0\n", " return C[k-1] , k\n", "\n", "# Opérateur proximal lorsque y1 >= ... >= yp >= 0. \n", "\n", "def prox_L1_ordonnee_decroissant(y,Lambda):\n", " p = len(y)\n", " prox = np.zeros(p)\n", " i = 0\n", " while i
0:\n",
" S = Lambda[0]\n",
" i = 1\n",
" while i