{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using PyPlot, LinearAlgebra" ] }, { "attachments": { "image.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAALwAAADDCAYAAAA4PXu/AAABOGlDQ1BrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4AAAokWNgYFJILCjIYRJgYMjNKykKcndSiIiMUmB/xsDKwMLAzqDPYJyYXFzgGBDgwwAEMBoVfLvGwAiiL+uCzJpivO1cjMWGdoHpqRe3pXw2xVSPArhSUouTgfQfIM5OLigqYWBgzACylctLCkDsHiBbJCkbzF4AYhcBHQhkbwGx0yHsE2A1EPYdsJqQIGcg+wOQzZcEZjOB7OJLh7AFQGyovSAg6JiSn5SqAPK9hqGlpYUmATeTDEpSK0pAtHN+QWVRZnpGiYIjMKRSFTzzkvV0FIwMjIwYGEDhDlH9ORAcnoxiZxBiCIAQmyPBwOC/lIGB5Q9CzKSXgWGBDgMD/1SEmJohA4OAPgPDvjnJpUVlUGMYmYwZGAjxAc0oUqEijgXCAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAC8oAMABAAAAAEAAADDAAAAANj/xwIAADpoSURBVHgB7V0FYBRXEx78x4oVKxSHtri7uwS34hbcCe4SCAR3Ke4UL1Y8uLu7F3cppbT7zzd0j7vLaW4vuSQ7bbi93bdv387Nvp038k0EhYl00jkQTjgQMZzcp36bOgeEA7rA64IQrjigC3y4+rn1m9UF3o0yoC+P3MjcIHatC3wQGWfvtM+fP1Pnzp3tNdOPBzMHdIF3E8NPnTpF6dOnd1PverdB5UDkoJ6on2eZA//88w/9/vvvNGXyZEqXLh09ffKEEiZKZLmxvjfYOaDP8BqzvFnTpnTr5k2KFCkSVa9Rg0qWLEkfP37U+Cp6d0HlgC7wQeWchfM2/PYbPXv+nOrUrUtRokShrFmz0rt37+jFixcWWuu7QoIDusBryPU1a9dSrVq1aO/evZQrd266ePEifffdd5TICZXmypUr5NOtm4aj0rsy5oAu8MbccHH7m2++of/973+0JyCAcubMSVOnTKG+/frRnTt3qED+/HTs2DG5wpIlS6h169b06dOnQFf84Ycf6Nbt24H26zu04YC+aNWGj9LLz6zKTJw4kc6ePUvXrl2jypUrU6VKlegv1uHjxYtHCxcupDx58lC0qFGpQ4cOFJU/LVHECBEs7db3acABXeA1YKLaRYGCBSl6jBjk4+ND61mfjxYtmhw6cvQo9ezZk/r06SNWGzwMlby86P69e+qp8pk4SRLR/U12uvELHGMRwtnDFa5VmsJF8tHcub9oKlJHjhyhwoUKGYQdnR9lgS9QoADVZP1+6bJlFClyZHrz5g1dvHTJ5O+vv/7SdCz2Ouvdqxe9ffvWXrMwdTzcz/BR/5uFtfpVk/IsDeE2prcs3NFYt2/QoAGVLVOG/EePpsSJE1PZsmWNm8k2BPDly5eiBuEcdxFm90ePHlHs2LHddQnP7JdvPMxTocJ5lX3794bIfa5evVpp3KiR8uHDB7l++3btFJ7drY7lyZMnyv3795WnT59abePqgZs3byr9+/dXihYpohw/ftzV7kLV+REwWs98FLUZ1fv376hc+VLUtElz8vZurU2nLvTy/v17ihkzpgs9uHbq8uXLaeOGDRL2kCZNGpozZw717duXypYr51rHoeTsMKXDv3wZ2METM2Ys2r/viEcIO2QiJIUdDjD/UaNoyJAhdOHCBSpZqpSoVnfv3g0l4ur6MMOMwJ8+fYoqV6lAv/22znWuhNEedu3cSalTp5bYnocPH9K3CRIQqzeUPUeOMHrHgW8rzAh8unTpKXPmLFS6dOCFYODbdu+ee/fusllyLS1ZspB27tzuMZaQb+LEEcfYwQMHRMiXLF1KefPmpdzsFfb19SVeawhjnnN4RLWqVcW65F5OBX/vYcZKEytWLJoxfXbwc9DoioiB79+/Nx0/fowiRIxInz//LebJz5//oY4dOlPVqtWNWgf/Jry/vIgmf39/CWj7/PffNHTYMBlIvLhx6TZ7eG9cv05pOcozW7Zs8jAE/yjde8VQt2gtVrwgIQQXerknEYTdq3I5wqLUmh2gY4cuVLduvRAfdiF2kE2fMUOC29TB+I0YQXB83eUwiCYc8Xno0CGqX7++ejjMfIY6lWb8uElUpEgxj/sBli1bTHAcWRN2DHjWL9N5Fr0VomOHdxcxPIjkVOnN69dij0fg25YtW2jr1q1UvHhx9XCY+gx1Ap8zZ27yG+HvcT/CmrWr6W9WEWyRJIds3WKxCfTmMmWLy0NjsYFGOz/8+Sf16NHDpLc9e/ZQfnaWIfitFFtutnICC6I8wyJ5rMCfv3COrl69EuI8P3fuLJvvirAgWk/igKC/ePHc7lih9ly5ctliu8WLF9BPP2WiDx/eG4736NmNli5dZPiuxUaGDBkkXl/t69WrVzR79mxD5Gajxo3DpO6u3q/HLlrbtPGWMQa3rt66TQvKlDEzderUVa4PNaV8+Yps7lxPtWvXVfkm64gHDx5w6O8tunnrJv3777+GY7Y20H758qWUMmVK/ktFSZN+R2fOnGZB/0ApUqQgCGC8ePHp5KkTkjVlHPqAfZ07t6d9ew/buoRTx+LyYhWBbir99NNPMg71e1j79FiB37Z1N92/bxpNqDXz//jjAc92NejXFWv4FZ5Muk+dKg3dZqF8wMeS8b7Xr19RmjRpxfJSpGgxtl1/S2PGjKKnz57wdkJKmSoVpWeTaJIkSenhwz9sDhHhwKVKlqWkrC5cu36NdrDJEs6gu3fv0MQJU2jzlo305u0bUY3WrVtDXl5V6Op/bwS8RdasWcVvgYzycEVkK5C7KCSdY+66J7VfjxX4GBxmmyHDD+o4Hfo8cGA/rV23mk1r1wgCARWhdp26lC1rdovnw6JStmx5WvHrMurapbu0ecsCV6VyNRaulWxK7MIC/1pm3PLlKojAeVWqTH+zuXHEcH+TiMgX7OWdMGGszfxVLBbr8HgSJvya1I2Z/eWrl/JwxYkTl17zDL9r1w6eZVNSksRJOGnkizVq+45tlJYfPNCXMcWTbWv/4OFbsHAeW1sOipoUP34CDlwrx/z4mb6J/Y2108L8fvdNE8HMuiFDB9LgIf3p8OGDPPs+pcdPHlPAnl3Uvn1rViGWWBzNK569IVh/ffyLTp06KTPnW85BLVq0uITvQn/HDB+XHTawDD1//kxm/kSJEpsIOzr3qlSF8ucvaPE66s6ZM+aYCDv248HGmwQU55s4MuND4KtXq0lx+LqwoCB6cs+e3VStWg1ZWOKhxHrgFqtS+DSnmzdvsGBXZ4vLJhnzn7xQffDgPocmL6aKFcuI+mR+Tnj57rEzvDM/wJSpk2j37p0Wf3z0g+OxOAwWQqnS06dP6MH9+xSLY21q1qpNixYtoFSpUot5Dm+HmjVr0wrWteGdxJ+gEFSvSfPnz6VcuXKr3Zh8+g7zo7nzZhNMlGiP5AoIZHzWyfv2HUCZMmU2aW/+BVaSCxfPU6FCRSgBu/2xfnj95rWESxTlBw66PR4KzPBwbi1avEBCBbAOwHoA48c1u3btKF3DKmRMarx9s+aNaNHCZVYzrozPCWvboV7gYR1ZvfpXq8Ku/mCTJo0XGzkCpe7euS3x6cmSJacG9RsRvLQpvk9B+/fvlVkV5/z4w0+il1+6fJFn+LjSTeZMWWRG/vRX4FxU9TrNm3lLnzduXKd3HKn5HQsjrgNBtEeROTEkIGA3der4ZcGMjKm/P/1Nl69coiH1fOV0qD2PHj2kU6dPytoDOxHKcIfv6cL5c7Rh49cFqLXrIchuB6tIFSt6WWsSZveHeoHHTIfFoD0bOI4/4oCpYqyupGALibkeW41VCKhEGdlCo1K9eg2ofoM6JhGOQ4cMVw9b/YSgZsyYyepxawfy5s1PG34ztdNDPWvUuKlhNsZbAMJah3VxQIGAsKjGH2jFr8vl09Y/WDfs4jeipws8nHiOTBS27tX8WKjX4WHlsCfsuOlo0f4nFg4EmJkLO45/++23bEEpQ8YJ1N+w+rBxw1ae1UMwfn3ZKsqbJx+G+IX4TRGFH/BcufKoe0w+//zzg8l3a18c8RtYOze49rsjBTHUz/Dx48cXfdn+j6CwUCe02aw66+iu0h9//EFnz5yhnLlySZL2n4xYUKhQIV507uEHLTbl4AAuV6hihUqEP2sUK1ZsWWhbO67uT8wLb08mzO7uSEEM9TN8lKhRbJoC1R8Vr0aEEDtK06dNo7p16rCN/K44gzDbIOjq8ePHNrs4fPgwdezYUdzzCxiWY0D//jRr1iwOFV5Cfn5+Ns/V4mBR9hVgwWyLoAIWK17CahNb8UBWT9LwwK1bt2jgwIF0m6M3T5w4oWHPRKFW4OHqh5Vi//59VIFnPCz4bFHnzt3stjE+Pw57IG8y42ERGcmC2p3jT3YHBEiGkHE78+0oPA7o1tC18+XLR5yjSlmzZGEbehrKwCBL7qYWzVvZvAQefJhCTzO6MSxV5gSTJsbsKl26dJFGjhxuNZTCWv9IQcQkEZkfWm9vb0Fh28bBbFqRxwv8dXYimRNm3ZGjRshM1qtnX+rbZ4DVCEoggXXo0JnKl6to3o3N75cYQgNM78Uz+3AOnYWOj5nRHu3dt4+ycix51WrV6MD+/ewt9ZLArIMHD1KRwoXtne7ycYxz1covWV9YPBtT9OjROTisDC+Mf6fChYvQmLH+nOTxNUxh2/atNMJvGIc1HDc+LUjb8Ai/ePmcWng3oZatmrEXeZPdwLjgSEG0PS0G6Va1O+kN26CbNmtIbdu0Z6tEPZk5Hz1+xD/KUGrdqh3lyPFVHx42dATtP7CP1q9fS3hIvnhaM0r8izVPq62RQkCzcAjt9m3bRCd3VPfex7iSozhvFLE16GP5ihXixMIDFJtnfcBwuBsaA57c9es2S9bVAeYJMHAQOlGmTFnW/73E8lG4cFGx7MybP4cwtjdvX4tpNwGHTuTK+dXP4IqlpE2bDuwIPMT9X+S/oTR58gSqxKZQONCSJ/8+EPvtpSDCuoS3k0vEN+RRxI4ak/H4jfRVZsycpgwdNkhhb6Fy7dpVhb2qJm20/sKLJSVVypQKv0mUOrVrK3Xr1nXoEteuXlWyZ8umsNVIOX/unMJ4knLe5cuXlcyZMimLFy1yqJ/gbMThDgo7y5SNG39T2HegjBgxzHB59vAqgwf3V548eWzY5+wGfj/ApJj/denaUeFYJpPuOA5fqV+vnrJl82aFoQgVRlRQ2rVtq0Am5syerTRu3NikfVC+eJRKwzcgXsU77ERRKU/uvOJdLMexLJN4hsAMD6xGS/qneo6rn4c52yd58uT0/fff8yyYho7wQhSztj1KxxU/Tp0+LWuFTJkz00HuBwSA1AOcR9qgYUN7XQT7caw3GjdqKhGhiMZU35oIq2BhJVidgPwQVPJu0VryaM3Pv8LONDjRjAkpiPCIIwXxxPHjdIwR2wYzwgIW4aVKlyakJLpKHiXwWFBdu36Vkbn8xDGCm8uePSedPnOKIPjdunYXb2hsDn46edL26h0/1O+cvYMF2Ele6UPgQDAPnjp5Urat/QP9ex/r3yC/kSMFzRe6vCuE8ARPJQgU/oD8kD17DlrFnuuVq1ZIEB0QDYzVCEw4zhDWFPXqBX7QW7duZ9Iv+kTbmTNniq4/gz+Rhpgw4RdTslYOqBAXeDiNMLOrVKpkafrxx584mOsEzZgxVYK0YGuHXo6gre4+vSgef0dIrS0KafOgrbF54jEEosHShVghxOT36d2fEFaRI3suGS5+p9mzZ1K/fr1Mfi9H7qU+Czxig1TKn68AVa1iOaHdUgqiep4WnyEu8BDsUWxxgfkPBE8o8NTbte0oC62Ro4azSvCjxI7gOH6U1q3a0s8/N8BXqxTS5kGrA/PQAwxFyOrLA7F2ebdoJTP+5cuXOPc1m+z39x8hUZaYkJydbWEdatWyrRgSGjRoxH6Kzlaz2SylIGrJshAXeEQAIkx3FAv2hQvnJQQAaWjnzp+lKlWqUcOGjcXWDmuD8ZvAnqUjpM2DWv5IwdFX8WIlachgX/YKfzGd4rdInToNq47HaSIH3pUpU07yAJBTHBRC3M7iRSvY4taBIztTi/BbekubpyCq10KhuHucgH6docZdoRAXeHg/MWM0YezHFSuW0lpOhs6eLQfrk1/0bEQtDhwwhJ04BTjv8i+H7xXmwbZt2hjMg82aNw9kHnS4s3DQEOmFCDNW6SgnnsA4AFNvd5+ejEX5g6yH0qfPoDZx6hO/Ma6hEn53qE5IXgc9e/ZUgKuOHT+qNjH5bNWqFWESg2HAFQpxgQcjsmTJSmwSo96sNyJ1bteunVwf6YIhcRqzOfTAuXPmOuTuxyyA2O9C7Oi5xHWW8EqFpQTwcnDGoMqevTeEK0wN7eeyGZACAnaylSqFrJlg18cElI3VGySTICdXC4K6dPHSBba+jadatavxInUqh2SYRotqcR2TPoJiy9TyHDZBKr16d1dOnPwK2xywZ7fYbdk0ZnIpjkdRGBZO4ZIySq+ePQVSmgXbpI29L5xCZ6+Jfpw58PDRQxM+jBs3mqG1jyr9+vdWsM1OJIWzwQxt2NGmvHv3VuHQBIUjMRVOPjEcs7aB9m3aepvY6KtV97LWXJP9bkUeO3v2DK1bv0ZmazxliBGvVbOOIVYccd07d+3gBWj9QHmnWEDBO2hMAwYMoB3bt4uVZgNDPsOUppP7OQDVA6hqyLpq3KQZ/ZDhR0kfxLqqQYPG8tb09/ejK1cvyzYsOlibtfRuLfZ9ayMcOKif5O+aH1+6ZKWJ+mN+3JXvbhN4vKYAbfHx45+G8UF94ceU4Ix4+47zMv/+TE2btmDm2E5IVjsASFDatGnF3b9mzRqXQ23VfvVP2xxAhtXMWdPZD9LDRBWEGjpt2mQ6YhSPY95TG7a3N2zYxHy3fD9z9jRHRfaTvFvjBj7depIWodrGfarbbhH433/fzKGwvvTPv6Y5lepF8Vm+fEXq13egwyYuhOXm5+hDLFy6c9EwgJUisk6nkOMAFprQvaHz26JxYycyuFN+i02QoM5hIwZ0BjQqVqwEDfcdabG9qzs1X7QCOWv4iKE2hR2D3rdvrwHtypGbCKq735G+9TZB48DmzZscUiuR2G6N8HbHA9GqZRsxVaIdvOgIvnMHaS7wpzjOOmZM+ylxUG8QRecoucPd7+i19XaWOQDMHBUJwXKLL3utwQuq50AWGjduxtGU0wXGBDAkHCSoHtb0U3OBh1nR3ivuyx0ogXQ3Te9M78ztHICJ0hEyhwuxdg7CuOfPW8yZZYU50+mYtWYu7ddc4LE6t5d99GXEEcTa4tLo9ZNDlANwAmF2tkcICnOUAD41atRYjtr8EsPj6HmOttNc4OEl/cRYKvbo778/MWhpJnvN9OMezAEkkyCjzBbB0eflVdVWE4vHkDHlDtJc4PGEwqSEOGtrBPs5gsMAnaFT6OUAPKVqNKW1u4COX89OoJ+1c92xX3OBxyA7tO9EiRImtjheuPkrMeQdoOyg211k1//GjRtF79/AsM1clFei8lCLSI2zsNiRvjPEOYDCbQgNKMg6N2byqFG/5NBiQsPMj0T2dWs3SWhHiA/2vwG4JacVEXa5uDJc2zztOZHgVwH9BMDRDxznXosFvUCBQnJ5LHpmcaD/Kw4NRnbLlStXOA7+lAg8hw/Qu3fvOKjMstPCUxgYHscBkyHwOg8d2s8JG3MEDPb+/XucZLNPMqSwjsubN58k8/y+dTM1ZG+sx5AmAQpGnSC2pf+APsoNjqlwhDgKTilerJjCoZ9Kg/r1lQoVKiic6Kxwhr/C5RUd6UJvE4wcYIhxpUfPrkrHTu0UTg63eWX2sit9+/VSEC/lKaSpSgMVBbEzqVOlpjQcS22P0P4QZ/Y359DdhLySP8Z5jL1795aw0adPn8pbwl4f+vHg4wAnc1Pbdi05e+lbcRbZizjFGq0yL1hX8VteJeAJISQhpMhlgQcTVK8YdLcMHDfNszvHNz+ze0+n/0t4rlO3rgg7EqeLFi0qD0FeDiNAIq9OnsEBZD8BX6ZC+UoELCDHTM/EmPkF6PM/nxkuvKeEm7RjvP4mTRsIInJI3JlLOjz0tp/r1SJkwSC7PxXP7JjdUVVj6tSJ1I2DgGzNAvs5UbpcuXKy4AGGS4kSJYQHyGx5wYkB/+MFrk4hz4Hdu3fS6DEjWWgHUuFCRZweEILOAPL0E6/hUJWkebOWAkfudEcanOBy8BigHVatXMFFbBtJTSbUIb3Ff0eOHKKMXHJm/PjJItDOjBWZNqBodmy8zvSptw0aBxYumk/ruIwQnEHp0wUt2wlX/si/6YSJYyWbDYGDIUUuCzwGvmdvgJRk8enWw4BhAtwYxEWbx7SH1I3q13WOA/jtkLgN9dR/1DiB0HCuh6+tEWoyla06kAW1EiJ0eSTrJ+Hq34AlDy4KksDjBpCgkSxZckO03IaN6wl6HqpXwCarU+jlABAk+rDOjdpWgwYN5d8z6A5Cts7QnDmzxOeCVM7bd24TtABAYcN83aWzD9WqVSfYmBUkgT94cD8t47xGgI2m4KJg0N3xd+7cGS7z8l5gNLCA1Sn0cQBIAt17dKGSJUoTwJIiRLAfK2PrLrez7o7E/CRJkwoKQqqUqQS1YP1vawSvP7i9sEESeNwgzI/Xr18Ts9MdZtLt2zfpJidHo05S507dDK8uW8zQj3kWBxChOGhwf2rXrpPNogvOjBraAMp1GqOXzZs3W2b85s1bGmLgnenTlbZBFnhcFAuaPz98oJZGwfsIB/jf/6IZdHlXBqefG3wc2LBhvaTx+Q7zE7g9d10ZNnmU0GzP4ScwbWIxi0LQCEtwxHfj6ricEngsRFHMF1DHGCwcR8h1jMMxEw08yX3sKlfC0fnwoSAvFfgzY0aPtwhjrRU7tm7dInV0SzJ6GVQn6POoNXXkyGGJgffzG+32Gd8pgR8zdhRju/whidhYsEJvhw6/c8d2QSIAUphOoYcDiGUaPGSAxC4NHz7SYrE3re7mxo3r1LxFYynIkCZNWpEd6POownjj5nUxdtiKsNVqHE4JPPSx6TOmcBhAInH73+aSMIC2hnXmMNvdp0/7RUCVtBqc3o/7OIC3dY8e3QS4tnv3Xg57Tl0ZEUyRxhYflM48eGA/Oyh7mOj4rlzD7rnOBvUgIGiU/wiFzZACVK+ez+VK1E3908M5wKjASpWqFZQlS0OuQANDe0iQIYouBCc5HUuDJxQVqR88eGACbuootozdJ1Bv4FYOMKob+fh0ph7dewt8oVsvZqVzwCgCR7R48ZK0Zs1KNnEvsdJS+91OCzzKlsOzWqf2z8HyGtT+lsNvj4uXLKQJE8bS+HGTuahZ0RBhBOQHIF3wrj5mgCfUAoB5G+CtQSV+Qzh+qrOvk7lzf1E2b9no7Gl6+xDkAIcJKIwVpHCBOMHjDMGhyKUxHmO6deumYFayidJ4t8PbPXv0sBubr3Zmc4aH2RElToARAnxBPIkIDCtdqqzjT5TeMkQ5gEqInbu0F6hwGBWcQRBw18DNQ4th7UNg2vYdztdjZUF2qmK31fBgwOXBxg5QnMiR2EHAK+zo0WNQ1y4+NhO03cUkvV/nOYB6tt17dGZduZSU/nQ1TMD5ETh+RtWq1aWIWkFO/4wf/2t5HFs9oGL33Llz2cv/pWJ3rlz2oT0smiVXcrjvtOlTONrxk8XrrVi+WgLHLB7Ud3oEBxCYBXReoEOg+oanE9ANUPoIwKwA4MVbIFOmzNS0SQspu2M+fuCKbmQE6fSMjYNcDC5xyfH6faks51fYokAqDeIpJk4aZ1XY0RmKBcM9rJNncgCRqwMH9adhQ/1ChbDDv9OufSuunLiXa329Evg+ePSPHj0i+xGPb0yuVOwOJPDzF8w17tviNga4afNGi8f0nSHHAYQJTOUwgcWLF7ITcJah5mrIjcixK48d58+IFZe5usgHiydMmTqZEJagkq2K3QhUUwvkqe2NPwMJPLym9gjJAcePWa7FY+9c/bh7OIAgLK7OwQC1F+iXX+ZJuRr3XEnbXrliCCFwzRZBxZnF60k80CDUvAXuDaNaEOrILlm6lGFB8oq3FrWgqnOdXa56brHLQAKP2dsRwiJWJ8/gAMIEuHSM5A9PGD8lUEwM8H26de0qda6ArV+vXj35jv0hTUAgjhIlqt1hoNIjVBmQtYrdQLqYP38+v+WmMVLCKot9BhJ440puFs/4b2dwhHLaur5+7AsHoAq0bNWcypQuS337DLDoDIwVKxaDYP3ID0JsTsYeQ+PGjeOkjLVSqTyk+QghtmYcMR4bFrGvXr2UXdYqdhcrVkyOP+HiGShoZ4kCCXz1ajUcgkar5FXFUn/6vmDkwF72eHft1pFn6+52w7NRxhMQKDBNnj9/XkbpCTb5hIkSOZQSCt0ceDgqWavYDd/Rrl27qA2XLLVEgQS+atUaNvU/xNKULlWG8uTOa6k/fV8wcWAJhwmMHTeaoMIULVrc5lURBnzs2DF6xsk5Xbt0YRClsWzFGUTF/4NFsXmymw8WyF/QJCbL2uUg7ADqVclaxe65bJ5s266dPEQok2ROFu3w0ONhekSyLV4l+P4lrFOhsmXKU8+efVzOdTQfiP7dMQ7gtxg9eqRUzEPCxrffJrR7YsDu3YLuhsqHNWrUoHHjxzOgbSW75wVHA3hKR44cTlu3bbFZSGP5slV2k1MmTZpEy5ct4yoiCSW3ei0XvsMC15gsCrzaAMkB8ePHp4gRIlLixEkYJbaQ7nBSmRMCn2/Y6w0Er1ixYtPgQcPsYrOrQxw6ZIiA1K5dt446dujAFRTfyeJOPR7SnxB6yNrOndtNhoLJFn99eveXxBGTg0H8YjW0AP0hXx1Z5ajErFPIcuDevbvk072LVLhr26a9U6lwAQEBhhm9Vu3ajPzVTOJPgAnjCYR1xZDBvjzGyrSBS53e5AyoF1zdr3jxElLyMtl3pvV6XRqzGkVm6bNLlw4KLxYsHdL3BSMHUKW8klc5Sbpx9rITJ05UUqVMqbRp3VpBFXJe1Clc/lNp1LChEtzJF86MfcqUiQrHzTtzikNtrc7w79+/40zyqHqgmEvTiesnb9q0gdMqp9LQIb6C4elsj506dSL8GdOhw4eNv3rkNnRvWx7ToA7aqsCjSEGcuHGD2q9+nosc4OmKZsycSrt376JpU2e5rRS7i8N02+lxWfZUu7uWF7Eq8Pz6c8sTpuXgw2pfCBMYOnSgVEaZzWECwYm96Ck8jRsnrsA5aj2eQHZ49QLwuEKl8R/tJ+lXahyDelz/dA8Hnj17KhGCMWPGpEkTp4ZLYQdnEyVKTL/+ulxg+hDBi3oDcCq5SjbNklx6houOXRAb6QEG6tn6+y5Xr6efb4MDV69eoZ69fKTgW6OGem0rgDUhmPHCxfN0hotn+Pn5k6OhL9bYbCLwKAV/7/49QYW6y3gzCBBLmRJgSykoMT9xefPmt9aPvt9FDgCT02+kLzv1+lIxO55TFy8VKk7/wBCOmGT37tvDOEgJ2URZUjCPXM3aMhF4Pz9fQgmbcuUqsEUgl7xWQgV3Qvkgly5bLLAVKDrw4w8/hfK7cW34bCrlaiG/S+n5LFmyUQkWdEA7akUmAo9OkbC9O2CnIAEXKlRYZpvwuGjSisG2+kGYAOALL1+6xOEC43QHHzOrcJF8BOzJrCzsadKmpZQpUnHQmGM5rrZ4rR4LJPDqASyeAgJ284L1MNfmycjlw6voP4jKHA0+ESbQr19vihE9Og1mLyMKNutEnPX0J925e5vV6rt0h2O5AMWOhKPveZZP+t13VLNGbZfYFMgsiQvCjX2HdXgE3QPG+AAXQEiWLLkUK3PpavrJwoH7vE7q3qOrFAhr166jU2ECYZ2FePCh1qmq3QOuNIOiCshv1cIvZDLDd+rcnqMgiVKlSi2vkpQpUwo6sB5Lo52YnT59irhws1RJqVy5qnYdh7Gezp8/RwBbxZoS4c+FWb2OESOmy3dpMsMXYfi148ePcqrYNwKKD1hjnbTjwOYtm6Sc59AhwylXrjzadRyGesIaEnhICRibpmzZciyHOQ11xLS4TZMZHh0CHwQlJ3cH7GL9MgbXTi0l2e+RIuk1m4LKcIQJzJw5jWesHVx0YGK4CxNwhm/GMzt091SpuCYUL1xTsLaRik3kSFd0hQIJvNoZ3NtnuUgZEMj2MOLszh171UP6pxMcAB+HDRtELzlUw2+Ev0nWjhPdhMumgAkEqhjWk+J8OnOK5s5Z5NIC36DSAC7hLi9W4XDCyhiBO7B/Ahq7WLES4ZLhrt403OG9evtQ6lRpxBITHBUuXB2zJ50fOXIUAiIDkA2Q4tebE0FctWYZZniUFv+DMd8rVKhEmTJnoaRJkurWAxd+/WvXr7LX1IeqV69JjRs1daGn8HcqnE8AVsV6MnPmrFxCs5RmzieDwIOtl69cogAOR2X4YvJu2dqlUuPh72f6esdwKHGFDerZo4+4xL8e0bcc4QCcTxW4PD08rXA+QcvQikwEXu10x45tYotv1sxb3aV/OsEBBN0BexNg/zo5zwEkfkBvhwMKwYtp06TTrFq3QYc3HhYCd+Bo0iloHIjNgEe6sAeNdzgLcBxZs2aTv9Sp09A+DiDTiizGw8PDGocD8HXSORDSHEAiyOtXrzUbhkWBB2RxnLimeB6aXVHvSOeAExyIGzcem3RfOnGG7aYmAg8HCfRPWGtQ7QPfddI5EJIcgKMJ9V1hCNCCDItWBOjMnj2TnrDdE6lUCLTPzOZJ32F+FC9efC2upfehc8BhDmDi3blrOx06dJCxMM9R7tx5qGIFL8qXz7UkJBF4lLiZ9ct0Cc20NKIpk2dIbI2lY/o+nQNac+APjpBs3cabS998DFQk4YcMP3KYxhyLKMkYB7QSW1lREU+eOiElbhAWbI3gLXzOQJw66RxwNwcgh3Xq1iDUc7VUEeTqtSs0efIEQ3EE8/H07tVL1HLz/er3iAsXzFO3rX5CxQlKSUGrHeoHdA5Y4QDqi0WMaLK0NGmJGXzL75vEC2tygL/g2KNHj6QwhPkx9XvESw6UuMGr5TDrUjrpHHAnByCwe/YEWJ291WvDT7SdnaPGhBKWAwcOlGCzEydOGB8y2Y7oKNbHBysFp0x607/oHHCRA+/evXWoh/v37xvaoYTlgP79uZ5wJPL29iafbt1o21bLRY4jJmA4bHuERUC6tOntNdOP6xxwmQOO1HvCRQDFB3K2hGVEREeiIpotwqumPAfz6KRzwJ0c+GIKz2z3EgizLlKkmLSzVcLyL1bFnz55YtJfxNq161I89mZZM+XgYShfrqLFasgmPelfdA5owIEWzVv+V23GemfIhELZJZC1EpYxY8bkyt6jqFXr1iYV/cQOD09WhYplCIWjsEIGjiRS+lB9oRR3jAoM1h4I68PSj+gcCBoHECzWhyudmBNmdiSALF2y0qDSIMmmX79+dO3qVbHbZ8uWjYYOGyY+JSDmbdmyhW7dvMl4ne2lO4OnFd+QUX+Us0tu3rhOrzm9qnevfgy1l0oa6v/oHAhODiCBxtd3CFtdbskEDGCBEiVKUrOm3lzX6ms1P3VMhQoWZBz9GayJZFV30V6uXDiYi7cNHz6cCvBxIdbPAxG/MhTGTVHevHkT6Ji+Q+dAcHFg3PjRCocVKBxHo7DWYfWy9+7eVXLnyhXoOJsvlUULFypVKlc2HLNo4YcqkylTZjpz9rThadE3dA4EJweQwP3w4R9cPfxHUa9tqdTWSlhC/WnQsCGlS5fOMHSLCSA4mj1bDkFvLVyoiKExdP0v5SsNu/QNnQNu4cCZM6cltQ+Trz3KkCED4c+YZs2axSBOTxj/JxdXKm9lOGSiwxv28gbCMVt4N6HvuIJaBP7+/sN7isJZ5GPGTDBupm/rHHALB8aO86fSpctStqzZg9w/jDAo6mFMFlUaNMCTNWvmXOrFeOWZs2SV2qDde/Q2Plff1jngFg4glGX//n0UjXFNXSFzYUdfVmd4HESY5rz5c2SWR71Wew4qnKOTzgEtOAA8momTxlNuhiSsUqWazYAyZ65nVeD37A2gzZs3MjxxLb3yhzMc1dsGiQM9e3UTDBosTiPyHz7/YX/QHUYeQ5jw8OGjgtSv+UkWVwTIfELcMRaut+/clj+26yD+kk7zYgKQcTrpHNCSAzEZGfg6A6mWKVOOIrODCbIGmUuTOi3nYjzT7FIWBT5J0qRsyklPEf6LS8aiFd7XY8eOCl6NZlfXO9I58B8HBg0aRtAqNnIhZndqFVZVGuNf4sqVy7Ro8QLJK6zsVVVT+GLj6+jbOgfUdSNwkX6uW1/zdaNNgUes/MZNv8nMjjKKcALopHNASw6gtA1UloiRIrLuHlF0d2gTJ04epwsXzlO/vgMZRCCeZpe0KvBwMo0cOVzKjJQrW0FWyaxVfbkwf0SKHEnHntTsZwi/HaEO6/jxYwTAN1o0NkP+p7tD1t69fUcorFewYGHNGGRV4AGfDTUGocP82OF/ITik7t65Q5UqVRbHgGYj0TsKtxw4e/YMLV++RIBnsWg1DiOAvDnibXWUeVYFHuqMedWPo0cP0+o1q6hiRS+9eK6jHNbbOcSBV1wwYuHCeWKZady4maZqjPEArAq8cSN4vpavWCqIuM2athBHlPFxfVvnQFA4gGTsGDFiGE6FGRLJ2QG7d1KTJs3dsma0K/CPHj2kadOnCApZ9Wo1Sa9iYfh99A0XOVC9RmVJ5IgVK7aoMVCboc6gzti5c2dp/74jLl4h8Ol2BR7g9Nmz5yA4Bj7yQjZXztyEV45OOgdc5QCylaZMnciFr3+imjXriLCLg5M7RuCX8ezv6rXU8+0K/IsXzw22UAxm4KB+hLKLMWO6Vk1NHYD+Gb45AGvg8uXLGCH4BbVq2UaTWqy2OGo1WlI9KT7Xy0RBWPxByDNlzExYVeukc0ALDiC/okKFiowkdsztwo7x2hV485uCenOaywfqpHNAKw4gl7pqlepadWezH6cFHql/N65fJ6yw8Qc7qU46B1zhwKnTJyl7jhyudOHwuRaDx2yd/enT34Ihjyp1qrADlaxpsxZknA5oqw/9WPjlAMIGnj17yujALyk+o95FjBiJawK/CjZkO7uLVuOf5t27d1S+QikDdo3xMWx369aDalSvZb5b/65zQDhw8OB+msRJHU/ZOhMlSmQCoBLWhiVLlqauXXyChUsOCzxwuxs1/lngiG2NbNy4SZQ3Tz5bTfRj4ZAD+/fvFXAl1exozoJevfoSInHdTQ7r8IcOH6Q3b+wju06bNtndY9b7D2UcuHHjOvXu00PCBqwNfcKEsXTp0kVrhzXb77DAHzlyiBep7+1eGEhRcBropHNA5QDCUmwVOUA7yMwKbuducljgUR3ZEcKN2Sqf40gfepuwxYEzbMbGYtUWQdU5d/5coCbWVKBADR3c4bDAp0yR0u5TimsiFgKlBnXSOaByAJY9R+jTp78CNbNXsynQCXZ2OCzwJUqUCgRqY943wokLFiwcKKzYvJ3+PXxxIJWDgLzJk39vwhjM7vZqNpmc4MAXhwX+Rw7wQXC+LUIMfds2X2CJbbXTj4UvDlRnqBdHAsGMva2O1mxylpMOCzw6BgoZZnoAMhkvQvBdRSoDNJ9OOgeMOVCUq3VkzvwVxtr4GLaBEJY2bTpDlRlnajaZ92Xvu9OeVkRKXrx4gXbs3E6wyHzDuN358hegRIkS0ZIlC9n51JMSJEhg77r68XDEAazrsmbNJmjA9+7dZQGPxlaZv0TQMXHCbzN06AjhiFqzaeXKldSnTx/ybtmSNm7cSEj21oKcFngMHvE0+DMnZEZNmTKBfHx6mSxcAZuWMGEi8+b693DCgbVrV0uh4YULlrJO/pAOHjpAT58+ldCC/PkKUOrUacTYAXbYqtmE4zBf4i+ohpFIg5nQkRaUgi05CCjbtHkDY9jklTfAqtW/Ut++vQSuL1GixFpcRu8jFHFgJ2sCCA7r0L6zqMJx4sQRGOy8efNRFgbpjRcvvkHYcVv3HzygC+fPU3yG5njLoSwIQwD0Xkue6UH9+vYlhLhkyhx4wpUGdv5xeoa3058keKOma+cu7SX3FYJfuXJVSRG0d65+PHRzALZ247XdseNHudDwblFzHVm04u5z5sxJq1evJn9/f6nZ9JnjbVCzCbRz506bZeWlkb1/2PTjFmJdTfn48U+lb9+eyp07t91yDb1Tz+EA56Aq5cqXVHhtp7DjUX77BQvnKQsXzQ/SIAsWKKCcOXPGcO7jx4+VObNnK/PmzVNWLF9u2O/shlNWGnsPj/Fx2FS3bNksuj5UHRDX66GRo4bT5SuXjJvq22GAA+nTZ2AVJZsAog4a3J+RpzeRF2MXAabx5q2bTt3h/Xv3RE83LlA2buxYypU7Nz16+JBh3P8I8kzvNoF/8uQxIeDMy6sK7T+wj4b5Dqb169fIals3XTr1+4eKxkANQ81fLoQn1R8x6FH+fpQkcRKaNnWSzcAx8xu0VLMJJSh379rFk+UVhuC7IIte8/Mc+e5weLAjnRm3mTJloqzCER+ROnVqKlmiNO1gzBHMBKj9qlPo5wBMjIhxr8DAXDBPg8aMHcWJQEUpP5uqYbU7wMcXLZzPJSj9yNyTGhQOLFy4kKKz36d2nTpBOR1QftoT9PeSpYooS5ctVh4/fiQXYGBMZcjQgVKCEDs4W0o5cvSw8vbtW+0HoPcYLBzA2sy7ZVPFp3sXhX0wysNHD3m9dkfp06eH6PDqINgDr26G+KfbZniYJ9WVOUIOfIcPodq16orNFbPCLkaXAmoszFWZM2cJ2tOqnxXiHICzMXr0GPJb790bQFivoaDBtwm+pWrVaoT4+MwH4DYdXhV2XDAgYBcliJ+ALl2+SIN5QfPgwX1GhS0iFUZ0YTf/STz7O1DBAKCkUmWuv8Rvai4PmVu8pfCo4veFavP8+XO1med8uvsd8/r1K3ntde3WUVm3fo3CybsKl7VXevbyUXhh6+7L6/1rzAGexZVChfMqs+fMUhhhWnrntZkyffoUkyupx0x2esAXt6k0xo/0qVMnKWPGjIaixngNxuSY+WpVPe+VZzxufTswB6CewuKWN29+App0nG/icBJ2KVq3fq2orBkzZgp8kgftcZtKY3yPOXLkNAj73bt36CLnLuZhD+zQYYMkxsK4rb7t2RxAzkOtWnXoxIljNKD/YMF0RyDhh/fvafCQAYQHwpNJ01gaR250Cttko0ePTvv27aGfeDYA3nxKThDQIywd4Z5ntEFM1EkuSYMKj2U5R6JggUIS3hslalRKkyatAYvU3mjfvHlNpUoXk+jbsmXL22uuyXHNY2lsjQpRk5gJvDi2BjM8YujxyfogdezQmZIlSy6nIyYDQD2K8i/b8hOYxGfY6l8/FjwcWLXqV4rEAEp1av9suCAEHX/O0DesDiHqtk0wJg0Fiw5vjwlI8v115Qrq0tmHNmxYRyuZoQgB5SA5EXbo+i1atGK1KJq9rvTjLnKA/SMELzmSMixNNtu2b6WTJ45TFwZOCo2V2T1C4PEboUanr+9g8c7xYh67DIQiDJj1t28LkB/CcEDf0IwDMCECqx3RjZEjReYq2P8IKliD+g3p558byHUOHz5EW37fRD6MMIfZOTSSxwi830hfDjbbZBXOAYknqOg20m9MaOSzR48ZeEPVqnvJWxUzvDkVLlyEGjVsKhltmNlDc15DsFhpzBlo/v39+3cSZ2MLuwSzPiqBo3CtTtpxAAJeoWIZwRKyJOy4Emb2CRPHUvv2nVwSdhgqhrPHPSTJIwT+0qVLDtWOwiJXL8agrbjA2gJ93VyNNL4KHoT79+9TYo58dIX69O3JKtFmV7pw+dxgtdJYG60jEH44959//hUd31o/+n7nOYDiYYhqtEcQ+se8mE3mAiqFO4qU2Ru3+XGPmOERH29LnVEHHZmrf3+XLDAMCEyY165d9Xinh3ofnvSJID9bs7s6VqTufWQE6dBOHiHwqVKldmjVj1nG3NaLiuG9evtwUsB5HfEsCNII3jtiXgSsRtKk3wXhCp51ikcIPHTzwYO/JOraYg+Qz0aNGkGLORYHi9dHjx/R7NkzGSEhDyVO8lW/fMDHNmxcL/U+bfUX3o89fPgHcb6CWGds8QIWshw5comH3FY742OesEA1Ho+67TFmSQwIuY9t23qLeqMiEP/vf9FlrCOGj5SAJbyCkTK4adNvBNCevn0GcDb7dipduiwBDvAW9zF69EjOfs9F3t6t1fsMl5/jxo2mrdu20MqV6wwZSWAEgLR27dohk0bx4iUlXW76jCk2ebR50zaH3sJqJ6jvC/IEvV0dEz49SuAxoDdv39BedkLBGvMvL1IhxIjGg9fPmBCkhLhrJBz4+g5h4W7FntmINJHNZ4AGiRI1iqGiBFLROHuey6p0NySlGPcVFrbBD84eE4AivDFBSLRBpCryTLt27S6earwhQSVLlZYi05EiRZLvmzZtIPhCUEYStVNBMWOiXGkMmjxpuibpedJpCP/jEVYaYx4gN9KrUhX5M95vvo0fSkVDQFFbvAnGjR8tWTY3WK9PlPgL6NMdDnAayzNdMl7sGielmPcX2r+DHwi7vn79Gg0Z4iuzcdy48YBfTunSpadfZs9goNsOosIgv9S8sHQlRhgAONK+fXvp2vWrksWUlYGS8ucv6JCOH1r45xE6vCvMgooTgf/jBAQqXLioqD2vXr2kuHHj8qv6Cc2cOY0LrdXk7PmkrlzG485VVTtV9cMAv/8+BeVj6Lpp06bILA0egBcI50UaHtY+CRkD9JWV4haAQ6zBSL8Aze3UsYuE/jqyoPU45tgYUKgX+Jf8g+LHxyyGUFXQq5evRGdFKHIVLnj7idGr4saLa4MNXw6hH3gVAQ+IRS/eDo6YS+12HIQGCJ5DwV6sT+AcUtUMtSu8rXYyCgRSJhFmC4KAR4gYgVKnSUO//DJTvqMkJBadTZs0p5e85oGl6xWbcbWkGjWrkKqza9mvO/ryOJXG2Zv8xDmWqACHmHqVnr94TosWL5A4bcBF/LpyucFLiAUv0GrhXTQmBK/5+Q1jmzRxOcVPYuL891+Fw1cz0dgxEx3yBBv358r2unVrCItICKpK0NGbNW1B9es3UneJShebVcDpM6ZypGk3FvB4nDd8iVq1bCMqDMJ4//nns1irEGmK0ABGghOfhSUwXEPHTm706N6L5i+Y6+RZIdPc4xatrrIBM2HjJg3k1Vy3Tj3pbtYv02Uhu+G3dRQ/QQJxkxcqWJhf2SVE1z3B4a7AwrREWAgjLn/njj2GrC1L7bTat53DbxnOxGp3jRs3E4FGA6Dyxo4dW5Kq8ZAD6WvFr8uoZ48+UgMV2EC3GNK8X9+B/MB/WdNY7TicHAj1Ko3574SZcM7sBaQKO46/eP6CMcZ/ozw8s3fs0EUE4hPP4sPYujNz1nTq0bOreTeG7xB2WD0mT55o2Ge88e7dO6pXvzbBRa/SVFaljF/xUCPwfffunWoTi5/ow5aw46QVK5ZJLimQA06dOiFV0evU+VkK/cLUqKorCKnuwEk1yZMnZ2vWPYvXC487w5zAo7KzMXY4dPCNbLP/9tuEgmyMHxnphLVq1iEUd1D1Wls/PgQW9mx8mtPZs6dFRcKnSi9evhDrBgOAyq5Lly5ShQqV6CqHP9iitWtX2Tosx/AGGzPWn0aPGSkPMB5suP2bNfWWLLG7bILFQw+C0GO2z5kzt3zX4p/QpK9but8wJ/DmNwlhgPOjXdsO5ofEc/gvz+COLEwRb/KSBdmczrCgF+J48bM8O6MfeC9RUj0fZ/XjGOg0Z3Qh7/Pa1SuiT2MfvMQoDiCf2OY/RyNBsUgdNnSEwJCrdnQId6dOXdn3UEX6xTXcQdDXtdT/3TFGW32G+kWrrZtz5JgqMPbaQogXLJhn4l6HWgSoCu8WrWlPwG66ceO6/GXLlp2yMpIuFp+lSpYW1GSUVceCEl5OWFi6dO3IGIyFZZGsXpvxetRNm59RokQNtOjGCVC96tatb/NcVw8W4AcXf6GVwr3AZ86UhU1/O+xWGYcdu5JXZbH5G//YDdhqgtkVQn7mzGm6fuOaAVLwGUMJAm0N9a9gMsyWldvwrP+eE9n9RvhT9uw5jLuij/3/pABOsbNHGTL8YK+JftwKB8K8SmPlvg27ixUrwRn4ttkA8yAWhj/9mFFCHRDuoP6p6W5ZWeCPnzhGb9ipkyZNWtGr4ak8sH+fQArigoChO3fuDN1iT3DGjIEBi+D0ccTRU90DMRsNDPXwDdu/tIcPXovhYYE7efJ0m12VKFFKHDe2GgEHHeVZMvzwo8F+ni1bDoGLxuwPggkxTpy4lPz77y2qJFhc1qhey9ZlCG8UeJR1ChoHwpwdPmhsIIkfGTx4gEBUQBdWHVAo6NC5UzeZse31DVMhZmjVSgSrDhaxwEVXnUhAB8C6ASqONYITZ9Gi+aIqweKC9n9z+fY6detR61ZtrZ2m73eAA7rAmzEJCeXQsSMxVEWcOHFkIWjWJFi+4mHBGuAvTr+DVxhmVawVdHKNA/8HOAUJHzeSYTMAAAAASUVORK5CYII=" } }, "cell_type": "markdown", "metadata": {}, "source": [ "# Circulant Matrices\n", "\n", "In this lecture, I want to introduce you to a new type of matrix: **circulant** matrices. Like Hermitian matrices, they have orthonormal eigenvectors, but unlike Hermitian matrices we know *exactly* what their eigenvectors are! Moreover, their eigenvectors are closely related to the famous Fourier transform and Fourier series. Even more importantly, it turns out that circulant matrices and the eigenvectors lend themselves to **incredibly efficient** algorithms called FFTs, that play a central role in much of computational science and engineering.\n", "\n", "![a ring of springs](attachment:image.png)\n", "\n", "Consider a system of $n$ identical masses $m$ connected by springs $k$, sliding around a *circle* without friction. Similar to our mass-and-spring lectur, the vector $\\vec{s}$ of displacements satifies $m\\frac{d^2\\vec{s}}{dt^2} = -kA\\vec{s}$, where $A$ is the $n \\times n$ matrix:\n", "\n", "$$\n", "\\begin{aligned}\n", "A &= D^T \\underbrace{\\begin{pmatrix}\n", "-1 & 1 & 0 & 0 & 0\\\\\n", "0 & -1 & 1 & 0 & 0\\\\\n", "0 & 0 & \\ddots & \\ddots & 0\\\\\n", "0 & 0 & 0 & -1 & 1\\\\\n", "1 & 0 & 0 & 0 & -1\\\\\n", "\\end{pmatrix}}_D \\\\\n", "&= \\begin{pmatrix} 2 & -1 & & & & & -1 \\\\\n", " -1 & 2 &-1& & & & \\\\\n", " &-1 &2&-1& & & \\\\\n", " & &\\ddots&\\ddots&\\ddots& & \\\\ \n", " & & &-1 & 2 &-1 & \\\\\n", " & & & & -1 &2 & -1 \\\\\n", " -1 & & & & &-1 &2\n", " \\end{pmatrix}\n", "\\end{aligned}\n", "$$\n", "\n", "(This matrix is real-symmetric and, by the $D^T D$ construction, positive semidefinite. So, it should have orthogonal eigenvectors and real eigenvalues $\\lambda \\ge 0$.)\n", "\n", "For example, if $n = 7$:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7×7 Matrix{Int64}:\n", " 2 -1 0 0 0 0 -1\n", " -1 2 -1 0 0 0 0\n", " 0 -1 2 -1 0 0 0\n", " 0 0 -1 2 -1 0 0\n", " 0 0 0 -1 2 -1 0\n", " 0 0 0 0 -1 2 -1\n", " -1 0 0 0 0 -1 2" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [ 2 -1 0 0 0 0 -1\n", " -1 2 -1 0 0 0 0\n", " 0 -1 2 -1 0 0 0\n", " 0 0 -1 2 -1 0 0\n", " 0 0 0 -1 2 -1 0\n", " 0 0 0 0 -1 2 -1\n", " -1 0 0 0 0 -1 2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This matrix has a very special pattern: *every row is the same as the previous row, just shifted to the right by 1* (wrapping around \"cyclically\" at the edges). That is, each row is a [circular shift](https://en.wikipedia.org/wiki/Circular_shift) of the first row.\n", "\n", "This is called a [circulant matrix](https://en.wikipedia.org/wiki/Circulant_matrix). A $4\\times 4$ circulant matrix looks like:\n", "\n", "$$\n", "C = \\begin{pmatrix}\n", "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{pmatrix}\n", "$$\n", "\n", "The general form of an $n \\times n$ circulant matrix $C$ is:\n", "\n", "$$\n", "C = \\begin{pmatrix}\n", "c_0 & c_1 & c_2 & \\cdots & c_{n-1} \\\\\n", "c_{n-1} & c_0 & c_1 & c_2 & \\cdots \\\\\n", "c_{n-2} & c_{n-1} & c_0 & \\cdots \\\\\n", "\\ddots & \\ddots & \\ddots & \\ddots & \\ddots \\\\\n", "c_1 & c_2 & \\cdots & c_{n-1} & c_0 \n", "\\end{pmatrix}\n", "$$\n", "\n", "When working with circulant matrix, it is convenient to number entries from $0$ to $n-1$ rather than from $1$ to $n$!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiplying by circulant matrices: Convolutions\n", "\n", "Suppose we have an $n \\times n$ circulant matrix $C$ that we want to multiply by a vector $x = (x_0, x_1, \\ldots, x_n)$. It turns out that the result is a very special kind of operation:\n", "\n", "$$\n", "y = Cx = \\begin{pmatrix}\n", "c_0 & c_1 & c_2 & \\cdots & c_{n-1} \\\\\n", "c_{n-1} & c_0 & c_1 & c_2 & \\cdots \\\\\n", "c_{n-2} & c_{n-1} & c_0 & \\cdots \\\\\n", "\\ddots & \\ddots & \\ddots & \\ddots & \\ddots \\\\\n", "c_1 & c_2 & \\cdots & c_{n-1} & c_0 \n", "\\end{pmatrix} \\begin{pmatrix} x_0 \\\\ x_1 \\\\ \\vdots \\\\ x_{n-1} \\end{pmatrix}\n", "$$\n", "\n", "Let's write down a formula for the entries of $y$:\n", "\n", "$$\n", "y_0 = c_0 x_0 + c_1 x_1 + c_2 x_2 + \\cdots \\\\\n", "y_1 = c_{n-1} x_0 + c_0 x_1 + c_1 x_2 + \\cdots \\\\\n", "y_2 = c_{n-2} x_0 + c_{n-1} x_1 + c_0 x_2 + \\cdots\n", "$$\n", "\n", "Can you see the pattern? This is one of those cases that is actually clearer if we write out the summation:\n", "\n", "$$\n", "y_k = \\sum_{j=0}^{n-1} c_{j-k} x_j\n", "$$\n", "\n", "There is a slight problem with this formula: the subscript $j-k$ can be $< 0$! No problem: we just *interpret the subscript periodically*, i.e. we let $c_{-1} = c_{n-1}$, $c_{-2} = c_{n-2}$, and so on. Equivalently, we define $c_{j\\pm n} = c_j$. (We could say that the subscripts are [modulo n](https://en.wikipedia.org/wiki/Modular_arithmetic).)\n", "\n", "Multiplying by a circulant matrix is equivalent to a very famous operation called a [circular convolution](https://en.wikipedia.org/wiki/Circular_convolution). Convolution operations, and hence circulant matrices, show up in lots of applications: **digital signal processing**, **image compression**, **physics/engineering simulations**, **number theory** and **cryptography**, and so on." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Eigenvectors of circulant matrices\n", "\n", "One amazing property of circulant matrices is that **the eigenvectors are always the same**. The eigen-*values* are different for each C, but since we know the eigenvectors they are easy to diagonalize.\n", "\n", "We can actually see one eigenvector right away. Let's call it $x^{(0)}$:\n", "\n", "$$\n", "x^{(0)} = \\begin{pmatrix} 1 \\\\ 1 \\\\ 1 \\\\ \\vdots \\\\ 1 \\end{pmatrix}\n", "$$\n", "\n", "This is an eigenvector because multiplying $C x^{(0)}$ **simply sums each row of C**. But since each row of C contains the same entries (just in a different order), the sum is the same:\n", "\n", "$$\n", "C x^{(0)} = \\underbrace{(c_0 + c_1 + \\cdots + c_{n-1})}_{\\lambda_0} x^{(0)}\n", "$$\n", "\n", "Thus, one of the eigenvalues $\\lambda_0$ of $C$ is simply the sum of the row entries.\n", "\n", "For our example matrix $A$ above, this sum is $-1 + 2 + -1 = 0$, so $A$ is a *singular* matrix with an eigenvalue zero." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{Float64}:\n", " -6.847820921420924e-16\n", " 0.7530203962825327\n", " 0.7530203962825328\n", " 2.4450418679126287\n", " 2.4450418679126287\n", " 3.801937735804838\n", " 3.801937735804838" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigvals(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice the eigenvalue that is nearly zero (up to roundoff errors). \n", "\n", "**Is there also a simple formula for the other eigenvectors and eigenvalues?**\n", "\n", "(*This* matrix $A$ has special properties *beyond* being a circulant matrix. It is positive semidefinite — we actually already showed this in class, since $A=D^TD$ for a \"difference\" matrix $D$ — and the nonzero eigenvalues come in pairs — a consequence of the mirror symmetry of this problem. These properties are *not true* of *all* circulant matrices, however!) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Roots of unity\n", "\n", "The eigenvectors are simple to write down in terms of a very special value: a [primitive root of unity](https://en.wikipedia.org/wiki/Root_of_unity):\n", "\n", "$$\n", "\\omega_n = e^{\\frac{2\\pi i}{n}}\n", "$$\n", "\n", "The quantity $\\omega_n$ has the very special property that $\\omega_n^n = e^{2\\pi i} = 1 = \\omega_n^0$, but no smaller power equals 1. Therefore, $\\omega_n^{j+n} = \\omega_n^j \\omega_n^n = \\omega_n^j$: the **exponents of ωₙ are periodic**. (Just like the $c_j$!)\n", "\n", "For example, let's plot the powers of $\\omega_7$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6234898018587336 + 0.7818314824680298im" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ω₇ = exp(2π*im / 7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also construct it using a function called [`cis`](https://en.wikipedia.org/wiki/Cis_(mathematics)) (for [\"cosine + i sine\"](https://en.wikipedia.org/wiki/Euler%27s_formula)), defined as $\\mathrm{cis}(x) = e^{ix}$:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6234898018587336 + 0.7818314824680298im" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ω₇ = cis(2π / 7)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcQAAAHFCAYAAABsA4m6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1d0lEQVR4nO3de1iUdf7/8dcgA4gK5omDImi7HjaxXKkk1zBd8VCuaWlli7hWZuaa0H7dzK+b1rdcD6m5lma66lbbwVO7phlcnloTExG3PGS7haImoawKacIAn98fLvNrApUbmRnGno/rmuvy/sznns973o68vGfum7EZY4wAAPiR8/N2AQAA1AUEIgAAIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYi4xhUVFWnixIlKTExU8+bNZbPZNHXqVEuP8de//lXz5s2rNH748GHZbDbNnj27dop1ow0bNlh+3rWlpKREY8aMUUREhOrVq6ebbrrJo+uPHDlSMTExLmMvvPCC3nvvPY/WgbqPQMQ1raCgQIsXL1ZxcbHuvvvuGj3GpQLRl2zYsEHTpk3zytoLFy7Uq6++qsmTJ2v79u16/fXXPbr+lClTtHbtWpcxAhFV8fd2AYA7RUdH6/Tp07LZbDp16pSWLFni7ZIu67vvvlNQUJBsNpu3S6k1+/btU/369TVu3DivrH/99dd7ZV34Ho4QcU2z2WxXFS49e/bU+vXrdeTIEedjVfV4c+bMUZs2bdSwYUPFx8dr586dV3zs5cuXy2azKS0tTaNGjVLz5s0VHBys4uJilZeXa+bMmerQoYMCAwPVokULjRgxQseOHav0OH/+85914403KigoSE2aNNHgwYN18OBB5/0jR47Uyy+/7NIPm82mw4cPS5JWrlypW2+9VaGhoQoODlbbtm01atSoK9Z/4cIFTZo0SW3atFFAQIBatmypxx9/XGfOnHHOsdlsWrJkib777jvnusuXL7/kY8bExGjkyJGVxnv27KmePXs6t7du3Sqbzaa33npLkydPVmRkpEJCQvTLX/5Shw4dctn3h2+Z2mw2nTt3TitWrHDW1LNnTx0+fFj+/v6aPn16pfU/+ugj2Ww2rVy58op9gQ8zwI/EyZMnjSTzzDPPVHuf/fv3m+7du5vw8HCTkZHhvBljTE5OjpFkYmJiTL9+/cx7771n3nvvPRMbG2uuu+46c+bMmcs+9rJly4wk07JlSzN69GjzwQcfmFWrVpnS0lIzevRoI8mMGzfObNy40SxatMg0b97cREVFmZMnTzof44UXXjCSzAMPPGDWr19v/vKXv5i2bdua0NBQ88UXXxhjjPn3v/9t7r33XiPJ5TlcuHDB7Nixw9hsNnP//febDRs2mM2bN5tly5aZpKSky9ZeXl5u+vbta/z9/c2UKVNMWlqamT17tmnQoIHp0qWLuXDhgjHGmIyMDDNgwABTv35957r5+fmXfNzo6GiTnJxcaTwhIcEkJCQ4t7ds2eLs/YMPPmjWr19v3nrrLdO6dWvz05/+1JSWljrnJicnm+joaOd2RkaGqV+/vhkwYICzpv379xtjjBk8eLBp3bq1y/7GGDN06FATGRlpHA7HZfsC30Yg4kejJoFojDF33nmnyw/UChWBGBsb6/IDdNeuXUaSeeutty77uBWBOGLECJfxgwcPGklm7NixLuOffPKJkWSefvppY4wxp0+fdv5g/77c3FwTGBhohg8f7hx7/PHHTVX//509e7aRdMXw/qGNGzcaSWbmzJku4++8846RZBYvXuwcS05ONg0aNKjW41oNxB8+93fffdcZ/N9f/4d/fw0aNKhynYrHXbt2rXPs+PHjxt/f30ybNq1azwG+i7dMAUnl5eUqLS113srKyqq975133ql69eo5tzt37ixJOnLkSLX2v+eee1y2t2zZIkmV3jq85ZZb1LFjR23atEmSlJGRoe+++67SvKioKPXq1cs573JuvvlmSdKwYcP07rvv6vjx49WqefPmzVXWOHToUDVo0KBaa9eGX/3qVy7bVnv/Qz179tSNN97ofItZkhYtWiSbzabRo0fXvFD4BAIRkPTss8/Kbrc7b1ZOxGjatKnLdmBgoKSLJ8hUR0REhMt2QUFBleOSFBkZ6by/uvMu5/bbb9d7772n0tJSjRgxQq1atVKnTp301ltvXXa/goIC+fv7q3nz5i7jNptN4eHh1Vq7Nlxt76syfvx4bdq0SYcOHZLD4dBrr72me++9V+Hh4VdVK+o+AhGQNHr0aGVmZjpv69at89jaPzxJp+KH/IkTJyrN/frrr9WsWTNL865k0KBB2rRpk86ePautW7eqVatWGj58uDIyMi65T9OmTVVaWqqTJ0+6jBtjlJeXV+21fygoKEjFxcWV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J06ccLkmsaSkRL/73e90/Phx1a9fXzfccIPWr1+vAQMGeOspAADqKJ8KREkaO3asxo4dW+V9y5cvd9meOHGiJk6c6IGqAAC+zmc+QwQAwJ0IRAAARCACACCJQAQAQBKBCACAJAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEBSDQKxbdu2KigoqDR+5swZtW3btlaKAgDA0ywH4uHDh1VWVlZpvLi4WMePH6+VogAA8DT/6k78+9//7vzzhx9+qNDQUOd2WVmZNm3apJiYmFotDgAAT6l2IN59993OPycnJ7vcZ7fbFRMToxdffLHWCgMAwJOqHYjl5eWSpDZt2mj37t1q2rSp24oCAMDTLH2G6HA4FBMTU+VJNQAA+DJLgWi327Vv3z7ZbDZ31QMAgFdYPst0xIgRWrp0qTtqAQDAa6r9GWKFkpISLVmyROnp6YqLi1ODBg1c7p8zZ06tFQcAgKdYDsR9+/bp5z//uSTpiy++cLmPt1IBAL7KciBu2bLFHXUAAOBV/C5TAABUgyNEScrMzNTKlSuVm5urkpISl/vWrFlTK4UBAOBJlo8Q3377bXXv3l0HDhzQ2rVr5XA4dODAAW3evNnl17kBAOBLLAfiCy+8oLlz5+r9999XQECAXnrpJR08eFDDhg1T69at3VEjAABuZzkQv/zyS915552SpMDAQJ07d042m00pKSlavHhxrRcIAIAnWA7EJk2aqKioSJLUsmVL7du3T9LF70M8f/587VYHAICHWD6ppkePHkpPT1dsbKyGDRumJ554Qps3b1Z6erp69+7tjhoBAHA7y4G4YMECXbhwQZI0adIk2e12bd++XUOGDNGUKVNqvUAAADzBciA2adLE+Wc/Pz9NnDhREydOrNWiAADwtBpdh1hWVqa1a9fq4MGDstls6tixowYNGiR//xo9HAAAXlej32U6aNAg5eXlqX379pIu/k7T5s2b6+9//7tiY2NrvUgAANzN8lmmDz/8sG644QYdO3ZMe/bs0Z49e3T06FF17txZo0ePdkeNAAC4neUjxH/+85/avXu3rrvuOufYddddp+eff14333xzrRYHAICnWD5CbN++vb755ptK4/n5+frJT35SK0UBAOBpNfrVbePHj9eqVat07NgxHTt2TKtWrdKECRM0Y8YMFRYWOm8AAPgKy2+Z3nXXXZKkYcOGOb8Q2BgjSRo4cKBz22azqaysrLbqBADArfiCYAAAVINATEhIcEcdAAB4leXPEAEAuBYRiAAAiEAEAEASgQgAgKQaBOLUqVN15MgRd9QCAIDXWA7EdevW6frrr1fv3r3117/+1fndiAAA+DLLgZiVlaU9e/aoc+fOSklJUUREhB577DFlZma6oz4AADyiRp8hdu7cWXPnztXx48f15z//WcePH1f37t0VGxurl156SWfPnq3tOgEAP1KDBw/Wddddp3vvvdet61zVSTXl5eUqKSlRcXGxjDFq0qSJFi5cqKioKL3zzju1VSMA4Eds/Pjx+stf/uL2dWoUiFlZWRo3bpwiIiKUkpKiLl266ODBg9q2bZs+//xzPfPMMxo/fnxt1woA+BG644471KhRI7evYzkQO3furG7duiknJ0dLly7V0aNH9cc//tHlq59GjBihkydP1mqhAAC4k+XfZTp06FCNGjVKLVu2vOSc5s2bq7y8/KoKAwDAkywdITocDi1btoyTZgAAV2XcuHH6xS9+UeV9MTExev755z1ckcUjRLvdruLiYuf3IAIAYNWBAwe0cOFCffTRR1Xe37FjR+3du9ezRakGnyH+9re/1YwZM1RaWuqOegAA17hZs2bp5ptvVvfu3au8v0mTJvrmm2+c23379tXQoUO1YcMGtWrVym3XvVv+DPGTTz7Rpk2blJaWptjYWDVo0MDl/jVr1tRacQCAa0tpaalWr16tKVOmOMceffRR3XLLLXrooYckSUVFRS7Z8uGHH3qkNstHiI0bN9Y999yjvn37KjIyUqGhoS43AABclJXJtm2bWn70kb56+20VFRUpNjZW0sXr2VeuXKmGDRs6p3/66afq2LGjJM9dlC/V4Ahx2bJl7qij2l555RXNmjVLJ06c0A033KB58+apR48el5y/bds2paamav/+/YqMjNTEiRM1ZswYD1YMAD9ia9ZITzwh/2PHFCfpk/8ON8zKkvr104cffqjTp08rICBAkrRr1y4dOXJEd999t6SLF+WPGjVKK1ascHupPvX1T++8844mTJigyZMnKzs7Wz169FD//v2Vm5tb5fycnBwNGDBAPXr0UHZ2tp5++mmNHz9eq1ev9nDlAPAjtGaNdO+90rFj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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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dI0XCQCAu1m+yvSBBx7QL3/5Sx09elR79+7V3r17deTIEcXExGj06NHuqBEAALezfIT4z3/+U3v27NFVV13lbLvqqqv0/PPP61e/+lWNFgcAgKdYPkJs3769vvvuuwrteXl5uuaaa2qkKAAAPK1aX902btw4rV69WkePHtXRo0e1evVqjR8/XjNmzFBBQYHzAQCAr7B8yvSOO+6QJA0bNsz5g8DGGEnSoEGDnMs2m02lpaU1VScAAG7FDwQDAKBqBGJcXJw76gAAwKssf4YIAMCViEAEAEAEIgAAkghEAAAkVSMQp06dqsOHD7ujFgAAvMZyIG7YsEFXX321+vTpo7/85S/O30YEAMCXWQ7EjIwM7d27VzExMUpOTlZYWJgeeeQRpaenu6M+AAA8olqfIcbExGjOnDk6duyY3nzzTR07dkw9evRQdHS0XnnlFZ0+fbqm64RFgwcP1lVXXaW77rrL26UAQLUdOXJEvXr10rXXXquYmBitWrXKbWNd1kU1ZWVlKi4uVlFRkYwxatKkiRYuXKiIiAitXLmypmpENYwbN05//vOfvV0GAFwWPz8/zZ07V1lZWfrf//1fJScn68yZM24Zq1qBmJGRobFjxyosLEzJycnq0qWLDhw4oO3bt+vLL7/UlClTNG7cuJquFRbceuutatSokbfLAIDLEhYWps6dO0uSWrRooSZNmujf//63W8ayHIgxMTHq1q2bsrOztXTpUh05ckQvvviiy08/jRgxQt9//32NFgoA+O+2Z88elZWVKSIiwi37t/xdpkOHDtWoUaPUsmXLC/Zp3ry5ysrKLqswAADK5efna8SIEVqyZInbxrB0hOhwOLRs2TIumvGSsWPH6uabb650XVRUlJ5//nkPVwQA1WPl/ayoqEiDBw/WpEmTdNNNN7mtJktHiHa7XUVFRc7fQYTnZGVlaeHChdqxY0el6zt27Kh9+/Z5tigAqAYr72fGGI0cOVK9e/dWYmKiW+uy/BniY489phkzZqikpMQd9eACXnrpJf3qV79Sjx49Kl3fpEkTfffdd87lfv36aejQodq0aZNatWrFfaIAag0r72cff/yxVq5cqfXr16tz587q3LmzPv/8c7fUZfkzxE8++UQfffSRUlJSFB0drQYNGrisX7t2bY0Vh/NKSkq0Zs0aTZ482dn20EMP6YYbbtD9998vSSosLHT5u/jwww89XicAXIrV97Obb77ZY9ekWD5CbNy4se68807169dP4eHhCg4OdnmghpSWyrZ9u1ru2KFv3ntPhYWFio6OlnT+/s9Vq1apYcOGzu6fffaZOnbs6NGbWAGgSnzl/cz4mAULFpioqCjj7+9vrr/+erNjx46L9t+2bZu5/vrrjb+/v2nTpo1ZuHChpfFOnz5tJJnTp09fTtnWrFljTKtWxkjGSGa3ZCSZf/zpT8YYYzZt2mQkmbVr1xpjjPnkk0+MJLN9+3bz7bffmszMTGOMMd99951p2bKl+eGHHzxXu5cVFxeb9evXm+LiYm+X4jOYM+uYMwtqwftZVd/HLZ8y9aaVK1dq/Pjxeu2119SjRw+9/vrrGjBggLKystS6desK/bOzszVw4EA9+OCDevvtt/Xxxx9rzJgxat68ue68804vPIMqWLtWuuuu8y+d/4iUZJP07h//qAb+/nrizTc1cOBA/fWvf1VUVJQeeugh9e7dW7fccouk8zeySq43sf781DYAuJ2PvZ9VKxBXr16t999/Xzk5OSouLnZZt3fv3hoprDKzZ8/W/fffrwceeECSNHfuXH344YdauHChpk+fXqH/okWL1Lp1a82dO1fS+SuX9uzZo1mzZtXOQCwtlR5/3OXFI0mhkp6X9KKkNX/4g/40f75uuPFGJdx5p1atWqVBd9yh1159VfrZhU7Om1jDwiqsu2KVlKjuf/4rroa+NGOkoiLVkySHgzmrKl5nl1bV97OFC3VDt25KSEg4/342aJBee+21Crtz9035UjUCcd68eXr66aeVlJSkv/71r/rd736nr7/+Wunp6Xr00UfdUaMkqbi4WBkZGXryySdd2uPj47Vr165Kt0lLS1N8fLxLW79+/bR06VI5HA7Z7fYK2xQVFamoqMi5XFBQIOn8PZgOh+Nyn8ZF2bZvl9/Ro5Wum/Sfh8rKpFOnpG+/Vfarr/7/Dp9+6tI/v6BAI558Uksee0zavNldJdc6dkl31K0rffSRt0vxGXZJA+rWlbZs8XYpPoPXWRV8/rlUhfezkrZtZTp21FdffeXS56fvt/n5+UpMTNTrr79erffhqm5jORBfe+01LV68WPfee69WrFihiRMnqm3btnrmmWfc9v1yknTixAmVlpYqJCTEpT0kJES5ubmVbpObm1tp/5KSEp04ccJ5KP5T06dP17Rp0yq0p6SkKDAw8DKewaW13LFDsVXpeIl5LnI4NPiFFzTprrt0U8eONVIbAFhSxTzY9/e/69hFvqzb4XBoypQp6tevn06ePKlNmzZZLuXs2bNV6mc5EHNycpzfFFC/fn0VFhZKkhITE9WtWzfNnz/f6i4t+fmXAhhjLvpFAZX1r6y93KRJkzRhwgTnckFBgSIiIhQfH6+goKDqll0ltgYNpNmzL9mv5LbbZP5zfv3njDEaMXKk4hISdM8f/yj3HtPWPo6SEm3ZskW9e/eW3c+nPiL3DmPkKC7W9u3bFXfrrZWeNUFFvM4uzWa3y2/WrEv26zxggK6Li6t0nTFGiYmJGjJkiJ555plq11J+pu9SLP9NhoaGKj8/X5GRkYqMjNTu3bt13XXXKTs72xk27tCsWTPVrVu3wtFgXl5ehaPAn9ZaWX8/Pz81bdq00m38/f3l7+9fod1ut7v/zeLWW6VWraRjxyqcd5d0/rOKVq3kd9ttUt26le5i586dWrV6tWJiYrRh40ZJ0ltvveW8xPmK53CoVJI9IIA396qy21UsyV6/PnNWVbzOLu2226r2fnbrrRd/P1u16vz72YYNkqr3flbVvyPLgdi7d29t2LBB119/ve6//34lJydr9erV2rNnj4YMGWJ1d1VWr149de3aVampqRo8eLCzPTU1VQkJCZVu0717d+cklktJSVFsbGztfBHXrSu98sr5q7JsNtcXUfkR7dy5F3zxSJ69iRUALsgX38+s3s9RWlpqHA6Hc3nlypXmscceM6+88oopKiqyujtL3nvvPWO3283SpUtNVlaWGT9+vGnQoIE5dOiQMcaYJ5980iQmJjr7f/PNNyYwMNAkJyebrKwss3TpUmO3283q1aurPGZtuA/RSMZERJxvx0Vxf5h1zJl1zJkFteD9zG33IdapU0d16vz/L7gZNmyYhg0bVoMRfWF333238vPz9eyzz+r48ePq1KmTNm3apMjISEnS8ePHlZOT4+zfpk0bbdq0ScnJyVqwYIHCw8M1b9682nnLxU8NGSIlJKhk61bt+/vf1XnAgIueVgCAWsuH3s+q9WnwqVOn9OmnnyovL6/C4eyIESNqpLALGTNmjMaMGVPpuuXLl1doi4uLc+u9kW5Tt65MXJyOnTlz/gPnWvjiAYAq8ZH3M8uBuGHDBt133306c+aMGjVq5HK1ps1mc3sgAgDgDpa/3PuJJ57QqFGjVFhYqFOnTunkyZPOhzvvQwQAwJ0sB+KxY8c0btw4t9+kDgCAJ1kOxH79+mnPnj3uqAUAAK+x/Bni7bffrv/5n/9RVlaWoqOjK9zP9+tf/7rGigMAwFMsB+KDDz4oSXr22WcrrLPZbCotLb38qgAA8DDLgci3oAAArkSWP0MEAOBKVKUjxHnz5mn06NEKCAjQvHnzLtp33LhxNVIYAACeVKVAnDNnju677z4FBARozpw5F+xns9kIRACAT6pSIGZnZ1f6ZwAArhR8hggAgKpxlelPf03+p2w2mwICAnTNNdcoISFBTZo0ueziAADwFMuBmJmZqb1796q0tFTt27eXMUb/+te/VLduXXXo0EGvvfaannjiCe3cuVPXXnutO2oGAKDGWT5lmpCQoNtuu03ffvutMjIytHfvXh07dkx9+/bVvffeq2PHjumWW25RcnKyO+oFAMAtLAfiSy+9pOeee05BQUHOtqCgIE2dOlUzZ85UYGCgnnnmGWVkZNRooQAAuJPlQDx9+rTy8vIqtH///fcqKCiQJDVu3FjFxcWXXx0AAB5SrVOmo0aN0rp163T06FEdO3ZM69at0/3336/f/OY3kqRPP/1U7dq1q+laAQBwG8sX1bz++utKTk7WPffco5KSkvM78fNTUlKS86b9Dh06aMmSJTVbKQAAbmQ5EBs2bKg33nhDc+bM0TfffCNjjK6++mo1bNjQ2adz5841WSMAAG5nORDLNWzYUDExMTVZCwAAXlOtQExPT9eqVauUk5NT4eKZtWvX1khhAAB4kuWLat577z316NFDWVlZWrdunRwOh7KysrRlyxYFBwe7o0YAANzOciC+8MILmjNnjj744APVq1dPr7zyig4cOKBhw4apdevW7qgRAAC3sxyIX3/9tW6//XZJkr+/v86cOSObzabk5GQtXry4xgsEAMATLAdikyZNVFhYKElq2bKl9u/fL0k6deqUzp49W7PVAQDgIZYvqunZs6dSU1MVHR2tYcOG6fHHH9eWLVuUmpqqPn36uKNGAADcznIgzp8/X+fOnZMkTZo0SXa7XTt37tSQIUM0efLkGi8QAABPsByIP/2dwzp16mjixImaOHFijRYFAICnVfvG/Ly8POXl5amsrMylnZv1AQC+yHIgZmRkKCkpSQcOHJAxxmWdzWZTaWlpjRUHAICnWA7E3/3ud2rXrp2WLl2qkJAQ2Ww2d9QFAIBHWQ7E7OxsrV27Vtdcc4076gEAwCss34fYp08f/fOf/3RHLQAAeI3lI8QlS5YoKSlJ+/fvV6dOnWS3213W//rXv66x4gAA8BTLgbhr1y7t3LlTf//73yus46IaAICvsnzKdNy4cUpMTNTx48dVVlbm8iAMAQC+ynIg5ufnKzk5WSEhIe6oBwAAr7AciEOGDNHWrVvdUQsAAF5j+TPEdu3aadKkSdq5c6eio6MrXFQzbty4GisOAABPqdZVpg0bNtT27du1fft2l3U2m41ABAD4pGrdmA8AwJXG8meIAABciap0hDhhwgQ999xzatCggSZMmHDRvrNnz66RwgAA8KQqBWJmZqYcDofzzxfCF30DAHxVlQLxp7dZcMsFAOBKxGeIAACIQAQAQBKBCACAJAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEASgQgAgCQCEQAAST4UiCdPnlRiYqKCg4MVHBysxMREnTp16qLbjBw5UjabzeXRrVs3zxQMAPApft4uoKqGDx+uo0ePavPmzZKk0aNHKzExURs2bLjodv3799eyZcucy/Xq1XNrnQAA3+QTgXjgwAFt3rxZu3fv1o033ihJeuONN9S9e3cdPHhQ7du3v+C2/v7+Cg0N9VSpAAAf5ROBmJaWpuDgYGcYSlK3bt0UHBysXbt2XTQQt23bphYtWqhx48aKi4vT888/rxYtWlywf1FRkYqKipzLBQUFkiSHwyGHw1EDz6bqysfz9Li+jDmzjjmzjjmzzptzVtUxfSIQc3NzKw2xFi1aKDc394LbDRgwQEOHDlVkZKSys7M1efJk9e7dWxkZGfL39690m+nTp2vatGkV2lNSUhQYGFj9J3EZUlNTvTKuL2POrGPOrGPOrPPGnJ09e7ZK/bwaiFOnTq00fH4qPT1dkmSz2SqsM8ZU2l7u7rvvdv65U6dOio2NVWRkpDZu3KghQ4ZUus2kSZM0YcIE53JBQYEiIiIUHx+voKCgi9Za0xwOh1JTU9W3b1/Z7XaPju2rmDPrmDPrmDPrvDln5Wf6LsWrgTh27Fjdc889F+0TFRWlzz77TN99912Fdd9//71CQkKqPF5YWJgiIyP1r3/964J9/P39Kz16tNvtXnvhe3NsX8WcWcecWcecWeeNOavqeF4NxGbNmqlZs2aX7Ne9e3edPn1an376qW644QZJ0ieffKLTp0/rpptuqvJ4+fn5OnLkiMLCwqpdMwDgyuQT9yF27NhR/fv314MPPqjdu3dr9+7devDBB3XHHXe4XFDToUMHrVu3TpL0ww8/6Pe//73S0tJ06NAhbdu2TYMGDVKzZs00ePBgbz0VAEAt5ROBKEnvvPOOoqOjFR8fr/j4eMXExOitt95y6XPw4EGdPn1aklS3bl19/vnnSkhIULt27ZSUlKR27dopLS1NjRo18sZTAADUYj5xlakkNWnSRG+//fZF+xhjnH+uX7++PvzwQ3eXBQC4QvjMESIAAO5EIAIAIAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEASgQgAgCQCEQAASQQiAACSCEQAACQRiAAASCIQAQCQRCACACCJQAQAQBKBCACAJAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEASgQgAgCQCEQAASQQiAACSCEQAACQRiAAASCIQAQCQRCACACCJQAQAQBKBCACAJAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEASgQgAgCQfCsTnn39eN910kwIDA9W4ceMqbWOM0dSpUxUeHq769eurV69e+uKLL9xbKADAJ/lMIBYXF2vo0KF65JFHqrzNzJkzNXv2bM2fP1/p6ekKDQ1V3759VVhY6MZKAQC+yGcCcdq0aUpOTlZ0dHSV+htjNHfuXD399NMaMmSIOnXqpBUrVujs2bP6y1/+4uZqAQC+xs/bBbhLdna2cnNzFR8f72zz9/dXXFycdu3apYceeqjS7YqKilRUVORcLigokCQ5HA45HA73Fv0z5eN5elxfxpxZx5xZx5xZ5805q+qYV2wg5ubmSpJCQkJc2kNCQnT48OELbjd9+nRNmzatQntKSooCAwNrtsgqSk1N9cq4vow5s445s445s84bc3b27Nkq9fNqIE6dOrXS8Pmp9PR0xcbGVnsMm83msmyMqdD2U5MmTdKECROcywUFBYqIiFB8fLyCgoKqXUd1OBwOpaamqm/fvrLb7R4d21cxZ9YxZ9YxZ9Z5c87Kz/RdilcDcezYsbrnnnsu2icqKqpa+w4NDZV0/kgxLCzM2Z6Xl1fhqPGn/P395e/vX6Hdbrd77YXvzbF9FXNmHXNmHXNmnTfmrKrjeTUQmzVrpmbNmrll323atFFoaKhSU1PVpUsXSeevVN2+fbtmzJjhljEBAL7LZ64yzcnJ0b59+5STk6PS0lLt27dP+/bt0w8//ODs06FDB61bt07S+VOl48eP1wsvvKB169Zp//79GjlypAIDAzV8+HBvPQ0AQC3lMxfVPPPMM1qxYoVzufyob+vWrerVq5ck6eDBgzp9+rSzz8SJE/Xjjz9qzJgxOnnypG688UalpKSoUaNGHq0dAFD7+UwgLl++XMuXL79oH2OMy7LNZtPUqVM1depU9xUGALgi+MwpUwAA3IlABABABCIAAJIIRAAAJBGIAABIIhABAJBEIAIAIIlABABAEoEIAIAkAhEAAEkEIgAAkghEAAAkEYgAAEgiEAEAkEQgAgAgiUAEAEASgQgAgCQCEQAASQQiAACSCEQAACQRiAAASCIQAQCQRCACACBJ8vN2AbWdMUaSVFBQ4PGxHQ6Hzp49q4KCAtntdo+P74uYM+uYM+uYM+u8OWfl79/l7+cXQiBeQmFhoSQpIiLCy5UAAC5HYWGhgoODL7jeZi4Vmf/lysrK9O2336pRo0ay2WweHbugoEARERE6cuSIgoKCPDq2r2LOrGPOrGPOrPPmnBljVFhYqPDwcNWpc+FPCjlCvIQ6deqoVatWXq0hKCiI/+ksYs6sY86sY86s89acXezIsBwX1QAAIAIRAABJBGKt5u/vrylTpsjf39/bpfgM5sw65sw65sw6X5gzLqoBAEAcIQIAIIlABABAEoEIAIAkAhEAAEkEYq3y/PPP66abblJgYKAaN25cpW2MMZo6darCw8NVv3599erVS1988YV7C61FTp48qcTERAUHBys4OFiJiYk6derURbcZOXKkbDaby6Nbt26eKdhLXnvtNbVp00YBAQHq2rWr/vGPf1y0//bt29W1a1cFBASobdu2WrRokYcqrT2szNm2bdsqvKZsNpu+/PJLD1bsPTt27NCgQYMUHh4um82m9evXX3Kb2vgaIxBrkeLiYg0dOlSPPPJIlbeZOXOmZs+erfnz5ys9PV2hoaHq27ev8ztYr3TDhw/Xvn37tHnzZm3evFn79u1TYmLiJbfr37+/jh8/7nxs2rTJA9V6x8qVKzV+/Hg9/fTTyszMVM+ePTVgwADl5ORU2j87O1sDBw5Uz549lZmZqaeeekrjxo3TmjVrPFy591ids3IHDx50eV394he/8FDF3nXmzBldd911mj9/fpX619rXmEGts2zZMhMcHHzJfmVlZSY0NNS8+OKLzrZz586Z4OBgs2jRIjdWWDtkZWUZSWb37t3OtrS0NCPJfPnllxfcLikpySQkJHigwtrhhhtuMA8//LBLW4cOHcyTTz5Zaf+JEyeaDh06uLQ99NBDplu3bm6rsbaxOmdbt241kszJkyc9UF3tJsmsW7fuon1q62uMI0Qflp2drdzcXMXHxzvb/P39FRcXp127dnmxMs9IS0tTcHCwbrzxRmdbt27dFBwcfMnnv23bNrVo0ULt2rXTgw8+qLy8PHeX6xXFxcXKyMhweY1IUnx8/AXnKC0trUL/fv36ac+ePXI4HG6rtbaozpyV69Kli8LCwtSnTx9t3brVnWX6tNr6GiMQfVhubq4kKSQkxKU9JCTEue5KlpubqxYtWlRob9GixUWf/4ABA/TOO+9oy5Ytevnll5Wenq7evXurqKjIneV6xYkTJ1RaWmrpNZKbm1tp/5KSEp04ccJttdYW1ZmzsLAwLV68WGvWrNHatWvVvn179enTRzt27PBEyT6ntr7G+LULN5s6daqmTZt20T7p6emKjY2t9hg//1kqY4zHf6qqJlV1zqSKz1269PO/++67nX/u1KmTYmNjFRkZqY0bN2rIkCHVrLp2s/oaqax/Ze1XMitz1r59e7Vv39653L17dx05ckSzZs3SLbfc4tY6fVVtfI0RiG42duxY3XPPPRftExUVVa19h4aGSjr/r62wsDBne15eXoV/ffmSqs7ZZ599pu+++67Cuu+//97S8w8LC1NkZKT+9a9/Wa61tmvWrJnq1q1b4cjmYq+R0NDQSvv7+fmpadOmbqu1tqjOnFWmW7duevvtt2u6vCtCbX2NEYhu1qxZMzVr1swt+27Tpo1CQ0OVmpqqLl26SDr/+cf27ds1Y8YMt4zpCVWds+7du+v06dP69NNPdcMNN0iSPvnkE50+fVo33XRTlcfLz8/XkSNHXP5RcaWoV6+eunbtqtTUVA0ePNjZnpqaqoSEhEq36d69uzZs2ODSlpKSotjYWNntdrfWWxtUZ84qk5mZeUW+pmpCrX2NefOKHrg6fPiwyczMNNOmTTMNGzY0mZmZJjMz0xQWFjr7tG/f3qxdu9a5/OKLL5rg4GCzdu1a8/nnn5t7773XhIWFmYKCAm88BY/r37+/iYmJMWlpaSYtLc1ER0ebO+64w6XPT+essLDQPPHEE2bXrl0mOzvbbN261XTv3t20bNnyip2z9957z9jtdrN06VKTlZVlxo8fbxo0aGAOHTpkjDHmySefNImJic7+33zzjQkMDDTJyckmKyvLLF261NjtdrN69WpvPQWPszpnc+bMMevWrTNfffWV2b9/v3nyySeNJLNmzRpvPQWPKiwsdL5fSTKzZ882mZmZ5vDhw8YY33mNEYi1SFJSkpFU4bF161ZnH0lm2bJlzuWysjIzZcoUExoaavz9/c0tt9xiPv/8c88X7yX5+fnmvvvuM40aNTKNGjUy9913X4VL3386Z2fPnjXx8fGmefPmxm63m9atW5ukpCSTk5Pj+eI9aMGCBSYyMtLUq1fPXH/99Wb79u3OdUlJSSYuLs6l/7Zt20yXLl1MvXr1TFRUlFm4cKGHK/Y+K3M2Y8YMc/XVV5uAgABz1VVXmZtvvtls3LjRC1V7R/ltJz9/JCUlGWN85zXGzz8BACBuuwAAQBKBCACAJAIRAABJBCIAAJIIRAAAJBGIAABIIhABAJBEIAL/NQ4dOiSbzaZ9+/Z5uxSgViIQAXjEyJEj9Zvf/MbbZQAXRCACtVxxcbG3S7gspaWlKisr83YZwCURiEAt06tXL40dO1YTJkxQs2bN1LdvX0lSVlaWBg4cqIYNGyokJESJiYkuP6a6efNm3XzzzWrcuLGaNm2qO+64Q19//bWlsaOiovTcc89p+PDhatiwocLDw/Xqq6+69Jk9e7aio6PVoEEDRUREaMyYMfrhhx+c65cvX67GjRvrgw8+0LXXXit/f3/97ne/04oVK/TXv/5VNptNNptN27Ztq/4kAW5AIAK10IoVK+Tn56ePP/5Yr7/+uo4fP664uDh17txZe/bs0ebNm/Xdd99p2LBhzm3OnDmjCRMmKD09XR999JHq1KmjwYMHWz46e+mllxQTE6O9e/dq0qRJSk5OVmpqqnN9nTp1NG/ePO3fv18rVqzQli1bNHHiRJd9nD17VtOnT9eSJUv0xRdfaN68eRo2bJj69++v48eP6/jx45Z+ogvwCG9/uzgAV3FxcaZz584ubZMnTzbx8fEubUeOHDGSzMGDByvdT15enpHk/PWT7OxsI8lkZmZecOzIyEjTv39/l7a7777bDBgw4ILbvP/++6Zp06bO5WXLlhlJZt++fS79kpKSTEJCwgX3A3gbR4hALRQbG+uynJGRoa1bt6phw4bOR4cOHSTJeVr066+/1vDhw9W2bVsFBQWpTZs2kqScnBxLY3fv3r3C8oEDB5zLW7duVd++fdWyZUs1atRII0aMUH5+vs6cOePsU69ePcXExFgaF/A2P28XAKCiBg0auCyXlZVp0KBBmjFjRoW+5b/KPmjQIEVEROiNN95QeHi4ysrK1KlTpxq5KMdms0mSDh8+rIEDB+rhhx/Wc889pyZNmmjnzp26//775XA4nP3r16/v3AbwFQQi4AOuv/56rVmzRlFRUfLzq/i/bX5+vg4cOKDXX39dPXv2lCTt3LmzWmPt3r27wnL50eiePXtUUlKil19+WXXqnD/B9P7771dpv/Xq1VNpaWm1agI8gVOmgA949NFH9e9//1v33nuvPv30U33zzTdKSUnRqFGjVFpaqquuukpNmzbV4sWL9X//93/asmWLJkyYUK2xPv74Y82cOVNfffWVFixYoFWrVunxxx+XJF199dUqKSnRq6++qm+++UZvvfWWFi1aVKX9RkVF6bPPPtPBgwd14sQJlyNKoDYgEAEfEB4ero8//lilpaXq16+fOnXqpMcff1zBwcGqU6eO6tSpo/fee08ZGRnq1KmTkpOT9dJLL1VrrCeeeEIZGRnq0qWLnnvuOb388svq16+fJKlz586aPXu2ZsyYoU6dOumdd97R9OnTq7TfBx98UO3bt1dsbKyaN2+ujz/+uFr1Ae5iM8YYbxcBoHaIiorS+PHjNX78eG+XAngcR4gAAIhABABAEqdMAQCQxBEiAACSCEQAACQRiAAASCIQAQCQRCACACCJQAQAQBKBCACAJAIRAABJBCIAAJKk/wfz1GQcuSC5AAAAAABJRU5ErkJggg==", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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m8DAQCIiIvjXv/5VYpv58+cTGxtLvXr1iIyMZOLEifz888+Ox5cuXUqDBg343//+R4cOHfD19eUPf/gDb731Fp988gk2mw2bzcb69esr30giLqBAFKmB3nrrLby8vPj666959dVXSU9PJz4+ni5durB161Y+//xzjh8/zqhRoxzPOXfuHFOnTmXLli18+eWXeHh4cMsttzh9dDZv3jzi4uLYvn0706dPZ8qUKSQkJDge9/Dw4MUXX2T37t289dZbrF27lmnTppV4jdzcXGbPns3rr7/Onj17ePHFFxk1ahQ33HAD6enppKenO3WJLpFqYfXs4iJSUnx8vNGlS5cS62bMmGEMHjy4xLojR44YgJGcnFzm62RmZhqA4+onKSkpBmDs2LGj3H1HRUUZN9xwQ4l1d9xxhzF06NByn/Phhx8ajRs3dtxfsmSJARg7d+4ssd3YsWONESNGlPs6IlbTEaJIDdS9e/cS97dt28a6desIDAx03Nq1awfgOC164MAB7r77blq1akVQUBAtW7YEIDU11al99+rVq9T9pKQkx/1169YxaNAgmjVrRv369RkzZgynTp3i3Llzjm18fHyIi4tzar8iVvOyugARKa1evXol7hcVFTF8+HDmzJlTatviq7IPHz6cyMhIXnvtNSIiIigqKqJTp05V0inHZrMBcPjwYYYNG8YDDzzAU089RaNGjdi0aRPjxo3Dbrc7tvf393c8R8RdKBBF3MC1117L8uXLiY6Oxsur9I/tqVOnSEpK4tVXX6Vv374AbNq0qVL7+vbbb0vdLz4a3bp1KwUFBTz33HN4eJgnmD788MMKva6Pjw+FhYWVqkmkOuiUqYgbeOihhzh9+jR33XUX33//PQcPHmTNmjXcd999FBYW0rBhQxo3bszixYv56aefWLt2LVOnTq3Uvr7++mvmzp3Lvn37ePnll1m2bBkPP/wwAK1bt6agoIB//etfHDx4kHfeeYdFixZV6HWjo6PZtWsXycnJnDx5ssQRpUhNoEAUcQMRERF8/fXXFBYWMmTIEDp16sTDDz9McHAwHh4eeHh48P7777Nt2zY6derElClTmDdvXqX29eijj7Jt2za6du3KU089xXPPPceQIUMA6NKlC/Pnz2fOnDl06tSJf//738yePbtCr3v//fcTExND9+7dadKkCV9//XWl6hNxFZthGIbVRYhIzRAdHc0jjzzCI488YnUpItVOR4giIiIoEEVERACdMhUREQF0hCgiIgIoEEVERAAFooiICKBAFBERARSIIiIigAJRREQEUCCKiIgACkQRERFAgSgiIgLA/wc+V5h0b8j6cQAAAABJRU5ErkJggg==", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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UCCKiIgACkQRERFAgSgiIgIoEEVERAAFooiICKBAFBERARSIIiIigAJRREQEUCCKiIgACkQRERFAgSgiIgIoEEVERAAFooiICKBAFBERARSIIiIigAJRREQEUCCKiIgACkQRERGgBIFYr149Tp06VaT9zJkz1KtXr1SKEhERcTenA/HgwYPk5+cXac/JySEtLa1UihIREXE3P0c7fvbZZ/a/v/rqK4KDg+3L+fn5rF27lsjIyFItTkRExF0cDsR7773X/ndcXFyhdVarlcjISF599dVSK0xERMSdHA7EgoICAOrWrcv27dupVq2ay4oSERFxN6feQ7TZbERGRhZ7U42IiIg3cyoQrVYre/bswWKxuKoeERERj3D6LtN+/foxZ84cV9QiIiLiMQ6/h3hBbm4us2fPJiEhgRYtWlC+fPlC66dOnVpqxYmIiLiL04G4Z88ebrnlFgAOHDhQaJ0upYqIiLdyOhDXr1/vijpEREQ8St9lKiIiQgnOEAG2bdvG4sWLOXz4MLm5uYXWLVu2rFQKExERcSenzxAXLVpE27ZtSUlJYfny5dhsNlJSUli3bl2hr3MTERHxJk4H4ssvv8xrr73G559/jr+/P6+//jr79u2jd+/eXHfdda6oUURExOWcDsSffvqJu+++G4CAgACysrKwWCzEx8cza9asUi9QRETEHZwOxKpVq5KZmQlA7dq12bNnD3D+9xCzs7NLtzoRERE3cfqmmnbt2pGQkEBUVBS9e/fmySefZN26dSQkJNCpUydX1CgiIuJyTgfi9OnTOXfuHACjR4/GarWyadMmevXqxZgxY0q9QBEREXdwOhCrVq1q/9vHx4dRo0YxatSoUi1KRETE3Ur0OcT8/HyWL1/Ovn37sFgsNGrUiB49euDnV6LdiYiIeFyJvsu0R48epKen06BBA+D8d5rWqFGDzz77jKioqFIvUkRExNWcvsv0X//6FzfddBNHjx5l586d7Ny5kyNHjtCkSRMGDhzoihpFRERczukzxO+++47t27dTpUoVe1uVKlUYP348t956a6kWJyIi4i5OnyE2aNCA48ePF2k/ceIEN9xwQ6kUJSIi4m4l+uq2YcOGsWTJEo4ePcrRo0dZsmQJw4cPZ+LEiWRkZNgfIiIi3sLpS6b33HMPAL1797b/ILAxBoDu3bvbly0WC/n5+aVVp4iIiEvpB4JF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OUnHmfM8MWeOjufRQKxevTrVq1e/Yr82bdpw9uxZtm7dSsuWLQH49ttvOXv2LLfddpvD4506dYojR44QGhpa4ppFROTa5BWfQ2zUqBF33XUXjz76KFu2bGHLli08+uij3HPPPYVuqGnYsCHLly8H4LfffmPkyJEkJSVx8OBBNmzYQPfu3alevTo9e/b01FMREZEyyisCEeDDDz8kKiqKmJgYYmJiaNKkCQsWLCjUZ//+/Zw9exYAX19fvv/+e3r06EH9+vWJi4ujfv36JCUlUbFiRU88BRERKcO84i5TgKpVq/LBBx9cto8xxv53uXLl+Oqrr1xdloiIXCO85gxRRETElRSIIiIiKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEERERQIEoIiICKBBFREQABaKIiAigQBQREQEUiCIiIoACUUREBFAgioiIAApEESmhzMxMbr31Vpo2bUpUVBTvvvuup0sSuSp+ni5ARLxTUFAQiYmJBAUFkZ2dTePGjenVqxfVqlXzdGkiJaIzRBEpEV9fX4KCggA4d+4c+fn5GGM8XJVIySkQRaTEzpw5w80330ydOnUYNWoU1atX93RJIiWmQBSREqtcuTLfffcdqampfPTRRxw/ftzTJYmUmAJRRAoZOnQot99+e7HrIiMjGT9+fJH2WrVq0aRJEzZu3Ojq8kRcRoEoInYpKSnMnDmTiRMnFru+UaNG7Nq1C4Djx4+TkZEBQEZGBhs3bqRBgwbuKlWk1OkuUxGxmzx5Mrfeeitt27Ytdn3VqlU5cuQIAEePHmXAgAEYYzDGMHToUJo0aeLOckVKlQJRRADIy8tj6dKljBkzxt42aNAgWrZsyYABA4Dznz0sX748AM2bN7efLYpcC3TJ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k08+MdWqVbMvz5071wBm165dhfrFxcWZHj16XHI/Ip6mM0SRMqhFixaFlnfs2MH69eupUKGC/dGwYUMA+2XRn376ib59+1KvXj0qVapE3bp1ATh8+LBTY7dp06bI8r59++zL69evp3PnztSuXZuKFSvSr18/Tp06RVZWlr2Pv78/TZo0cWpcEU/z83QBIlJU+fLlCy0XFBTQvXt3Jk6cWKTvhV9l7969O+Hh4bz77ruEhYVRUFBA48aNS+WmHIvFAsChQ4fo1q0bgwcP5qWXXqJq1aps2rSJAQMGYLPZ7P3LlStn30bEWygQRbzALbfcwtKlS4mMjMTPr+j/tqdOnWLfvn288847tGvXDoBNmzaVaKwtW7YUWb5wNrp9+3by8vJ49dVX8fE5f4Hpk08+cWi//v7+5Ofnl6gmEXfQJVMRL/D444/z3//+l4ceeoitW7fy888/s2bNGh555BHy8/OpUqUK1apVY9asWfzv//4v69atY8SIESUa65tvvmHSpEkcOHCAt956i8WLF/Pkk08CcP3115OXl8ebb77Jzz//zIIFC3j77bcd2m9kZCS7d+9m//79nDx5stAZpUhZoEAU8QJhYWF888035Ofn06VLFxo3bsyTTz5JcHAwPj4++Pj4sGjRInbs2EHjxo2Jj49n8uTJJRrrqaeeYseOHTRr1oyXXnqJV199lS5dugDQtGlTpk6dysSJE2ncuDEffvghEyZMcGi/jz76KA0aNKBFixbUqFGDb775pkT1ibiKxRhjPF2EiJQNkZGRDB8+nOHDh3u6FBG30xmiiIgICkQRERFAl0xFREQAnSGKiIgACkQRERFAgSgiIgIoEEVERAAFooiICKBAFBERARSIIiIigAJRREQEUCCKiIgA8P8BIZ7/Mel7wc4AAAAASUVORK5CYII=", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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tQ/JLhUXF6Nnz57o378/duzYYbXjWDyX6aOPPoqnn34arVq1qnOfli1bwtgU3TdEdGetWslZbg4flvOgHjwoV83o2lUW9zeQpqhIdsE6OcnBO0R24vz58wgLC0NKSgpGjhyJY8eOwcfHp8mPY1ELUa/X45NPPuGgGSJ74+kJ9O17q2bx4kW5pJQFNYsa01RtQUEWJVKixpgxYwb69+9f63ORkZFYtGiR+XFYWBgAICoqCl26dMGpU6esEpNFLUSdTofy8nLzOohEZEdMNYumdRavXZM1i126ABERd5xxRsu5S8lGUlNTsXr1auzcubPW5zt37ozk5GQAQEFBATw8PODq6oqMjAykpqainWmB7SZm8TXE//u//8OSJUtQWVlpjXiI6G6ZahaDgm7VLB44UG/Nog8AzfXrMqkGBdkuVmqWli1bhvvuuw/9+vWr9Xl/f3/k3PwDLS0tDXFxcejWrRtGjRqFlStXwt9KE0ZYfA3xt99+wy+//IItW7YgOjoanp6e1Z7fuHFjkwVHRI3k6grcdx+Qni7XWczJkQNuuncHAgJq7B5maj22bCkH6BBZSWVlJTZs2ID58+ebt02bNg29evXClClTAAAlJSXm3NK3b18cO3bMJrFZ/M338/PD73//e2vEQkRNyVSzGBAAHDoElJbKmsV775W3KmUV5oTI7lKyBoMBmh070GrnTpy7ehUlJSWIjo4GIOvZ169fj8GDB5t3P3r0KMaNGwdAFuVHRUUBAOLi4qxah2hxQvzkk0+sEUeDvf/++1i2bBmysrLQtWtXrFixAgMGDKhz/x07dmDOnDk4fvw4wsLCMHfuXDz33HM2jJhIYaaaxePHgUuXZM1iXp5sLXp4ANeuwVujgdBooAkOVjpacjQbNwKzZsE5IwNxAH67udnr4EHgoYfw888/o6CgAC4uLgCAffv24cKFCxg7diyAW0X5tqCqvpGvvvoKL774It5//33069cPH374IYYPH47U1FS0adOmxv7p6ekYMWIEpk6dis8++wy//vorpk+fjpYtW7KVS82LszPQrZsccHPsmJyRZudOICYG2psjUUVAADQ6ncKBkkPZuBF45JFqE9FHANAA+OIvf4Gnqyte+uc/MWLECHz33XeIjIzEtGnTMHjwYAwcONDm4WqEsHzK/G+++QZff/01Ll68iIrbLtQfOnSoyYK73f33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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = figure()\n", "#@manipulate for n in slider(1:20, value=7)\n", "for n in 1:6\n", " ω = exp(2π*im/n)\n", " display(\n", " withfig(fig) do\n", " for j = 1:n\n", " z = ω ^ j\n", " plot([0,real(z)], [0,imag(z)], ls=\"solid\", color=(1,.7,.7))\n", " plot(real(z), imag(z), \"ro\")\n", " text(real(z), imag(z), \"\\$\\\\omega_{$n}^{$j}\\$\")\n", " end\n", " axis(\"square\")\n", " grid()\n", " xlabel(\"real part\")\n", " ylabel(\"imaginary part\")\n", " title(\"$n-th roots of unity\")\n", " xlim(-1.2,1.2)\n", " ylim(-1.2,1.2)\n", " end\n", " )\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are called \"roots of unity\" because $\\omega_n^j$ for $j = 0,\\ldots,n-1$ (or $1,\\ldots,n$) are *all* the solutions $z$ to \n", "\n", "$$\n", "z^n = 1 .\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Eigenvectors: The discrete Fourier transform (DFT)\n", "\n", "In terms of $\\omega_n$, the eigenvectors of a circulant matrix are easy: the **k-th eigenvector** $x^{(k)}$ ($k=0,\\ldots,n-1$) for **any n×n circulant matrix** is simply\n", "\n", "$$\n", "x^{(k)} = \\begin{pmatrix} \\omega_n^{0k} \\\\ \\omega_n^{1k} \\\\ \\omega_n^{2k} \\\\ \\vdots \\\\ \\omega_n^{(n-1)k} \\end{pmatrix}\n", "$$\n", "\n", "Therefore, the matrix $F$ whose columns are the eigenvectors is:\n", "\n", "$$\n", "F = \\begin{pmatrix} x^{(0)} & x^{(1)} & \\cdots & x^{(n-1)} \\end{pmatrix}\n", "$$\n", "\n", "with entries\n", "\n", "$$\n", "\\boxed{F_{jk} = x^{(k)}_j = \\omega_n^{jk} = e^{\\frac{2\\pi i}{n} jk}}.\n", "$$\n", "\n", "Multiplying a vector by $F$ is called a [discrete Fourier transform (DFT)](https://en.wikipedia.org/wiki/Discrete_Fourier_transform). This is one of the most important matrices in the world! (It is sort of a finite, computer-friendly analogue to a Fourier series if you've seen those before.)\n", "\n", "Before we show this, let's try it:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "F (generic function with 1 method)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# define a function to create the n×n matrix F for any n:\n", "F(n) = [exp((2π*im/n)*j*k) for j=0:n-1, k=0:n-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The $2\\times2$ and $4\\times 4$ DFT matrices $F$ are quite simple, for example\n", "$$\n", "F_{2\\times 2} = \\begin{pmatrix} 1 & 1 \\\\ 1 & -1 \\end{pmatrix}\n", "$$\n", "\n", "$$\n", "F_{4\\times 4} = \\begin{pmatrix} 1 & 1 & 1 & 1 \\\\ 1 & i & -1 & -i \\\\ 1 & -1 & 1 & -1 \\\\ 1 & -i & -1 & i \\end{pmatrix}\n", "$$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4×4 Matrix{ComplexF64}:\n", " 1.0+0.0im 1.0+0.0im 1.0+0.0im 1.0+0.0im\n", " 1.0+0.0im 0.0+1.0im -1.0+0.0im -0.0-1.0im\n", " 1.0+0.0im -1.0+0.0im 1.0-0.0im -1.0+0.0im\n", " 1.0+0.0im -0.0-1.0im -1.0+0.0im 0.0+1.0im" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "round.(F(4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check that it diagonalizes our $7 \\times 7$ mass-and-spring matrix $A$ from earlier. We should have $F^{-1} A F = \\Lambda$:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7×7 Matrix{ComplexF64}:\n", " -0.0+0.0im -0.0+0.0im -0.0+0.0im … -0.0-0.0im -0.0+0.0im\n", " 0.0-0.0im 0.753+0.0im 0.0+0.0im 0.0+0.0im 0.0+0.0im\n", " 0.0+0.0im -0.0+0.0im 2.445-0.0im -0.0+0.0im 0.0+0.0im\n", " 0.0+0.0im 0.0-0.0im 0.0-0.0im -0.0-0.0im -0.0+0.0im\n", " 0.0+0.0im 0.0+0.0im 0.0+0.0im -0.0+0.0im -0.0+0.0im\n", " 0.0+0.0im -0.0+0.0im -0.0+0.0im … 2.445-0.0im -0.0+0.0im\n", " -0.0-0.0im 0.0+0.0im -0.0-0.0im -0.0-0.0im 0.753-0.0im" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "round.(inv(F(7)) * A * F(7), digits=3) # F⁻¹AF = Λ, rounded to 3 digits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compare the diagonal entries to the eigenvalues:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{Float64}:\n", " -6.847820921420924e-16\n", " 0.7530203962825327\n", " 0.7530203962825328\n", " 2.4450418679126287\n", " 2.4450418679126287\n", " 3.801937735804838\n", " 3.801937735804838" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigvals(A)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{ComplexF64}:\n", " -2.7755575615628914e-17 + 0.0im\n", " 0.7530203962825329 + 8.231328092213654e-18im\n", " 2.4450418679126287 - 8.127363310989668e-17im\n", " 3.8019377358048376 - 8.058346821283383e-17im\n", " 3.8019377358048394 + 1.2783350539335312e-16im\n", " 2.4450418679126296 - 2.3118001670187046e-16im\n", " 0.7530203962825329 - 1.8759081285465905e-17im" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diag(inv(F(7)) * A * F(7)) # diagonal entries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yup!\n", "\n", "Since $A$ is real-symmetric, you may wonder why the eigenvectors are not real as well. But they **could have been chosen** real. For a real-symmetric circulant matrix, the real and imaginary parts of the eigenvectors are themselves eigenvectors. This is why most of the eigenvalues come in pairs! (The only eigenvalues that don't come in pairs correspond to eigenvectors $x^{(k)}$ that are purely real, e.g. $x^{(0)} = (1,1,\\ldots,1)$.) These real and imaginary eigenvectors turn out to correspond to a [discrete cosine transform (DCT)](https://en.wikipedia.org/wiki/Discrete_cosine_transform) and a [discrete sine transform (DST)](https://en.wikipedia.org/wiki/Discrete_sine_transform).\n", "\n", "But this is a nice example where complex numbers actually turn out to be *easier* than real numbers, because the rule $e^x e^y = e^{x+y}$ for multiplying exponentials are simpler than the identities for multiplying sines and cosines." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Derivation and eigenvalues\n", "\n", "Why does this work? It's easy to see if we take our formula from above for $Cx$ and multiply it by an eigenvector. Let $y = C x^{(k)}$. Then the ℓ-th component is:\n", "\n", "$$\n", "y_\\ell = \\sum_{j=0}^{n-1} c_{j-\\ell} \\omega_n^{jk} = \\omega_n^{\\ell k} \\sum_{j=0}^{n-1} c_{j-\\ell} \\omega_n^{(j-\\ell)k}\n", "$$\n", "\n", "But the remaining sum is now **independent of ℓ**: because both $c_j$ and $\\omega_n^j$ are periodic in $j$, all $j \\to j - \\ell$ does is to re-arrange the numbers being summed (a circular shift), so you get the **same sum**. And $\\omega_n^{\\ell k} = x^{(k)}$, so we have:\n", "\n", "$$\n", "C x^{(k)} = \\lambda_k x^{(k)}\n", "$$\n", "\n", "where\n", "\n", "$$\n", "\\lambda_k = \\sum_{j=0}^{n-1} c_{j} \\omega_n^{jk}\n", "$$\n", "\n", "But if we define a vector $\\hat{c} = (\\lambda_0, \\lambda_1, \\ldots, \\lambda_{n-1})$, then\n", "\n", "$$\n", "\\hat{c} = F c\n", "$$\n", "\n", "That is, the **eigenvalues are the DFT of c** (where c = first row of C).\n", "\n", "Let's check it:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{ComplexF64}:\n", " 0.0 + 0.0im\n", " 0.753020396282533 + 1.1102230246251565e-16im\n", " 2.445041867912629 - 1.1102230246251565e-16im\n", " 3.8019377358048385 - 6.661338147750939e-16im\n", " 3.801937735804838 - 8.881784197001252e-16im\n", " 2.4450418679126282 - 2.220446049250313e-16im\n", " 0.7530203962825321 + 8.881784197001252e-16im" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F(7) * A[:,1] # DFT of first row/column of A" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{Float64}:\n", " -6.847820921420924e-16\n", " 0.7530203962825327\n", " 0.7530203962825328\n", " 2.4450418679126287\n", " 2.4450418679126287\n", " 3.801937735804838\n", " 3.801937735804838" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigvals(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yup, they match!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Unitarity\n", "\n", "The DFT matrix F is special in many ways. It is symmetric, but *not* Hermitian, so its eigenvalues are *not* real. However, it has **orthogonal columns**, which we can see from $F^H F$ for $n=7$:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7×7 Matrix{ComplexF64}:\n", " 7.0+0.0im -0.0-0.0im -0.0+0.0im … 0.0+0.0im 0.0+0.0im 0.0+0.0im\n", " -0.0+0.0im 7.0+0.0im -0.0+0.0im -0.0+0.0im 0.0+0.0im 0.0+0.0im\n", " -0.0-0.0im -0.0-0.0im 7.0-0.0im -0.0+0.0im -0.0+0.0im 0.0+0.0im\n", " 0.0-0.0im -0.0-0.0im -0.0-0.0im -0.0+0.0im -0.0+0.0im -0.0+0.0im\n", " 0.0-0.0im -0.0-0.0im -0.0-0.0im 7.0-0.0im 0.0+0.0im 0.0+0.0im\n", " 0.0-0.0im 0.0-0.0im -0.0-0.0im … 0.0-0.0im 7.0+0.0im -0.0+0.0im\n", " 0.0-0.0im 0.0-0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im 7.0+0.0im" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "round.(F(7)' * F(7), digits=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(It is a straightforward exercise to show this, e.g. using the [geometric-series](https://en.wikipedia.org/wiki/Geometric_series) summation formula.)\n", "\n", "The columns are orthogonal but not orthonormal because they have length $\\sqrt{n}$ (the lengths squared are $n$, which is what shows up on the diagonal of $F^H F$ above). But this means that if we divide by their length, then:\n", "\n", "$$\n", "\\frac{1}{\\sqrt{n}} F\n", "$$\n", "\n", "is a **unitary** matrix. Equivalently:\n", "\n", "$$\n", "F^{-1} = \\frac{1}{n} F^H = \\frac{1}{n} \\bar{F},\n", "$$\n", "\n", "where we have used the fact that $F^T = F$. This is the **inverse discrete Fourier transform (IDFT)**.\n", "\n", "Note that this means that **every circulant matrix C has orthogonal eigenvectors** (the columns of F). (Even if the matrix C is not Hermitian or one of the similar cases we have seen so far!)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fast Fourier transforms (FFTs)\n", "\n", "The product $Fx$ for a vector $x$ is the DFT of $x$. At first glance, it seems like it would require $\\sim n^2$ operations ($n$ dot products) like any other matrix–vector multiplication. \n", "\n", "One of the most amazing facts of computational science is that it is possible to compute the DFT $Fx$ in only $\\sim n \\log n$ operations (and $\\sim n$ storage), by a [fast Fourier transform (FFT) algorithm](https://en.wikipedia.org/wiki/Fast_Fourier_transform). FFT algorithms mean that DFTs and circulant matrices become practical to deal with even for huge $n$, and are are the **core of a huge number of practical computational algorithms**.\n", "\n", "(From a linear-algebra viewpoint, it turns out that the \"dense\" matrix $F$ factors into a **product** of $\\sim \\log n$ **sparse** matrices.)\n", "\n", "FFTs aren't too complicated to understand (the simplest ones can be derived in a few lines of algebra), but they are a bit outside the scope of 18.06. But `fft(x)` functions are available in Julia (via the [FFTW.jl package](https://github.com/JuliaMath/FFTW.jl), for example, and in every other computational-science environment:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "using FFTW" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{ComplexF64}:\n", " 0.0 + 0.0im\n", " 0.753020396282533 + 0.0im\n", " 2.4450418679126287 + 0.0im\n", " 3.801937735804838 + 0.0im\n", " 3.801937735804838 + 0.0im\n", " 2.4450418679126287 + 0.0im\n", " 0.753020396282533 + 0.0im" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fft(A[:,1]) # computes the same thing as F(7) * A[:,1], but much faster" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But now that we know that $F$ diagonalizes any circulant matrix, it leads to an amazing fact: **you can multiply Cx for any circulant matrix in ~ n log n operations and ~ n storage**. \n", "\n", "Specifically, $C = F \\Lambda F^{-1} = F \\frac{\\Lambda}{n} \\bar{F}$, so to multiply $Cx$ we just need to:\n", "\n", "1. Multiply $\\hat{x} = \\bar{F} x$. This can be done by an (inverse) FFT in $\\sim n log n$ operations.\n", "\n", "2. Multiply each component of $\\hat{x}$ by the eigenvalues $\\lambda_k/n$. The eigenvalues can be computed by multiply $F$ by the first row of $C$, which can be done by an FFT in $\\sim n \\log n$ operations.\n", "\n", "3. Multiply by $F$ via another FFT in $\\sim n \\log n$ operations.\n", "\n", "This means that **circulant matrices are perfectly suited to iterative solver algorithms** (e.g. the power method or steepest-descent), just like sparse matrices!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A personal note\n", "\n", "FFTs are near and dear to your instructor's heart — 20 years ago, partially for my final project in Prof. Alan Edelman's class 18.337, I developed a library for FFTs along with a friend of mine, [Matteo Frigo](https://www.linkedin.com/in/matteo-frigo-851212/). Being arrogant MIT graduate students, we named it [FFTW: The Fastest Fourier Transform in the West](http://fftw.org/). Fortunately, FFTW somewhat lived up to its name, and it is now the FFT library in Matlab, in Julia, and in many other software packages.\n", "\n", "![FFTW logo](http://fftw.org/fftw-logo-med.gif)" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "anaconda-cloud": {}, "kernelspec": { "display_name": "Julia 1.7.1", "language": "julia", "name": "julia-1.7" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }