{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from traitlets.config.manager import BaseJSONConfigManager\n", "import jupyter_core\n", "#path = \"/home/damian/miniconda3/envs/rise_latest/etc/jupyter/nbconfig\"\n", "path = \"/Users/i.oseledets/anaconda2/envs/teaching/etc/jupyter/nbconfig\"\n", "cm = BaseJSONConfigManager(config_dir=path)\n", "cm.update(\"livereveal\", {\n", " \"theme\": \"sky\",\n", " \"transition\": \"zoom\",\n", " \"start_slideshow_at\": \"selected\",\n", " \"scroll\": True\n", "})" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Lecture 14: Structured matrices, FFT, convolutions, Toeplitz matrices" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Previous lecture\n", "\n", "- Iterative methods for eigensolvers (Lanczos, Arnoldi, inverse iteration, PINVIT, LOBPCG, Jacobi-Davidson)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Other structured matrices\n", "\n", "- Up to now, we discussed preconditioning only for **sparse matrices**\n", "- But iterative methods work well for any matrices that have fast black-box matrix-by-vector product\n", "- Important class of such matrices are **Toeplitz matrices** (and **Hankel matrices**) and their **multilevel** variants\n", "\n", "They are directly connected to the **convolution** operation and **Fast Fourier Transform**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Convolution \n", "\n", "One of the key operation in signal processing/machine learning is the **convolution of two functions**.\n", "\n", "Let $x(t)$ and $y(t)$ be two given functions. Their convolution is defined as\n", "\n", "$$(x * y)(t) = \\int_{-\\infty}^{\\infty} x(\\tau) y(t - \\tau) d \\tau.$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Convolution theorem and Fourier transform\n", "\n", "A well-known fact: a *convolution* in the **time domain** is a *product* in the **frequency domain**. Time-frequency transformation is given by the **Fourier transform**:\n", "\n", "$$\\widehat{x}(w) = (\\mathcal{F}(x))(w) = \\int_{-\\infty}^{\\infty} e^{i w t} x(t) dt.$$\n", "\n", "Then, \n", "\n", "$$\\mathcal{F}(x * y) = \\mathcal{F}(x) \\mathcal{F}(y).$$\n", "\n", "Thus, the \"algorithm\" for the computation of the convolution can be:\n", "\n", "1. Compute Fourier transform of $x(t)$ and $y(t)$. \n", "2. Compute their product\n", "3. Compute inverse Fourier transform" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Discrete convolution operation\n", "\n", "$$(x * y)(t) = \\int_{-\\infty}^{\\infty} x(\\tau) y(t - \\tau) d \\tau.$$\n", "\n", "Let us approximate the integral by a quadrature sum on a uniform grid, and store the signal at equidistant points.\n", "\n", "Then we are left with the summation\n", "\n", "$$z_i = \\sum_{j=0}^{n-1} x_j y_{i - j},$$\n", "\n", "which is called **discrete convolution**. This can be thought as an application of a filter with coefficients $x$ to a signal $y$. \n", "\n", "There are different possible filters for different purposes, but they all utilize the **shift-invariant structure**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Discrete convolution and Toeplitz matrices\n", "\n", "A discrete convolution can be thought as a matrix-by-vector product:\n", "$$z_i = \\sum_{j=0}^{n-1} x_j y_{i - j}, \\Leftrightarrow z = Ax$$\n", "\n", "where the matrix $A$ elements are given as $a_{ij} = y_{i-j}$, i.e., they depend only on the difference between the row index and the column index.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Toeplitz matrices: definition\n", "\n", "A matrix is called **Toeplitz** if its elements are defined as\n", "\n", "$$a_{ij} = t_{i - j}.$$\n", "\n", "A Toeplitz matrix is completely defined by its first column and first row (i.e., $2n-1$ parameters).\n", "\n", "It is a **dense matrix**, however it is a **structured matrix** (i.e., defined by $\\mathcal{O}(n)$ parameters).\n", "\n", "And the main operation in the discrete convolution is the product of Toeplitz matrix by vector.\n", "\n", "Can we compute it faster than $\\mathcal{O}(n^2)$?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Toeplitz and circulant matrix\n", "\n", "For a special class of Toeplitz matrices, named **circulant matrices** the fast matrix-by-vector product can be done.\n", "\n", "A matrix $C$ is called **circulant**, if \n", "\n", "$$C_{ij} = c_{i - j \\mod n},$$\n", "\n", "i.e. it periodicaly wraps\n", "\n", "$$C = \\begin{bmatrix} c_0 & c_1 & c_2 & c_3 \\\\\n", " c_3 & c_0 & c_1 & c_2 \\\\\n", " c_2 & c_3 & c_0 & c_1 \\\\\n", " c_1 & c_2 & c_3 & c_0 \\\\\n", " \\end{bmatrix}.\n", " $$\n", " \n", " These matrices have the same **eigenvectors**, given by the Discrete Fourier Transform (DFT)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Spectral theorem for circulant matrices\n", "\n", "**Theorem:**\n", "\n", "Any circulant matrix can be represented in the form\n", "\n", "$$C = \\frac{1}{n} F^* \\Lambda F,$$\n", "\n", "where $F$ is the **Fourier matrix** with the elements\n", "\n", "$$F_{kl} = w_n^{kl}, \\quad k, l = 0, \\ldots, n-1, \\quad w_n = e^{-\\frac{2 \\pi i}{n}},$$\n", "\n", "and matrix $\\Lambda = \\text{diag}(\\lambda)$ is the diagonal matrix and\n", "\n", "$$\\lambda = F c, $$\n", "\n", "where $c$ is the first column of the circulant matrix $C$.\n", "\n", "The proof will be later: now we need to study the FFT matrix." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fourier matrix\n", "\n", "The Fourier matrix is defined as:\n", "$$\n", "F_n =\n", "\\begin{pmatrix}\n", "1 & 1 & 1 & \\dots & 1 \\\\\n", "1 & w^{1\\cdot 1}_n & w^{1\\cdot 2}_n & \\dots & w^{1\\cdot (n-1)}_n\\\\\n", "1 & w^{2\\cdot 1}_n & w^{2\\cdot 2}_n & \\dots & w^{2\\cdot (n-1)}_n\\\\\n", "\\dots & \\dots & \\dots &\\dots &\\dots \\\\\n", "1 & w^{(n-1)\\cdot 1}_n & w^{(n-1)\\cdot 2}_n & \\dots & w^{(n-1)\\cdot (n-1)}_n\\\\\n", "\\end{pmatrix},\n", "$$\n", "or equivalently\n", "$$\n", "F_n = \\{ w_n^{kl} \\}_{k,l=0}^{n-1},\n", "$$\n", "where $$w_n = e^{-\\frac{2\\pi i}{n}}.$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "**Properties:**\n", "* Symmetric (not Hermitian!)\n", "* Unitary up to a scaling factor: $F_n^* F_n = F_n F_n^* = nI$ (check this fact). Therefore $F_n^{-1} = \\frac{1}{n}F^*_n$\n", "* Can be multiplied by a vector (called dicrete Fourier transform or DFT) with $\\mathcal{O}(n \\log n)$ complexity (called fast Fourier transform or FFT)! FFT helps to analyze spectrum of a signal and, as we will see later, helps to do fast mutiplications with certain types of matrices." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n/wOXzvrbWWA/ZAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "\n", "N = 1000\n", "dt = 1.0 / 800.0\n", "x = np.linspace(0.0, N*dt, N)\n", "y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) + 0.2*np.sin(300.0 * 2.0*np.pi*x)\n", "plt.plot(x, y)\n", "plt.xlabel('Time')\n", "plt.ylabel('Signal')\n", "plt.title('Initial signal')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "yf = np.fft.fft(y)\n", "xf = np.linspace(0.0, 1.0/(2.0*dt), N//2)\n", "plt.plot(xf, 2.0/N * np.abs(yf[0:N//2])) #Note: N/2 to N will give negative frequencies\n", "plt.xlabel('Frequency')\n", "plt.ylabel('Amplitude')\n", "plt.title('Discrete Fourier transform')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fast Fourier transform (FFT)\n", "Here we consider a matrix interpretation of the standard Cooley-Tukey algorithm (1965), which has underlying **divide and conquerer** idea. Note that in packages more advanced versions are used.\n", "\n", "Let $n$ be a power of 2. First of all we permute the rows of the Fourier matrix such that the first $n/2$ rows of the new matrix had row numbers $1,3,5,\\dots,n-1$ and the last $n/2$ rows had row numbers $2,4,6\\dots,n$. \n", "This permutation can be expressed in terms of multiplication by permutation matrix $P_n$:\n", "$$\n", "P_n =\n", "\\begin{pmatrix}\n", "1 & 0 & 0 & 0 & \\dots & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 &\\dots & 0 & 0 \\\\\n", "\\vdots & & & & & & \\vdots \\\\\n", "0 & 0 & 0 & 0 &\\dots & 1 & 0 \\\\\n", "\\hline\n", "0 & 1 & 0 & 0 & \\dots & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 &\\dots & 0 & 0 \\\\\n", "\\vdots & & & & & & \\vdots \\\\\n", "0 & 0 & 0 & 0 &\\dots & 0 & 1 \n", "\\end{pmatrix},\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Hence,\n", "$$\n", "P_n F_n =\n", "\\begin{pmatrix}\n", "1 & 1 & 1 & \\dots & 1 \\\\\n", "1 & w^{2\\cdot 1}_n & w^{2\\cdot 2}_n & \\dots & w^{2\\cdot (n-1)}_n\\\\\n", "1 & w^{4\\cdot 1}_n & w^{4\\cdot 2}_n & \\dots & w^{4\\cdot (n-1)}_n\\\\\n", "\\vdots & & & & \\vdots\\\\\n", "1 & w^{(n-2)\\cdot 1}_n & w^{(n-2)\\cdot 2}_n & \\dots & w^{(n-2)\\cdot (n-1)}_n\\\\\n", "\\hline\n", "1 & w^{1\\cdot 1}_n & w^{1\\cdot 2}_n & \\dots & w^{1\\cdot (n-1)}_n\\\\\n", "1 & w^{3\\cdot 1}_n & w^{3\\cdot 2}_n & \\dots & w^{3\\cdot (n-1)}_n\\\\ \n", "\\vdots & & & & \\vdots\\\\\n", "1 & w^{(n-1)\\cdot 1}_n & w^{(n-1)\\cdot 2}_n & \\dots & w^{(n-1)\\cdot (n-1)}_n\\\\\n", "\\end{pmatrix},\n", "$$\n", "Now let us imagine that we separated its columns and rows by two parts each of size $n/2$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "As a result we get $2\\times 2$ block matrix that has the following form\n", "$$\n", "P_n F_n =\n", "\\begin{pmatrix}\n", "\\left\\{w^{2kl}_n\\right\\} & \\left\\{w_n^{2k\\left(\\frac{n}{2} + l\\right)}\\right\\} \\\\\n", "\\left\\{w_n^{(2k+1)l}\\right\\} & \\left\\{w_n^{(2k+1)\\left(\\frac{n}{2} + l\\right)}\\right\\}\n", "\\end{pmatrix},\n", "\\quad k,l = 0,\\dots, \\frac{n}{2}-1.\n", "$$\n", "So far it does not look like something that works faster :) But we will see that in a minute.\n", "Lets have a more precise look at the first block $\\left\\{w^{2kl}_n\\right\\}$:\n", "$$\n", "w^{2kl}_n = e^{-2kl\\frac{2\\pi i}{n}} = e^{-kl\\frac{2\\pi i}{n/2}} = w^{kl}_{n/2}.\n", "$$\n", "So this block is exactly twice smaller Fourier matrix $F_{n/2}$!\n", "\n", "\n", "The block $\\left\\{w_n^{(2k+1)l}\\right\\}$ can be written as\n", "$$\n", "w_n^{(2k+1)l} = w_n^{2kl + l} = w_n^{l} w_n^{2kl} = w_n^{l} w_{n/2}^{kl},\n", "$$\n", "which can be written as $W_{n/2}F_{n/2}$, where $$W_{n/2} = \\text{diag}(1,w_n,w_n^2,\\dots,w_n^{n/2-1}).$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Doing the same tricks for the other blocks we will finally get\n", "$$\n", "P_n F_n =\n", "\\begin{pmatrix}\n", "F_{n/2} & F_{n/2} \\\\\n", "F_{n/2}W_{n/2} & -F_{n/2}W_{n/2}\n", "\\end{pmatrix} =\n", "\\begin{pmatrix}\n", "F_{n/2} & 0 \\\\\n", "0 & F_{n/2}\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "I_{n/2} & I_{n/2} \\\\\n", "W_{n/2} & -W_{n/2}\n", "\\end{pmatrix}.\n", "$$\n", "Thus, we reduced multiplication by $F_n$ to 2 multiplications by $F_{n/2}$ and cheap multiplications by diagonal matrices. If we apply the obtained expressions recursively to $F_{n/2}$, we will get $\\mathcal{O}(n\\log n)$ complexity." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full matvec time = 0.9682447910308838\n", "FFT time = 0.0013637542724609375\n", "Relative error = 1.5547260406e-12\n" ] } ], "source": [ "#FFT vs full matvec\n", "import time\n", "import numpy as np\n", "import scipy as sp\n", "import scipy.linalg\n", "\n", "n = 10000\n", "F = sp.linalg.dft(n)\n", "x = np.random.randn(n)\n", "\n", "t = time.time()\n", "y_full = F.dot(x)\n", "print('Full matvec time =', time.time() - t)\n", "\n", "t = time.time()\n", "y_fft = np.fft.fft(x)\n", "print('FFT time =', time.time() - t)\n", "\n", "print('Relative error =', (np.linalg.norm(y_full - y_fft)) / np.linalg.norm(y_full))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Circulant matrices\n", "\n", "\n", "\n", "FFT helps to multiply fast by certain types of matrices. We start from a circulant matrix:\n", "\n", "$$\n", "C =\n", "\\begin{pmatrix} \n", "c_0 & c_{n-1} & c_{n-2} & \\dots & c_1 \\\\\n", "c_{1} & c_{0} & c_{n-1} & \\dots & c_2 \\\\\n", "c_{2} & c_{1} & c_0 & \\dots & c_3 \\\\\n", "\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n", "c_{n-1} & c_{n-2} & c_{n-3} & \\dots & c_0\n", "\\end{pmatrix}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "**Theorem.** \n", "Let $C$ be a circulant matrix of size $n\\times n$ and let $c$ be it's first column , then\n", "$$\n", "C = \\frac{1}{n} F_n^* \\text{diag}(F_n c) F_n \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "*Proof.* \n", "Consider a number $$\\lambda (\\omega) = c_0 + \\omega c_1 + \\dots + \\omega^{n-1} c_{n-1},$$ where $\\omega$ is any number such that $\\omega^n=1$. Lets multiply $\\lambda$ by $1,\\omega,\\dots, \\omega^{n-1}$:\n", "$$\n", "\\begin{split}\n", "\\lambda & = c_0 &+& \\omega c_1 &+& \\dots &+& \\omega^{n-1} c_{n-1},\\\\\n", "\\lambda\\omega & = c_{n-1} &+& \\omega c_0 &+& \\dots &+& \\omega^{n-1} c_{n-2},\\\\\n", "\\lambda\\omega^2 & = c_{n-2} &+& \\omega c_{n-1} &+& \\dots &+& \\omega^{n-1} c_{n-3},\\\\\n", "&\\dots\\\\\n", "\\lambda\\omega^{n-1} & = c_{1} &+& \\omega c_{2} &+& \\dots &+& \\omega^{n-1} c_{0}.\n", "\\end{split}\n", "$$\n", "Therefore,\n", "$$\n", "\\lambda(\\omega) \\cdot \\begin{pmatrix} 1&\\omega & \\dots& \\omega^{n-1} \\end{pmatrix} =\n", "\\begin{pmatrix} 1&\\omega&\\dots& \\omega^{n-1} \\end{pmatrix} \\cdot C.\n", "$$\n", "Writing this for $\\omega = 1,w_n, \\dots, w_n^{n-1}$ we get\n", "$$\n", "\\Lambda F_n = F_n C\n", "$$\n", "and finally\n", "$$\n", "C = \\frac{1}{n} F^*_n \\Lambda F_n, \\quad \\text{where}\\quad \\Lambda = \\text{diag}(F_nc) \\qquad\\blacksquare\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fast matvec with circulant matrix\n", "\n", "Representation $C = \\frac{1}{n} F^* \\text{diag}(F_n c) F_n $ gives us an explicit way to multiply a vector $x$ by $C$ in $\\mathcal{O}(n\\log n)$ operations. Indeed,\n", "$$\n", "Cx = \\frac{1}{n} F_n^* \\text{diag}(F_n c) F_n x = \\text{ifft}\\left( \\text{fft}(c) \\circ \\text{fft}(x)\\right)\n", "$$\n", "where $\\circ$ denotes elementwise product (Hadamard product) of two vectors (since $\\text{diag}(a)b = a\\circ b$) and ifft denotes inverse Fourier transform $F^{-1}_n$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full matvec time = 0.012044191360473633\n", "FFT time = 0.0012187957763671875\n", "Relative error = 2.43405303598e-15\n" ] } ], "source": [ "import time\n", "import numpy as np\n", "import scipy as sp\n", "import scipy.linalg\n", "\n", "def circulant_matvec(c, x):\n", " return np.fft.ifft(np.fft.fft(c) * np.fft.fft(x))\n", "\n", "n = 5000\n", "c = np.random.random(n)\n", "C = sp.linalg.circulant(c)\n", "x = np.random.randn(n)\n", "\n", "t = time.time()\n", "y_full = C.dot(x)\n", "print('Full matvec time =', time.time() - t)\n", "\n", "t = time.time()\n", "y_fft = circulant_matvec(c, x)\n", "print('FFT time =', time.time() - t)\n", "\n", "print('Relative error =', (np.linalg.norm(y_full - y_fft)) / np.linalg.norm(y_full))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Toeplitz matrices" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Now we get back to Toeplitz matrices!\n", "$$\n", "T =\n", "\\begin{pmatrix} \n", "t_0 & t_{-1} & t_{-2} & t_{-3}& \\dots & t_{1-n} \\\\\n", "t_{1} & t_{0} & t_{-1} & t_{-2}& \\dots & t_{2-n} \\\\\n", "t_{2} & t_{1} & t_0 & t_{-1} &\\dots & t_{3-n} \\\\\n", "t_{3} & t_{2} & t_1 & t_0 & \\dots & t_{4-n} \\\\\n", "\\dots & \\dots & \\dots & \\dots & \\dots & \\dots\\\\\n", "t_{n-1} & t_{n-2} & t_{n-3} & t_{n-4} &\\dots &t_0\n", "\\end{pmatrix},\n", "$$\n", "or equivalently $T_{ij} = t_{i-j}$.\n", "\n", "Matvec operation can be written as\n", "$$\n", "y_i = \\sum_{j=1}^n t_{i-j} x_j,\n", "$$\n", "which can be interpreted as a discrete convolution of filter $t_i$ and signal $x_i$. \n", "For simplicity the size of the filter $t$ is such that the sizes of the input and output signals are the same. Generally, filter size can be arbitrary.\n", "\n", "Fast convolution computation has a variety of applications, for instance, in signal processing or partial differential and integral equations. For instance, here is the smoothing of a signal:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n55Pb3pztpp6PBKCzhIRG13xym3o+0hM6S0hoNOyW2zTbTXpCZwkJjYbdclthvgFKPhKMzhISGvV8\ncpuZUVSQR7OG3SQAnSUkNC2xBHkGBUo+Oas4P089HwlEZwkJTWs8oSG3HFdYkEerej4SgM4UEprm\nWEJDbjmuSD0fCUhnCglNSzxBUUF+1GFIhIoKlHwkGCUfCU1LLEFRasaT5Kaigjx9z0cCUfKR0LTE\ndM0n12nYTYLSmUJCo+QjRQV5uqu1BKIzhYRGs92kKF+z3SQYnSkkNC1xzXbLdZpwIEHpTCGhadaw\nW87ThAMJSmcKCU3ymo+mWucyTTiQoJR8JDSaai0adpOglHwkNC2acJDzlHwkKJ0pJDStmnCQ8wrz\n82iJe9RhSB+gM4WERt/zkeKCPFpi8ajDkD5AZwoJjZKPaLabBKUzhYQmOeFAs91ymWa7SVBKPhKa\nZk04yHlFBXkkHGLq/Ug3Ap0pzOwcM1tpZmvM7Np0ByV9j7trqrW8+ceHht6kO90mHzPLB34GzANm\nAB80sxnpDkz6llgiOcNJPZ/cVpia7dga04w3ObiCAGWOA9a4+zoAM7sDuBBY0dUG2/Y28c0Hu1wt\n/ZCSj8A///2/9+hrDCjU9T/pWpDkMwbY1O79ZmBux0JmNh+YD1A8ejILX3w9lACl7ygfUMjhowdH\nHYZE6PDRZQwpLeTel7ZEHYpkOXM/ePfYzN4PnOPuV6fefxiY6+7XdLXNnDlzvKamJtRARUQku5nZ\nEnefE6RskDGSLcC4du/HppaJiIj0SpDksxiYYmYTzawIuBS4P71hiYhIf9btNR93j5nZNcCjQD5w\ni7svT3tkIiLSb3V7zadXlZrVAytDr7jvqADqog4iQmq/2p/L7Yfc/QwmuPuIIAWDzHbrjZVBLzr1\nR2ZWo/ar/VHHEZVcbz/oMwhCX8oQEZGMU/IREZGMS1fyWZCmevsKtT+3qf2iz6AbaZlwICIicjAa\ndhMRkYxT8hERkYxT8hERkYxT8hERkYxT8hERkYxT8hERkYxT8hERkYxT8hERkYxT8hERkYxT8hEJ\nyMzGm1mDmeWn3j9lZldHHZdIX6TkI9IJM9tgZgdSyabBzBqAmLsPcvd4J+WvNLO/RhCqSJ+k5CPS\ntfNTyabttTVdOzKzdD1bSyQrKfmIBGRm1WbmHROFmU0HbgJOSPWS9qSWF5vZ9Wb2upltN7ObzGxA\n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\nVQEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy import signal\n", "alpha = 0.01\n", "sig = np.repeat([0., 1., 0.], 100)\n", "filt = np.exp(-alpha * (np.arange(100)-50)**2)\n", "filtered = signal.convolve(sig, filt, mode='same') / sum(filt)\n", "\n", "fig, (ax_orig, ax_filt, ax_filtered) = plt.subplots(3, 1, sharex=True)\n", "ax_orig.plot(sig)\n", "ax_orig.margins(0, 0.1)\n", "ax_filt.plot(filt)\n", "ax_filt.margins(0, 0.1)\n", "ax_filtered.plot(filtered)\n", "ax_filtered.margins(0, 0.1)\n", "\n", "ax_orig.set_title('Original signal')\n", "ax_filt.set_title('Filter')\n", "ax_filtered.set_title('Convolution')\n", "\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fast matvec with Toeplitz matrix\n", "\n", "Key point: the multiplication by a Toeplitz matrix can be reduced to the multiplication by a circulant.\n", "Indeed, every Toeplitz matrix of size $n\\times n$ can be embedded into a Circulant matrix $C$ of size $2n \\times 2n$:\n", "$$\n", "C = \n", "\\begin{pmatrix}\n", "T & \\dots \\\\\n", "\\dots & \\dots\n", "\\end{pmatrix}.\n", "$$\n", "The $3\\times 3$ matrix $T = \\begin{pmatrix} \n", "t_0 & t_{-1} & t_{-2} \\\\\n", "t_{1} & t_{0} & t_{-1} \\\\\n", "t_{2} & t_{1} & t_0 \\\\\n", "\\end{pmatrix}$ \n", "can be embedded as follows\n", "$$\n", "C = \n", "\\begin{pmatrix} \n", "t_0 & t_{-1} & t_{-2} & t_{2} & t_{1}\\\\\n", "t_{1} & t_{0} & t_{-1} & t_{-2} & t_{2} \\\\\n", "t_{2} & t_{1} & t_0 & t_{-1} & t_{-2} \\\\\n", "t_{-2}& t_{2} & t_{1} & t_0 & t_{-1} \\\\\n", "t_{-1} & t_{-2} & t_{2} & t_{1} & t_0 \n", "\\end{pmatrix}.\n", "$$\n", "For matvec \n", "$ \\begin{pmatrix} y_1 \\\\ y_2 \\\\ y_3 \\end{pmatrix}=\n", "\\begin{pmatrix} \n", "t_0 & t_{-1} & t_{-2} \\\\\n", "t_{1} & t_{0} & t_{-1} \\\\\n", "t_{2} & t_{1} & t_0 \\\\\n", "\\end{pmatrix}\n", "\\begin{pmatrix} x_1 \\\\ x_2 \\\\ x_3 \\end{pmatrix}$\n", "we pad vector $x$ with zeros:\n", "$$\n", "\\begin{pmatrix} y_1 \\\\ y_2 \\\\ y_3 \\\\ \\star \\\\ \\star \\end{pmatrix} =\n", "\\begin{pmatrix} \n", "t_0 & t_{-1} & t_{-2} & t_{2} & t_{1}\\\\\n", "t_{1} & t_{0} & t_{-1} & t_{-2} & t_{2} \\\\\n", "t_{2} & t_{1} & t_0 & t_{-1} & t_{-2} \\\\\n", "t_{-2}& t_{2} & t_{1} & t_0 & t_{-1} \\\\\n", "t_{-1} & t_{-2} & t_{2} & t_{1} & t_0 \n", "\\end{pmatrix}\n", "\\begin{pmatrix} x_1 \\\\ x_2 \\\\ x_3 \\\\ 0 \\\\ 0 \\end{pmatrix}=\n", "\\text{ifft}(\\text{fft}(\\begin{pmatrix} t_0 \\\\ t_{1} \\\\ t_{2} \\\\ t_{-2} \\\\ t_{-1} \\end{pmatrix})\\circ \\text{fft}(\\begin{pmatrix} x_1 \\\\ x_2 \\\\ x_3 \\\\ 0 \\\\ 0 \\end{pmatrix})).\n", "$$\n", "Note that you do not need to form and store the whole matrix $T$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Multilevel Toeplitz matrices\n", "\n", "The 2-dimensional convolution is defined as \n", "$$\n", "y_{i_1i_2} = \\sum_{j_1,j_2=1}^n t_{i_1-j_1, i_2-j_2} x_{j_1 j_2}.\n", "$$\n", "Note that $x$ and $y$ are 2-dimensional arrays and $T$ is 4-dimensional. \n", "To reduce this expression to matrix-by-vector product we have to reshape $x$ and $y$ into long vectors:\n", "$$\n", "\\text{vec}(x) = \n", "\\begin{pmatrix}\n", "x_{11} \\\\ \\vdots \\\\ x_{1n} \\\\ \\hline \\\\ \\vdots \\\\ \\hline \\\\ x_{n1} \\\\ \\vdots \\\\ x_{nn}\n", "\\end{pmatrix},\n", "\\quad\n", "\\text{vec}(y) = \n", "\\begin{pmatrix}\n", "y_{11} \\\\ \\vdots \\\\ y_{1n} \\\\ \\hline \\\\ \\vdots \\\\ \\hline \\\\ y_{n1} \\\\ \\vdots \\\\ y_{nn}\n", "\\end{pmatrix}.\n", "$$\n", "In this case matrix $T$ is **block Toeplitz with Toeplitz blocks:** (BTTB)\n", "$$\n", "T = \n", "\\begin{pmatrix} \n", "T_0 & T_{-1} & T_{-2} & \\dots & T_{1-n} \\\\\n", "T_{1} & T_{0} & T_{-1} & \\dots & T_{2-n} \\\\\n", "T_{2} & T_{1} & T_0 & \\dots & T_{3-n} \\\\\n", "\\dots & \\dots & \\dots & \\dots & \\dots\\\\\n", "T_{n-1} & T_{n-2} & T_{n-3} &\\dots &T_0\n", "\\end{pmatrix},\n", "\\quad \\text{where} \\quad\n", "T_k = t_{k, i_2 - j_2}\\quad \\text{are Toeplitz matrices}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fast matvec with multilevel Toeplitz matrix\n", "\n", "To get fast matvec we need to embed block Toeplitz matrix with Toeplitz blocks into the block circulant matrix with circulant blocks. The analog of\n", "$$\\begin{pmatrix} y_1 \\\\ y_2 \\\\ y_3 \\\\ \\star \\\\ \\star \\end{pmatrix} =\n", "\\text{ifft}(\\text{fft}(\\begin{pmatrix} t_0 \\\\ t_{1} \\\\ t_{2} \\\\ t_{-2} \\\\ t_{-1} \\end{pmatrix})\\circ\\text{fft}(\\begin{pmatrix} x_1 \\\\ x_2 \\\\ x_3 \\\\ 0 \\\\ 0 \\end{pmatrix})).$$\n", "will look like\n", "$$ \\begin{pmatrix} y_{11} & y_{12} & y_{13} & \\star & \\star \\\\ \n", "y_{21} & y_{22} & y_{23} & \\star & \\star \\\\ \n", "y_{31} & y_{32} & y_{33} & \\star & \\star \\\\ \n", "\\star & \\star & \\star & \\star & \\star \\\\ \n", "\\star & \\star & \\star & \\star & \\star \\\\ \n", "\\end{pmatrix} = \\text{ifft2d}(\\text{fft2d}(\\begin{pmatrix} t_{0,0} & t_{1,0} & t_{2,0} & t_{-2,0} & t_{-1,0} \\\\ \n", "t_{0,1} & t_{1,1} & t_{2,1} & t_{-2,1} & t_{-1,1} \\\\ \n", "t_{0,2} & t_{1,2} & t_{2,2} & t_{-2,2} & t_{-1,2} \\\\ \n", "t_{0,-2} & t_{1,-2} & t_{2,-2} & t_{-2,-2} & t_{-1,-2} \\\\ \n", "t_{0,-1} & t_{1,-1} & t_{2,-1} & t_{-2,-1} & t_{-1,-1}\n", "\\end{pmatrix}) \\circ \\text{fft2d}(\\begin{pmatrix}x_{11} & x_{12} & x_{13} & 0 & 0 \\\\ \n", "x_{21} & x_{22} & x_{23} & 0 & 0 \\\\ \n", "x_{31} & x_{32} & x_{33} & 0 & 0 \\\\ \n", "0 & 0 & 0 & 0 & 0 \\\\ \n", "0 & 0 & 0 & 0 & 0 \\\\ \n", "\\end{pmatrix})),$$\n", "where fft2d is 2-dimensional fft that consists of one-dimensional transforms, applied first to rows and and then to columns (or vice versa)." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Blurring and Sharpening Lena by convolution\n", "\n", "from scipy import signal\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from scipy import misc\n", "\n", "filter_size = 3\n", "filter_blur = np.ones((filter_size, filter_size)) / filter_size**2\n", "lena = misc.imread('./pics/lena512.jpg')\n", "#lena = misc.face()\n", "#lena = lena[:, :, 0]\n", "blurred = signal.convolve2d(lena, filter_blur, boundary='symm', mode='same')\n", "\n", "fig, ax = plt.subplots(2, 2, figsize=(8, 8))\n", "ax[0, 0].imshow(lena[200:300, 200:300], cmap='gray')\n", "ax[0, 0].set_title('Original Lena')\n", "ax[0, 1].imshow(blurred[200:300, 200:300], cmap='gray')\n", "ax[0, 1].set_title('Blurred Lena')\n", "ax[1, 0].imshow((lena - blurred)[200:300, 200:300], cmap='gray')\n", "ax[1, 0].set_title('Lena $-$ Blurred Lena')\n", "ax[1, 1].imshow(((lena - blurred)*3 + blurred)[200:300, 200:300], cmap='gray')\n", "ax[1, 1].set_title('$3\\cdot$(Lena $-$ Blurred Lena) + Blurred Lena')\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Solving linear systems with Toeplitz matrix\n", "\n", "Convolution is ok; but what about **deconvolution**, or solving linear systems with Toeplitz matrices?\n", "\n", "$$T x = f.$$\n", "\n", "For the periodic case, where $T = C$ is circulant, \n", "\n", "we have the spectral theorem\n", "\n", "$$C = \\frac{1}{n}F^* \\Lambda F, \\quad C^{-1} = \\frac{1}{n}F^* \\Lambda^{-1} F,$$\n", "\n", "but for a general Toeplitz matrices, it is not a trivial question." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Iterative methods\n", "\n", "Not-a-bad recipe for Toeplitz linear system is to use **iterative method** (fast matvec is available).\n", "\n", "A good choice for a preconditioner is a **circulant matrix**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Circulant preconditioner\n", "\n", "A natural idea is to use **circulants** as preconditioners, since they are easy to invert.\n", "\n", "The first preconditioner was the preconditioner by **Raymond Chan and Gilbert Strang**, who proposed to take the first column of the matrix \n", "\n", "and use it to generate the circulant.\n", "\n", "The second preconditioner is the **Tony Chan** preconditioner, which is also very natural: \n", "\n", "$$C = \\arg \\min_P \\Vert P - T \\Vert_F.$$\n", "\n", "A simple formula for the entries of $C$ can be derived." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\nV+iNN97Qn//8Z7Vp00bOOc2fP189e/YMnO/xxx9XSUmJZs6cqd/+9rc6ePCgnn76abVq1UqtW7fW\nww8/HPhH0mPGjFFhYaGefPLJBnM68Z1Y6t7fc9OmTVqxYoXatWunVq1aac2aNYqPj9cXX3yhRYsW\nacuWLVq6dKni4+NVU1OjRx99VCkpKcrJydGQIUO0adMm7d69W1OnTtU111yjwsJCTZ8+XR6PRwMG\nDNAHH3ygJUuWqFevXoFr5+bmatWqVfJ4PCopKVGfPn00b948bdy4Uc8884wSEhI0atQo/fznP9fv\nfvc7ffnllyovL1dGRoZuvvlm+f1+PfLII4FfQTdx4kSNGTNGBQUFWrBggWJjY+XxeDRr1iyde+65\nIef6+eefa/r06WrdurUuu+yywPyeeuop+Xw+devWTRs2bNA999yj+fPna/LkyXr++eeVkpKiefPm\nBe7KL7/8ct15553Kz8/Xs88+q+7du2vXrl2KjY3V0qVL1bp1a73xxhtasWKFnHNKSkrSI488osTE\nRA0cOFCZmZny+/168MEHm+OhgNNZU953DGeewsJC96Mf/SjkeGpqqquurnaLFy928+bNc8459+mn\nn7r+/fu7NWvWuIKCApeTk+P8fr9zzrm5c+e6v/71r66wsNCdf/75bseOHc4552bOnOmef/55t337\ndnfttdcGzp+RkeE+/fRTt23bNvfuu+8655wrKSlxgwcPds4598orr7hp06Y555wbMWKE2717t3PO\nuXXr1rns7GznnHO33nqry8vLc845t3///sD7KF599dVu8+bNzjnnNm/e7NavX9/o86s7Z0VFhRs6\ndGjgffWWL1/uZs6cGdjnxRdfDLo+r776qhs4cKDLyspyixcvdlu3bg2MzZgxI3DcjBkzAp+Hc869\n/PLLgfe8/NOf/uQWLFjgnHNuwoQJ7ve//71zrvb9Iq+++mrnnHPTpk1zf/nLX5xzzn3wwQeuX79+\ngbWo88orr7ihQ4e68vJy5/f73Q033ODeffddt27dOjdw4EB36NAh55xzzz33nPvDH/7gnHPO5/O5\nsWPHuv/85z/u1VdfdVOnTnXOOXfkyBF36623Op/P50aPHu0KCgqcc8794x//CLyHaai53n333W7l\nypXOOefefvttl5qa6pxz7sknn3SLFy9u9LWs+/Pf//53N3nyZOf3+53P53OZmZkuPz8/MP/S0tLA\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAFYCAYAAADeLMzTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGBRJREFUeJzt3X14zff9x/HXyUniPkrclLZYWUrNKKWjt9LMNs2sdNpE\nxYWrNrYanZu63KTIlGD0qmWroWy6uW+7XnOv46oS6bRURUtx6UI0koibJG4i+fz+yM+5pJJ4t3J6\nNHk+/pGc7znn+/mcc+SZ7/ecfL8e55wTAAAoV1CgBwAAwHcBwQQAwIBgAgBgQDABADAgmAAAGBBM\nAAAMgstbmJl5vkJWUq9eTeXk5FfIfd2qqsIcpaoxz6owR6lqzLMqzFGqGvP8NufYsGGdUi//VrYw\ng4O938ZqAqoqzFGqGvOsCnOUqsY8q8Icpaoxz1thjuySBQDAgGACAGBAMAEAMCCYAAAYEEwAAAwI\nJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADA\ngGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwA\nAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHB\nBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAY\nEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkA\ngAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCY\nAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAAD\nggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEA\nMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQT\nAAADggkAgAHBBADAgGACAGBAMAEAMCCYAAAYEEwAAAwIJgAABgQTAAADggkAgAHBBADAgGACAGBA\n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\naG3dulVbt25VdHS0pOIfyFe3Rv/9738rKChIly9fLnG72rVr6+TJk5KkXbt2+S7v1KmT1q9fL6l4\nS2TatGkqLCzU7NmzVadOHfXu3VvDhw/Xxx9/XOaYWrRooezsbKWnp0sq/iBOeVuk31SvXr104MAB\nrVu3zndZcnKyRo4cqdzc3DJvl5WVpVatWsnj8Wjz5s0qKCi47vGpCC1bttSpU6d05MgRScWP86pV\nqxQeHq5atWopNTVVkvTXv/5Vy5cvV/v27fX+++9LKv4lZvfu3erQoUO595+amuob/+7du6+7jsfj\nKfELkVS8t+K2227T/v37JUk7d+684fPTsWNH3+viwoULmjx5sjnQqNrYwkSZStsle+edd2r69Om+\n7wcNGqTf/e536tevn1q1aqW2bdvK6/WqXbt2evbZZxUXF6dq1aqpUaNG6tOnj7Kzs8tc31133SWP\nx6P69eurUaNGkqT+/fsrISFBq1at0lNPPaWuXbtq1KhR6t69u+92gwcP1oQJE9SiRYsSW6ATJkxQ\nfHy81q5dq8uXL2vYsGHyer2qV6+eYmJiFBYWJknlnmOvevXqmjZtml544QWFhoaqZs2amjZt2td7\nIK+RkZFR6qdQq1Wrpn/+859KSEjQa6+9prCwMNWtW1evv/56uWe++eUvf6kxY8Zo27Zt+vGPf6ye\nPXtq9OjRJc4qUxFq1KihWbNm6cUXX1T16tXl8XiUkJAgj8ejmTNnaurUqQoJCVFYWJhmzpypGjVq\naO/evYqJiVFRUZF69uyp9u3ba+fOnaXef+vWrfXwww/r6aef9p2P9Kvat2+vuXPnauLEiSWimJiY\nqGnTpik4OFher1dTpkwpdy4jRozQxIkTFRsbq8uXLys2NjZgfx6F7xbOVoKbcvToUaWlpenRRx/V\nxYsXFRUVpdWrV/ve8wOAyoJg4qZkZmZq7Nixys/P15UrV/SLX/zC90EfAKhMCCYAAAZ86AcAAAOC\nCQCAAcEEAMCAYAIAYEAwAQAwIJgAABj8H31Ewz2y249lAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import scipy.linalg\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "n = 100\n", "c = np.zeros(n)\n", "c[0] = -2\n", "c[1] = 1\n", "Tm = sp.linalg.toeplitz(c, c)\n", "\n", "\n", "c1 = sp.linalg.circulant(c) #Strang preconditioner\n", "Fmat = 1.0/np.sqrt(n) * np.fft.fft(np.eye(n)) #Poor man's Fourier matrix\n", "\n", "d2 = np.diag(Fmat.conj().dot(Tm).dot(Fmat))\n", "c2 = Fmat.dot(np.diag(d2)).dot(Fmat.conj().T)\n", "\n", "\n", "mat = np.linalg.inv(c1).dot(Tm)\n", "ev = np.linalg.eigvals(mat).real\n", "plt.plot(np.sort(ev), np.ones(n), 'o')\n", "plt.xlabel('Eigenvalues for Strang preconditioner')\n", "plt.gca().get_yaxis().set_visible(False)\n", "\n", "mat = np.linalg.inv(c2).dot(Tm)\n", "ev = np.linalg.eigvals(mat).real\n", "plt.figure()\n", "plt.plot(np.sort(ev), np.ones(n), 'o')\n", "plt.xlabel('Eigenvalues for T. Chan Preconditioner')\n", "plt.gca().get_yaxis().set_visible(False)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Direct methods for Toeplitz matrices\n", "\n", "The idea with preconditioners works for 2D/3D convolutions, but much worse.\n", "\n", "In 1D case it is also possible to find direct solvers for the Toeplitz matrix, based on the structure of the inverse.\n", "\n", "But the inverse of a Toeplitz matrix is not Toeplitz!\n", "\n", "What to do?\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Low displacement rank structure\n", "\n", "The Toeplitz matrices belong to a more general class of **low displacement rank** matrices.\n", "\n", "Define the **scaled periodic shift matrix** \n", "\n", "$Z_e$ that takes the vector $x$ and transforms it to a vector\n", "\n", "$$Z_e x = \\begin{bmatrix}\n", "e x_{n-1} \\\\\n", "x_1 \\\\\n", "x_2 \\\\\n", "\\vdots \\\\\n", "x_{n-2}\n", "\\end{bmatrix}\n", "$$\n", "\n", "What is the matrix form of this linear operator?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Shift matrices, displacement matrices and Toeplitz matrices\n", "\n", "Given a Toeplitz matrix $T$, we select any $e, f$ such that $ef \\ne 1$ and define the displacement operator as\n", "\n", "$$L(T) = Z_e T - T Z_f.$$\n", "\n", "For a Toeplitz matrix, $L(T)$ has **rank 2** (it has only first row and last column non-zero)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-1. 0. 0. 0.5 0. ]\n", " [ 0. 0. 0. 0. -0.5]\n", " [ 0. 0. 0. 0. 0. ]\n", " [ 0. 0. 0. 0. 0. ]\n", " [ 0. 0. 0. 0. 1. ]]\n" ] } ], "source": [ "import numpy as np\n", "import scipy.linalg\n", "n = 5 \n", "c = np.zeros(n)\n", "c[0] = -2\n", "c[1] = 1\n", "T = sp.linalg.toeplitz(c, c)\n", "e = 0.5\n", "f = 0.5\n", "def Z_shift(e):\n", " return np.diag(np.ones(n-1), -1) + e * np.diag(np.ones(1), n-1)\n", "\n", "Z1 = Z_shift(e)\n", "Z2 = Z_shift(f)\n", "\n", "print(Z1.dot(T) - T.dot(Z2))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "What about the inverse?\n", "\n", "It is also of rank $2$ !" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "array([ 1.02062073e+00, 1.02062073e+00, 2.60439840e-16,\n", " 6.95949729e-17, 2.21601201e-17])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import scipy.linalg\n", "n = 5 \n", "c = np.zeros(n)\n", "c[0] = -2\n", "c[1] = 1\n", "T = sp.linalg.toeplitz(c, c)\n", "e = 0.5\n", "f = 0.5\n", "def Z_shift(e):\n", " return np.diag(np.ones(n-1), -1) + e * np.diag(np.ones(1), n-1)\n", "\n", "Z1 = Z_shift(e)\n", "Z2 = Z_shift(f)\n", "\n", "Tinv = np.linalg.inv(T)\n", "\n", "p1 = Z1.dot(Tinv) - Tinv.dot(Z2)\n", "np.linalg.svd(p1)[1]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Small displacement rank: definition\n", "\n", "The matrix is said to be of **displacement rank $r$** with respect to the pair of generators \n", "\n", "$Z_e, Z_f$, if\n", "\n", "$$L(T) = Z_e T - T Z_f = GH^{\\top},$$\n", "\n", "where $G$ is $n \\times r$ and $H$ is $n \\times r$.\n", "\n", "It is similar to \"discrete derivative\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Theorem on the inverse structure\n", "\n", "Let $T$ satisfy\n", "\n", "$$Z_e T - T Z_f = GH ^{\\top},$$\n", "\n", "and let it be invertible.\n", "\n", "Then we have\n", "\n", "$$T^{-1} (Z_e T - T Z_f) T^{-1} = T^{-1} Z_e - Z_f T^{-1} = T^{-1} G H^{\\top} T^{-1},$$\n", "\n", "i.e. the inverse has **small displacement rank** with the reversed pair of generators $Z_e, Z_f$ (why?)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Recovering a matrix from the displacement representation\n", "\n", "Does the low-rank representation after the displacement operator describe the structure?\n", "\n", "I.e. we need to solve the equation of the form\n", "\n", "\n", "$$Z_e T - T Z_f = GH^{\\top} = B$$\n", "\n", "For a given right-hand side.\n", "\n", "This is a linear system of equations in disguise! (Do you see that this is a linear system? What is the size of this linear system?)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Sylvester equation\n", "The equation above is a special case of the **Sylvester matrix equation** which has the general form\n", "\n", "$$AX - X B = C,$$\n", "\n", "with $A$, $B$ and $C$ given.\n", "\n", "In general, this is a linear system with $\\mathcal{O}(n^2)$ unknowns, and the computational cost is expected to be $n^6$.\n", "\n", "For Sylvester equation we can solve it in $\\mathcal{O}(n^3)$ (Thursday on matrix equations)\n", "\n", "But we can do better for specific $A, B$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Back to the particular case\n", "\n", "For the particular case, we have\n", "$$Z_e T - T Z_f = GH^{\\top} = B,$$\n", "\n", "and the solution is given by\n", "\n", "$$ (e - f) T = \\sum_{j = 1}^r Z_e(g_j) Z_f( J h_j), $$\n", "\n", "where $Z_e$ is the **e-scaled circulant** generated by the vector, and $g_j$, and $h_j$ are the columns of the matrices $G$ and $H$,\n", "\n", "and $J$ is the **per-identity matrix** (which has ones on the anti-diagonal).\n", "\n", "For details, see [the paper by Victor Pan et. al.](http://ac.els-cdn.com/S0024379501003366/1-s2.0-S0024379501003366-main.pdf?_tid=c532e56a-680e-11e5-81a5-00000aab0f01&acdnat=1443685015_d1c190dd112773e7479235b435da3b7e)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Gohberg-Semencul formula\n", "\n", "Based on this idea and for the special case when $e = 0, f \\rightarrow \\inf$, we get the following famous formula for the inverse of the Toeplitz matrices as a sum \n", "of two products of **triangular** Toeplitz matrices:\n", "\n", "Let $A$ be a Toeplitz matrix, and\n", "\n", "$$A \\begin{bmatrix} x_0 \\\\ x_1 \\\\ \\vdots \\\\ x_n \\end{bmatrix}=\\begin{bmatrix} 1 \\\\ 0 \\\\ \\vdots \\\\ 0 \\end{bmatrix},\n", "\\quad \n", "A \\begin{bmatrix} y_0 \\\\ y_1 \\\\ \\vdots \\\\ y_n \\end{bmatrix}=\\begin{bmatrix} 0 \\\\ 0 \\\\ \\vdots \\\\ 1 \\end{bmatrix}\n", "$$\n", "\n", "then \n", "\n", "$$A^{-1} = \\frac{1}{x_0} \\begin{bmatrix} x_0 & 0 & \\ldots & 0 \\\\ x_1 & x_0 & 0 & \\ldots \\\\ \\ldots & \\ldots \\\\ x_n & \\ldots & \\ldots & x_0 \\end{bmatrix}\\begin{bmatrix} u_0 & u_1 & \\ldots & 0 \\\\ 0 & u_0 & u_1 & \\ldots \\\\ \\ldots & \\ldots \\\\ 0 & \\ldots & \\ldots & u_0 \\end{bmatrix}-\\frac{1}{x_0} \\begin{bmatrix} 0 & 0 & \\ldots & 0 \\\\ y_0 & 0 & 0 & \\ldots \\\\ y_1 & y_0 & \\ldots \\\\ \\ldots & \\ldots & \\\\ y_{n-1} & \\ldots & y_0 & 0 \\end{bmatrix}\\begin{bmatrix} 0 & v_0 & \\ldots & 0 \\\\ 0 & 0 & v_0 & v_1 \\\\ \\ldots & \\ldots \\\\ \\ldots & \\ldots & \\ldots & v_0 \\\\ 0 & \\ldots & \\ldots & 0\\end{bmatrix},$$\n", "\n", "where $u_y = y_{n-i}, \\quad v_i = x_{n-i}$.\n", "\n", "The main meaning: the inverse can be recovered from **the first column** and the **last column** of the matrix.\n", "\n", "For details, I refer to the book by Tyrtyshnikov \"Brief introduction to numerical analysis\". " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fast and superfast direct methods\n", "\n", "For many years, these formulas gave rise to the fast $\\mathcal{O}(n^2)$ and superfast $\\mathcal{O}(n \\log n)$ methods for Toeplitz matrices.\n", "\n", "The basic idea is that you use **augmentation method**. \n", "\n", "Consider that you have computed the **inverse** of a $(n-1) \\times (n-1)$ block of the Toeplitz matrix.\n", "\n", "You only need to store two vectors to represent the inverse.\n", "\n", "Then, the bigger matrix can be written in the block form.\n", "\n", "$$T_n = \\begin{bmatrix} T_{n-1} & a \\\\ b^{\\top} & c \\end{bmatrix}.$$\n", "\n", "We only need to recompute the last and the first column!\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Recomputing the last and the first columns\n", "\n", "Let us split the vector as \n", "\n", "$$x = \\begin{bmatrix} x_1 & x_2 \\end{bmatrix}.$$\n", "\n", "Then,\n", "\n", "\n", "$$T_{n-1} x_1 + a x_2 = e_1, \\quad b^{\\top} x_1 + c x_2 = 0.$$\n", "\n", "Or, \n", "\n", "$$ x_1 = T^{-1}_{n-1} e_1 - T^{-1}_n a x_2.$$\n", "\n", "Application of $T^{-1}_{n-1}$ costs $\\mathcal{O}(n \\log n)$ operations, \n", "\n", "thus $x_2$ will be recovered in the same number of operations as well. The total complexity is then $\\mathcal{O}(n^2 \\log n)$ operations.\n", "\n", "**Superfast algorithms** are obtained in terms of reducing the problem to the computations with polynomials and using **block** elimination \n", "\n", "(in the Fourier style)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Other types of low-displacement rank matrices\n", "\n", "- Hankel matrices\n", "- Cauchy matrices\n", "- Vandermonde matrices" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Take home message\n", "\n", "- Toeplitz matrices, Circulant matrices, Spectral theorem, FFT\n", "- Multilevel Toeplitz matrices" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Matrix functions and matrix equations\n", "- We will talk about matrix functions\n", "- We will talk about matrix equations" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "def css_styling():\n", " styles = open(\"./styles/custom.css\", \"r\").read()\n", " return HTML(styles)\n", "css_styling()" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [conda env:p3]", "language": "python", "name": "conda-env-p3-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }