{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Douglas Rachford Proximal Splitting\n", "===================================\n", "\n", "$\\newcommand{\\dotp}[2]{\\langle #1, #2 \\rangle}$\n", "$\\newcommand{\\enscond}[2]{\\lbrace #1, #2 \\rbrace}$\n", "$\\newcommand{\\pd}[2]{ \\frac{ \\partial #1}{\\partial #2} }$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\umax}[1]{\\underset{#1}{\\max}\\;}$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\uargmin}[1]{\\underset{#1}{argmin}\\;}$\n", "$\\newcommand{\\norm}[1]{\\|#1\\|}$\n", "$\\newcommand{\\abs}[1]{\\left|#1\\right|}$\n", "$\\newcommand{\\choice}[1]{ \\left\\{ \\begin{array}{l} #1 \\end{array} \\right. }$\n", "$\\newcommand{\\pa}[1]{\\left(#1\\right)}$\n", "$\\newcommand{\\diag}[1]{{diag}\\left( #1 \\right)}$\n", "$\\newcommand{\\qandq}{\\quad\\text{and}\\quad}$\n", "$\\newcommand{\\qwhereq}{\\quad\\text{where}\\quad}$\n", "$\\newcommand{\\qifq}{ \\quad \\text{if} \\quad }$\n", "$\\newcommand{\\qarrq}{ \\quad \\Longrightarrow \\quad }$\n", "$\\newcommand{\\ZZ}{\\mathbb{Z}}$\n", "$\\newcommand{\\CC}{\\mathbb{C}}$\n", "$\\newcommand{\\RR}{\\mathbb{R}}$\n", "$\\newcommand{\\EE}{\\mathbb{E}}$\n", "$\\newcommand{\\Zz}{\\mathcal{Z}}$\n", "$\\newcommand{\\Ww}{\\mathcal{W}}$\n", "$\\newcommand{\\Vv}{\\mathcal{V}}$\n", "$\\newcommand{\\Nn}{\\mathcal{N}}$\n", "$\\newcommand{\\NN}{\\mathcal{N}}$\n", "$\\newcommand{\\Hh}{\\mathcal{H}}$\n", "$\\newcommand{\\Bb}{\\mathcal{B}}$\n", "$\\newcommand{\\Ee}{\\mathcal{E}}$\n", "$\\newcommand{\\Cc}{\\mathcal{C}}$\n", "$\\newcommand{\\Gg}{\\mathcal{G}}$\n", "$\\newcommand{\\Ss}{\\mathcal{S}}$\n", "$\\newcommand{\\Pp}{\\mathcal{P}}$\n", "$\\newcommand{\\Ff}{\\mathcal{F}}$\n", "$\\newcommand{\\Xx}{\\mathcal{X}}$\n", "$\\newcommand{\\Mm}{\\mathcal{M}}$\n", "$\\newcommand{\\Ii}{\\mathcal{I}}$\n", "$\\newcommand{\\Dd}{\\mathcal{D}}$\n", "$\\newcommand{\\Ll}{\\mathcal{L}}$\n", "$\\newcommand{\\Tt}{\\mathcal{T}}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\al}{\\alpha}$\n", "$\\newcommand{\\la}{\\lambda}$\n", "$\\newcommand{\\ga}{\\gamma}$\n", "$\\newcommand{\\Ga}{\\Gamma}$\n", "$\\newcommand{\\La}{\\Lambda}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\Si}{\\Sigma}$\n", "$\\newcommand{\\be}{\\beta}$\n", "$\\newcommand{\\de}{\\delta}$\n", "$\\newcommand{\\De}{\\Delta}$\n", "$\\newcommand{\\phi}{\\varphi}$\n", "$\\newcommand{\\th}{\\theta}$\n", "$\\newcommand{\\om}{\\omega}$\n", "$\\newcommand{\\Om}{\\Omega}$\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This numerical tour presents the Douglas-Rachford (DR) algorithm to\n", "minimize the sum of two simple functions. It shows an\n", "application to\n", "reconstruction of exactly sparse signal from noiseless measurement using\n", "$\\ell^1$ minimization." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: Method definition macroexpand(Module, Any) in module Compat at C:\\Users\\Ayman\\.julia\\v0.5\\Compat\\src\\Compat.jl:1491 overwritten in module MacroTools at C:\\Users\\Ayman\\.julia\\v0.5\\MacroTools\\src\\utils.jl:64.\n" ] } ], "source": [ "using PyPlot" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Douglas-Rachford Algorithm\n", "--------------------------\n", "The Douglas-Rachford (DR) algorithm is an iterative scheme to minimize\n", "functionals of the form\n", "$$ \\umin{x} f(x) + g(x) $$\n", "where $f$ and $g$ are convex functions, of which one is able to\n", "compute the proximity operators.\n", "\n", "This algorithm was introduced in\n", "\n", "P. L. Lions and B. Mercier\n", "\"Splitting Algorithms for the Sum of Two Nonlinear Operators,\"\n", "_SIAM Journal on Numerical Analysis_\n", "vol. 16, no. 6, 1979,\n", "\n", "\n", "as a generalization of an algorithm introduced by Douglas and Rachford in\n", "the case of quadratic minimization (which corresponds to solving\n", "a positive definite linear system).\n", "\n", "\n", "To learn more about this algorithm, you can read:\n", "\n", "\n", "Patrick L. Combettes and Jean-Christophe Pesquet,\n", "\"Proximal Splitting Methods in Signal Processing,\"\n", "in: _Fixed-Point Algorithms for Inverse\n", "Problems in Science and Engineering_, New York: Springer-Verlag, 2010.\n", "\n", "\n", "\n", "The Douglas-Rachford algorithm takes an arbitrary element $s^{(0)}$, a parameter $\\ga>0$, a relaxation parameter $0<\\rho<2$ and iterates, for $k=1,2,\\ldots$\n", "$$\n", "\\left|\\begin{array}{l}\n", "x^{(k)} = \\mathrm{prox}_{\\gamma f} (s^{(k-1)} )\\\\\n", "s^{(k)} = s^{(k-1)}+\\rho\\big(\\text{prox}_{\\ga g}( 2x^{(k)}-s^{(k-1)})-x^{(k)}\\big).\n", "\\end{array}\\right.\n", "$$\n", "\n", "It is of course possible to inter-change the roles of $f$ and $g$,\n", "which defines a different algorithm.\n", "\n", "The iterates $x^{(k)}$ converge to a solution $x^\\star$ of the problem, i.e. a minimizer of $f+g$.\n", "\n", "Compressed Sensing Acquisition\n", "------------------------------\n", "Compressed sensing acquisition corresponds to a random projection\n", "$y=Ax^\\sharp$ of a signal $x^\\sharp$ on a\n", "few linear vectors (the rows of the matrix $A$). For the recovery of $x^\\sharp$ to be possible, this vector is supposed\n", "to be sparse in some basis. Here, we suppose $x^\\sharp$ itself is sparse." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We initialize the random number generator for reproducibility." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "srand(0);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Dimension of the problem." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "N = 400;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Number of measurements." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = Int(round(N/4));" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We create a random Gaussian measurement matrix $A$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "A = randn(P, N) ./ sqrt(P);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Sparsity of the signal." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "S = 17;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We begin by generating a $S$-sparse signal $x^\\sharp$ with $S$ randomized values.\n", "Since the measurement matrix is random, one does not care about the sign\n", "of the nonzero elements, so we set values equal to one." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "sel = randperm(N)\n", "sel = sel[1 : S] # indices of the nonzero elements of xsharp\n", "xsharp = zeros(N)\n", "xsharp[sel] = 1;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We perform random measurements $y=Ax^\\sharp$ without noise." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "y = A*xsharp;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Compressed Sensing Recovery with the Douglas-Rachford algorithm\n", "------------------------------------\n", "Compressed sensing recovery corresponds\n", "to solving the inverse problem $y=A x^\\sharp$, which is ill posed because\n", "$x^\\sharp$ is\n", "higher dimensional than $y$.\n", "\n", "\n", "The reconstruction can be performed by $\\ell^1$ minimization,\n", "which regularizes the problem by exploiting the prior knowledge that the solution is sparse.\n", "$$ x^\\star \\in \\arg\\min_x \\norm{x}_1 \\quad\\mbox{s.t.}\\quad Ax=y$$\n", "where the $\\ell^1$ norm is defined as\n", "$$ \\norm{x}_1 = \\sum_{n=1}^N \\abs{x_n}. $$\n", "\n", "\n", "This is the minimization of a non-smooth function under affine\n", "constraints. This can be shown to be equivalent to a linear programming\n", "problem, for wich various algorithms can be used (simplex, interior\n", "points). We propose here to use the Douglas-Rachford algorithm.\n", "\n", "\n", "It is possible to recast this problem as the minimization of $f+g$\n", "where $g(x) = \\norm{x}_1$ and $f(x)=\\iota_{\\Omega}$ where $\\Omega =\n", "\\enscond{x}{Ax=y}$ is an affine space, and $\\iota_\\Omega$ is the indicator\n", "function\n", "$$ \\iota_\\Omega(x) = \\choice{ 0 \\qifq x \\in \\Omega, \\\\ +\\infty \\qifq x \\notin \\Omega. } $$\n", "\n", "\n", "The proximal operator of the $\\ell^1$ norm is soft thresholding:\n", "$$ \\text{prox}_{\\gamma \\norm{\\cdot}_1}(x)_n = \\max\\pa{ 0, 1-\\frac{\\ga}{\\abs{x_n}} } x_n. $$" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "prox_gamma_g = (x, gamma) -> x - x./max(abs(x)./gamma, 1);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the 1-D curve of the thresholding." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAGgCAYAAACwio2MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xt4VPWB//HPJCETvGSy3BJSIogXbqIol9lQVqmMhcVb1T6AsnJZhEWFKqGUpF2h7HafiGUVCyhVC9iKQmkBrdooclmEjSABqoWACioRmCDNZgKKATLf3x/+mDrmwkwyZ2bOzPv1POd5OiffM/P9egjz7syZwWGMMQIAALChlFhPAAAAoLkIGQAAYFuEDAAAsC1CBgAA2BYhAwAAbIuQAQAAtkXIAAAA2yJkAACAbREyAADAtggZAABgW4QMAACwrbRYTyDS/H6/jhw5oosvvlgOhyPW0wEAACEwxujEiRPKzc1VSkoYr7OYKFi4cKHp3LmzcTqdZsCAAWbbtm1Njn/hhRfM1VdfbVq3bm1ycnLM+PHjzfHjx0N6rIqKCiOJjY2NjY2NzYZbRUVFWI3hMMbaf/165cqVGjNmjBYvXiy326358+dr1apV2r9/vzp06FBv/NatW3X99dfriSee0K233qrDhw9r8uTJuvLKK7V69erzPp7P51NWVpYqKiqUmZlpxZIAAECE1dTUKC8vT9XV1XK5XCEfZ3nIuN1u9e/fXwsXLpT09Vs/eXl5mjp1qgoLC+uNnzdvnp5++mkdOHAgsG/BggWaO3euPvvss/M+Xk1NjVwul3w+HyEDAIBNNPf529KLfU+fPq2ysjJ5PJ6/P2BKijwej0pLSxs8Jj8/XxUVFXr99ddljFFlZaVWrVql4cOHNzi+trZWNTU1QRsAAEgOlobM8ePHVVdXp+zs7KD92dnZ8nq9DR7z3e9+V8uXL9fIkSOVnp6unJwcZWVladGiRQ2OLy4ulsvlCmx5eXkRXwcAAIhPcffx67179+qhhx7SrFmzVFZWppKSEn3yySeaPHlyg+OLiork8/kCW0VFRZRnDAAAYsXSj1+3a9dOqampqqysDNpfWVmpnJycBo8pLi7WwIEDNWPGDEnS1VdfrQsvvFD/9E//pF/84hfq2LFj0Hin0ymn02nNAgAAQFyz9BWZ9PR09e3bV+vXrw/s8/v9Wr9+vfLz8xs85ssvv1RaWnBfpaamSpIsvi4ZAADYjOVvLRUUFOjZZ5/V888/r/Lyct1///364osvNH78eElfvzU0ZsyYwPhbb71Vf/zjH/X000/r4MGD2rp1q370ox9pwIABys3NtXq6AADARiz/Zt+RI0fq888/16xZs+T1etWnTx+VlJQELgA+evSoDh06FBg/btw4nThxQgsXLtT06dOVlZWlG2+8UXPnzrV6qgAAwGYs/x6ZaON7ZAAAsJ+4/B4ZAAAAKxEyAADAtggZAABgW4QMAACwLUIGAADYFiEDAABsi5ABAAC2RcgAAADbImQAAIBtETIAAMC2CBkAAGBbhAwAALAtQgYAANgWIQMAAGyLkAEAACFbsf2QNn/weaynEUDIAACAkLy0/ZAKV7+v+367Qx8dOxHr6UgiZAAAQAhe2n5IRavflyT9i7uzLmt/UYxn9DVCBgAANOmbEfOv371Uj9zSQw6HI8az+hohAwAAGhXPESMRMgAAoBHxHjESIQMAABpgh4iRCBkAAPAtdokYiZABAADfYKeIkQgZAADw/9ktYiRCBgAAyJ4RIxEyAAAkPbtGjETIAACQ1OwcMRIhAwBA0rJ7xEiEDAAASSkRIkYiZAAASDqJEjESIQMAQFJJpIiRCBkAAJJGokWMRMgAAJAUEjFiJEIGAICEl6gRIxEyAAAktESOGClKIbNo0SJ16dJFGRkZcrvd2r59e5Pja2tr9bOf/UydO3eW0+lUly5dtGTJkmhMFQCAhJHoESNJaVY/wMqVK1VQUKDFixfL7XZr/vz5Gjp0qPbv368OHTo0eMyIESNUWVmp3/zmN7r88st19OhR+f1+q6cKAEDCSIaIkSSHMcZY+QBut1v9+/fXwoULJUl+v195eXmaOnWqCgsL640vKSnRqFGjdPDgQbVp0+a8919bW6va2trA7ZqaGuXl5cnn8ykzMzNyCwEAwCbsGDE1NTVyuVxhP39b+tbS6dOnVVZWJo/H8/cHTEmRx+NRaWlpg8e88sor6tevnx577DF95zvf0ZVXXqkf//jHOnXqVIPji4uL5XK5AlteXp4lawEAwA7sGDEtYWnIHD9+XHV1dcrOzg7an52dLa/X2+AxBw8e1JYtW/TXv/5Va9as0fz58/WHP/xBDzzwQIPji4qK5PP5AltFRUXE1wEAgB0kW8RIUbhGJlx+v18Oh0PLly+Xy+WSJD3++OP64Q9/qKeeekqtW7cOGu90OuV0OmMxVQAA4kYyRoxk8Ssy7dq1U2pqqiorK4P2V1ZWKicnp8FjOnbsqO985zuBiJGkHj16yBijzz77zMrpAgBgS8kaMZLFIZOenq6+fftq/fr1gX1+v1/r169Xfn5+g8d897vf1ZEjR3Ty5MnAvg8++EApKSnq1KmTldMFAMB2kjlipCh8j0xBQYGeffZZPf/88yovL9f999+vL774QuPHj5f09TUuY8aMCYy/55571LZtW40fP1579+7V5s2bNWPGDP3rv/5rvbeVAABIZskeMVIUrpEZOXKkPv/8c82aNUter1d9+vRRSUlJ4ALgo0eP6tChQ4HxF110kdatW6epU6eqX79+atu2rUaMGKFf/OIXVk8VAADbIGK+Zvn3yERbcz+HDgCAXSRixMTl98gAAIDISsSIaQlCBgAAmyBi6iNkAACwASKmYYQMAABxjohpHCEDAEAcI2KaRsgAABCniJjzI2QAAIhDRExoCBkAAOIMERM6QgYAgDhCxISHkAEAIE4QMeEjZAAAiANETPMQMgAAxBgR03yEDAAAMUTEtAwhAwBAjBAxLUfIAAAQA0RMZBAyAABEGRETOYQMAABRRMREFiEDAECUEDGRR8gAABAFRIw1CBkAACxGxFiHkAEAwEJEjLUIGQAALELEWI+QAQDAAkRMdBAyAABEGBETPYQMAAARRMREFyEDAECEEDHRR8gAABABRExsEDIAALQQERM7hAwAAC1AxMQWIQMAQDMRMbFHyAAA0AxETHwgZAAACBMREz8IGQAAwkDExBdCBgCAEBEx8ScqIbNo0SJ16dJFGRkZcrvd2r59e0jHbd26VWlpaerTp4/FMwQAoGlETHyyPGRWrlypgoICzZ49Wzt37tQ111yjoUOH6tixY00eV11drTFjxmjIkCFWTxEAgCYRMfHLYYwxVj6A2+1W//79tXDhQkmS3+9XXl6epk6dqsLCwkaPGzVqlK644gqlpqZq7dq12r17d4PjamtrVVtbG7hdU1OjvLw8+Xw+ZWZmRnYxAICkQ8RER01NjVwuV9jP35a+InP69GmVlZXJ4/H8/QFTUuTxeFRaWtrocUuXLtXBgwc1e/bs8z5GcXGxXC5XYMvLy4vI3AEAIGLin6Uhc/z4cdXV1Sk7Oztof3Z2trxeb4PHfPjhhyosLNQLL7ygtLS08z5GUVGRfD5fYKuoqIjI3AEAyY2IsYfzl0IU1dXV6Z577tGcOXN05ZVXhnSM0+mU0+m0eGYAgGRCxNiHpSHTrl07paamqrKyMmh/ZWWlcnJy6o0/ceKEduzYoV27dmnKlCmSvr6mxhijtLQ0vfnmm7rxxhutnDIAIMkRMfZi6VtL6enp6tu3r9avXx/Y5/f7tX79euXn59cbn5mZqffff1+7d+8ObJMnT1a3bt20e/duud1uK6cLAEhyRIz9WP7WUkFBgcaOHat+/fppwIABmj9/vr744guNHz9e0tfXuBw+fFi//e1vlZKSoquuuiro+A4dOigjI6PefgAAIomIsSfLQ2bkyJH6/PPPNWvWLHm9XvXp00clJSWBC4CPHj2qQ4cOWT0NAAAaRcTYl+XfIxNtzf0cOgAgOREx8SEuv0cGAIB4RsTYHyEDAEhKRExiIGQAAEmHiEkchAwAIKkQMYmFkAEAJA0iJvEQMgCApEDEJCZCBgCQ8IiYxEXIAAASGhGT2AgZAEDCImISHyEDAEhIRExyIGQAAAmHiEkehAwAIKEQMcmFkAEAJAwiJvkQMgCAhEDEJCdCBgBge0RM8iJkAAC2RsQkN0IGAGBbRAwIGQCALRExkAgZAIANETE4h5ABANgKEYNvImQAALZBxODbCBkAgC0QMWgIIQMAiHtEDBpDyAAA4hoRg6YQMgCAuEXE4HwIGQBAXCJiEApCBgAQd4gYhIqQAQDEFSIG4SBkAABxg4hBuAgZAEBcIGLQHIQMACDmiBg0FyEDAIgpIgYtQcgAAGKGiEFLETIAgJggYhAJUQmZRYsWqUuXLsrIyJDb7db27dsbHbt69WrddNNNat++vTIzM5Wfn6833ngjGtMEAEQJEYNIsTxkVq5cqYKCAs2ePVs7d+7UNddco6FDh+rYsWMNjt+8ebNuuukmvf766yorK9P3vvc93Xrrrdq1a5fVUwUARAERg0hyGGOMlQ/gdrvVv39/LVy4UJLk9/uVl5enqVOnqrCwMKT76NWrl0aOHKlZs2bV+1ltba1qa2sDt2tqapSXlyefz6fMzMzILAIAEBFEDBpTU1Mjl8sV9vO3pa/InD59WmVlZfJ4PH9/wJQUeTwelZaWhnQffr9fJ06cUJs2bRr8eXFxsVwuV2DLy8uLyNwBAJFFxMAKlobM8ePHVVdXp+zs7KD92dnZ8nq9Id3HvHnzdPLkSY0YMaLBnxcVFcnn8wW2ioqKFs8bABBZRAyskhbrCTTlxRdf1Jw5c/Tyyy+rQ4cODY5xOp1yOp1RnhkAIFREDKxkaci0a9dOqampqqysDNpfWVmpnJycJo9dsWKF7rvvPq1atSrorSkAgH0QMbCapW8tpaenq2/fvlq/fn1gn9/v1/r165Wfn9/ocS+99JLGjx+vl156STfffLOVUwQAWISIQTRY/tZSQUGBxo4dq379+mnAgAGaP3++vvjiC40fP17S19e4HD58WL/97W8lff120tixY/Xkk0/K7XYHrqVp3bq1XC6X1dMFAEQAEYNosTxkRo4cqc8//1yzZs2S1+tVnz59VFJSErgA+OjRozp06FBg/DPPPKOzZ8/qwQcf1IMPPhjYP3bsWC1btszq6QIAWoiIQTRZ/j0y0dbcz6EDAFqOiEFzxeX3yAAAkgcRg1ggZAAALUbEIFYIGQBAixAxiCVCBgDQbEQMYo2QAQA0CxGDeEDIAADCRsQgXhAyAICwEDGIJ4QMACBkRAziDSEDAAgJEYN4RMgAAM6LiEG8ImQAAE0iYhDPCBkAQKOIGMQ7QgYA0CAiBnZAyAAA6iFiYBeEDAAgCBEDOyFkAAABRAzshpABAEgiYmBPhAwAgIiBbREyAJDkiBjYGSEDAEmMiIHdETIAkKSIGCQCQgYAkhARg0RByABAkiFikEgIGQBIIkQMEg0hAwBJgohBIiJkACAJEDFIVIQMACQ4IgaJjJABgARGxCDRETIAkKCIGCQDQgYAEhARg2RByABAgiFikEwIGQBIIEQMkg0hAwAJgohBMiJkACABEDFIVlEJmUWLFqlLly7KyMiQ2+3W9u3bmxy/adMmXXfddXI6nbr88su1bNmyaEwTAGyJiEEyszxkVq5cqYKCAs2ePVs7d+7UNddco6FDh+rYsWMNjv/44491880363vf+552796thx9+WPfdd5/eeOMNq6cKALZDxCDZOYwxxsoHcLvd6t+/vxYuXChJ8vv9ysvL09SpU1VYWFhv/MyZM/Xaa6/pr3/9a2DfqFGjVF1drZKSknrja2trVVtbG7hdU1OjvLw8+Xw+ZWZmWrAiIHrO1vn14vZD+vj4F7GeCuLQya/OalXZZ5KIGNhfTU2NXC5X2M/faRbOSadPn1ZZWZmKiooC+1JSUuTxeFRaWtrgMaWlpfJ4PEH7hg4dqocffrjB8cXFxZozZ07kJg3EibN1fhX8/i965S9HYj0VxDkiBsnM0pA5fvy46urqlJ2dHbQ/Oztb+/bta/AYr9fb4PiamhqdOnVKrVu3DvpZUVGRCgoKArfPvSID2Nk3IyYtxaEx+V3UOp1r81HfldkX67ZrcokYJC1LQyYanE6nnE5nrKcBRMy3I+ap0dfp+71yYj0tAIhLlv5fvHbt2ik1NVWVlZVB+ysrK5WT0/BfzDk5OQ2Oz8zMrPdqDJBoiBgACI+lIZOenq6+fftq/fr1gX1+v1/r169Xfn5+g8fk5+cHjZekdevWNToeSBREDACEz/I33QsKCvTss8/q+eefV3l5ue6//3598cUXGj9+vKSvr3EZM2ZMYPzkyZN18OBB/eQnP9G+ffv01FNP6fe//72mTZtm9VSBmCFiAKB5LL9GZuTIkfr88881a9Yseb1e9enTRyUlJYELeo8ePapDhw4Fxl966aV67bXXNG3aND355JPq1KmTnnvuOQ0dOtTqqQIxQcQAQPNZ/j0y0dbcz6EDsUDEAMDXmvv8zec5gRghYgCg5QgZIAaIGACIDEIGiDIiBgAih5ABooiIAYDIImSAKCFiACDyCBkgCogYALAGIQNYjIgBAOsQMoCFiBgAsBYhA1iEiAEA6xEygAWIGACIDkIGiDAiBgCih5ABIoiIAYDoImSACCFiACD6CBkgAogYAIgNQgZoISIGAGKHkAFagIgBgNgiZIBmImIAIPYIGaAZiBgAiA+EDBAmIgYA4gchA4SBiAGA+ELIACEiYgAg/hAyQAiIGACIT4QMcB5EDADEL0IGaAIRAwDxjZABGkHEAED8I2SABhAxAGAPhAzwLUQMANgHIQN8AxEDAPZCyAD/HxEDAPZDyAAiYgDArggZJD0iBgDsi5BBUiNiAMDeCBkkLSIGAOyPkEFSImIAIDFYFjJVVVUaPXq0MjMzlZWVpQkTJujkyZONjj9z5oxmzpyp3r1768ILL1Rubq7GjBmjI0eOWDVFJCkiBgASh2UhM3r0aO3Zs0fr1q3Tq6++qs2bN2vSpEmNjv/yyy+1c+dOPfLII9q5c6dWr16t/fv367bbbrNqikhCRAwAJBaHMcZE+k7Ly8vVs2dPvfvuu+rXr58kqaSkRMOHD9dnn32m3NzckO7n3Xff1YABA/Tpp5/qkksuCemYmpoauVwu+Xw+ZWZmNnsNSDxEDADEr+Y+f1vyikxpaamysrICESNJHo9HKSkp2rZtW8j34/P55HA4lJWV1eiY2tpa1dTUBG3AtxExAJCYLAkZr9erDh06BO1LS0tTmzZt5PV6Q7qPr776SjNnztTdd9/dZJkVFxfL5XIFtry8vBbNHYmHiAGAxBVWyBQWFsrhcDS57du3r8WTOnPmjEaMGCFjjJ5++ukmxxYVFcnn8wW2ioqKFj8+EgcRAwCJLS2cwdOnT9e4ceOaHNO1a1fl5OTo2LFjQfvPnj2rqqoq5eQ0/SRyLmI+/fRTbdiw4bzvkzmdTjmdzpDmj+RCxABA4gsrZNq3b6/27dufd1x+fr6qq6tVVlamvn37SpI2bNggv98vt9vd6HHnIubDDz/Uxo0b1bZt23CmBwQQMQCQHCy5RqZHjx4aNmyYJk6cqO3bt2vr1q2aMmWKRo0aFfSJpe7du2vNmjWSvo6YH/7wh9qxY4eWL1+uuro6eb1eeb1enT592oppIkERMQCQPMJ6RSYcy5cv15QpUzRkyBClpKTorrvu0q9+9augMfv375fP55MkHT58WK+88ookqU+fPkHjNm7cqMGDB1s1VSQQIgYAkosl3yMTS3yPTPIiYgDAvuLqe2SAaCNiACA5ETKwPSIGAJIXIQNbI2IAILkRMrAtIgYAQMjAlogYAIBEyMCGiBgAwDmEDGyFiAEAfBMhA9sgYgAA30bIwBaIGABAQwgZxD0iBgDQGEIGcY2IAQA0hZBB3CJiAADnQ8ggLhExAIBQEDKIO0QMACBUhAziChEDAAgHIYO4QcQAAMJFyCAuEDEAgOYgZBBzRAwAoLkIGcQUEQMAaAlCBjFDxAAAWoqQQUwQMQCASCBkEHVEDAAgUggZRBURAwCIJEIGUUPEAAAijZBBVBAxAAArEDKwHBEDALAKIQNLETEAACsRMrAMEQMAsBohA0sQMQCAaCBkEHFEDAAgWggZRBQRAwCIJkIGEUPEAACijZBBRBAxAIBYIGTQYkQMACBWLAuZqqoqjR49WpmZmcrKytKECRN08uTJkI+fPHmyHA6H5s+fb9UUEQFEDAAgliwLmdGjR2vPnj1at26dXn31VW3evFmTJk0K6dg1a9bonXfeUW5urlXTQwQQMQCAWLMkZMrLy1VSUqLnnntObrdbgwYN0oIFC7RixQodOXKkyWMPHz6sqVOnavny5WrVqpUV00MEEDEAgHhgSciUlpYqKytL/fr1C+zzeDxKSUnRtm3bGj3O7/fr3nvv1YwZM9SrV6+QHqu2tlY1NTVBG6xFxAAA4oUlIeP1etWhQ4egfWlpaWrTpo28Xm+jx82dO1dpaWn60Y9+FPJjFRcXy+VyBba8vLxmzxvnR8QAAOJJWCFTWFgoh8PR5LZv375mTaSsrExPPvmkli1bJofDEfJxRUVF8vl8ga2ioqJZj4/zI2IAAPEmLZzB06dP17hx45oc07VrV+Xk5OjYsWNB+8+ePauqqirl5DT8xPf222/r2LFjuuSSSwL76urqNH36dM2fP1+ffPJJg8c5nU45nc5wloFmIGIAAPEorJBp37692rdvf95x+fn5qq6uVllZmfr27StJ2rBhg/x+v9xud4PH3HvvvfJ4PEH7hg4dqnvvvVfjx48PZ5qIMCIGABCvwgqZUPXo0UPDhg3TxIkTtXjxYp05c0ZTpkzRqFGjgj5S3b17dxUXF+uOO+5Q27Zt1bZt26D7adWqlXJyctStWzcrpokQEDEAgHhm2ffILF++XN27d9eQIUM0fPhwDRo0SM8880zQmP3798vn81k1BbQQEQMAiHcOY4yJ9SQiqaamRi6XSz6fT5mZmbGejm0RMQCAaGru8zf/1hLqIWIAAHZByCAIEQMAsBNCBgFEDADAbggZSCJiAAD2RMiAiAEA2BYhk+SIGACAnREySYyIAQDYHSGTpIgYAEAiIGSSEBEDAEgUhEySIWIAAImEkEkiRAwAINEQMkmCiAEAJCJCJgkQMQCAREXIJDgiBgCQyAiZBEbEAAASHSGToIgYAEAyIGQSEBEDAEgWhEyCIWIAAMmEkEkgRAwAINkQMgmCiAEAJCNCJgEQMQCAZEXI2BwRAwBIZoSMjRExAIBkR8jYFBEDAAAhY0tEDAAAXyNkbIaIAQDg7wgZGyFiAAAIRsjYBBEDAEB9hIwNEDEAADSMkIlzRAwAAI0jZOIYEQMAQNMImThFxAAAcH6ETBwiYgAACA0hE2eIGAAAQmdZyFRVVWn06NHKzMxUVlaWJkyYoJMnT573uPLyct12221yuVy68MIL1b9/fx06dMiqacYVIgYAgPBYFjKjR4/Wnj17tG7dOr366qvavHmzJk2a1OQxBw4c0KBBg9S9e3dt2rRJ7733nh555BFlZGRYNc24QcQAABA+hzHGRPpOy8vL1bNnT7377rvq16+fJKmkpETDhw/XZ599ptzc3AaPGzVqlFq1aqXf/e53zX7smpoauVwu+Xw+ZWZmNvt+oomIAQAku+Y+f1vyikxpaamysrICESNJHo9HKSkp2rZtW4PH+P1+vfbaa7ryyis1dOhQdejQQW63W2vXrm3ysWpra1VTUxO02QkRAwBA81kSMl6vVx06dAjal5aWpjZt2sjr9TZ4zLFjx3Ty5Ek9+uijGjZsmN58803dcccduvPOO/U///M/jT5WcXGxXC5XYMvLy4voWqxExAAA0DJhhUxhYaEcDkeT2759+5o1Eb/fL0m6/fbbNW3aNPXp00eFhYW65ZZbtHjx4kaPKyoqks/nC2wVFRXNevxoI2IAAGi5tHAGT58+XePGjWtyTNeuXZWTk6Njx44F7T979qyqqqqUk9Pwk3W7du2Ulpamnj17Bu3v0aOHtmzZ0ujjOZ1OOZ3O0BYQJ4gYAAAiI6yQad++vdq3b3/ecfn5+aqurlZZWZn69u0rSdqwYYP8fr/cbneDx6Snp6t///7av39/0P4PPvhAnTt3DmeacY2IAQAgciy5RqZHjx4aNmyYJk6cqO3bt2vr1q2aMmWKRo0aFfSJpe7du2vNmjWB2zNmzNDKlSv17LPP6qOPPtLChQv1pz/9SQ888IAV04w6IgYAgMiy7Htkli9fru7du2vIkCEaPny4Bg0apGeeeSZozP79++Xz+QK377jjDi1evFiPPfaYevfureeee05//OMfNWjQIKumGTVEDAAAkWfJ98jEUjx+jwwRAwBA0+Lqe2Twd0QMAADWIWQsRMQAAGAtQsYiRAwAANYjZCxAxAAAEB2ETIQRMQAARA8hE0FEDAAA0UXIRAgRAwBA9BEyEUDEAAAQG4RMCxExAADEDiHTAkQMAACxRcg0ExEDAEDsETLNQMQAABAfCJkwETEAAMQPQiYMRAwAAPGFkAkREQMAQPwhZEJUfvSESv7qJWIAAIgjabGegF307uTSr8f01emzfiIGAIA4QciE4XvdOsR6CgAA4Bt4awkAANgWIQMAAGyLkAEAALZFyAAAANsiZAAAgG0RMgAAwLYIGQAAYFuEDAAAsC1CBgAA2BYhAwAAbIuQAQAAtkXIAAAA2yJkAACAbREyAADAtggZAABgW4QMAACwLctCpqqqSqNHj1ZmZqaysrI0YcIEnTx5ssljTp48qSlTpqhTp05q3bq1evbsqcWLF1s1RQAAYHOWhczo0aO1Z88erVu3Tq+++qo2b96sSZMmNXlMQUGBSkpK9MILL6i8vFzTpk3TlClT9Morr1g1TQAAYGOWhEx5eblKSkr03HPPye12a9CgQVqwYIFWrFihI0eONHrc//7v/2rs2LEaPHiwunTpookTJ+qaa67R9u3brZgmAACwOUtCprS0VFlZWerXr1/D1dy9AAAPE0lEQVRgn8fjUUpKirZt29bocQMHDtQrr7yiw4cPyxijjRs36oMPPtD3v//9Ro+pra1VTU1N0AYAAJKDJSHj9XrVoUOHoH1paWlq06aNvF5vo8ctWLBAPXv2VKdOnZSenq5hw4Zp0aJFuv766xs9pri4WC6XK7Dl5eVFbB0AACC+hRUyhYWFcjgcTW779u1r9mQWLFigd955R6+88orKysr03//933rwwQf11ltvNXpMUVGRfD5fYKuoqGj24wMAAHtJC2fw9OnTNW7cuCbHdO3aVTk5OTp27FjQ/rNnz6qqqko5OTkNHnfq1Cn99Kc/1erVq3XLLbdIkq6++mrt3r1b8+bNk8fjafA4p9Mpp9MZzjIAAECCCCtk2rdvr/bt2593XH5+vqqrq1VWVqa+fftKkjZs2CC/3y+3293gMWfOnNGZM2eUlhY8pdTUVPn9/pDnaIyRJK6VAQDARs49b597Hg+ZsciwYcPMtddea7Zt22a2bNlirrjiCnP33XcHjenWrZtZvXp14PYNN9xgevXqZTZu3GgOHjxoli5dajIyMsxTTz0V8uNWVFQYSWxsbGxsbGw23CoqKsLqDYcx4aZPaKqqqjRlyhT96U9/UkpKiu666y796le/0kUXXRQY43A4tHTp0sDbVV6vV0VFRXrzzTdVVVWlzp07a9KkSZo2bZocDkdIj+v3+3XkyBFdfPHFIR8TqpqaGuXl5amiokKZmZkRve94kOjrkxJ/jazP/hJ9jYm+Pinx12jV+owxOnHihHJzc5WSEvolvJaFTCKqqamRy+WSz+dL2D+cibw+KfHXyPrsL9HXmOjrkxJ/jfG2Pv6tJQAAYFuEDAAAsK3Un//85z+P9STsJDU1VYMHD6736apEkejrkxJ/jazP/hJ9jYm+Pinx1xhP6+MaGQAAYFu8tQQAAGyLkAEAALZFyAAAANsiZAAAgG0RMgAAwLYImW/4r//6Lw0cOFAXXHCBsrKyQjrGGKNZs2apY8eOat26tTwejz788MOgMV999ZUefPBBtW3bVhdddJHuuusuVVZWWrGE86qqqtLo0aOVmZmprKwsTZgwQSdPnmzyGIfD0eD2y1/+MjBm8ODB9X4+efJkq5dTT3PWN27cuHpzHzZsWNCYeDmH4a7vzJkzmjlzpnr37q0LL7xQubm5GjNmjI4cORI0Lpbnb9GiRerSpYsyMjLkdru1ffv2Jsdv2rRJ1113nZxOpy6//HItW7as3phVq1ape/fuysjIUO/evfX6669bNPvzC2d9q1ev1k033aT27dsrMzNT+fn5euONN4LGLFu2rN65ysjIsHoZTQpnjZs2bWrw7xOv1xs0zq7nsKG/TxwOh3r16hUYE0/ncPPmzbr11luVm5srh8OhtWvXnveYuPsdDOtfZkpws2bNMo8//rgpKCgwLpcrpGMeffRR43K5zNq1a81f/vIXc9ttt5lLL73UnDp1KjBm8uTJJi8vz6xfv97s2LHD/OM//qMZOHCgVcto0rBhw8w111xj3nnnHfP222+byy+/vN4/5vltR48eDdqWLFliHA6HOXDgQGDMDTfcYCZOnBg0zufzWb2cepqzvrFjx5phw4YFzb2qqipoTLycw3DXV11dbTwej1m5cqXZt2+fKS0tNQMGDDB9+/YNGher87dixQqTnp5ulixZYvbs2WMmTpxosrKyTGVlZYPjDx48aC644AJTUFBg9u7daxYsWGBSU1NNSUlJYMzWrVtNamqqeeyxx8zevXvNv//7v5tWrVqZ999/3/L1fFu463vooYfM3Llzzfbt280HH3xgioqKTKtWrczOnTsDY5YuXWoyMzODzpXX643WkuoJd40bN240ksz+/fuD1lBXVxcYY+dzWF1dHbSuiooK06ZNGzN79uzAmHg6h6+//rr52c9+ZlavXm0kmTVr1jQ5Ph5/BwmZBixdujSkkPH7/SYnJ8f88pe/DOyrrq42TqfTvPTSS4HbrVq1MqtWrQqMKS8vN5JMaWlp5CffhL179xpJ5t133w3s+/Of/2wcDoc5fPhwyPdz++23mxtvvDFo3w033GAeeuihiM21OZq7vrFjx5rbb7+90Z/HyzmM1Pnbvn27kWQ+/fTTwL5Ynb8BAwaYBx98MHC7rq7O5ObmmuLi4gbH/+QnPzG9evUK2jdy5EgzdOjQwO0RI0aYm2++OWiM2+02//Zv/xbBmYcm3PU1pGfPnmbOnDmB26H+/RQt4a7xXMj83//9X6P3mUjncM2aNcbhcJhPPvkksC/ezuE5oYRMPP4O8tZSC3z88cfyer3yeDyBfS6XS263W6WlpZKksrIynTlzJmhM9+7ddckllwTGREtpaamysrLUr1+/wD6Px6OUlBRt27YtpPuorKzUa6+9pgkTJtT72fLly9WuXTtdddVVKioq0pdffhmxuYeiJevbtGmTOnTooG7duun+++/X3/72t8DP4uUcRuL8SZLP55PD4aj39mm0z9/p06dVVlYW9N81JSVFHo+n0f+upaWlQeMlaejQoUHjQxkTDc1Z37f5/X6dOHFCbdq0Cdp/8uRJde7cWXl5ebr99tu1Z8+eiM49VC1ZY58+fdSxY0fddNNN2rp1a9DPEukc/uY3v5HH41Hnzp2D9sfLOQxXPP4Oxv67hW3s3Hu62dnZQfuzs7MDP/N6vUpPT6/3pPHNMdHi9XrVoUOHoH1paWlq06ZNyHN5/vnndfHFF+vOO+8M2n/PPfeoc+fOys3N1XvvvaeZM2dq//79Wr16dcTmfz7NXd+wYcN055136tJLL9WBAwf005/+VP/8z/+s0tJSpaamxs05jMT5++qrrzRz5kzdfffdQf9qbSzO3/Hjx1VXV9fg78++ffsaPMbr9TY4vqamRqdOnVLr1q0bHRPt37fmrO/b5s2bp5MnT2rEiBGBfd26ddOSJUt09dVXy+fzad68eRo4cKD27NmjTp06RXQN59OcNXbs2FGLFy9Wv379VFtbq+eee06DBw/Wtm3bdN1110lq/Dzb7RweOXJEf/7zn/Xiiy8G7Y+ncxiuePwdTPiQKSws1Ny5c5scU15eru7du0dpRpEX6hojYcmSJRo9enS9C9MmTZoU+N+9e/dWbm6ubrzxRh04cECXXXZZix7T6vWNGjUq8L979+6tq6++Wpdddpk2bdqkIUOGNPt+QxWt83fmzBmNGDFCxhg9/fTTQT+z8vyheV588UXNmTNHL7/8clDA5ufnKz8/P3B74MCB6tGjh37961/rP//zP2Mx1bB069ZN3bp1C9weOHCgDhw4oCeeeEK/+93vYjizyHv++eeVlZWlH/zgB0H77X4O403Ch8z06dM1bty4Jsd07dq1Wfedk5Mj6eu3Wzp27BjYX1lZqT59+gTGnD59WtXV1UH/j76ysjJwfEuFusacnBwdO3YsaP/Zs2dVVVUV0lzefvtt7d+/XytXrjzv2AEDBkiSPvrooxY/EUZrfd+8r3bt2umjjz7SkCFDLD+H0VjfuYj59NNPtWHDhqBXYxoSyfPXmHbt2ik1NbXep7+a+u+ak5PT4PjMzEy1bt26yTGR+n0LVXPWd86KFSt03333adWqVfVeov+2Vq1a6dprr9VHH33U4jmHqyVr/KYBAwZoy5YtgduJcA6NMVqyZInuvfdepaenNzk2lucwXHH5O2jJlTc2F+7FvvPmzQvs8/l8DV7s+4c//CEwZt++fTG92HfHjh2BfW+88UbIF4uOHTu23qddGrNlyxYjyfzlL39p9nzD1dL1nVNRUWEcDod5+eWXjTHxcw6bu77Tp0+bH/zgB6ZXr17m2LFjIT1WtM7fgAEDzJQpUwK36+rqzHe+850mL/a96qqrgvbdfffd9S40vOWWW4LG5Ofnx+xC0XDWZ4wxL774osnIyDBr164N6THOnj1runXrZqZNm9bi+TZHc9b4bR6Px9xxxx2B23Y/h8b8/aLmUD6pE+tzeI5CvNg33n4HCZlv+PTTT82uXbvMnDlzzEUXXWR27dpldu3aZU6cOBEY061bN7N69erA7UcffdRkZWWZl19+2bz33nvm9ttvb/Dj15dcconZsGGD2bFjh8nPzzf5+flRXds5w4YNM9dee63Ztm2b2bJli7niiivqfXz322s05utAu+CCC8zTTz9d7z4/+ugj8x//8R9mx44d5uOPPzYvv/yy6dq1q7n++ustXUtDwl3fiRMnzI9//GNTWlpqPv74Y/PWW2+Z6667zlxxxRXmq6++ChwTL+cw3PWdPn3a3HbbbaZTp05m9+7dQR/3rK2tNcbE9vytWLHCOJ1Os2zZMrN3714zadIkk5WVFfgoamFhobn33nsD48999HPGjBmmvLzcLFq0qMGPfqalpZl58+aZ8vJyM3v27Jh+dDec9S1fvtykpaWZRYsWBZ2r6urqwJg5c+aYN954wxw4cMCUlZWZUaNGmYyMDLNnz56or8+Y8Nf4xBNPmLVr15oPP/zQvP/+++ahhx4yKSkp5q233gqMsfM5POdf/uVfjNvtbvA+4+kcnjhxIvBcJ8k8/vjjZteuXYFPNdrhd5CQ+YaxY8caSfW2jRs3BsZIMkuXLg3c9vv95pFHHjHZ2dnG6XSaIUOGmP379wfd76lTp8wDDzxg/uEf/sFccMEF5o477jBHjx6N0qqC/e1vfzN33323ueiii0xmZqYZP358UKgZU3+Nxhjz61//2rRu3TroL9RzDh06ZK6//nrTpk0b43Q6zeWXX25mzJgRk++RCXd9X375pfn+979v2rdvb1q1amU6d+5sJk6cWO87HeLlHIa7vo8//rjBP9Pf/HMd6/O3YMECc8kll5j09HQzYMAA88477wR+NnbsWHPDDTcEjd+4caPp06ePSU9PN127dq33Z9UYY37/+9+bK6+80qSnp5tevXqZ1157zeJVNC6c9d1www0NnquxY8cGxjz88MOB+8vOzjbDhw8P+p6ZWAhnjXPnzjWXXXaZycjIMG3atDGDBw82GzZsqHefdj2Hxnz9Km7r1q3NM8880+D9xdM5PPfKUWN/5uzwO+gwxhhr3rQCAACwFt8jAwAAbIuQAQAAtkXIAAAA2yJkAACAbREyAADAtggZAABgW4QMAACwLUIGAADYFiEDAABsi5ABAAC2RcgAAADb+n85ea8M8FWwcQAAAABJRU5ErkJggg==", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(-1.1,1.1,-0.7699999999999999,0.7699999999999999)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "figsize = (9, 6)\n", "t = -1 : 0.001 : 1\n", "plot(t, prox_gamma_g(t, 0.3))\n", "axis(\"equal\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The proximity operator of $\\gamma$ times the indicator function of $\\Omega$ is projection onto $\\Omega$ \n", " and does not depends on $\\gamma$.\n", "$$ \\mathrm{prox}_{\\gamma f}(x)=\\mathrm{prox}_{\\iota_\\Omega}(x)=P_\\Omega(x) = x + A^* (A A^*)^{-1} (y-Ax). $$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "pA = pinv(A) # pseudo-inverse. Equivalent to pA = A.T.dot(inv(A.dot(A.T)))\n", "prox_f = (x, y) -> x + pA*(y - A*x);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We set the values of $\\gamma$ and $\\rho$.\n", "Try different values to speed up the convergence." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gamma = 0.1 # try 1, 10, 0.1\n", "rho = 1 # try 1, 1.5, 1.9" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Number of iterations." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "nbiter = 700;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "

\n", " \n", "__Exercise: Implement nbiter iterations of the Douglas-Rachford algorithm.\n", "Keep track of the evolution of the $\\ell^1$ norm.__

" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "s = zeros(N)\n", "En_array = zeros(nbiter)\n", "x = prox_f(s,y)\n", "s += rho.*(prox_gamma_g(2.*x - s, gamma) - x)\n", "En_array[1] = maximum(sum(abs(x), 1))\n", "for iter in 2 : nbiter # iter goes from 1 to nbiter\n", " x = prox_f(s,y)\n", " s += rho.*(prox_gamma_g(2.*x - s, gamma) - x)\n", " En_array[iter] = maximum(sum(abs(x), 1))\n", "end\n", "x_restored = x;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "We display the original and the recovered signals." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABQ8AAAJfCAYAAADRkCDWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X9wlfWd6PFPQiDBCmGBEn5lhVZrdb1KiyWTut5VS5fWXu7udlaZa7vyY6GLNbora10Yd1GnWna3LbVbsKhdikxd19puHTu2qGVGrcgsLdq6K9r2DlqihAjaBqQWhOT+4W1q4APNiclJTs7rNXNm6pPnOc/3+SZP+c475+RUdHR0dAQAAAAAwBEq+3sAAAAAAMDAJB4CAAAAACnxEAAAAABIiYcAAAAAQEo8BAAAAABS4iEAAAAAkBIPAQAAAICUeAgAAAAApMRDgN/h8ccf7+8hAAAAQL8QDwGO4dlnn42IiFdeeSV27tzZz6MBAACA4hMPAY7h+eefj0ceeSRWrFgR3/jGN/p7OAAAAFB0FR0dHR39PQiAgaajoyPOPffceMc73hHvec974qqrrurvIQEAAEDReeUhwDHMnTs31q9fH6ecckrs27evv4cDAAAARSceAiQqKiqivr4+nn766fiXf/mXuPXWW/t7SAAAAFB04iFQVl588cWoqamJBQsWdNn+ve99L4YOHdr59uSOjo5YtWpVXHvttXHBBRfE1Vdf3R/DBQAAgH4lHgJlZdKkSbFw4cL42te+Fj//+c8j4o1PVb7oooviwx/+cHz+85/v3Pecc86Je++9N84777x+Gi0AAP2pu794BhjMfGAKUHZefPHFeOc73xkLFiyIT3/609HQ0BAjRoyIxx57LN72trd17vfAAw/ErFmz+nGkAAD0t6amprjtttviZz/7WZx00knx7LPPRmNjY5x77rlx7733RmWl1+QAg5t4CJSlK664Im6//faYNm1aNDc3x5YtW2LSpEn9PSwAAAaY7v7iGWCwEg+BsvTzn/88pkyZEsOHD4/vf//7MX369P4eEgAAA9Rg/MXzeeedFwsXLoyPf/zj/T0UYIDz+mqgLN10000REXHo0KEYPXp0P48GAICB7Oqrr44DBw7EU089Fffdd1+fhcMpU6bEY4891ifPDdBT4iFQdj772c/GV77ylVi1alVUVVV1hkQAAMgU8ovnQ4cOFWNI/X5OoHyIh0BZuffee2Pp0qXx6U9/Oi6//PL4xCc+EevXr4/nnnuuv4cGAMAA1J1fPFdUVMSqVati6tSpcf7550dExI4dO+IjH/lIjBkzJk477bTYsGFDRES0t7fHlVdeGWPHjo1Ro0bF+973vtizZ08sXLgwduzYEX/8x38cJ554Ytx5553x9NNPx7nnnhujRo2K6dOnx6ZNm3p0zoiIH/zgB3HmmWfGyJEjY/HixdHe3t6X0wYMIuIhUDa2bt0aH/vYx+JjH/tYXHvttRERcc0110RlZaVXHwIAcJRCfvH80EMPxY9//ON48MEHo729PWbPnh2zZs2K1tbWWLt2bfzFX/xFtLa2xoMPPhiPP/54bN++PV5++eW49dZbo6amJr7yla/E7//+78eDDz4Yr776alx00UUxe/bsuOiii2L37t1xzTXXxOzZs+MXv/hFwec8ePBgfPSjH43LLrssXn755fiDP/iDePzxx4s5lUAJEw+BsvDCCy/E7Nmz4z3veU/cfvvtndsnTpwYCxYs8OpDAAC6KPQXz0uXLo2RI0fG8OHDY8uWLfHaa6/FlVdeGVVVVdHY2Bh/9Ed/FN/97ndj6NChsW/fvnj22WejsrIy3vve98aJJ5541PP953/+Z+erFIcOHRpz5syJU089tcurCbt7zs2bN0dVVVVcdtllMXTo0GhqaooJEyb03eQBg4p4CJSFyZMnx86dO+Oxxx6L6urqLl+75ZZb4uDBgzF16tR+Gh0AAANJT37xPHny5M7/vWPHjnjuuedi1KhRnY8NGzZES0tLfOADH4jFixfHJz7xiZgwYUJcffXV8frrrx81hp07d0Z9fX2XbSeddFLs3Lmz4HO2tLR02beioqLLfwMcT1V/DwAAAAAGkt/84jlzyy23xC233HLU9oqKis7/PWnSpDjttNPiqaeeSp/jqquuiquuuiqam5vjwgsvjDPOOCPmzZvX5TkmTpwYzc3NXY7bsWNH/Mmf/EnB53zkkUfihRde6LLtyP8GOBavPAQAAIBe1NDQEO3t7fHlL385Dh48GAcPHozvf//7sWPHjvjhD38YP/jBD+LQoUMxYsSIGDp0aAwZMiQiIsaNGxfPP/9853NERKxatSoOHToU99xzTzzzzDPxoQ99qOBzNjY2xuuvvx633XZbvP7667F69epoaWkpylwApU88BAAAgF5UVVUV999/fzzwwAMxadKkmDhxYtx0003R3t4ebW1tsWDBghg1alSceuqpcc45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Y8c0ORaTqTctLQ1hYWFubVpaWnDu3DlNjslvv/2GixcvIjY2FkDw1y8i2LhxIyorK3H48GEkJSW5ndf6Gpiofk+0tgZGczqdGBwc1PzcX83IGHiitfnPzMzEqVOn0NDQ4Pq66667sH79ejQ0NCA5OVnZdUAzC/OounkU0H4emQotPR6pnkcBZlJPVM+kzKNBmEen5WNZZriKigoJDw+XPXv2yM8//yxPPfWUGAwGsdvtge6azz377LNSU1MjbW1t8sMPP4jFYpHo6GhxOBwiIlJWViYGg0E+++wzOXnypOTk5EhSUpL09/cHuOdT09PTI/X19VJfXy8A5M0335T6+no5e/asiEyu3g0bNkhCQoIcPnxYTpw4IWazWcxmc6BK8srV6u/p6ZHnnntObDabtLW1ybfffivLli2TRYsWycDAgOsawVx/fn6+REZGSk1NjbS3t7u++vr6XG20vAYmql/ra6C4uFisVqu0tbXJyZMnpbi4WHQ6nXzzzTciou25H3G1MdD6/I/nr59uJ6LGOqDgwDyq3TwqwkyqciZVPY+KMJOqnkmZR8cKxjzKzcM/7dq1SxISEkSv10t6erocPXo00F3yi7Vr10psbKzo9Xq56aabZO3atdLa2uo673Q65eWXX5aYmBgJDw+XzMxMaWlpCWCPr82RI0cEwJiv3NxcEZlcvf39/fL0009LVFSUXHfddfLQQw9Je3t7AKrx3tXq7+vrk5UrV8r8+fMlLCxMEhMT5cknnxzzJCWY6/dUOwD58MMPXW20vAYmql/ra+Dxxx+XxMRE0ev1Mn/+fMnMzHSFNBFtz/2Iq42B1ud/PKPDmgrrgIIH8+gVWsujIsykKmdS1fOoCDOp6pmUeXSsYMyjOhER3/89IxEREREREREREQU75d/zkIiIiIiIiIiIiDzj5iERERERERERERF5xM1DIiIiIiIiIiIi8oibh0REREREREREROQRNw+JiIiIiIiIiIjII24eEhERERERERERkUfcPCQiIiIiIiIiIiKPuHlIREREREREREREHnHzkIiIiIiIiIiIiDzi5iERERERERERERF5xM1DIiIiIiIiIiIi8oibh0REREREREREROTR/wMZXshplya2QgAAAABJRU5ErkJggg==", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, (subfig1, subfig2) = subplots(1, 2, figsize = (16, 7)) # one figure with two horizontal subfigures\n", "subfig1[:stem](xsharp)\n", "subfig1[:set_ylim](0, 1.1)\n", "subfig2[:stem](x_restored)\n", "subfig2[:set_ylim](0, 1.1)\n", "subfig1[:set_title](L\"$x^\\sharp$\")\n", "subfig2[:set_title](L\"$x_\\mathrm{restored}$\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Since the original signal is highly sparse, it is perfectly recovered.\n", "\n", "We display the convergence speed of the $\\ell^1$ norm on the first half iterations, in log\n", "scale." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1-element Array{Any,1}:\n", " PyObject " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(log10(En_array - minimum(En_array)))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The convergence is linear in practice. Convergence up to machine precision (1e-14 here) is achieved after a few hundreds of iterations." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "

\n", " \n", "__Exercise: test the recovery of a less sparse signal.\n", "What do you observe?__

" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "400-element Array{Float64,1}:\n", " -1.08247e-15\n", " 1.0 \n", " -8.88178e-16\n", " 1.22125e-15\n", " 3.33067e-16\n", " 6.66134e-16\n", " 0.0 \n", " -1.88738e-15\n", " 3.16414e-15\n", " -2.22045e-16\n", " 1.66533e-15\n", " 1.0 \n", " 2.10942e-15\n", " â‹® \n", " 1.0 \n", " 1.16573e-15\n", " 3.60822e-16\n", " 2.33147e-15\n", " -3.33067e-16\n", " -1.58207e-15\n", " 1.22125e-15\n", " 1.47105e-15\n", " 3.33067e-16\n", " 1.11022e-16\n", " 1.19349e-15\n", " 7.63278e-16" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S = 31\n", "srand(0)\n", "sel = randperm(N)\n", "sel = sel[1 : S] # indices of the nonzero elements of xsharp\n", "xsharp = zeros(N)\n", "xsharp[sel] = 1\n", "\n", "y = A*xsharp\n", "\n", "gamma = 1\n", "rho = 1 \n", "nbiter = 1000\n", "s = zeros(N)\n", "En_array = zeros(nbiter)\n", "x = prox_f(s,y)\n", "s += rho.*(prox_gamma_g(2*x - s, gamma) - x)\n", "En_array[1] = norm(x, 1)\n", "for iter in 2 : nbiter\n", " x = prox_f(s,y)\n", " s += rho.*(prox_gamma_g(2*x - s, gamma) - x)\n", " En_array[iter] = norm(x, 1)\n", "end\n", "x_restored = x" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABQ8AAAJfCAYAAADRkCDWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X90VeWdP/oPIZBINWGAISDyNXSqrdQpKBZuap2pNp20uuh0uqYyizooVFroBDumamHZBTi1w7ftlHFmBGm1iF6ZDtqOXXTZiTLprT9o7lCx9AdK23vBEiVE0JEg2qAk9w+vmUYeyDknOck58fVaa68lO/t5ns+z93P2OnlnH8+wrq6urgAAAAAAeJOSwS4AAAAAAChMwkMAAAAAIEl4CAAAAAAkCQ8BAAAAgCThIQAAAACQJDwEAAAAAJKEhwAAAABAkvAQAAAAAEgSHgL04sc//vFglwAAAACDQngIcAK7du2KiIgXXngh9u3bN8jVAAAAwMATHgKcwNNPPx0PP/xwrFq1Kr7zne8MdjkAAAAw4IZ1dXV1DXYRAIWmq6srLrroonj7298e5513Xlx77bWDXRIAAAAMOE8eApzAlVdeGXfffXecddZZcfjw4cEuBwAAAAac8BAgYdiwYTF58uTYuXNn/PM//3N84xvfGOySAAAAYMAJD4G3lGeffTbKy8tjwYIFPfb/53/+Z4wYMaL748ldXV1x6623xo033hiXXHJJXHfddYNRLgAAAAwq4SHwljJp0qS4+uqr45577onf/va3EfH6typ/4hOfiI985CPx9a9/vfvYCy+8ML73ve/FBz7wgUGqFgCAwZTpH54BhjJfmAK85Tz77LPxR3/0R7FgwYL40pe+FLNmzYrTTjstHnvssXjb297WfdyDDz4YdXV1g1gpAACDrb6+Pr75zW/Gb37zmzjzzDNj165dUVNTExdddFF873vfi5ISz+QAQ5vwEHhLWrJkSdx+++0xffr0aGlpiW3btsWkSZMGuywAAApMpn94BhiqhIfAW9Jvf/vbqK6ujlNOOSUeffTRmDFjxmCXBABAgRqKf3j+wAc+EFdffXVcccUVg10KUOA8Xw28JX35y1+OiIjXXnstxowZM8jVAABQyK677rro6OiIn//857F58+a8BYfV1dXx2GOP5aVvgFwJD4G3nK997Wtxxx13xK233hqlpaXdQSIAAKRk84fn1157bSBKGvQxgbcO4SHwlvK9730vli5dGl/60pfib/7mb+LTn/503H33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pqipqUm2ufDCC2Pfvn3x0ksvde/79a9/HSUlJXHGGWck25SVlUVFRUWPDQDgrUh4CABAUWloaIjbb7897rrrrnjqqadi8eLFceTIke5vX162bFnMmzev+/i5c+fG2LFjY/78+fHkk0/GI488Etdff30sWLAgTjnllMGaBgBAUfCFKQAAFJU5c+bEgQMHYvny5bF///6YPn16NDY2dn+JSmtra+zdu7f7+FNPPTW2bNkSS5YsiQsuuCDGjh0bl19+edx8882DNQUAgKIhPAQAoOjU19dHfX198mcbNmw4bt+73vWu2LJlS56rAgAYenxsGQAAAABIEh4CAAAAAEnCQwAAAAAgSXgIAAAAACQJDwEAAACAJOEhAAAAAJAkPAQAAAAAkoSHAAAAAECS8BAAAAAASBIeAgAAAABJwkMAAAAAIEl4CAAAAAAkCQ8BAAAAgCThIQAAAACQlFN4uGbNmqiuro7y8vKYNWtWbNu27aTHd3R0xI033hhnnnlmlJWVRXV1daxfvz6nggEAAACAgVGabYNNmzZFQ0NDrFu3LmbNmhW33HJL1NXVxa9+9asYP358ss3ll18ebW1t8a1vfSve8Y53RGtra3R2dva5eAAAAAAgf7IOD1evXh0LFy6M+fPnR0TEunXr4oEHHoj169fH0qVLjzu+sbExHn744di9e3eMGTMmIiKqq6v7VjUAAAAAkHdZfWz56NGjsX379qitrf2fDkpKora2Npqbm5NtNm/eHBdccEF89atfjUmTJsXZZ58d1113XbzyyisnHKejoyPa29t7bAAAAADAwMrqycODBw/GsWPHoqqqqsf+qqqq2LVrV7LN7t2747HHHovy8vK4//774+DBg/HZz342nn/++bjzzjuTbVatWhU33XRTNqUBAAAAAP0s79+23NnZGcOGDYuNGzfGzJkz49JLL43Vq1fHXXfddcKnD5ctWxaHDh3q3lpaWvJdJgAAAADwJlk9eThu3LgYPnx4tLW19djf1tYWEyZMSLaZOHFiTJo0KSorK7v3nXPOOdHV1RXPPPNMnHXWWce1KSsri7KysmxKAwAAAAD6WVZPHo4cOTJmzJgRTU1N3fs6Ozujqakpampqkm0uvPDC2LdvX7z00kvd+379619HSUlJnHHGGTmWDQAAAADkW9YfW25oaIjbb7897rrrrnjqqadi8eLFceTI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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, (subfig1, subfig2) = subplots(1, 2, figsize = (16, 7)) # one figure with two horizontal subfigures\n", "subfig1[:stem](xsharp)\n", "subfig1[:set_ylim](0, 1.1)\n", "subfig2[:stem](x_restored)\n", "subfig1[:set_title](L\"$x^\\sharp$\")\n", "subfig2[:set_title](L\"$x_\\mathrm{restored}$\")" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1-element Array{Any,1}:\n", " PyObject " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(log10(En_array - minimum(En_array)))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Convergence is much slower in this setting." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Julia 0.5.0", "language": "julia", "name": "julia-0.5" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.5.0" } }, "nbformat": 4, "nbformat_minor": 0 }