{ "cells": [ { "cell_type": "markdown", "id": "86c26a84", "metadata": {}, "source": [ "# Quantum Gaussian Filter" ] }, { "cell_type": "markdown", "id": "a444def8", "metadata": {}, "source": [ "## Overview" ] }, { "cell_type": "markdown", "id": "a4ab914e", "metadata": {}, "source": [ "A Gaussian filter is a function localized around a parameter $\\mu$. Interpreting this parameter as the desired energy level, the quantum Gaussian filter is an operator of the system Hamiltonian which acts as the projection onto an energy subspace near $\\mu$. Given a Hamiltonian $H$, the quantum Gaussian filter is\n", "\\begin{equation}\n", "\\text{exp}(-(H-\\mu I)^2/\\sigma^2).\n", "\\end{equation}\n", "Here, $\\sigma^2$ controls the width of the Gaussian. This filter is a useful subroutine in preparing ground states and solving linear system problems." ] }, { "cell_type": "markdown", "id": "13369131", "metadata": {}, "source": [ "## Polynomial approximation" ] }, { "cell_type": "markdown", "id": "78e7c015", "metadata": {}, "source": [ "Suppose the Hamiltonian is normalized and shifted so that $0 \\prec H \\prec I$. The interval of interest becomes $x \\in (0,1)$. Hence, we only need to approximate the following function accurately in the positive half interval to implement the quantum Gaussian filter $f(x) \\propto \\text{exp}(-(x-\\mu)^2/\\sigma^2)$. Extending this function as an even function, the target of the approximation is\n", "$$ f(x) \\propto \\text{exp}(-(|x|-\\mu)^2/\\sigma^2). $$\n", "Because the eigenvalue of the Hamiltonian is in $x \\in (0,1)$, it suffices to implement the quantum Gaussian filter $f(H) \\propto \\text{exp}(-(H-\\mu I)^2 / \\sigma^2)$.\n", "\n", "For the following numerical demonstration, we will consider an even function $f(x) = 0.99 * \\text{exp}(-(|x|-0.5)^2/0.1^2)$ whose $L^\\infty$ norm over $[-1,1]$ is strictly bounded by $0.99 \\approx 1$, which is very close to the fully-coherent regime $||f||_\\infty \\approx 1$." ] }, { "cell_type": "code", "execution_count": 1, "id": "d56c2313", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from numpy.polynomial.chebyshev import chebinterpolate, chebval\n", "import matplotlib.pyplot as plt\n", "\n", "# Get Chebyshev coefficients\n", "targ = lambda x: 0.99 * np.exp(-(np.abs(x) - 0.5)**2 / 0.1**2)\n", "d = 100\n", "parity = d % 2\n", "coef = chebinterpolate(targ, d)\n", "\n", "# Visualize polynomial approximation error\n", "xlist = np.linspace(0,1,500)\n", "targ_vals = targ(xlist)\n", "func_vals = chebval(xlist, coef)\n", "_, ax = plt.subplots(1,2)\n", "targ_value = targ(xlist)\n", "\n", "# First subplot\n", "ax[0].plot(xlist, targ_vals, 'b-', linewidth=2, label='target')\n", "ax[0].plot(xlist, func_vals, '-.', label='polynomial')\n", "ax[0].set_xlabel('$x$', fontsize=12)\n", "ax[0].set_ylabel('$f(x)$', fontsize=12)\n", "ax[0].legend(loc='lower right')\n", "\n", "# Second subplot\n", "ax[1].plot(xlist, func_vals - targ_vals)\n", "ax[1].set_xlabel('$x$', fontsize=12)\n", "ax[1].set_ylabel('$f_\\\\mathrm{poly}(x)-f(x)$', fontsize=12)\n", "plt.tight_layout()\n", "plt.show()\n", "\n", "# Only need Chebyshev coefficients with specified parity\n", "coef = coef[parity::2]" ] }, { "cell_type": "markdown", "id": "5c3011ef", "metadata": {}, "source": [ "## Solve for phase factors and verify" ] }, { "cell_type": "code", "execution_count": 2, "id": "037c41b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "iter err \n", " 1 +2.0557e-01\n", " 2 +4.6388e-02\n", " 3 +8.9034e-03\n", " 4 +8.8606e-04\n", " 5 +1.3739e-05\n", " 6 +3.5193e-09\n", "Stop criteria satisfied.\n", "The residual error is\n", "8.548717289613705e-15\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHBCAYAAACFa9TrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfZpJREFUeJzt3Xd4FNX6B/DvZpNsQkkooQQIBKQXAWnSlCaXptgQEZWuKIrlp16wgYoiglzLVUQRlGsXsaIiAgLSO9J7r6Gk1935/RF2M7M7MzuzO7Ob3f1+nicPZDM7c7LZnXnnPe85xyIIggAiIiKiCBQV7AYQERERBQsDISIiIopYDISIiIgoYjEQIiIioojFQIiIiIgiFgMhIiIiilgMhIiIiChiMRAiIiKiiMVAiIiIiCIWAyEiIiKKWAyENFq5ciVuvvlm1KhRAxaLBT/88EPQjzd8+HBYLBbJ1/XXX29qu4iIiMIJAyGNsrOz0bJlS/z3v/8tVcfr06cPzpw54/r69ddfA9I+IiKicBAd7AaEir59+6Jv376KPy8oKMDzzz+Pzz//HFeuXEHz5s0xbdo0dOvWzZTjOdlsNlSvXt2nYxAREUU6ZoQMMmLECKxevRpfffUVduzYgUGDBqFPnz44cOCAqcf966+/ULVqVTRs2BBjxozB+fPnTT0eERFROLEIgiAEuxGhxmKx4Pvvv8ett94KADh06BAaNGiAkydPokaNGq7tevXqhfbt2+O1114z9HhOX3/9NcqVK4c6dergyJEjeOGFF1BUVITNmzfDZrP5dUwiIqJIwK4xA2zZsgWCIKBhw4aSx/Pz81G5cmUAwNGjR1G3bl3V/YwbN05XDdLgwYNd/2/evDnatm2LOnXqYNGiRbj99tt1/AZERESRiYGQARwOB6xWKzZv3gyr1Sr5Wbly5QAANWvWxJ49e1T3U7FiRb/akZycjDp16pjeHUdERBQuGAgZoHXr1rDb7Th//jy6du0qu01MTAwaN25sajsuXryIEydOIDk52dTjEBERhQsGQhplZWXh4MGDru+PHDmCbdu2oVKlSmjYsCGGDh2K+++/H2+++SZat26NtLQ0LFu2DC1atEC/fv0MPV7t2rWRlZWFyZMn44477kBycjKOHj2KZ599FklJSbjtttsM+Z2JiIjCHYulNfrrr7/QvXt3j8eHDRuGTz75BIWFhZgyZQrmz5+PU6dOoXLlyujYsSNeeukltGjRwvDj5ebm4tZbb8XWrVtx5coVJCcno3v37njllVeQkpLi0+9IREQUaRgIERERUcTiPEJEREQUsRgIERERUcRisbQKh8OB06dPo3z58rBYLMFuDhEREWkgCAIyMzNRo0YNREWp53wYCKk4ffo0C4+JiIhC1IkTJ1CrVi3VbRgIqShfvjyA4hcyISEhyK0hIiIiLTIyMpCSkuK6jqthIKTC2R2WkJDAQIiIiCjEaClrYbE0ERERRSwGQkRERBSxGAgRERFRxGIgRERERBGLgRARERFFLAZCREREFLEYCBEREVHEYiBEREREEYuBEBEREUUsBkJEREQUsRgIERERUcRiIEREREQRi4EQEZGfCu0OFNodwW4GEfmAgRARkR8cDgFdpi1Dx6lLYXcIwW4OEenEQIiIyA+ZeUU4l5GPtKwCpGXlB7s5RKQTAyEiIn9YSv4rMCFEFHIYCBER+SFKHAiBkRBRqGEgRETkB4ulJBJiiRBR6GEgRETkB1FCCAL7xohCDgMhIiKDMA4iCj0MhIiI/MDYhyi0hXUgVFRUhOeffx5169ZFfHw86tWrh5dffhkOByc+IyLjMSNEFHqig90AM02bNg0ffPABPv30UzRr1gybNm3CiBEjkJiYiMceeyzYzSOiMCCuC3IwEiIKOWEdCK1duxYDBw5E//79AQCpqan48ssvsWnTpiC3jIjChaDwfyIKDWHdNdalSxcsXboU+/fvBwBs374df//9N/r16ye7fX5+PjIyMiRfRERacdQYUegJ64zQv//9b6Snp6Nx48awWq2w2+149dVXMWTIENntp06dipdeeinArSSiUCaOfRgGEYWesM4Iff311/jss8/wxRdfYMuWLfj0008xY8YMfPrpp7LbT5w4Eenp6a6vEydOBLjFRBTKmBAiCj1hnRF6+umnMWHCBNx9990AgBYtWuDYsWOYOnUqhg0b5rG9zWaDzWYLdDOJKJSJM0KMhIhCTlhnhHJychAVJf0VrVYrh88TkWHE64sxDCIKPWGdEbr55pvx6quvonbt2mjWrBm2bt2KmTNnYuTIkcFuGhGFISaEiEJPWAdC7777Ll544QU8/PDDOH/+PGrUqIEHH3wQL774YrCbRkRhQloszUiIKNSEdSBUvnx5vPXWW3jrrbeC3RQiigDM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set up parameters\n", "opts = {\n", " 'maxiter': 100,\n", " 'criteria': 1e-12,\n", " 'targetPre': True,\n", " 'useReal': True,\n", " 'method': 'Newton'\n", "}\n", "\n", "# Run solver for phase factors\n", "from qsppack.solver import solve\n", "phi_proc, out = solve(coef, parity, opts)\n", "\n", "# Necessary imports for verification\n", "import matplotlib.pyplot as plt\n", "from qsppack.utils import chebyshev_to_func, get_entry\n", "\n", "# Compute residual error\n", "xlist = np.linspace(0, 1, 1000)\n", "func = lambda x: chebyshev_to_func(x, coef, parity, True)\n", "targ_value = targ(xlist)\n", "func_value = func(xlist)\n", "QSP_value = get_entry(xlist, phi_proc, out)\n", "err = np.linalg.norm(QSP_value - func_value, np.inf)\n", "print('The residual error is')\n", "print(err)\n", "\n", "# Plot result\n", "plt.plot(xlist, QSP_value - func_value)\n", "plt.xlabel('$x$', fontsize=12)\n", "plt.ylabel('$g(x,\\\\Phi^*)-f_\\\\mathrm{poly}(x)$', fontsize=12)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "5e9d5b71", "metadata": {}, "source": [ "## Reference\n", "1. Lin, L., & Tong, Y. (2020). Optimal polynomial based quantum eigenstate filtering with application to solving quantum linear systems. *Quantum*, 4, 361.\n", "\n", "2. Lin, L., & Tong, Y. (2020). Near-optimal ground state preparation. *Quantum*, 4, 372.\n", "\n", "3. Dong, Y., Meng, X., Whaley, K. B., & Lin, L. (2021). Efficient phase-factor evaluation in quantum signal processing. *Physical Review A*, 103(4), 042419." ] } ], "metadata": { "kernelspec": { "display_name": "qspy", "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.13.2" } }, "nbformat": 4, "nbformat_minor": 5 }