{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "basic-activity",
   "metadata": {
    "id": "basic-activity"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.integrate import quad\n",
    "\n",
    "from scipy.linalg import eigh\n",
    "\n",
    "colors = plt.rcParams['axes.prop_cycle'].by_key()['color']\n",
    "\n",
    "\n",
    "# Use LaTeX for rendering (comment of not needed)\n",
    "plt.rc('text', usetex=True)\n",
    "plt.rc('font', family='serif')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "3af94907",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Overlap $m$')"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAGtCAYAAADnIyVRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAyj0lEQVR4nO3df1Rc933n/9eAAEkIZhj9/oEsXSzLP+ofgsF2fsfWyG7Spt1aYJo03U23CzjJbvds2oC15zRZn+93i6Hbbje72xjZSXpOvJtKQ9QkzUmaMLKTOG4dI8ayY8uWJS6ykPUTDTODxG+4+wcwNhJIMBrmzp15Ps7h2HPnzvDG15d58fnpsizLEgAAgMPk2F0AAABAIggxAADAkQgxAADAkQgxAADAkQgxAADAkQgxAADAkQgxAADAkQgxAADAkZbYXcBimZiY0OnTp1VUVCSXy2V3OQAAYB4sy1J/f782bNignJxrt7VkbIg5ffq0SktL7S4DAAAkoKenR5s2bbrmORkbYoqKiiRN/kcoLi62uRoAADAfsVhMpaWl8c/xa8nYEDPdhVRcXEyIAQDAYeYzFISBvQAAwJEIMQAAwJEIMQAAwJEIMQAAwJEIMQAAwJFsCTGhUEgVFRXXPc80TbW0tKitrU0tLS2KRCKLXxwAAHCElE+xbmtrk2EYCoVC1z23urpanZ2dkiYDTW1trQKBwGKXCAAAHCDlIaaqqmpe55mmOeOxYRgKBoOLURIAAHCgtB0TEwwG5fV6Zxzzer3zasEBAACZL21X7J1r/Es4HJ71+PDwsIaHh+OPY7HYYpQFAADSRNq2xMxlrnDT1NQkt9sd/2LzRwAAMlvahhiPx3NVq0s4HJbH45n1/D179igajca/enp6UlAlAACwS9p2J/n9frW2tl513OfzzXp+QUGBCgoKFrssAAAy3sSEpcjgqMKXh3Xx0ojCl0d08fLkP8OXRxQdHFVkYETb1hbpP3/yNtvqtDXERCKRGS0roVBIHo9HhmHIMIwZ55qmKZ/PN2dLDAAAmJtlWYoNjulc/5DOxYZ0Njqk8/3DOhcbUu+l98JK+PKI+gZGNGFd/z1jQ2OLX/g1pDzEBINBtbe3S5ocx1JZWRmfdj39uKGhQZIUCATU2NioyspKdXR0sEYMAABziA2N6t2+QZ3qG9SpvgG92zeoM7EhnY8N6VxsMqwMj00s6D2Lly7RyhUF8hbmq2R5vlYW5su7Il8ly/PkWZavjSXLFumnmR+XZVnzyFrOE4vF5Ha7FY1GVVxcbHc5AADckLHxCZ3qG1R372V1915WT9+ATvUNTgWXgXm3iniW52lt0VKtKS7QuuKlWlu8VKtW5Mu7omAypBROhpWSwnzl5aZ+6OxCPr/TdkwMAADZ6OKlYR07fykeVswLl2T2XlZPeECj49dudyhZnqdNJcu1qWSZNpUs0zr3sqmgUqC1xUu1uqhAS/NyU/STLD5CDAAANhgYGdOxc5d09Gy/3jrbr6PnYjp6tl+9l0bmfE3BkhxtXVWoLSsLddPK5do4FVY2lSzXRs8yFRZk18d6dv20AADYoH9oVK+/G9NrpyJ67d2o3ng3qnfCA5ptQIfLJZWWLFfZ6kJtWVUoY1Whtq5aoa2rC7W+eKlyclyp/wHSFCEGAIAkGhmb0BunozrcE9GvT0X16qmIzN7LswaWVSvytX1dkbavLdat64q0fV2Rtq1doeX5fDzPB/+VAAC4AZeGx/TKyT51dIf18omwDvdENDR69SygjZ5lumuTW3ducuuujR7dur5Iq1awvtmNIMQAALAAQ6Pjerk7rF8e79W/dF3UkTMxjV+xqErJ8jzt2Fyiuza5dfcmj+7c5CawLAJCDAAA1zAxYemts/164dgFvXCsVy+fCGvkivVWNpUsU+UWryq3eHXv1hIZq1YwdiUFCDEAAFxhaHRcLxzrVfuRs3rurQvqvTQ84/l1xUv1kW2r9OFtq3TvVq/Wu+1d9C1bEWIAAJAUvjyig2+eU/uRc3rhWK8GR8fjzy3Pz9X9xkp9+OZV+ugtq1S2eoVcLlpa7EaIAQBkrejgqH7y+ln94NXT+ueu3hn7BW1wL9VDd6zTrtvXqnKLV/lLUr96La6NEAMAyCqDI+M6+NY5ff/waf386AWNjL83vuX29cXadfta7bp9re7YUExrS5ojxAAAMp5lWXr1VFT7Ok7qB4dP6/LIe11Ft6xdod+5e4M+dfcG3bSy0MYqsVCEGABAxooMjOgfXnlX+zp69NbZ/vjxjZ5l+p17Nuh379mgW9exSbBTEWIAABnnjdNRfevFE/rBq6fj06ELluTok3euV01lqe7b6qWrKAMQYgAAGWF8wlL7kXP61ovd+lV3OH78tvXF+vS9pfrduzfKvTzPxgqRbIQYAICjDY6M6zsvn9Q3X+zWqb5BSdKSHJc+ced6/dGHtmhHqYdWlwxFiAEAOFL/0Ki+/dI7+sYL3bp4eUTS5HL/n7lvs/7w/i1a515qc4VYbIQYAICjRAZG9M0XT+jvXuxWbGhMklTqXabHPlam3eWbtDQv1+YKkSqEGACAIwyMjOlbL57QUz/vUv9UeClbXah//+DN+tRdG7Qkl8Xosg0hBgCQ1kbHJ7Svo0f/4+AxXeif3MPo1nVF+pOd2/Sbd6xjo8UsRogBAKQly7L0kzfO6ckfv6kTFwckTXYb/emu7fqduzcQXkCIAQCkn+Pn+/XEPx7RC8d6JUmrVuTrPzy4TZ++dzN7GCGOEAMASBuxoVF9LXhMf/fPJzQ2YSk/N0d1HzX0+Y+XqbCAjyzMxP8RAADbWZalH752Rk/84xH1Xpoc9+K/ba3+/LdvYz8jzIkQAwCw1ZnooP78e68r+OZ5SZKxqlBf+dTt+vj2NTZXhnRHiAEA2GJiwtJ3Ok7qyR+9pf7hMeXluvTFB27WFz5+M+NeMC+EGABAyp2ODOrPAq/qn7suSpLuKfWopeou3bK2yObK4CSEGABASv3wtdP6zwd+rdjQmJbl5erPHt6uz31wi3KZMo0FIsQAAFKif2hUX/3BGzoQeleSdPcmt/7m93do6yoG7iIxhBgAwKL79amovvB/O9UTHlSOS/rCx2/Wf/RvUx5bBeAGEGIAAIvq718+qa/84A2NjE1oo2eZ/nvNPbp3q9fuspABCDEAgEUxNDquP//e6wp0npIk+W9bo7969B65l+XZXBkyBSEGAJB0PeEB1X+7U0fOxJTjkv70oe36/MfK2O8ISUWIAQAk1cvdYdV/+5D6Bka1sjBfX/v0Dn3o5lV2l4UMRIgBACTNdztP6fEDr2l03NKdG93a+68rtN69zO6ykKEIMQCAGzYxYem//fSo/vZnXZKkT965Tn9VfY+W5efaXBkyGSEGAHBDRsYm9KX9h/XD185Ikv79AzfrS7tuYfwLFh0hBgCQsMvDY3rs2U69cKxXebkuPfnIXdpdscnuspAlCDEAgISEL4/oj771sl49FdXy/Fw99dkKffSW1XaXhSxCiAEALNjpyKA++41fybxwWSXL8/TNz1Vqx+YSu8tCliHEAAAWpCc8oE8//ZJO9Q1qvXupvv3H9+rmNew+jdQjxAAA5q0nPKDf3/uS3o0M6qaVy/V/a+/XRg9TqGEPQgwAYF7eH2C2rirUd2rv1zr3UrvLQhYjxAAAruvkxQH9/t5/0enokIxVhfpO3f1aW0yAgb0IMQCAazoXG9IffOOlyQCzulB/X3u/1hBgkAZy7C4AAJC+IgMj+tffeFk94ckxMAQYpBNCDABgVpeHx/RHf9eho+f6taaoQM/+8X0EGKQVQgwA4CrDY+N67NlOvXIyIs/yPD377+5TqXe53WUBMxBiAAAzWJalLwde0wvHerU8P1ff+lylblnLOjBIP4QYAMAM/739bf3g1dNakuNS6x9WsBIv0hYhBgAQ993OU/rac8clSf/1935DH9nGXkhIX4QYAIAk6V+6LurxA69Jkj7/8TLVVG62uSLg2ggxAACZFy7psWc7NTpu6bfuXK8vP7Td7pKA6yLEAECWuzQ8prpvdyo6OKodmz36q0fvVk6Oy+6ygOsixABAFrMsS3+2/1UdP39Ja4sL1PqHFVqal2t3WcC8EGIAIIt9/edd+qc3ziov16Wvf7ZCa4pYzA7OQYgBgCz1i7cv6L/95Kgk6b/8zh0qZyo1HMaWDSBN01RbW5sMw5Bpmqqrq5PH45nz3GAwKK/XK9M0VVVVJcMwUlswAGSYnvCA/uTvX9GEJdX4SvWZe5mJBOexJcRUV1ers7NT0mRIqa2tVSAQmPXctrY2NTQ0xB/X19ertbU1JXUCQCYaHZ/Qf/jOK4oMjOruTW498bt3yOViIC+cJ+XdSaZpznhsGIaCweCc5+/bt2+xSwKArPLX7W/rcE9ERUuX6H99ppyBvHCslIeY6a6h9/N6vQqFQrOe7/V6VVFREe9W2rVrVyrKBICM9MKxC/r6z7okSc2772JTRzhaykNMJBKZ9Xg4HJ71+HQ3U1lZmQKBgKqqqmY9b3h4WLFYbMYXAOA9F/qH9Z/2vSpJ+sx9m/XJO9fbXBFwY2wZEzObucJNMBhUc3OzTNNUfX29JM06JqapqUlPPPHEYpYIAI5lWZb+NPCqei8Na/vaIn3lt2+3uyTghqW8Jcbj8VzV6hIOh2ednWSapjo6OuT3+1VXV6euri7t37//qnE1krRnzx5Fo9H4V09Pz2L9CADgOM++9I5+8fYFFSzJ0f/8zA7GwSAjpDzE+P3+WY/7fL6rjoVCIVVWVsYfG4ahPXv2zNpqU1BQoOLi4hlfAADpRO9l/cWP3pIkPf6JW3XL2iKbKwKSI+Uh5so1XkzTlM/ni7fEhEKheEtLeXm5Ojo6Zpx/8eJFlZeXp6RWAHC68QlLfxZ4VYOj4/qAsVL/5gNb7C4JSBpbxsQEAgE1NjaqsrJSHR0dM9aIaWpqUmVlpRoaGmQYhnbt2qWWlpZ4yJkeFwMAuL5nXjB16J0+rShYopaqu9jYERnFZVmWZXcRiyEWi8ntdisajdK1BCArvX2uX7/9tV9qZHxCzbvvVE0lq/Ii/S3k85u9kwAgA41PWGpoe00j4xN68NY1etRXandJQNIRYgAgAz370js63BPRioIl+ovfu5NtBZCRCDEAkGFORwbV8k+Ts5Eaf3O71rmX2lwRsDgIMQCQQSzL0le+/4Yuj4yrfLNHf3DfTXaXBCwaQgwAZJCfvHFWwTfPKS/XpSd3MxsJmY0QAwAZon9oVF/5/huSpMc+Vsaidsh4hBgAyBD/87njOt8/rC0rl+uLD9xsdznAoiPEAEAGOH7+kr75y25J0lc/dQd7IyErEGIAwOEsy9IT//iGxiYs7bx1jR64dY3dJQEpQYgBAIf76ZFzeuFYr/Jzc/Tnv3273eUAKUOIAQAHGxod1//3wyOSpNqPbtWWVYU2VwSkDiEGABzs6V+YOtU3qPXupQzmRdYhxACAQ13oH9ZTP++SJD3+iVu1PH+JzRUBqUWIAQCH+h8H39blkXHdvcmtT921we5ygJQjxACAAx0/f0nfeblHkrTnk7exMi+yEiEGAByo+Z/e0viEJf9ta3S/sdLucgBbEGIAwGFe7g6r/cg55bikxt+81e5yANsQYgDAQSzL0l/86E1JUk3lZm1jfyRkMUIMADhI+5FzOtwT0bK8XP0n/za7ywFsRYgBAIeYmLD01+1vS5I+96EtWlO81OaKAHsRYgDAIX78+lm9dbZfKwqWqO4jht3lALYjxACAA4xPWPqb4GQrzL/98FaVFObbXBFgP0IMADjAD187rWPnL6l46RL98Ye32l0OkBYIMQCQ5sbGJ/Q3wWOSpLqPGnIvy7O5IiA9EGIAIM197/BpdfdeVsnyPH3uQ7TCANMIMQCQxsYnLP3v549Lkuo/VqYVBWzyCEwjxABAGvun18+qu/ey3Mvy9Nn7b7K7HCCtEGIAIE1Z1nutMJ/74BZaYYArEGIAIE397O0LOnImpuX5ufrcB7fYXQ6QdggxAJCm/naqFeYP7tvMujDALAgxAJCGXu4Oq+NEn/Jzc/TvWJ0XmBUhBgDS0N/+bLIVZnfFJq1ljyRgVoQYAEgzb56J6WdHLyjHJT32MVphgLkQYgAgzXzjl92SpE/cuV43rSy0uRogfRFiACCNnO8f0g8On5Yk9kgCroMQAwBp5NmXTmpkfELlmz0q31xidzlAWiPEAECaGBod1/956R1J0h9/mLEwwPUQYgAgTXzvlXd18fKINnqW6eE71tpdDpD2CDEAkAYsy9I3X5wc0Pu5D27Rklx+PQPXw10CAGnghWO9evvcJRXm56rm3lK7ywEcgRADAGngW1OtMI9Wlqp4aZ7N1QDOQIgBAJv1hAf0s7cvSJL+zQe22FsM4CCEGACw2f/51UlZlvSRbau0ZRWL2wHzRYgBABsNj41r/6EeSdJn77/J5moAZyHEAICNfvzrswpfHtF691LtvHWN3eUAjkKIAQAbPTu1uN2n793MtGpggbhjAMAmb56J6dA7fVqS49LvVzKtGlgoQgwA2GS6FebhO9ZpTfFSm6sBnIcQAwA26B8a1T+88q4k6Q/u32xzNYAzEWIAwAY/fO2MBkbGZawu1AeMlXaXAzgSIQYAbDA9rbrGVyqXy2VzNYAzEWIAIMWOnevXKycjys1x6ffKN9pdDuBYhBgASLFA5ylJ0gPb12hNEQN6gUQRYgAghUbHJ3QgNBliHvVtsrkawNkIMQCQQs+/dV69l0a0akW+HmCFXuCGEGIAIIX2H5pshXmkfJPyWKEXuCHcQQCQIuf7h/T80fOS6EoCkmGJHd/UNE21tbXJMAyZpqm6ujp5PJ45zw8GgzJNU4ZhSJL8fn+KKgWA5PmH0Lsan7BUvtmjm9cU2V0O4Hi2hJjq6mp1dnZKmgw0tbW1CgQCs54bDAYVCATU2toq0zS1a9cudXV1pbJcALhhlmWpbWpWUrWPfZKAZEh5iDFNc8ZjwzAUDAbnPL++vj4eeAzDUHt7+6LWBwCL4ciZmI6dv6T83Bx98s71dpcDZISUj4kJBoPyer0zjnm9XoVCoavONU1T4XBYHo9HoVBIkUgk3qUEAE7y/cOnJUk7b1sj97I8m6sBMkPKQ0wkEpn1eDgcvupYKBSS1+uNj5/Zu3ev2traZn398PCwYrHYjC8ASAfjE5Z+MBVifvceVugFksWWMTGzmS3chMNhmaYpv98vj8ejuro6lZSUyLKsq85tamrSE088kYJKAWBhftV9UWdjQypeukQP3Lra7nKAjJHylhiPx3NVq8t0l9GVDMOQx+OJPzf9z9m6nvbs2aNoNBr/6unpSXbpAJCQ778y2QrzyTvXq2BJrs3VAJkj5SFmrunRPp/vqmMLGf9SUFCg4uLiGV8AYLeh0XH96NdnJEn/agddSUAypTzEXBlMTNOUz+eb0coyPYPJMAz5fL54V9P0WjHl5eWpLBkAEvb8W+fVPzymDe6luneL9/ovADBvSRkT893vfle7d++e9/mBQECNjY2qrKxUR0fHjDVimpqaVFlZqYaGhhnnVlRUqLOzkynWABzle4fflSR96p4Nyslx2VwNkFlc1myjZK/j4MGDamtrU1lZmaqqqrRlyxYdOHBAjzzyyGLUmJBYLCa3261oNErXEgBbRAdHVfn/BzUyPqEf/8eP6Lb1/C4Crmchn98JdSeFQiFVVVXJsixVVVWpsrJS+/btS6hYAMhUP3njrEbGJ7R9bREBBlgECXUnlZeXa+fOndq5c6e+/OUvKxqNyu12J7s2AHC06QG9v3UXK/QCiyGhlpiVK1fqxIkT8ccEGACYKTowqheP90oS2wwAiyShENPR0aHy8nLV1NTomWeemRFoAADST4+c1ei4pe1ri3TzmhV2lwNkpISnWHd3d6uurk7Hjx+Pj4sBAEya7kqiFQZYPAmNiTEMQ263Oz4uBgDwnujgqH451ZX0W3ets7kaIHMlPCbmueeeS3YtAJAR2o+c0+i4pVvWrtDNa4rsLgfIWAm1xDz11FMKBoNyuVyqqqrSrl279OCDDya7NgBwpB/TlQSkREItMRUVFTp+/LgOHTokwzD01FNP6eGHH052bQDgOLGhUb1wbKoriRADLKqEVuyNRqM6ePBgWq3QeyVW7AVghwOhU/rS/ld185oVCn7pY3aXAzjOoq/Y63a70zrAAIBdmJUEpE7Kd7EGgEw1MDIW70r6xG8wKwlYbIQYAEiSX7zdq+GxCZV6l+nWdcxKAhYbIQYAkqT9yDlJ0q7b1snlctlcDZD5CDEAkARj4xN67q2pEHP7WpurAbLDDYWYWCymWCyWrFoAwLE63+lT38CoPMvzVLmlxO5ygKyQUIiJRqN66KGH5PF4VFJSoocffpgwAyCrTXclPbh9jZbk0sgNpEJCd1pjY6Pq6+s1MTGh8fFx1dbWqqmpKdm1AYAjWJal9jfpSgJSLaFtByoqKrR79+7446qqKgaxAchax85f0jsXB5S/JEcfvWW13eUAWSPhDSCvVFLyXh/w4cOHEy4IAJxmuivpQ2UrVViQ0N+GABKQ0N3W3t4u0zTl8XgkSZFIRF1dXTJNU5IUCAT0k5/8JGlFAkA6++n01OrbWeAOSKWEQ4zb7VZvb2/8mNvt1vHjxyVJ4XA4OdUBQJo7FxvSqz0RSZL/tjX2FgNkmYRCTGtrq3bu3Dnn8wcPHky4IABwkuffOi9JurvUozXFS22uBsguCY2JuTLAPPfcczpw4MCczwNApnr+6GSIeXA7rTBAqiU8Au3AgQPxMTCWZenQoUPsbA0gq4yMTejF4xclSQ/cyqwkINUSCjGPP/64IpGIwuGwDMNQJBJRfX19smsDgLR26J2wLg2PadWKfP3GBrfd5QBZJ6EQU1ZWptraWnV3d8vlcmnLli167rnnkl0bAKS1nx+9IEn66C2rlZPDWllAqiU0JsYwDL3zzjvaunWr2trakl0TADjC9HiYjzMeBrBFQi0xkUhEhmGor69Pvb29evjhh+XxePTggw8muz4ASEunI4N6+9wl5bikj25bZXc5QFZKKMTs3r1b4+PjkqQnn3xSBw8elM/nS2phAJDOfjbVlbRjc4k8y/NtrgbITknZanXnzp3q7u5OxlsBgCNMdyU9sJ1ZSYBd5tUS88wzz1zz+b6+Pu3fv18dHR1JKQoA0tnw2Lj++fjkiuWMhwHsM68Q89RTT6mmpuaa51iWlZSCACDdHTrRp8sj41pdVKDb1xfbXQ6QteYVYpqbm6+7Cq/f709KQQCQ7n421ZX0MaZWA7aa15iYKwNMZWXljG0GJGnHjh3JqwoA0tj0oN6PMx4GsFVCA3vr6uqu2mKAxe4AZIOz0SEdO39JLpf04ZuZWg3YKaEp1i6XS5///OdVVlYmwzAUDocVCARYJwZAxntxakDvXRvdTK0GbJZQiHnyySfl9/vV29ur3t7JGzocDie1MABIR9Mh5kO0wgC2SyjEtLa2XjVO5uDBg0kpCADSlWVZ+uVUiKErCbBfQmNidu7cqb/8y7+MT7s+ePCgKisrk1oYAKSbY+cv6Xz/sJbm5aj8phK7ywGyXkIhZs+ePfJ4PPFp1Tt37lQwGExqYQCQbl44NtkKU7nFq6V5uTZXAyChEOPz+VRbWyvDMJJdDwCkrenxMB9hw0cgLSQUYqb3SXK53lvkiS0HAGSykbEJvWRelMSgXiBdJDSwd8eOHfL5fFq5cqXa29sVDAbV3Nyc7NoAIG0c7oloYGRcKwvzdds6thoA0kFCLTFtbW0KBALasWOHLMvS3r17WSMGQEabnpX0wZtXsdUAkCYSaolpb29XRUWFdu3add09lQAgE/zy2ORWAx+hKwlIGwmFmM7OTrndbkWjUT3zzDPyer3y+/0qLqaJFUDmiQ2N6tVTUUnShxjUC6SNhLqT3G53/J+WZamhoUG1tbVJLQwA0sWvzLDGJyxtXVWojZ5ldpcDYEpCLTE1NTXyer3at2+fampq1N7erq1btya7NgBIC//SNTkr6QNlK22uBMD7JdQS09nZqYqKCoXDYX39618nwADIaL/qngoxBiEGSCcJtcQ0Nzdr9+7dya4FANJOdGBUR87EJEn3GV6bqwHwfgm1xBBgAGSLl0+EZVmSsbpQa4qW2l0OgPdZUIg5fPiwampqtG3bNm3btk01NTV6/vnnF6s2ALDdr6ZW6b1vK11JQLqZd4h5/PHH9eCDD8qyLO3evVu7d+9WX1+fdu/erS984QuLWSMA2OalqfEw99OVBKSdeY2J+e53vytJCofDsz7/2GOP6cCBA3rkkUeSVxkA2Cw6OKo3Tk+Oh7mfQb1A2plXS4xpmnryySfnfP6pp55SV1dX0ooCgHRwaGo8zNZVhVpbzHgYIN3MK8QYhpGUcwDASaZ3raYrCUhP8woxfX19STlnmmmaamlpUVtbm1paWhSJROb1usbGxnmfCwA36iVzsgudQb1Aepp3iDl8+PCczz/33HM6fvz4vL9pdXW1GhoaVFVVpaqqqnltWRAKhdTS0jLv7wEANyI2NKo3Tk/ul8T6MEB6mtfA3i9/+cvy+XwqKyvTQw89FF+t1zRNBQIBhcNhdXR0zOsbmqY547FhGAoGg/N6HV1WAFLl0ImwJixpy8rlWu9mvyQgHc17ivWhQ4e0ZcsW1dbWqqKiQn6/X3V1dSovL593gJGkYDAor3fmXzVer1ehUGjO17S1tamqqmre3wMAbhRdSUD6W9C2A83NzWpublZ3d7ckJbRn0lxjWuaavh2JROTxeK77vsPDwxoeHo4/jsViC64NAKZNL3J3fxldSUC6Smjbga1btyZ908e5ws3+/fvl9/uv+/qmpia53e74V2lpaVLrA5A9Lg+P6fWp9WHupSUGSFsJhZgb4fF4rmp1CYfDs7a2BINBPfroo/N63z179igajca/enp6klEugCz0ak9E4xOW1ruXaqOH8TBAukpoF+sb4ff71draetVxn8836/n79++P/7tpmmpqalJNTY3Ky8tnnFdQUKCCgoLkFgsgKx16Z3LJCN8WupKAdJbyEHPlDCPTNOXz+eItMaFQSB6PR4ZhXNWNVF9fr/r6emYpAVhUHScmW4t9N5XYXAmAa0l5d5IkBQIBNTY2qq2tTa2trQoEAvHnmpqa1NbWNuP8SCQSXyOmubn5mjOZAOBGjE9YeuVkRJJUQYgB0prLsizL7iIWQywWk9vtVjQaVXFxsd3lAHCII6dj+uTXXlBhfq5e/epDWpJry996QNZayOc3dycAvE/nO5NdSeU3lRBggDTHHQoA79NxYnJQL11JQPojxADA+3ROz0y6iZlJQLojxADAlDPRQb0bGVSOS7pns8fucgBcByEGAKYcmupKun1DsVYUpHwFCgALRIgBgCmH4uvD0JUEOAEhBgCmTK/Uy6BewBkIMQAg6dLwmN48M7npo28LIQZwAkIMAEg6fDKiCUva6Fmm9W42fQScgBADAHpvajVdSYBzEGIAQNLhnskQs4Op1YBjEGIAZD3LsnS4JyJJuqfUY2stAOaPEAMg650MD6hvYFT5uTm6fQMbxgJOQYgBkPWmW2Fu21CsgiW59hYDYN4IMQCy3isnI5KkHXQlAY5CiAGQ9aZbYhjUCzgLIQZAVhseG9eR05OL3DGoF3AWQgyArPbmmX6NjE/IW5ivzd7ldpcDYAEIMQCy2uGTk+vD3L3JLZfLZXM1ABaCEAMgq723Pgwr9QJOQ4gBkNVemQ4xDOoFHIcQAyBrhS+P6J2LA5KkezZ57C0GwIIRYgBkrVenWmGMVYVyL8+ztxgAC0aIAZC16EoCnI0QAyBrxRe5Y30YwJEIMQCykmVZ8e4kZiYBzkSIAZCVesKDig5O7ly9fV2R3eUASAAhBkBW+vW7UUnSreuLlL+EX4WAE3HnAshK0yHmNza6ba4EQKIIMQCy0q/fjUiS7iTEAI5FiAGQdSzL0uvvTu5cTYgBnIsQAyDrvH9Q7y1rGdQLOBUhBkDWeW2qK4lBvYCzcfcCyDoM6gUyAyEGQNZ5fSrE3EWIARyNEAMgq1iWpV+foiUGyASEGABZ5WR4QLGhMQb1AhmAEAMgq7BSL5A5uIMBZJXpriTWhwGcjxADIKtMt8QQYgDnI8QAyBqTK/UyqBfIFIQYAFkjPqh3CYN6gUxAiAGQNV6bGg9z2zoG9QKZgLsYQNZ44/Tkpo930JUEZARCDICsceTMVIjZUGxzJQCSgRADIGscmWqJuX09IQbIBIQYAFnhfP+Qei8Ny+WStq9jUC+QCQgxALLCm2f6JUlbVxVqef4Sm6sBkAyEGABZga4kIPMQYgBkhTenBvXeRogBMgYhBkBWmJ6ZdDszk4CMQYgBkPEGR8ZlXrgkSbqDlhggYxBiAGS8o+f6NWFJq1bka3VRgd3lAEgSQgyAjPf+8TAul8vmagAkCyEGQMZjZhKQmQgxADIeg3qBzESIAZDRJiYsvcX0aiAj2bJspWmaamtrk2EYMk1TdXV18ng8s54bCoUUDAYlSR0dHXr66afnPBcArnQyPKDLI+PKX5IjY1Wh3eUASCJbQkx1dbU6OzslTQaa2tpaBQKBWc8NBoNqaGiQJLW0tGjnzp3x1wLA9Ux3Jd26rkhLcml8BjJJyu9o0zRnPDYMI97ScqVQKKSmpqb446qqKoVCoaveAwDmMj0ziUG9QOZJeYgJBoPyer0zjnm9XoVCoavOLS8v19NPPx1/HIlE4udfaXh4WLFYbMYXAEzPTGI8DJB5Uh5ipoPIlcLh8KzHq6qq4v++b98++f3+WcfENDU1ye12x79KS0uTUS4Ah2NmEpC50qaDeK5w8/7n29ra5hw7s2fPHkWj0fhXT0/PIlQJwEmiA6M6Ex2SJG1fV2RzNQCSLeUDez0ez1WtLuFw+LozjhobG9Xe3j7neQUFBSooYDlxAO85eq5fkrTRs0zFS/NsrgZAsqW8Jcbv98963OfzzfmalpYWNTY2yjAMRSKR67baAIAkHT072ZVEKwyQmVIeYgzDmPHYNE35fL54C8uVs4/a2tpUXl4eDzD79+9nnRgA8zLdEnPLWkIMkIlsWScmEAiosbFRlZWV6ujomDHOpampSZWVlWpoaJBpmqqurp7xWo/Ho7q6ulSXDMCB3j57SdLkGjEAMo/LsizL7iIWQywWk9vtVjQaVXExsxKAbGNZlu5+4qeKDY3pR3/yEWYnAQ6xkM/vtJmdBADJdC42rNjQmHJzXCpbw3YDQCYixADISG9NDerduqpQBUtyba4GwGIgxADISG9PDerdzqBeIGMRYgBkpKNTg3qZXg1kLkIMgIx09NxkdxLTq4HMRYgBkHHGJywdO0dLDJDpCDEAMs7J8ICGxya0NC9Hm73L7S4HwCIhxADIONPbDWxbU6TcHJfN1QBYLIQYABmHQb1AdiDEAMg404N6mV4NZDZCDICMc/Ts1MaPtMQAGY0QAyCjDI2O68TFAUls/AhkOkIMgIzSdeGSxicsuZflaU1Rgd3lAFhEhBgAGSW+3cC6IrlczEwCMhkhBkBGmZ6ZdMvaFTZXAmCxEWIAZJTj5ydDzLY1jIcBMh0hBkBGOX5+sjtp2xpaYoBMR4gBkDGGRsd1Mjw5M+lmQgyQ8QgxADLGiYuXNWFJRUuXaDUzk4CMR4gBkDGmd67etmYFM5OALECIAZAxpgf10pUEZAdCDICMcfwCIQbIJoQYABnj+DmmVwPZhBADICOMjU+ou/eyJFpigGxBiAGQEXr6BjUyPqGleTna6FlmdzkAUoAQAyAjTA/qLVu9Qjk5zEwCsgEhBkBGODa1Ui9dSUD2IMQAyAjx6dWrCTFAtiDEAMgIXawRA2QdQgwAx7Ms673dq9cSYoBsQYgB4HhnokO6PDKuJTku3bSy0O5yAKQIIQaA4023wty0crnycvm1BmQL7nYAjnfsPCv1AtmIEAPA8dj4EchOhBgAjsfMJCA7EWIAOB4L3QHZiRADwNHCl0fUNzAqaXLLAQDZgxADwNG6eye7kja4l2pZfq7N1QBIJUIMAEfrunBZkmTQCgNkHUIMAEfr7p0MMVtXscgdkG0IMQAczbww2Z1krCbEANmGEAPA0WiJAbIXIQaAY41PWDpxcUASM5OAbESIAeBYpyODGhmbUP6SHG3wLLO7HAApRogB4FhdU+Nhtqxcrtwcl83VAEg1QgwAx2I8DJDdCDEAHMtkjRggqxFiADgWLTFAdiPEAHCs6TViylgjBshKhBgAjjQ4Mq7T0SFJ0tZVdCcB2YgQA8CRpruSPMvz5C3Mt7kaAHYgxABwJMbDACDEAHCk+J5JdCUBWYsQA8CRplti2PgRyF6EGACOZNKdBGQ9QgwAx7Es673uJFpigKxFiAHgOOHLI4oNjcnlkrasJMQA2WqJHd/UNE21tbXJMAyZpqm6ujp5PJ4bPhdAdpjuStrgXqalebk2VwPALraEmOrqanV2dkqaDCm1tbUKBAI3fC6A7NB9gUG9AGzoTjJNc8ZjwzAUDAZv+FwA2ePY+X5JDOoFsl3KW2KCwaC8Xu+MY16vV6FQSOXl5QmfOzw8rOHh4fjjWCyW5MonHT3br//6ozcX5b0BzM/r70YlSfeUeuwtBICtUh5iIpHIrMfD4fANndvU1KQnnnjiRkqbl+jgqH7x9oVF/z4Arq1gSY4+dstqu8sAYCNbxsTMZq7AMt9z9+zZoy996Uvxx7FYTKWlpUmobKatqwr114/enfT3BbAw29cVaeWKArvLAGCjlIcYj8dzVUtKOByedcbRQs4tKChQQcHi/0JbXVSgR8o3Lfr3AQAA15bygb1+v3/W4z6f74bOBQAA2SXlIcYwjBmPTdOUz+eLt66EQqH4rKTrnQsAALKXLWNiAoGAGhsbVVlZqY6OjhnrvjQ1NamyslINDQ3XPRcAAGQvl2VZlt1FLIZYLCa3261oNKri4mK7ywEAAPOwkM9v9k4CAACORIgBAACORIgBAACORIgBAACORIgBAACORIgBAACORIgBAACORIgBAACORIgBAACOZMu2A6kwvRBxLBazuRIAADBf05/b89lQIGNDTH9/vySptLTU5koAAMBC9ff3y+12X/OcjN07aWJiQqdPn1ZRUZFcLlf8+PRGkrOZ67krj8diMZWWlqqnp8f2fZmu9fOk8v0W8rr5nJvIdZrrudmOpcs1zMbrd63nuQe5hnbIxmuYzp+FlmWpv79fGzZsUE7OtUe9ZGxLTE5OjjZt2nTV8dzc3Dn/Y8/13FzHi4uLbb/5rvXzpPL9FvK6+ZybyHWa67lrnW/3NczG63et57kHuYZ2yMZrmO6fhddrgZmWdQN7v/jFLy74uWu9xm7Jri3R91vI6+ZzbiLXaa7nuH7Jfd2NXr9rPc89yDW0QzZew0z5LMzY7qTFtJBtwpGeuIbOxvVzPq6h86XDNcy6lphkKCgo0Fe/+lUVFBTYXQoSxDV0Nq6f83ENnS8driEtMQAAwJFoiQEAAI6UsbOT0kFbW5skqaOjQ7t27ZLf77e5IixUJBJRU1OTampqVF5ebnc5uI69e/fKMAyFQiFVVVXJMAy7S8ICcL85X6o/92iJWSTBYFCmaaqqqkr19fVqbGy0uyQk4NChQ4pEInaXgXkwTVNdXV3y+/1qaGjgnnMg7jdns+NzjxAjKRQKqaKi4qrjpmmqpaVFbW1tamlpWdDNNf2LdPp9fD5fssrFLBbjGkqT19Hj8SSnSCzIQq9pMBhUWVnZjPNgn0TuSe639LLQa2jL556V5QKBgNXZ2WnN9p+ivLw8/u9dXV1WVVVVQt+jqqrK6urqSrhGXNtiX8OGhgars7PzhmrEwiRyTZubm63W1tb4c4ZhLH6hmNWN3JPcb+nhRn+vpupzL+vHxFRVVc16/Mq/4gzDUDAYjD9ua2ub9S+9K/vhW1patGfPHvrmF9FiX0OkXiLX1OPx0BWRJhK9J5E+buQapvJzL+tDzFyCwaC8Xu+MY16vV6FQSOXl5XNe4Cvfw+/3q7y8XG1tbfN6DZInGdcQ6eVa19Tn82nfvn3x4wwMTT/XuyeR/q53DVP9uUeImcNcf9GFw+F5vd40TVVXV8swDEUiEfn9fj40U+xGr6E0ecOGQqH4Y37R2uta19Tv9+vQoUPxwYVPP/10aovDdV3vnuR+S3/XuoZ2fO4RYhZovs3VhmGor69vcYtBQhY6QJup8elv+prW1dXZWwgS8v6BodxvzhSJRGz53GN20hw8Hs9Vf7GHw2FGzjsI1zDzcE2djevnfOl2DQkxc5jrrwGmSjsH1zDzcE2djevnfOl2DQkx7/P+boYrR1VPz3nnL4b0xjXMPFxTZ+P6OV86X8OsHxMTDAbV3t4uSWpqalJlZWV8IFIgEFBjY6MqKyvV0dGhQCBgZ6mYA9cw83BNnY3r53xOuYbsYg0AAByJ7iQAAOBIhBgAAOBIhBgAAOBIhBgAAOBIhBgAAOBIhBgAAOBIhBgAAOBIhBgAKWOaplpaWrR3717t3btXwWBQe/fulSSFQiE1NjbK5XLFj02/pr6+XmVlZdq7d69CoZDq6+vlcrnU2NiolpYWtbS0qL6+XqZpzruOXbt2LWgzUADph8XuAKRMRUWFOjs7449bWlp08eJFNTc3S5pc3ryxsVF79+5VX1/fjKXMW1pa1NDQED+vpKRkxjnBYFDV1dXq7u6e1xLojY2NkhT/3gCch5YYACkxWytJQ0ODVq5cOeNYdXW1qqqqVFtbO+P49YKJ3+9XJBJRMBicVz319fUzWnwAOA8hBkBKGIYh0zSvCg51dXVXnfv0008rGAyqra1t3u8fCoUkSeXl5fOux+v1xl8HwHkIMQBS5umnn46PZ9m1a5eCweCsLSwej0fNzc1XtcZcKRgMKhgMqqWlRfv27VNXV9dVu+xeS319vVpbWxf6YwBIE4QYAClTVVWlrq4utba2yuPxaNeuXXO2ttTV1cnn86m+vn7O9/P7/fGvYDAor9e7oHo8Ho/279+/oNcASB+EGAApMT0TyDAM1dXVKRAIqLW1VU1NTXO+prW1NT4j6VrKy8vl8/nig3XnY+/evTIMQ4ZhzHscDYD0QogBkBKmaV4VRh599NFrTnM2DEPNzc2qrq6+7vt7PJ55h5HpcTl+v181NTV0KQEORYgBkDJXtpQEg0FVVVXFH4fD4ate09DQII/Hc901XcrKyuIzoK7VcrN37151dnbGBxTX1dUtaAAxgPTBOjEAUiIUCunQoUOKRCLxwbxdXV3xdVqmF7sLh8Pas2fPjHAz/dq6ujqFQiHt27dPpmmqsrJSfr8/PiOpurpalZWV8ng8s856ikQiqq6uVnt7+4zj1dXVqqmpmfE9AaQ/QgwAAHAkupMAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAjEWIAAIAj/T93ADuruKhpsAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lambd = np.logspace(-2, 2, 1024)\n",
    "\n",
    "plt.plot(lambd, np.maximum(0, 1 - 1/lambd))\n",
    "plt.xscale('log')\n",
    "plt.xlabel(r\"SNR $\\lambda$\")\n",
    "plt.ylabel(r\"Overlap $m$\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8898a358",
   "metadata": {},
   "source": [
    "### State evolution sparse\n",
    "\n",
    "Explore the dependency of $\\rho$ on the error vs snr curves. In particular find a $\\rho$ for which a hard phase exists"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d66da7d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gaussian_pdf(x, mean = 0, variance = 1):\n",
    "    '''\n",
    "    Gaussian measure.\n",
    "    '''\n",
    "    return np.exp(-.5 * (x-mean)**2 / variance) / np.sqrt(2*np.pi*variance)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "85919c86",
   "metadata": {},
   "outputs": [],
   "source": [
    "# State evolution \n",
    "def update_m(m:float,snr,rho:float, lims=10):\n",
    "    '''\n",
    "    One step updated of the self-consistent equation for spiked matrix estimation using the given prior\n",
    "    '''\n",
    "    integrand = lambda z: gaussian_pdf(z) * rho**2/(rho + (1-rho)*np.exp(-1/2*snr*m+np.sqrt(snr*m)*z))\n",
    "    \n",
    "    return quad(integrand, -lims, lims)[0]\n",
    "    \n",
    "def iterate_m(init=0.001, tol=1e-7, max_steps = 1000,*, snr: float, rho: float):\n",
    "    '''\n",
    "    Iterate self-consistent equation for binary spiked matrix estimation.\n",
    "    args:\n",
    "        - initial value of m\n",
    "        - tol: tolerance for convergence.\n",
    "        - max_steps: maximum number of steps.\n",
    "        - snr: signal-to-noise ratio\n",
    "        - rho: sparsity of the prior\n",
    "    returns:\n",
    "        - m iteration trajectory.\n",
    "    '''\n",
    "    m = np.zeros(max_steps)\n",
    "    m[0] = init\n",
    "    \n",
    "    for t in range(max_steps-1):\n",
    "        m[t+1] = update_m(m[t],snr,rho)\n",
    "        if np.abs(m[t+1]-m[t]) < tol:\n",
    "            break\n",
    "    \n",
    "    return m[:t+1]\n",
    "\n",
    "def state_evolve_curve(rho=0.2, init_m=0, verbose=False, *, snr_range):\n",
    "    \n",
    "    data = {'snr': [], 'm': []}\n",
    "    for snr in snr_range:\n",
    "        if verbose:\n",
    "            print('Computing snr = {}'.format(snr))\n",
    "        \n",
    "        mstar = iterate_m(init=init_m, snr=snr, rho=rho)\n",
    "        \n",
    "        data['snr'].append(snr)\n",
    "        data['m'].append(mstar[-1])\n",
    "\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c828213",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1442558a0>"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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1lbV1tYmPV9Imp1IGYahuro6tbe3J5Kpue4hAgCg/dt9knbqJueALn31DVaHA2AVs8VisZjVQQDpDA8Pq6KiQkNDQ9xPBAAF4EdPPKp3f2dExZrQIw0X6fzqi60OCVng/I18Qf0zAADIGbFoVG0P90uS3r3tKMkQgGVHQgQAAHLGw93366mxbVqrMX1sD03lACw/EiIAAJATohOT+r+PH5ck/fGusLZs22lxRAAKAQkRAADICfc/9B09M7FF5bYRNez5Q6vDAVAgSIgAAIDlohOT+tyPBiVJf1R9ShWVmyyOCEChICECAACWe+Dh7+qZiS3aoBF96JabrA4HQAEhIQIAAJaaqh0KS6J2CMDKIyECAACWeqj7e/rNmS3aoNP6o1tutDocAAWGhAgAAFgmOjGp//fDk5KkDxlDqnButjgiAIWGhAgAAFjm4eD9+nWidugdVocDoACREAEAAEvEolF94UcvSpLevysix8atFkcEoBCREAEAAEv86Iff18/GtqlM4/rQH77d6nAAFCgSIgAAYIkvPPpbSdLebce0aet2i6MBUKhIiAAAwIr7xVM/0eMv71SRJtVw0zVWhwOggJEQAQCAFfeFh0KSpBudR1S160KLowFQyEiIAADAinr24K/0wOAOSdJHbrjK4mgAFDoSIgAAsKI6v/OYorLrmg0DuvjSK60OB0CBIyECAAAr5vjRwwq8ONW99keueZXF0QAACREAAFhBX/nOQxpXiV5T9oJe+7o3WR0OAJAQAQCAlTE68rK+Yq6TJH34tZtks3MZAsB6HIkAAMCKuO/+7+pkbIN22Af11joexAogN5AQAQCAZReLRnXnUyOSpA9eHFVxaanFEQHAFBIiAACw7B57LKjfTmzRORrV3ptusDocAEggIQIAAMvuzscPSZL27jypcsdGi6MBgN8jIQIAAMvqN798So+/vFN2RfWhG95idTgAkISECAAALKsvPfRjSdL1jsOq2nWhxdEAQDISIgAAsGwGT7yobx3bIkn6o7dcYnE0ADAbCREAAFg2+7/7oEZVpktKj8r92jdaHQ4AzEJCBAAAlsXkxITufqZIkvTBV6/nQawAchJHJgAAsCyCjzyow9FKVdpe0k1vp6ttALmJhAgAACyLLz95WJJ06/mntGbdeoujAYDUiq0OALnPNE0FAgEZhiHTNOXz+eRwOFKOGwgE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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rho = 0.8\n",
    "snr_range = np.logspace(-2,2, 128)\n",
    "\n",
    "\n",
    "se_values_uninf = state_evolve_curve(snr_range=snr_range, \n",
    "                    rho=rho,                        \n",
    "                    init_m=0.0)\n",
    "\n",
    "plt.plot(np.array(se_values_uninf['snr']), np.array(se_values_uninf['m']), label=r'$m_0=0$', color=colors[1])\n",
    "\n",
    "se_values_inf = state_evolve_curve(snr_range=snr_range, \n",
    "                    rho=rho,\n",
    "                    init_m=1.0)\n",
    "\n",
    "plt.plot(np.array(se_values_inf['snr']), np.array(se_values_inf['m']), label=r'$m_0=0$', color=colors[0])\n",
    "plt.xscale('log')\n",
    "plt.xlabel(r\"SNR $\\lambda$\")\n",
    "plt.ylabel(r\"Overlap $m$\")\n",
    "# plt.title(f'MSE of the predictions obtained by the state-evolution equation for rho={rho}. The color indicates the initalization.')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "048c25aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x143f7b700>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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x48f19ChQ53XlNq1a2vEiBHOBq4zZ85ozJgxatKkicqUKaPg4GB169ZNv/32m3Md69evdx6DgwcPzvbeOy/3yLnVs9mZPHmynnzySUlS7dq1ndu+/N41L+d6bnVkTi6/rjuu3xs2bNDo0aNVuXJlBQUFqXfv3jp58qTLspnrxNz25Q8//KA777xTNWrUcN7rP/744zp//ny+y5jToxKO/ff7779r0KBBqlOnjvz9/RUeHq4hQ4bo9OnTzvXk9hlk90xyXu4fHPHRkiVL8hSH5VeBvmavVauW2rZtq//85z/q1q2bpPSLTkJCgu666y698cYbLvPXrFlTkvTRRx9pwoQJeUp0cObMmayF9fHJ9Rvm+++/XwsWLFCfPn30xBNP6Oeff9b06dP1559/Oi8KH3/8sd555x1t3rxZ7733niSpXbt22a7vmWeeUUJCgo4dO6bXXntNkrJ0A3/xxRdlNps1ZswYJSQkaMaMGbrnnnv0888/O+f57rvv1K1bNzVv3lyTJk2S2WzWhx9+qJtuukk//PCDWrVqles+ef7552UymfTUU08pLi5Os2bNUlRUlLZv3+7y7ePp06fVrVs33XXXXbr33nsVFhYmu92unj176scff9QDDzygBg0a6I8//tBrr72mvXv3ujzLef/99+uTTz5R//791a5dO3333Xfq3r17ruWT0k/6IUOGqFGjRho3bpzKlSunbdu2aeXKlerfv3+e9mdma9asUbdu3VSnTh1NnjxZ58+f15tvvqn27dtr69atWb6w6Nu3r2rXrq3p06dr69ateu+99xQaGqqXXnpJUnqwd9ttt6lp06aaOnWqrFar9u/fn6cvK/JybDns27dP/fr104MPPqiBAwfqww8/1J133qmVK1fq5ptv1o033qhHHnlEb7zxhsaPH68GDRpIkvP3/PnzVaZMGY0ePVplypTRd999p4kTJyoxMVEvv/xyrmVdtGiRzp49q+HDh8tkMmnGjBm64447dODAAec30jt37lT79u1VrVo1Pf300woKCtKSJUvUq1cvLV++XL1795YkxcTEqHPnzkpLS3PO984777j9xjs7NptNt9xyi9q0aaMZM2Zo5cqVmjRpktLS0jR16lSZTCbde++9mjFjhs6cOaMKFSo4l/3f//6nxMTEHFsfPv74Y91///1q1aqV82by8m58uR0bUvo59uyzz6pv3766//77dfLkSb355pu68cYbtW3bthyvPw8++KCWLVumhx56SA0bNtTp06f1448/6s8//9S//vWvHI/9xMREvffee7r77rs1bNgwnT17Vu+//76io6O1efNmRUZGqnLlynrrrbc0YsQI9e7dW3fccYckqWnTppLy/nm6ExsbqzZt2jiTmFSuXFnffPONhg4dqsTERD322GMKCwtTx44dtWTJEmdA47B48WJZLBbnlz+xsbFq166dkpOT9cgjj6hixYpasGCBevbsqWXLluVantzktj+yk59zeP/+/erTp4+GDh2qgQMH6oMPPtCgQYPUvHlzNWrUKMeyDR8+XPPnz9fgwYP1yCOP6ODBg5o9e7a2bdumDRs2OM/BiRMn6rnnntOtt96qW2+9VVu3blXXrl2z7V2VV3m5dnj7OpydWbNm6aOPPtJnn33mfNzK8VlOnjxZU6ZMUVRUlEaMGKE9e/borbfe0i+//OKyP6Xs67+cpKWlKTo6WjfccINeeeUVl1bnH3/8UStWrNDIkSNVtmxZvfHGG/r3v/+tI0eOOLsp79y5Ux06dFBwcLDGjh0rX19fvf322+rUqZP+7//+T61bt5aU/sVJdvc12QkJCXG+p23btunaa6/N0pjguGfYvn27IiIisl2P3W7X77//riFDhmR5rVWrVlq1apXOnj2rsmXLui1LTEyMAgMDi6U32uXycs4lJyerY8eOOn78uIYPH64aNWpo48aNGjdunP7+++9cn7PP7R7FMc/gwYPVsmVLTZ8+XbGxsXr99de1YcOGXOuB/Fxj9uzZo7vvvlvDhw/XsGHDdN111+V7n+Wlrl+1apX+/e9/q2HDhpo+fbpOnz6twYMHq3r16rmu/8SJE2rVqpXi4+P1wAMPqH79+jp+/LiWLVum5ORk+fn56cCBA/r888915513qnbt2oqNjdXbb7+tjh07ateuXapataoaNGigqVOnZuly77j3zus9cm71bHbuuOMO7d27V//5z3/02muvOb8McnzJKuXtXM9LHVkQDz/8sMqXL69Jkybp0KFDmjVrlh566CEtXrw42/lz25dLly5VcnKyRowYoYoVK2rz5s168803dezYMS1dujRfZfv444+zTJswYYLi4uKcdcbq1at14MABDR48WOHh4dq5c6feeecd7dy5Uz/99JNMJlOePoPM8nv/kJc4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aujQoc6hR0JCQrI9bnIzdepUff/99+revbtq1qypuLg4zZ07V9WrV3dJEHC5/B5b1157rYYOHapffvlFYWFh+uCDDxQbG+uSfC4yMlIWi0UvvfSSEhISZLVaddNNN6ldu3YqX768Bg4cqEceeUQmk0kff/xxkXefmjNnjm644QY1adJEw4YNU506dRQbG6tNmzbp2LFjzjEOx44dq48//li33HKLHn30UecQUDVr1tTvv/+ep235+/tr5cqVGjhwoFq3bq1vvvlGX331lcaPH5+l+2n37t1VsWJFLV26VN26dXP7bOflmjdvrjVr1mjmzJmqWrWqateune0zLe7UrVtXzz33nMaNG6dDhw6pV69eKlu2rA4ePKjPPvtMDzzwgMaMGZPtsmfPnlX16tXVp08fNWvWTGXKlNGaNWv0yy+/6NVXX3UpY3bH/m233aYVK1aod+/e6t69uw4ePKh58+apYcOGLjcNAQEBatiwoRYvXqxrr71WFSpUUOPGjdW4ceM8f57uvPjii1q3bp1at26tYcOGqWHDhjpz5oy2bt2qNWvWZPmCqV+/frr33ns1d+5cRUdHZ3nc5umnn3YOE/jII4+oQoUKWrBggQ4ePKjly5fnmANgyJAhmjlzpqKjozV06FDFxcVp3rx5atSokctztjntj8sVV/1wuY4dO2r48OGaPn26tm/frq5du8rX11f79u3T0qVL9frrr6tPnz6qXLmyxowZo+nTp+u2227Trbfeqm3btumbb77J0m29a9euqlGjhoYOHer88uiDDz5Q5cqVdeTIEed8+bl2ePM6nB+VK1fWuHHjNGXKFN1yyy3q2bOn9uzZo7lz56ply5Y5Dg3nCc8995xWr16tG264QSNHjpSPj4/efvttXbx4UTNmzHDOV9Bnklu3bq0777xT48aNU1xcnOrVq6cFCxbo0KFDWVruBgwYoP/7v/9z+bxHjhypd999V927d9eYMWPk6+urmTNnKiwszJlQSpI+++wzjR07Vtdcc40aNGigTz75xGXdme+9PvvsMw0ePFgffvhhlrFNi9uTTz6pL774QrfddptzeKikpCT98ccfWrZsmQ4dOuT2sY+83KP4+vrqpZde0uDBg9WxY0fdfffdziGgatWqpccff9xt2Tx1jcmv6dOnq3v37rrhhhs0ZMgQnTlzRm+++aYaNWqUbVCa2QsvvKBVq1apY8eOzuFD//77by1dulQ//vijypUrp9tuu01Tp07V4MGD1a5dO/3xxx9auHBhlueE69atq3LlymnevHkqW7asgoKC1Lp1a9WuXTtP98h5rWez07x5c0npw9/ddddd8vX1VY8ePfLVCya/dWRxcrcv69evr7p162rMmDE6fvy4goODtXz58gI9m3vq1CmNHDlSDRs2lNVqzXJN6N27t4KDg3XjjTdqxowZSk1NVbVq1bRq1apsey/l5zMozP2DO7Nnz9aUKVNceurkKj+psDMPAZWTy4eAOnDggDFx4kSjTZs2RmhoqOHj42NUrlzZ6N69u0tKfMPIeQgouRkuJ7PU1FRjypQpRu3atQ1fX18jIiLCGDdunMvQF4aRvyGgzp07Z/Tv398oV66cS8p8R+rxpUuXusyf3RAahmEY27ZtM+644w6jYsWKhtVqNWrWrGn07dvXWLt2bY7bd2znP//5jzFu3DgjNDTUCAgIMLp37+6Szt0w0tPEN2rUKNv1pKSkGC+99JLRqFEjw2q1GuXLlzeaN29uTJkyxUhISHDOd/78eeORRx4xKlasaAQFBRk9evQwjh49mmVogOyGHzEMw/jiiy+Mdu3aGQEBAUZwcLDRqlUr4z//+U+u+9PdfluzZo3Rvn175/p69Ohh7Nq1y2We7IYOya6Ma9euNW6//XajatWqhp+fn1G1alXj7rvvzjKcRHbyemw5jv9vv/3WaNq0qWG1Wo369etnOU4MwzDeffddo06dOobFYnE5vjds2GC0adPGCAgIMKpWrWqMHTvW+Pbbb7OcA+6GhXj55ZezbOvyz88wDOOvv/4yBgwYYISHhxu+vr5GtWrVjNtuu81YtmyZy3y///670bFjR8Pf39+oVq2aMW3aNOP99993m84/M8e59tdffxldu3Y1AgMDjbCwMGPSpElZho1wGDlypCHJWLRoUY7rzmz37t3GjTfeaAQEBBjKNIROXo8Nh+XLlxs33HCDERQUZAQFBRn169c3Ro0aZezZs8ftti9evGg8+eSTRrNmzYyyZcsaQUFBRrNmzYy5c+e6zOfu2Lfb7cYLL7xg1KxZ07Barcb1119vfPnll1k+X8MwjI0bNxrNmzc3/Pz8snymef083YmNjTVGjRplREREGL6+vkZ4eLjRpUsX45133skyb2JionNff/LJJ9mu76+//jL6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urWHSwqUDpyTAICiQpAMAAAAAEAGnkkGAAAAACADQTIAAAAAABkIkgEAAAAAyECQDAAAAABABoJkAAAAAAAyECQDAAAAAJCBIBkAAAAAgAwEyQAAAAAAZCBIBgAAAAAgA0EyAOCK0qlTJz322GMldju1atXSrFmzirw8+XHo0CGZTCZt3769yNb55ptvymQyqV27dkpOTi6y9QIAUNIQJAMAUAIdOnRIgwYN8nYxJEkLFy7UmDFj9MYbb+jMmTP697//rdTUVJd5fvvtN919992KiIhQQECAGjRooNdff91LJQYAoOAIkgEAKEEWLlyov/76y/m/YRiaM2eO/vnnnzwtn5KSUqTl+frrr/Xggw9q6dKlevjhh/X999/rxIkTGjRokAzDcM63ZcsWhYaG6pNPPtHOnTv1zDPPaNy4cZo9e3aRlgcAgOJGkAwAuKJ9/PHHatGihcqWLavw8HD1799fcXFxztfXr18vk8mkb7/9Vtdff70CAgJ00003KS4uTt98840aNGig4OBg9e/fP0s34rS0ND300EMKCQlRpUqV9Oyzz7oEhnFxcerRo4cCAgJUu3ZtLVy4MEv5Zs6cqSZNmigoKEgREREaOXKkzp075/b91K5dWwMHDtS8efN07Ngx3XLLLTp+/LisVmu28w8aNEi9evXS888/r6pVq+q6665zvnbgwAF17txZgYGBatasmTZt2uSy7PLly9WoUSNZrVbVqlVLr776qsvrGzZs0MCBA7VixQr17NlTkhQaGqr169dr//79evTRR53zDhkyRK+//ro6duyoOnXq6N5779XgwYO1YsUKt+8VAICSyMfbBQAAoDBSU1M1bdo0XXfddYqLi9Po0aM1aNAgff311y7zTZ48WbNnz1ZgYKD69u2rvn37ymq1atGiRTp37px69+6tN998U0899ZRzmQULFmjo0KHavHmzfv31Vz3wwAOqUaOGhg0bJik9QD1x4oTWrVsnX19fPfLIIy4BuiSZzWa98cYbql27tg4cOKCRI0dq7Nixmjt3brbvp127dlq3bp2ioqK0YcMG/e9//1O3bt1y3Adr165VcHCwVq9e7TL9mWee0SuvvKJrrrlGzzzzjO6++27t379fPj4+2rJli/r27avJkyerX79+2rhxo0aOHKmKFSs6u3m3b99eJ0+ezLK98uXL6+eff86xTJKUkJCgChUq5DofAAAligEAwBWkY8eOxqOPPur29V9++cWQZJw9e9YwDMNYt26dIclYs2aNc57p06cbkoy//vrLOW348OFGdHS0y3YaNGhg2O1257SnnnrKaNCggWEYhrFnzx5DkrF582bn63/++achyXjttdfclm/p0qVGxYoV3b7+008/GR06dDCeeuopo0uXLkbXrl2NZ5991jh//ny28w8cONAICwszLl686Jx28OBBQ5Lx3nvvOaft3LnTkGT8+eefhmEYRv/+/Y2bb77ZZV1PPvmk0bBhQ7dly48NGzYYPj4+xrffflsk6wMAwFPobg0AuKJt2bJFPXr0UI0aNVS2bFl17NhRknTkyBGX+Zo2ber8OywsTIGBgapTp47LtMtbgdu0aSOTyeT8v23bttq3b59sNpv+/PNP+fj4qHnz5s7X69evr3LlyrmsY82aNerSpYuqVaumsmXL6r777tPp06fdZojet2+fPvzwQz344IOqXr26Vq5cqbCwsBwzSjdp0kR+fn5Zpmd+z1WqVJEk53v8888/1b59e5f527dv73x/hbFjxw7dfvvtmjRpkrp27VqodQEA4GkEyQCAK1ZSUpKio6MVHByshQsX6pdfftFnn30mKWsCK19fX+ffJpPJ5X/HNLvdXqTlO3TokG677TY1bdpUy5cv15YtWzRnzpxsy+dw7733qm7dui7lGjVqVI7dloOCgrKdfvl7llTk7/Fyu3btUpcuXfTAAw9owoQJxbotAACKA88kAwCuWLt379bp06f14osvKiIiQpL066+/Ftn6L3/u9qefftI111wji8Wi+vXrKy0tTVu2bFHLli0lSXv27FF8fLxz/i1btshut+vVV1+V2Zz+vfSSJUvytO1atWpp/vz5RfI+stOgQQNt2LDBZdqGDRt07bXXymKxFGidO3fu1E033aSBAwfq+eefL4piAgDgcbQkAwCuWDVq1JCfn5/efPNNHThwQF988YWmTZtWZOs/cuSIRo8erT179ug///mP3nzzTWdG5+uuu0633HKLhg8frp9//llbtmzR/fffr4CAAOfy9erVU2pqqrN8H3/8sebNm1dk5SuMJ554QmvXrtW0adO0d+9eLViwQLNnz9aYMWMKtL4dO3aoc+fO6tq1q0aPHq2YmBjFxMRkm/gLAICSjCAZAHDFqly5subPn6+lS5eqYcOGevHFF/XKK68U2foHDBig8+fPq1WrVho1apQeffRRPfDAA87XP/zwQ1WtWlUdO3bUHXfcoQceeEChoaHO15s1a6aZM2fqpZdeUuPGjbVw4UJNnz69yMpXGP/617+0ZMkSffrpp2rcuLEmTpyoqVOnOjNb59eyZct08uRJffLJJ6pSpYrzx9HKDgDAlcJkGJkGfAQAAAAAoBSjJRkAAAAAgAwEyQAAAAAAZCBIBgAAAAAgA0EyAAAAAAAZCJIBAAAAAMhAkAwAAAAAQAaCZAAAAAAAMhAkAwAAAACQgSAZAAAAAIAMBMkAAAAAAGQgSAYAAAAAIMP/A1i0935YJfqxAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rho = .02\n",
    "snr_range = np.logspace(2, 4, 128)\n",
    "\n",
    "\n",
    "se_values_uninf = state_evolve_curve(snr_range=snr_range, \n",
    "                    rho=rho,                        \n",
    "                    init_m=0.0)\n",
    "\n",
    "plt.plot(np.array(se_values_uninf['snr'])*rho**2, np.array(se_values_uninf['m'])/rho, label='m_0=0', color=colors[1])\n",
    "\n",
    "se_values_inf = state_evolve_curve(snr_range=snr_range, \n",
    "                    rho=rho,\n",
    "                    init_m=1.0)\n",
    "\n",
    "plt.plot(np.array(se_values_inf['snr'])*rho**2, np.array(se_values_inf['m'])/rho, label='m_0=1', color=colors[0])\n",
    "plt.xlabel('lambda * rho^2')\n",
    "plt.xscale('log')\n",
    "plt.ylabel('q / rho')\n",
    "plt.title(f'MSE of the predictions obtained by the state-evolution equation for rho={rho}. The color indicates the initalization.')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b9592256",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "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.10.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
