{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Quadrature\n", "\n", "This is a notebook that illustrates differences in the quadrature methods which are central to the evaluation of\n", "\n", "$$\n", "\\int_0^{\\pi} f(\\theta) \\sin \\theta \\; \\mathrm{d}\\theta = \\int_{-1}^{1} f(\\cos \\theta) \\; \\mathrm{d}\\cos \\theta.\n", "$$\n", "\n", "Quadrature is used to compute the projection onto the associated Legendre functions in `torch-harmonics`.\n", "\n", "In order to illustrate how interpolation and quadrature affect the error in the computation of the SHT, this notebook contains example for both errors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import torch\n", "import scipy\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "n_theta = 80" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append(\"../torch_harmonics\")\n", "\n", "from quadrature import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test interpolation\n", "\n", "we first assess the interpolation onto the quadrature nodes:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# interpolation - careful - this breaks if points align (for non-periodic signals)\n", "def interpolate(t, tq, f):\n", " j = np.searchsorted(t, tq) - 1\n", " d = torch.from_numpy( (tq - t[j]) / np.diff(t)[j] )\n", " j = torch.as_tensor(j)\n", " interp = torch.lerp(torch.as_tensor(f[j]), torch.as_tensor(f[j+1]), d)\n", " # interp = f[j] + (f[j+1] - f[j]) * (tq - t[j]) / np.diff(t)[j]\n", " # print(d)\n", " # print(f[j+1] - f[j])\n", " # print(j)\n", " return interp" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "cost_lg, wlg = legendre_gauss_weights(n_theta, -1, 1)\n", "# cost_lg, wlg = lobatto_weights(n_theta, -1, 1)\n", "tq = np.flip(np.arccos(cost_lg))\n", "teq = np.linspace(0, np.pi, n_theta, dtype=np.float64)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(teq, '.')\n", "plt.plot(tq, '.')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "test interpolation:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "f = lambda t : np.cos(4*t)\n", "# f = lambda t : 1 / (1 + 25 * (2*(t-np.pi/2)/np.pi)**2)\n", "# f = lambda t : 1 / (1 + 25 * np.cos(t)**2)\n", "# f = lambda t : t**5 - 3*t**2 - 2*t + 1.0\n", "\n", "interp = interpolate(teq, tq, f(teq))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([ 0.9905, 0.9602, 0.9065, 0.8309, 0.7351, 0.6214, 0.4926, 0.3519,\n", " 0.2026, 0.0484, -0.1070, -0.2597, -0.4062, -0.5428, -0.6661, -0.7733,\n", " -0.8617, -0.9292, -0.9741, -0.9953, -0.9923, -0.9652, -0.9147, -0.8418,\n", " -0.7486, -0.6370, -0.5100, -0.3706, -0.2221, -0.0681, 0.0875, 0.2411,\n", " 0.3888, 0.5272, 0.6527, 0.7625, 0.8537, 0.9243, 0.9724, 0.9968,\n", " 0.9968, 0.9724, 0.9243, 0.8537, 0.7625, 0.6527, 0.5272, 0.3888,\n", " 0.2411, 0.0875, -0.0681, -0.2221, -0.3706, -0.5100, -0.6370, -0.7486,\n", " -0.8418, -0.9147, -0.9652, -0.9923, -0.9953, -0.9741, -0.9292, -0.8617,\n", " -0.7733, -0.6661, -0.5428, -0.4062, -0.2597, -0.1070, 0.0484, 0.2026,\n", " 0.3519, 0.4926, 0.6214, 0.7351, 0.8309, 0.9065, 0.9602, 0.9905],\n", " dtype=torch.float64)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "interp" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1. , 0.98737534, 0.94982013, 0.88828261, 0.80431657,\n", " 0.70004207, 0.578092 , 0.4415455 , 0.29385027, 0.13873553,\n", " -0.01988219, -0.1779979 , -0.33161928, -0.4768675 , -0.61007515,\n", " -0.72787881, -0.82730403, -0.90584039, -0.9615049 , -0.99289207,\n", " -0.9992094 , -0.98029737, -0.9366335 , -0.86932027, -0.78005731,\n", " -0.67109843, -0.54519477, -0.40552532, -0.25561663, -0.0992538 ,\n", " 0.05961513, 0.21697881, 0.36886392, 0.51143548, 0.64109364,\n", " 0.75456462, 0.84898336, 0.92196585, 0.97166934, 0.99683884,\n", " 0.99683884, 0.97166934, 0.92196585, 0.84898336, 0.75456462,\n", " 0.64109364, 0.51143548, 0.36886392, 0.21697881, 0.05961513,\n", " -0.0992538 , -0.25561663, -0.40552532, -0.54519477, -0.67109843,\n", " -0.78005731, -0.86932027, -0.9366335 , -0.98029737, -0.9992094 ,\n", " -0.99289207, -0.9615049 , -0.90584039, -0.82730403, -0.72787881,\n", " -0.61007515, -0.4768675 , -0.33161928, -0.1779979 , -0.01988219,\n", " 0.13873553, 0.29385027, 0.4415455 , 0.578092 , 0.70004207,\n", " 0.80431657, 0.88828261, 0.94982013, 0.98737534, 1. ])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(teq)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plt.plot(teq, f(teq), '.-', label=\"reference\")\n", "plt.plot(tq, f(tq), '.-', label=\"reference\")\n", "# plt.plot(tq, interp, '.-', label=\"interpolated\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test quadrature with associated Legendre polynomials\n", "\n", "let us test different quadrature modes:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def precompute_legpoly(m_max, l_max, x):\n", " \"\"\"\n", " Computes the values of P^m_n(\\cos \\theta) at the positions specified by x (theta)\n", " The resulting tensor has shape (m_max, l_max, len(x))\n", " \"\"\"\n", "\n", " # compute the tensor P^m_n:\n", " pct = np.zeros((m_max, l_max, len(x)), dtype=np.float64)\n", "\n", " sinx = np.sin(x)\n", " cosx = np.cos(x)\n", "\n", " a = lambda m, l: np.sqrt((4*l**2 - 1) / (l**2 - m**2))\n", " b = lambda m, l: -1 * np.sqrt((2*l+1)/(2*l-3)) * np.sqrt(((l-1)**2 - m**2)/(l**2 - m**2))\n", "\n", " # start by populating the diagonal and the second higher diagonal\n", " amm = np.sqrt( 1. / (4 * np.pi) )\n", " pct[0,0,:] = amm\n", " pct[0,1,:] = a(0, 1) * cosx * amm\n", " for m in range(1, min(m_max, l_max)):\n", " pct[m,m,:] = -1*np.sqrt( (2*m+1) / (2*m) ) * pct[m-1,m-1,:] * sinx\n", " if m + 1 < l_max:\n", " pct[m,m+1,:] = a(m, m+1) * cosx * pct[m,m,:]\n", "\n", " # fill the remaining values on the upper triangle\n", " for m in range(0, m_max):\n", " for l in range(m+2, l_max):\n", " pct[m,l,:] = a(m,l) * cosx * pct[m,l-1,:] + b(m,l) * pct[m,l-2,:]\n", "\n", " return torch.from_numpy(pct)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us plot the Legendre polynomials:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "m = 0\n", "\n", "pct = np.sqrt(2 * np.pi) * precompute_legpoly(n_theta, n_theta, teq)\n", "\n", "fig, ax = plt.subplots(1, 1)\n", "for l in range(6):\n", " ax.plot(np.cos(teq), pct[0, l])\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def project(t, w, f, mmax=None):\n", " m = 0\n", " if mmax == None:\n", " mmax = len(t)\n", "\n", " weights = torch.from_numpy(w)\n", " pct = np.sqrt(2 * np.pi) * precompute_legpoly(mmax, mmax, t)\n", " weights = torch.einsum('mlk,k->mlk', pct, weights)\n", "\n", " proj = torch.einsum('...k,lk->...l', torch.as_tensor(f), weights[m])\n", " rec = torch.einsum('...l, lk->...k', proj, pct[m] )\n", " return rec" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "let us compare the accuracy of the different projection methods:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.linspace(0, np.pi, n_theta)\n", "plt.plot(t, f(t), label=\"reference\")\n", "\n", "for quadrature in [legendre_gauss_weights, lobatto_weights, clenshaw_curtiss_weights, fejer2_weights]:\n", " cost, wq = quadrature(n_theta, -1, 1)\n", " tq = np.flip(np.arccos(cost))\n", "\n", " out = project(tq, wq, f(tq))\n", "\n", " plt.plot(tq, out, '.-', label=quadrature.__name__)\n", "\n", "plt.legend(loc='lower left')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAD4CAYAAAAKA1qZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAAsTAAALEwEAmpwYAABPbUlEQVR4nO2dd3xUVfq4nzMllSRAEnpJQDpC6EgTUBEFARUVxEWkrYXF1Z9fy+rquura61pYBMWCCooFUQE7RVrAIBB6kx4IKaROO78/7sxkkkySSTKZkjnP5xOYuffOve9t5z3vOW8RUkoUCoVCEZro/C2AQqFQKPyHUgIKhUIRwigloFAoFCGMUgIKhUIRwigloFAoFCGMwd8CVIeEhASZlJTkbzEUCoUiqNi6des5KWWiu3VBpQSSkpJITU31txgKhUIRVAghjla0Tg0HKRQKRQijlIBCoVCEMEoJKBQKRQijlIBCoVCEMEoJKBQKRQijlIBCoVCEMCGpBNIy0liwYwFpGWn+FkWhUCjK4cs2KqjiBLxBWkYaM1fPxGQ1Ea4P5+1Rb5PSJMXfYikUCgWgtVEzVs3AYrMQpg+r8zYq5CyB1DOpFFuLkUhMVhOpZ1TwmUKhCBxSz6RispmwYcNsM9d5GxVySqBv074IBAAGnYG+Tfv6WSKFQqEowbVNMuqMdd5GhZwSSGmSQosGLQD416B/qaEghUIRULi2Sb4Yrg45JQAQaYgEoFPjTm7Xp55J5X/b/6cmjhUKRZ3we8bvvJX2VpVtjC86qSE3MVwVaRlp3LbyNgAW7FigJo4VCoVXcbQxVmll4c6FLBi1wK9tTEhaApXhOglT0aSMcjFVKBRVUVE7kXomFau0AhW3Mb5EWQJlqGpSJi0jjdtW3YbNZvOJ+5ZCoQg+fs/4nekrp2OT5dsJX0/8VoWyBMpQ1aRM6plULDZLhe5bykpQKEKDyt71z/Z9hkW6bydSmqQQY4wB4KXhL/m9E6ksgUpwd3Mq0+IqEE2hCA2qCuhKik1yfnbX2zfotKa3e0J3X4hbKcoSqCaVWQqpZ1IxWU1IJMXWYjWfoFAEMZW9q1UFdCXFJQHQPq59wHcGlSVQC8re2L5N+6ITOqzSil6ndzufMGPVDMw2s7IUFIoAJi0jjRmrZ2C2un9XPR3XT45LDvh3XFkCXiSlSQqXtroUgFs63+J2PsFk0ywF5XmkUPiXKnv61orfVV8HdNUlyhLwMgmRCQC0imlVbp0nnkfTV03HarMqzyOFog5xnb8L04eV89WvjgdPsL+jyhLwIZ54Hplt5koTRylLQaHwnMp89R09fXeJJOtTT78q/GoJCCGGA08Au4BPpJS/+FMeX1JdzyNQMQoKRXWozLIuNX8nys/fuVLf37EaWwJCiHeEEBlCiJ1llo8WQuwVQhwQQjxYxW4kkAdEAMdrKkt9oarex9K9SyuNUVAoFCVUZlmnNEnh8jaXA3BjpxvrfUNfGbWxBBYBrwPvOxYIIfTAG8AVaI36FiHEckAPPF3m99OBtVLKX4UQTYGXgCm1kKfaSCl9ebhq4e6hbBnT0vnZnaWQeiaV9cfXc2nrS0P6oVaEDhtPbiT1TCpDWg5x663nwN37khiVCEDLBi0JZWqsBKSUa4QQSWUW9wcOSCkPAQghPgHGSymfBsZWsrssINzdCiHEbGA2QJs2bWoqbr2gbWxbADo26sg/B/6z1EPvcD+1SRsf7P7A70mpFIq6Ji0jjVnfzwLgvV3vlbOeQ2lcvzZ4e2K4JXDM5ftx+zK3CCGuE0L8D/gAzaooh5RyvpSyr5Syb2JioleFFUJ4dX++4qKGF7mdVLZJGwAWm0VNKivqBVW5cTqoanhUKYCK8evEsJTyc+Bzf8pQX3A1dd1VTHNMkllsFhWopggKqkrDEmiJ2IIVb1sCJ4DWLt9b2Zcp6piUJimE67URtddHvl6h+2llgWoKRSBRVT1wNdzjHbytBLYAHYQQyUKIMGASsNzLx1BUgF7oAbg48eJy6zzpNanhIoU/qOi5q049cKUAak6Nh4OEEB8Dw4EEIcRx4DEp5UIhxBxgFZpH0DtSyl1ekTRACGSPosqoqtekYhAU/qCy5y6lSQpJsUkczj3MwwMfVs9jHVEb76DJFSz/Fvi2xhIp6hx3L9Mvx37BYrMAJZNs6qVT1DUrj6ys9LmLMkYBmkecom5QaSMUQOm85mqSTeErOjXu5Pysnjv/oJSAAoCu8V0BiDHGVDhcpOYLFDWhsmfH0cNPjExUQ5B+QmURVZSiQVgDtwpAVUxT1ARPM+MmRCaoZ8pPKEtAUSVVueopFBXhSWZchX9RSkBRJY6Mi4DbimkKRUWogK7ARykBRZWkNEmhW3w3AO7ufbcy2xUeowK6Ah+lBBQeERseC0C7uHZ+lkQRrCgFEJioieEgIpAD1dIy0kg9k0rfpn3r/GWv6lhrjq0h/Xw6A5sPrNcNz09//sTB7IP0a9bP7WR+oNwPRWAT0kogkBvVYCItI40Zq2dgsVq8Em1cWaOSlpHG1O+mIpFE6CPKHSstI427froLgIU7Frpdv/7Eega3HBzwDdamU5tIy0hjQPMB5WRdtm8Z/9rwLwSinMdWWkYa01ZOwyqthOvD3aYV91bDrTzHgp+QHA4K1hTSnsrta+XmqNfqDQ8QR6Py323/ZdbqWW5rw0q083N3rMrSCzvcFef9MY8Zq2YEdMyD4zq8nva62+uw/uR6ALcJAVPPpGKVVsB9WvGqrnF1cPUcU94/wUlIKgFlAXgXb3qAuCoUd+6oVR2rsvUOd0WoOP+8L4PiapMrPzk22fm57HlWlVbc0XB7Q2kr75/gJ6SHg4LVIqgKX5+XNz1AqmrAqjpWZev7Nu2LXugrLC7uqM5mtpnrfGijqmNV1bi2idWq7HVp3IV/DPhHuYpaRp0Rs83Mm5e9We2yi9VBef8EPyFpCSjqjto2AilNUmjXUPNAerD/g5Xur6pjuVMQVyZdCcDEjhPd1lww2Uw+Gdqo6lieNq4dGnVwu84R19EjsUe5dXXVcCsFEJwoJaAIOKKN0YDWwHmbJlFNAGjRoEW5db4c2qjOseqycVUNt0IpgWrimJRU1D98ObShhlHsqNfJ7ygloPALgZ6V1JeNciAqgEC/PwrvEdITwwr/kHomlZmrZiKlDLoqZtXxrw/WICpHnIFP7k/99M0IKpQSUPiclYdXOv3Yg6mKmSNQDajSe8jh/WOymSoM2ApU1p1YF5T3R1Ez1HCQwudE6iMBEIig8i13BKp54j3k8P4Bgi79dq8mvZyfg+n+KGqGsgQUPifblA3A8FbDmX7x9KDpZVbHo6dUTEKQpd92lBo16ozMHzU/aO6PomYoS0Dhc3Zl7gIIivw9rlTHoyelSQpDWw4FYGrXqUF1ng7MNjNx4XH+FkNRxygloPAphZZCDmYf9LcYtcaTRj0+Mh6A1jGt61iaumPXuV3+FkFRxygloPApe8/vxSZt/hZD4SEOq01Rf/HrnIAQYigwxS5HVynlIH/KE+jUh8R3qlEJLpQlUP+psSUghHhHCJEhhNhZZvloIcReIcQBIcSDle1DSrlWSnk7sAJ4r6ay1JRgbVSDOfHdrnO7CNOF+VuMoMfTyPXaRLiH6cLYc34PFpulxvtQBD61GQ5aBIx2XSCE0ANvAFcBXYHJQoiuQoiLhRAryvw1cfnpzcBHtZClWgRzI+oJgazcdmXuonPjzv4Wo94jvBCF1blxZ4qsRRzKOeQFiRSBSo2VgJRyDXC+zOL+wAEp5SEppQn4BBgvpdwhpRxb5i8DQAjRBsiRUl5wdxwhxGwhRKoQIvXs2bM1FbdeUVEjH+jKLd+cz+Gcw3SN7+pvUeo93shx5bhPakiofuPtieGWwDGX78ftyypjBvBuRSullPOllH2llH0TExO9IGLwEuiNfFWkZ6YjkXRL6OZvUYIeT3v6tbEI2sa2JdoYreZx6jl+DxaTUj7mh2P6+pA+IdDPKz0zHUBZAkGCEIKu8V2d901RP/G2JXACcHWKbmVfFpDUpGcd6A0tBK7FsOvcLppHN6dxRGN/i6LwkG7x3dh7fi9mq7luDhD4r1O9x9tKYAvQQQiRLIQIAyYBy718DEWQsitzF93i1VBQMNEtvhsmm4n92fvr9DiB2nEJBWrjIvoxsAHoJIQ4LoSYIaW0AHOAVcBuYKmUUg0oKsgpzuHPC3+q+YAgw3G/1LxA/aXGcwJSyskVLP8W+LbGEinqJY5xZWUJBBetGrQiNiyWXed2cUPHG+rsOMEwzFpfUWkjFD7B0ZN0nRRWpToDE9cGWQhBt/hudTc5rEaB/I5SAgqf8NvJ34gLi+NwzmF/i6KoJt0SurHv/D7mbZ+nyk3WQ5QSUNQ5aRlpbDm9hRxTDrNWz1LBR0FGtCEaK1beSnuLWatnKUVQz1BKQFHnuFbVMtvMpJ1N858wimpzKv8UADZsVVZUUwQfSgko6hxHVS1HOcmUxBT/CqSoFo55HB06VW6yHuL3iGFF/SelSQrh+nC6xnfl3j730iqmlb9FUlSDDo06ADC2/Vhu6HhDUFZJU1SMsgSCiGB2o9MLPRcnXKwakCBmdNJodf/qISGtBIK1UVXRlQpf1BNQhAYhqQTqeyMa6MrNG7nuFZWjrrHCU0JSCdRX6rtyUygU3kcpgSAk0Hv6tUX1YmuPN4aB1H0IDZQSqCb+HGNVPX2FA18UlVGEBiGpBOprT7q+nJeazAwh1K32OyGpBBzU1551fT0vRf1FPbP+I6SVgEKhUIQ6SgkoFApFCKOUgEKh8Dv1ZT4rGFFKQOE31ARwYOLT+6KmAvyOUgIKhUIRwigloPAJqtcf/Kh7WD9RSkDhM1TgUnCi7lv9RikBhUKhCGGUEggilAeFQqHwNn5VAkKIrkKIpUKIt4QQE319/GBtVFV0pULVE1B4ixorASHEO0KIDCHEzjLLRwsh9gohDgghHqxiN1cB/5VS3gFMraks1aW+N6KBrtzq+/UPBNQ4vsJTalNjeBHwOvC+Y4EQQg+8AVwBHAe2CCGWA3rg6TK/nw58ADwmhBgHxNdCFgX1p3FVDZhC4TtqrASklGuEEEllFvcHDkgpDwEIIT4BxkspnwbGVrCru+zK43N3K4UQs4HZAG3atKmpuAqFQqFwg7fnBFoCx1y+H7cvc4sQIkkIMR/Nmnje3TZSyvlSyr5Syr6JiYleFbYmqDFWRajgE8tSvU5+pzbDQbVGSnkEey9f4TmBPuav8D/B1lmpC4Wj3hPP8LYlcAJo7fK9lX1ZQBGsD0dVL0qwnldZgq0B8weqspjCW3hbCWwBOgghkoUQYcAkYLmXj+E16stEalnq63kpFArvUxsX0Y+BDUAnIcRxIcQMKaUFmAOsAnYDS6WUu7wjqkKhUCi8TW28gyZXsPxb4NsaS6RQKBQKn6HSRigUCr9TX+azghGlBBR+Q734gYkqKhNaKCWgUCgUIYxSAgqfobyWghN13+o3SgkoFApFCKOUQBChxtAVCoW3CWklEKyNaqhEDisqJhDrCajnLjgJSSVQX8c4g+W8VCqDukddY4WnhKQSUAQ2qgFTKHyHUgLVRVm8CoWiHqGUgEKh8B+qU+V3lBJQKBR+J1jms+ojSgkEIcoLQ1EV3vAKCva5GVWXwjOUEggiQqW3pF7eqlFFZRTeIiSVQH3tSdfX81IoFHVHSCoBB/W1Z11fz0uhUHifkFYCCoVCEeooJaDwG2rsPzDxx7CiGsr0H0oJKBQK/6FGLv2OUgIKn6B6esGPuof1E6UEFD5DuSsGJ+q+1W+UEggiVE9MoVB4m5BWAsHaqKp6AoqArCegJvqDEp8pASFEOyHEQiHEZ5Ut85EsvjyczwiW81LDC3WPusYKT/FICQgh3hFCZAghdpZZPloIsVcIcUAI8WBl+5BSHpJSzqhqmUKhGjCFwncYPNxuEfA68L5jgRBCD7wBXAEcB7YIIZYDeuDpMr+fLqXMqLW0AYAyeRUKL6JeJ7/jkRKQUq4RQiSVWdwfOCClPAQghPgEGC+lfBoY6y0BhRCzgdkAbdq08dZuFQpFABEsQ5n1kdrMCbQEjrl8P25f5hYhRLwQYh7QSwjxUEXLyiKlnC+l7Cul7JuYmFgLcRUKhUJRFk+Hg2qNlDITuL2qZQqFQqHwHbWxBE4ArV2+t7IvUygUCkWQUBslsAXoIIRIFkKEAZOA5d4RS1EZKg5AURWqsph6TzzFUxfRj4ENQCchxHEhxAwppQWYA6wCdgNLpZS76k5U7xGsD0eoBIkpD6yqCfYGWhE4eOodNLmC5d8C33pVIh9SXz0S6ut5KRQK7xPSaSMUCkVgUF+s2GBEKQGFQlEKnw7HKaPV7ygloPAJapw/+FH3sH6ilIDCd6heX3Ci7lu9RimBIEKNmyoUCm8Tckpg69EszuebgOBtVEPFVVRRMR7XE/Dhs6CeO+/zxs8H2Ho0q06PEVJKYOvRLG5+eyNnL2hKYPepC36WyLsEi2tosMgZzKg4gvrBi6v3MmXBxjpVBCGlBDYeysRksTm//3E8u9r7UJNjdY9qwEII9TpVik2C2WJj46HMOjtGSCmBge3iCTeUnHKPVg39J4xCoXCirEP36AQYDToGtouvu2PU2Z4DkD5tG7F41kAijXoAWjWK9LNECoVCUTH3XNGRxTMH0qdtozo7RkgpAdAUQbO4CAB+2nPGz9IoFApFaU5mFzo//21khzpVABCCSgAg3Kid9nc7TyuPBoVCEVAsTT1W9UZeJCSVgIOjmQVs+7Nu3a8UCoXCUyxWG0u2KCXgM6LC9Hy0ybcXXKFQKCri131nOZVT5NNjhrQSGN6pCSv+OElOgdnfolQLNYRVMeraaChX5uC8Bh9t+pPEmHCfHjMklYCjobiqezOKLTbuXZpW51F53iBUIoWD8eX1Nb6IpVBum75l1a7T/LQng2EdEnx63JBUAg7MVokQ8OOejDqPylMoFIqK2Ho0i7sWb0MCK/445dNjh7QS+ON4jjNisa6j8hQKRcXUFyu2pmw8lInFpl0Di9VWxdbeJaSVQI9WcRj0mslr0NdtVJ6iPKH+4itQaartDGwX77wURoNvm+WQVgJdW8Tyn2svBuBvIy+q86CMUEY1+MGPuod1R0rrhuj1gn5JjVg8c6BPjx3SSgBgbI8WCAE+tsBqRLC/hCoxXHCi7lvdczK7EItVcn3vVj7vjIa0EpBSEhmmp1WjSA6czfO3OB5TpZeQ8q6p9wTiPQ5EmYIFR/vTvkkDnx87JJVA2Ua0Q5MY9p8J/toC9cWlT/U8a4+6hsHFobP5ALRLiPb5sX2mBIQQ7YQQC4UQn7ks6yKEmCeE+EwIcYevZCnLRU0acOhcPlZb1T2ZYB+SUSgCCvU6AXDwbB4No4w0jg7z+bE9UgJCiHeEEBlCiJ1llo8WQuwVQhwQQjxY2T6klIeklDPKLNstpbwduBEYXF3hvcVFTRpgstg4dr7AXyIoFCFNfbFia8qhs3m0S4j2y3Xw1BJYBIx2XSCE0ANvAFcBXYHJQoiuQoiLhRAryvw1qWjHQohxwDfAtzU6Ay/QwT4OdyCj/LzA1qNZPqnzqVAo6j+O9sRiK+2JcvBsPu0TfT8fAGDwZCMp5RohRFKZxf2BA1LKQwBCiE+A8VLKp4GxngogpVwOLBdCfAN8VHa9EGI2MBugTZs2nu62WjgmY/Zn5HF516bO5VuPnGfS2xux2iRhBh2LZw6kW0tViEahUFSfrUfOc9P8jdikJKqDBaHVtiK3yMzZC8W085MSqM2cQEvANQXncfsytwgh4oUQ84BeQoiH7MuGCyFeE0L8jwosASnlfCllXyll38TExFqIWzGxEUaaxUaUswS+2n4Ss1X6pM6nQqGo3/y4JwOLTWtPXOdCHJPC7RN9PykMHloC3kBKmQncXmbZL8AvvpKhHNveh07joXV/LmrSgAMZpT2EHEXpBXVf51OhUNRverv6/7sM/R+0dz6dlsCxzT6UqnZK4ATQ2uV7K/syn2I2mzl+/DhFRZ7n4P57y7sxN7dQbLWy+0Q2ZKdxV69ICkxGdu/ezStdXwHAIG1c1rw5kUYdMRFGwgpOc2ifdK7fvXt3uX1fHnk5g7oOIs4U53Z9Zb+tan0Lcwte6foKkYZIt+v/0/E/SCn588Cf6ER5I6+yfVttVl7p+gp6nd7t+lvib+GGuBtokNWA3Reqf17Pd36eaEM0u3fvxiZtvNL1FWItsW63/2uzv2JKNCEyBLszvXsNhxiGkNI1hVir+2PXZt8AERERtGrVCqPR6Ha9InTp0SrO+blBuIF8i/b50Lk8DDpB2/goTQEsuhraNNdWHtsMrfvXqVy1UQJbgA5CiGS0xn8ScLNXpKoGx48fJyYmhqSkJI9n1o2ZgmJppb3ZTISUENOMTNGIE9mFtG8Wiy1bswCsRdroVouGkSQ00HJ826QNmanZcl0SupTb98m8k2QVZdE8ujmNIxuXW287Z6vwt1Wtzy7K5kTeCeLC42gV06r8jzM1+To37oxep6/Wvk1WEyJLYNQZ6di4Y7n1R3OPkmfKo01sG2LCYqp9XjJTEh8RT9PoplhsFjgPzaKbER9Z3ro6lHOIQnMhyXHJRBmjqnUsKSW2zIrXn84/TWZhJk2jm5IQWT5lb23uj5SSzMxMjh8/TnJystvfKxQArp7mBzPyadM4CqNeB0fWgtWlvsmRtXWuBDx1Ef0Y2AB0EkIcF0LMkFJagDnAKmA3sFRKuavuRHVPUVER8fHx1XOtKtVLFhAeQ7hRazSLLVbvCqgIGYQQxMfHV8sqVdQvHN4/B6vIQGB2yVNz6FxeyVBQ0+6lN0wa6m0Ry+Gpd9DkCpZ/ix9dOx1U27dWpwPHPTBEQFg0EfabUmQuuTk6IbBVEhyWX2whv9hCdLiB6HCfTa8oAphA8XdXKRx8fw22Hs3i5rc3YrbaCI/bj6F5xdtarDbQg9UmOXKugBGd7V70BedLb1jHVgCEaNqIUlgKwWrCoNdh0OlKWQIxEZU37IfO5XM6t4jD5/LJL7bUtaQq7a7CiUoLEXhsPJRJscWGTYLVVnFGyi7NY7Ha9dOp7EJMVhvtE+yWwP5VPpC0NEoJABRmAxBu0FHsYgnERFQ+uedIISGl9I0SUCh8gD9So9SHdCyu3oN6XcVN61CX8pFHMu3uoU2itbmAAz/VnYAVENpKQGcAQ2SJEjDqKHKxBBpUMcTj6I0N6NTKb8NB06ZN47PPPqt6w3rOyZMnmThxYpXbtW/a3u3yL7/8kvT0dG+LVa+ok+GVemTQuKaAvvvyDhVu16ZxFHp7y3v4nJaqpl1CA80TqDgHYisMt6oTQlIJpJ8oZOmmbH4/WQyRDcGcDxYTEQZ9qSRyuioe0IZRmqUgBL5RAtV4B63W0JrgbtGiRa2UoVICFaOGnqpPVSkgjHYtcOhsHo2jw2gUHaYNBemM0G64DyQsoV7NZj7+9S7ST+ZWus2FIjO7T19ASnhfQJemecToTaDfgFUYKTJbEbpiACKNuTSNDeexa7q53ZfjRrry1itv8cWyL5AWycTrJvL4448D8MQTT/Dhhx8S3TCaZi2bMXLQSO677z4OHjzIXXfdxdmzZ4mKiuL+5+6nXYd2TJs2jdjYWFJTUzl9+jTPPfccl4+9HCklj/y/R9jw6wZat25NWFhJ1sHLe13O6Amj+X3d79x///00btyYxx57jOLiYtq3b8/9z99PVIPyLpcA3337Hffcew9R0VGMHDaSQ4cOsWLFCjZv3szdd99Nbn4uxggj7yx8h94X92bRokWkpqby+uuvA3DnzXcy7a5pdB7bmRkzZpCamooQgunTp3PPPffw4fwP+ey9z4gIi6BLly48+sajbuW4+OKL+WDFBxiiDLRu1pqXX36ZqVOnMnXqVP7yl78wcuRIXvjXC2xZvwWdVcddd93FX//6V44cOcLYsWPZsWMHhQWFPPK3R/hz/5906tSJkydP8sYbb9C3b18AXn3qVX778TcaRDXgq6++4uDBgyxfvpxff/2V8OhwXn73ZX786EfmzZuHwWCga9eufPLJJ5U+V77G0165LydH1WS05xj1OkwW+GlPBp0S7TPI+1ZD20sgvLwLdl1Sr5SAJ+QWWZw+ulJCbrGVmGgd2CzoDDVM42rf3+rVqzl88DCfrP6EZlHNmHbTNNasWUNkZCTLli1j+/bt/HH6D24YeQMjB40EYPbs2cybN48OHTqwadMm5t43l3e+eAeAU6dOsW7dOvbs2cO4ceNIHZvKD9/8wKEDh0hPT+fMmTN07dqV6dOnO0Vp2KghW1K3kHU+i+uuu44ffviB6Ohonn32Wd6b9x533Fc+Y3dRURFz7pzDgi8XkJyczGN3PeZc17lzZ9auXcuJghN8//33PP7o43z1xVcVXoq0tDROnDjBzp1awtns7GwAFry6gNT0VNo0bkPm+UxO2067/f3gwYPZumkr8c3jSUpOYu3atUydOpUNGzbw1ltvsXDhQmJiYljy/RIuirmIwYMHM2rUqFJeOZ+8+wmxDWNJT09n586dpKSkONcV5BfQs29P/vOf//DcY8/x9ttv88gjjzBu3DjGjh1Ll+Ga//+M8TM4fPgw4eHhznMIJgKx95565Dzfp59hVLdmJUMnIao3DPZhhrxii2Y1ZP8JZ3dDr1sg51gVv/ayLD49Wh1TUY/dFc2NawNmqyRML3h1Ui/6xJsg9yQFDTtx4LwJfYQW+NymQUcOn8uvcp+O53j16tX8+tOvpI5IxagzUlhQyP79+7lw4QLjx48nIiKC6AbRDL9yOAB5eXn89ttv3HDDDc595RaUWDITJkxAp9PRtWtXzpw5o8m/YSvjJo5Dr9fTokULRo4cWUqW0RO0ZK8bN24kPT2dwYO1DN0mk4nOvTq7lX/Pnj0kJyfTqm0rJJKrxl/Px++/C0BOTg633nor6XvTtZ5eFaNM7dq149ChQ/ztb39jzJgxjBo1CoCO3Tpy5/Q7mTRxEteMuwZM7n8/dOhQ1vy2hiYtmjDzrzN5b+F7nDhxgkaNGhEdHc3q1atJ/T2V1V+vJsIQQU5ODvv376djx5IAt983/c4ts28BoHv37vTo0cO5LiwsjEtHXQpAnz59+P77793K0aNHD6ZMmcKECROYMGFC5Set8IjJb2/EbJW8s/4wn8y+pNQYenVda7cezQrqXF46l/MNM+hg/2rtS4dRkLrQt7L49GgBQJ+2jXh+cmv+MqQh717fVHsQIxoCoL9wnCiKndvmF3s+rm612ZBSMuf/zWHZL8v4ddOvHDhwgBkzZlT4G5vNRsOGDUlLS3P+ff3b18714eHhzs9SSnKLzO52U4rIqEjn9ldccYVzv+np6Tzx6hNV/t5ilWQXmCgwWckvtvDPf/6TESNGsHrjal7/8HWKi7XrYzAYsLm4wZmKtVa9UaNGbN++neHDhzNv3jxmzpwJwFsfv8Vts29j27ZtDBwwEIvFvTfVsGHD2LJhC1s3bmXYsGEkJiby2WefMXToUOd5/ePpf7Dsl2WkpaVx+PBhp6LxBIPR4Gxw9Hp9hXJ888033HXXXWzbto1+/fpVuJ3CDcc2w9oXy+XAsdj9Is1WyYcbjmgLz9jjS01Vd7YcbD2axeS3N/L8qr3ekNYvuKaS/mTLn2Rv/wYaJUFCxRPKdUXIKQGAri0juXFAQ3q1sDeyNu0FD7Pm006ccm4XHV4+9UJFFFtsXHnllSz5YAkFedqM/4kTJ8jIyGDw4MF8/fXXFBUVUZBXwK+rfwUgNjaW5ORkPv30U0Br4Pbs3FNu33lFZmwScgrN9LmkD8uXfY3VauXUqVP8/PPPbuUZOHAg69ev58CBAwDk5+dz5OARt9t26tSJw4cPc+LPE0hg1ddfAJrba05ODi1bat4KX37ypfM3SUlJpKWlYbPZOHbsGDu27QDg3Llz2Gw2rr/+ep588km2bduGzWbj9InTDLl0CM8++yw5OTkU5Lsv4NO6dWuyMrM4eugoye2SGTJkCC+88ALDhg0D0K7xoiWYzZpC3LdvH/n5pRuQlP4prPxqJQDp6ens2LHD7bFciYmJ4cIFLYGg45xGjBjhlDcvL3hqUPuVPzfBu1fBT0/Ce+NKKQKDXlO+Alix4xS7N/8AK+7RVmYe8Dhx2sZDmc7kjp6y4eA53vh5f8DUBTFbS8bB+spdxJz4FZr11LxMfEy9Gg6qMcXayy8ARMnNiTS6KAFTvrZdmPt0r0VmG6NGjWJj2kamXD0Fg85AXEwcH374If369WPcuHH06NGDmMYxdOjSgbg4LZnU4sWLueOOO3jyyScxm82MHDeSzt1LD9tccIlBuHzM5Wxd9ztdu3alTZs2XHLJJW7lSUxMZNGiRUyePNnZe599/2yS2ieVi3SOjIzk1f++yu033U5EVCTdevQHBNHhBu6//35uvfVWjI8bGXL5EOf+Bw8eTHJyMp27dOWijh3p0kMbSz9x4gS33Xab00p4+umnsVqtPHDHAxReKEQv9Mz52xxi42IrvB0pfVIwWTTLYujQoTz00EMMGaIde+bMmWxJ38KNl91ImC6MxMREvvzyy1K/n3TbJB6e8zBdu3alc+fOdOvWzXm9K2LSpEnMmjUL+ZLk+bef55n7niEnJwcpJXPnzqVhw4aV/l6hcXrTEprZO1VYTVruGzt3Dm/Pqz8e4KlrL+bttYdYueJjroiwjwtK6XGenM7Nqj9xOvntTQgg3HiAxTMHlhqK8gdGvaDIBj11B3lP9yJ6aYV93/k8gygoJaARHgMXNAtAuDGODJYCyD2ifRE6MJa+bJv2nXBGGs+8cybXT7++XAK5++67j3/961+k/pnKreNupU+fPgAkJyezcuVK53a7zmnm8aJFi5zLosMMbNx7HChACMETLz5JUpxrAleNH37/AZu0UWCyUGgyM2DwMLZs2VJu31r+cokQguSEaKLDDQwfMZyvN3yNzabjqf97kYtTehEVpueSSy5h3759zgRyLzzzgnYZhGDewkUcOVcASHT2eZRuCd3Ytm1bOdk+/OZDZwI5q83KnvPlLR4HL85/kUJzIQCDBg0qNeyk0+n4+yN/5++P/J1uCSVzQHFxcezcuRMpJeER4Tzz1jP0btWbgwcPcvnll9O2bVsADp45SGahNpY8ceJEZ2zB4MGDSU9Pd16jdevWVSifwj3bjmbzyfYoXjZobbrUG9ElDYVDiwBIshdRH9Q+nkZRRt7+qDMjw116vh7myfFkns4dkpK6ID5XAsc2E7X3Z3qLMKA7Bnsw2Z0XZWI8bB92tllLKU1foZQAaL17Y5QWsdc4uaTBd6y2uDx0ZSIbBaJcpLE7Zs+eTXp6Orn5uYy7aRy9e/f2WDyHReKYTDJUEcBwJLMAKQU6eyMPmheC8xQocY9yWAQLFyxk4bsLMZst9Erpy7U330qxxUaE0f2QmE1KTmQVBqRbYFFhEbdNuA2DNCCl5M033yzlSquoGzYdzuQPaxswwHkZw88Xv8bECnr2h87lk0ZHttg6A1mYdREeWQFSSj5NPU77xGgOnq2+MvBLXZBjm+G9sURbLSwO0/NrVknAYt8hVyOOLtKGpPVGTRHuXOZT8ZQScKCzXwo3wz1mQ1SJN4ubMbtwg44ic+WTyB99pFXOdPQ0y+IYoqkMITzzqNNC8LXkd0cz87HatIZfHwFzb53LiSMZzm3DDDqef+457v773Vx969UIDHRo1IE9p3LJLjTTzI0SkFJy/LyW8wRqFvT5xUdfsGTBklIprwcPHswbb7xRg72VJrpBNEt/WFrKUlDUPQOS43E4D2eLGJJ7jahw24Ht4gkz6MgRDYAsjLYiirNPEd6wkqxrwM4Tuew9c4EnJnTn6W/d13SoiOZxEbx+c2/fWwE7PwdLsVacCknT81vA8di37AV9boMtb8PkJZoiVEog8DDrHXWFBTRuBxf+LLU+3Kgnt9CMzVazXnF+sYVD5/KRUmuovYXDV9y1t/7ae6/RJLw9p3KKaBYXQZMY7YC5Rdrwi05ogSzR4QZyCsw0jQkv5b5XbLaRkaMlzIuNMJJbZKZRdBg51QxQvvbma7lj1h1u6wkogpPebRs6P7doGEn7ShrbPm0bsXjmQI6vWmRfIlny7qvk9pzBJe0T6NO2EVuPZpFxobjU7z7beowwg45xPVrw7vrDnK2GfM3iIvwzF9BQG7qVgBkDZxr3g5xfXdbba6e36ut72VBKoHoI4dZSiDDokGgeQjUhv9ji1QRaQgiaxEQ4cx8dtisYB/ENwjl7wUShqaTldgwXORr8uEgjJ7ILKbLYSk2Qn84txGaNQCBoEGEgt8hMw0gjOcp5psZsPZrl94lKbxNZwTCiK33aNiIiMRpywSwi6JG1mgmrh6IT+7ikXTybDp8nrE0R+kjYfSqXDg2tfLX9JFd2a0ZclJEWcZHVUgJ+I7ETANaGyUw5cyvXNeoJOX6WyYWQdBH1NuGG2hWk8XbeodgIA01jI5zeP8kJ0TSNLTExdELQMMpIbpFFy2tOSUyEo88fG2lEADkFpWMTSnSJrHIILCQx5UNRbpVeHq6uilMWbAwY10V/URwWR4ruIEniFDYJGw5lYnGxrHeeyOGn3RlkF5iZ2EerqtcsrpZmc9ZR7f/sPyvfzktY49qyTZav2lce37qJKiXgBcIN2mWsqSXgLSXgeGViI0unwI4ON9AktvQL0ygqDCkl2YVmLFZbuQbdOSRUaEZKWcovW6BZDJ709lwxW21k5BZRYKqngVfFeXBuPxTlaD7yeRkVbuoa7erwWPEmtZqwP/m79n/WEa/I4gn6qMbYpOBa/XoijDqenHCx870CzRJ465eDNAjXExWmPXctqlICx7ZUsm4z7P0GALllAZ99+XnIKmKlBGqF9qLpLAU01+cgi2vmuuY1aezd9KpSYANEhumJNOrJyjeRV2xx22TERRoptlg5eDbPaeU0i4ugaWwEyQnRzpKcngkH2QVmTucWcSRTCxQzWTSlUG9qMRRloz0TUvORz3OfHwlK556vicdKneUGOrYZlk7VjrHhTZ/5rUdGRpDXfCC3xmxh8YwB3DygDR/NGkizWC2gM/VoFn+cyCG/2MpfFm5i69EsmsVFVrzDY5vh/XHOr73FvtLrXVwxpc3KoS0rS1tkfvDX9xchqQQiTv5BQur7iNM7a72vKFFEg0aJJMjzNDEfc0Yfu/LLL78wduzYau33lVdeoaCgJKp2wX9frHR7W6kU2J41EI2iwig0WzmXV4ze4XYqrc4Q/nvm3MHBfXsocJk7iDDqaWIfagL45z138uXn5b0Zjhw54vSIAmfTqH22K6tz+cWc8WVltrrG6JKhVR8GDZpVuKnrHEAgBC85ObIWm9XuCmezlPNbd9TQ9XavWUpJbP8pNCw8Rp+dT8GxzfRp28hpwY7q2lTbjhLLqZOlEu+gMgXbB+rKbOsSk2BFx0ZblxKL7NhmeO+akm29rBACpAKpk/o1Mfzdg3C6ihQBxbm0PLPDPrgtYMMbEB6rlZmUEoxRJJm1RlBvjKJ5g04w+j8V7i4azatGgPZ7awWZ0arJK6+8wi233EJUlNawLHj9ZW6/984Kt79QXHVeobI0NJqwiGzyTJHEhdnnqmxWOHcAEi7ihdfe5HRuzYqmO5TAzTffXG6dq7eRhFLxCkGN0d4z1Rnh1uVwzLPy24GiAC4UmfnkcALj7NraLAV7Ino61x/IyOP5zzdgtkkijDrvK684ezGV1IWQtli7hnYu69KUX3bkYLbYMBp0XNbgCB1XToU29tq8xzaXjjNoenGpXW+0dSl9LJdtP7RczmHZkQij3SI78hVYXLySPIxkDlZCzxIoygEpnc6TFNVumj6fEpPUJuHfjz7PhKETGNJvCEuWLHGuy83NZcyYMYwdOJbH73vcGQV7xx130LdvX6697BLefPFpAD6c/yEnT55kxIgRjBgxgn/84yGKiwq57rLLeeD2B8BSxEvPPUP37t3p3r07r7zyCtkuE7iu48HPP/88r732GgDPPvIs06/V0k7/tPIbbr35JpqSxcE1y5h41RXcMPIG5s64l7z8PCjM4vqxV7L7jzQE8PniTxkzYAzDBw9n1qxZzJkzx3mM9evWMeXqKYzuO9pZ2OXBBx9k7dq1pKSk8PLLL3Nw7wFuvmocN40exuTRwzh68Kjz90KI4FMAlSY8k3XeaHhcT8Axk19BUjeANfvOMuXtTQz8z4/8sWefs6e6xDqSH/OSnEp735kLmO0Wp9t5jNo6uDnmIhzDaS5WSJfmsSyeOZB7R3Vi8cyBdC7ajrCWaahdKS5dV6SyCdnjJAIuFlnSUC0zgAMPI5mDlSB786rgqmeq3ubYZuR7YzVTUW+E6xdoL2zmQc38TezEEXtAV6dGXTh1KpcWLj8v68pZICNwzOa/8+0mdu3czbJflhFWGMaoYaOcic82b95Meno6edF5/PWmv/L5558zceJEnnrqKRo3bszvRzOZPWk8e3cN4JbZt/Dx/I/5+eefSUhIwGyx8cYbb7Dih+8oNlzgj9StvPvuQjb9th5pjKJf//606Nybbn0TKMvQoUN58cUXmTt3LrvSdmEymTCf3MHaH1YwbEAvMrOyeOq1BXy5ZCGZDaN499UFvDT/Qx69ZzZ6axFtIvLR5Z5k/stvsPTHpXRu0Znxo8fTs2dJD/H06VN8sOIDDu8/zL233svEiRN55plneOGFF1ixYgUAU2ZOYfqsvzDlpmnEREeRflar4hUXaSShQXjtlEBxHpjytPQfrkMy3ib/XMlnu7XkNpeUzQLmmllQ3qLUnMGxzfDu1ZqVZwgv1cPeejSLW9/djJRajMjdTbaB3d33tC7RPlehpTHv2LQkZ49RXweRt47GV9q04bSkobC9ZHK3T9tGJZaHqSeltE7Zhvpg9Wv1Ovfduj90vBJMO0u+12NCzxJo3Z+T180jY8BsTNe85p0bbH/fNmzexlUTrkGv19OkaRMuvfRSZ+6e/v37065dO/R6PVdfezXrfloFpnyWLl1K7969uWn0MA7u28PBfQcrPEy4PWx5y6ZtXDt6BNEGG8IYwbBRY9i6eYPb3/Tp04etW7eSm5tLWHgYPfv2JDV1K2s3bWPIgN5s2LqD9H2HGTF+GtcPv54vly7n6Nk8Lb22tGIszmb/xlUMGNyfuEZxGI3GUvUPAMZeMw6dTkf7Tu2ddQ9KYcqnZ7+ezHv1Td556d8cPbiHiEhtrDcmwlihAsgqMGlzBaZ8uHDafe/blA+Z+7XcT+cOVCslcbUoyCxT7MPmTDzolvMV30efc2Qt2MyArVwP+6c9Z5xuv4lk0y5nE5lSa+wn92tTarinfZNowuzV9N6Z1s+rQ0FCCO1dbNJVS6l86/LK382935bO89WiV8lnKeGg++y6HtOgSe1+H0T4TAkIIdoJIRYKIT5zWTZcCLFWCDFPCDHcV7IUtejBub5Tkc26e33fjhrFjpQKDsoWzRDmAg5v+5UXnn+eH3/8kc++X8/QkaMwFZWfU3D0dyJwjZ4UEB5jDzSrWB6j0UhycjKLFi0ipV8KfQb24effUjlw5Bhde/bFHBbHpSNGsnFrKst+Wca3G75j4aIPSsa3HRJUcpCydQ/KUXyBsdeP4f33XyMyIpxrxl3PprWbKtyfY5L7fL6J0+cykeccjfz+8o18qYbYplkE3qQ4D87u03zJS10TXeVlAM/tq3hdXVDJcE+pXrKjh23HEeOiEzDBuAEdVlZZtcjVlo3Ke984HAhS2jSsXB6Pgx/LbBceo0XQVqYATu+Are9C/1klyw67ROCe3QsXTmrnWhORPKEeeQ95pASEEO8IITKEEDvLLB8thNgrhDgghHiwsn1IKQ9JKctWWJFoxmcEcLw6gvsS4eFgZ78BA1i5fAVWq5WTpzNYs2YN/ftrD/PmzZs5fPgwNpuNlV+uZEj/XuReuEB0VARxcXFkns1g3S8/OPflmt8eIMyoB3tmzf4De/PlD+spsAiwFPPTym/o3d99SmnQhoReeOEF+lzSh94DezPvg2X06t4ZEZ3A0MvHsGXLFk4cPQxo5Rf37dtXqoHr17M7m37bQk52DhaLhWXLqs5tUkr+8BiOHTlG27atmDtjMteMuZJ9uypuJF31pzbx7vQrKtXoZ+QWUahzHf7RQVjlBb6rhSlfy3NvzgcExLYqWVfRUJCDcwe8J0dVHNsMi8bCj0+Uy+EPlG5Qy/SwT+UUEWXUc88VHbk7YRu25r04LCvP3+NXpITvHtAs1REPlSzf9WXJZ8dQUJsBdSODO+8huxIu54oaBHg6ELsIeB1437FACKEH3gCuQGvAtwghlqOlRnq6zO+nSyndRc6slVL+KoRoCrwETKme+IHFlVddxebfN3H98Osx6Iw899xzNGvWjD179tCvXz/mzJlD+t50+g3px7VXjUCnM9CrVy86d+5MoybNSelb8tDOnjqJ0VdeSYsWzfhx2SL+OuVaBo28iU49uzDvzaeZdtt0p4K55dZpdOneAyFOue2JDx06lKeeeoqefXsSFR1FRGQkQ0eMgrBoEhOjWbRoEVNvmUpuQS4CwfNPP6+VaxQ60BloefFg7vp/dzF51GQSExLp1qXq/Pw9evRAr9fTs2dPpk2bxp/n/2Tu0uVEGIw0axLPY/Ofr/C3eh04gq+1iXeHO6Jm/VCsTUiezi0iQwi6O4yshIu8OydQfIFSCsjVyqhMAYBmCTRv6T1ZKuPIWnBMkpYZ7ilHmR72bwfPMeiieP7WzQRrdmG64mk4kV6HwtaSNc/D0fUw+G6ILBmOkntWIMa+rM3zHfoZ4i+CuNaQc7SSndWQI2vB4jLn8/4Eu3chLA4zMMX0D6D8KIOnnUlf45ESkFKuEUIklVncHzggpTwEIIT4BBgvpXwa8MgpXkrp6PNlAeHuthFCzAZmA7Rp08aT3fqcvKPbofgCEQY9//evh7nv33eXqicwfPhw1qxZA5RkEdWZTJBwEYve/xCAP45nAzjrG/9tytX8bcrVAMjiHJ75x93M+ue/KTZcAJuNe++9l3vvvReAM7lFnMktQuDeQeOyyy7DbDY7j71vZxpElBR1GTlyJL9t/I39Wfsx6ox0bKx5Uvzy1WJtj2HRjL9hPOOmjKNFVAum3jTVWXf3iZffpF1CNEfztB6QowKX0Wjkp59KJufSz+3i/jnT0Rlak2A6yh6jgShLIQZrAVDabNfphLOWcbOEeER+gRaIFZ1QrvGVUpZE2YdFV9/mdxQLCo8p37C71JlwDv8UexjZm7nf+0rg2GatASo7CepuuOfoJx7t8mhmAbdekgTb3wGdAWvX62BVgCqBo7/Bz3Z37U3zoXNJMyMKs+DwGkgaAkfWaQXbvT006CBpKAiXQMkGTSBLs6SNWOwxCa5KIMACA8pQmzmBloDrTNlx+zK3CCHihRDzgF5CiIfsy64TQvwP+ADN0iiHlHK+lLKvlLJvYmJiLcSte3RC+/OYqnqTdpxtHNWPBfAWrzz9CtcPv54BvQaQnJxc4+LrZl0YRGv3MYYCYvKOVDqZGx1u0Hp3UG6MF6pfoLwUpnxtnqGi+YawaKzGBtjQUxiX7PH9QqfX9ufNQehN8+Gd0SVlG88fKllXyXCPJwxu10jzy2+cjM7emAUk+1fj7OaUsXisxgaQ/iUc2wTmAmg/su7kaN0fki8t+X7dfBxvqRlD+ZiEAMdnLqJSykzg9jLLPgc+95UMwUdJKmiJwIQRcO96mJ11ntlXXQsSwg3hThfBH3/8kfj42rvyPfzUw9xtups2sW2ICat+eb9SlGq4ZaVlO6siOSEaapp2p+xwTxlvn/xiC2aTJAIdB7MlyQYPo5p1Rq0Xap/DqTWLb4T9q0q+W00VTzxXUwEkNAin45kVmvdTwXnCPrqWlmJ4jUWtU1r1s3/QlVg89qplp5oOp9XuFRARp9UGSRoCu5dXuKtaE50AefZ5n9b9tRTzOj1TTtzsYZK4SvBxSHFtlMAJwLXGYSv7MoU3iGysPWiArSiXw7k6TKLiBHUNGzXmi1++wCZtdGrcCYPOZ/q9+oQ1gOLz9i+ici+bKqhVfEGp4R5Rbrgnv9jiHKiS9qhmj9DbZSquRSCi6+Tu/lVaEfLT27V5Gn0YJHSEs+trvn87g9rHI058Y/+mBWm1EW7cfL1ArQ0jhxto56u1OQEXhZfeaCStjq+ALe9Aq/61eqZqRFg0xLZk2/FaKgA/UJvhoC1AByFEshAiDJgE1KHqDTEiG2oPVlg01qimFLifMglOXCZvi8Ma1dgKqDVh0VrKENDGdcvI4apgqhXVrLMPX9UmGv2Qi8uj0JV4ulx8gzbk07hdzfftwuCL4jUF4ziOPow/ZVOv7LvO6HBFOYtni6EXGCI1T66E4GuI/YmnLqIfAxuATkKI40KIGVJKCzAHWAXsBpZKKd3XTlTUisCeVqo5FvTobcVVb1iXOCwmQ3kl69roJydEV0MJ6MEYrdUVqCltXVx+9eHQPEX73HW8VyNYB7VPgKZdtS89J2O6+QtOyPKR59WmkiGNuhjtMGbsLMnbtf1jt378gZa4rQT/eg156h00uYLl3wKeZckKYmRlzXDAPliBTzFGDJYCLZ2BS63hQKTaw04JF9XOEnCOf6P1/N0oKW/QunEUOObDu1+HrVV/YHGdHKsuaZadirMxdZP91L9Il38rwU9aKvTSRii8Rm0f2WLCNN/pukr14E8SOtbOEnDFy7lrLNaK55aClV+LO2kWk9CXi4oOHAKzxxiSSmDP+T18eeBL/siqu+i+Z598lhdeeMGr++zb7iKv7q8uSEtL49tvS4zD5cuX88wz7hP7mTBoVlZlOXi8wMyZM0lPr9z3fdrsOc4MqK78eew4n3zxjZtfVEF8BzD7r/ByZVlGP9sWsMH5Nean/CQsf/kSRj7sdJMNzNCswCOAXUiqz7Obn2XP+T2VbpNnymNv1l4kkiUIOu37mAZhDezufFo9gXx7PYEoYzSJYck80O//fCB98GOxWEhLSyM1NZWrr9YC3caNG8e4ceNIP1d+ukgisBiiMBbnUkmISa1ZsGBBjX/757ETLP3yW6bNeaB6P0zoUONjekJNK4ttPZrFI1/sJLJTyfc+ZbuCotR/JdRhq+o251S1fg9n4nrScuhAL0lUd7jeu9qetzcIOUvggvmCs5ckkVwwe6cX+v6nKxg5YgQTho/mwTtLp1E6ePAgo0ePpk+fPkwdO5VD+7VAn2nTpjF37lwGDRrE1YNT+P6brwA4e/oswy6/ipSUFLp37866dSXjm68+9SqjRkxk4MCBzoydq7/7hinXXM51I65j5vUzncsvvvhisrOzkVISHx/PV0u0/U+d8Ve+//57t+dhtVq577776N69Oz0uvYb/vv0BAIMvHkxWppa+ITU1leHDhwPw1kvPMGv6NG65+hYeuvMhHn30UZYsWUJKSgpLlixh0aJFztoDXy9fzeWD+tK7V29uveZWALYfOEH/K28gJaUnPXr0YP/+/W7lev6t93jtrbeBMnURfvqJKXMe1q7D6tUMGjSIG0bewL3T73VGLw8fPpzU1FQAPnrvI8YMGMOooaO0ugj3P+o8xpo1a8rVRXj86RdZv3mbsy7CgT0HmDRqEikpKZXKW9dKwON6AmW2+zT1WKkC7p7UNvZU4dSqrnGpHdVsP6eyvRSXEWLUK0vggf5V99bSMtKYsWoGFpsFo87AM0OfIaVJSql6Ao70Cp0adyH9ZNXjurv27OfJVxfwxYrv0CdGcz77BF8t+sq5fvbs2cybN48OHTrw8aqPefL+J7lmyTwATp06xbp16/jql83cPf1mRl//Nd98/g1XXnEZDz/2BFarlezcPE7kSwoLCujZtyePPvQ3XnvhA95++20eeeQR+g8cxIfLvycs6jRL31/KC8+/wMsvvczgwYNZv349bdu2pV27dmzbuI3xN41nw6bNvDXffe94yXtLOHLkCGlpaRiyD3M+q+oygnv27GbBVwuIiIxgy4otpKam8vrrWgD4okWLnNu9/NI8PvzsO3p1SWbzYc17Y/57n3D3jMlMmX47JkMMVquVU6ZT5Y4xtH8vXnxnGXOhpC6C2czatWsZNqAX585n8eSTT/L9999ztOgoC19byEsvvcSjj5Y08idPnuTlZ19myQ9LSG6azI1jbqRn5xJXy1OnytdFeOyh/8eb/1vAtz9oLptTZk7hltm38MDtD2AymbBarWVF1WjcvsrrVpdU1HAv336y1BqtJsB553evzU162pDbtyuJ/K65AKdyKq/hEACd7oCkXikBT0hpksLjgx9ne8Z2rmjYRVMAVVL50/PT2g3cMPZy4uPjyaaIuEYlydXy8vL47bffnDn4iyxFmEwl6aInTJig5eLv2JnMc2cB6J7SnSfueRyz1DNhwgS6du8B+bkYw8K4dNSlICV9+vRx9uZPnTzBQw/cT+a545hNZjq21/ykhw4dypo1a2jbti133HEHr775KmdOnaFRw4ZER7v3zd/w6wbum3sfBoP2aDRu1LDKq3P1mLHO+gCV0a9/L+69azZTJt9E9xFabpW+Awfxn2ee4PjZC1x3yww6dOgAbip09unRha1p2511Ebr06EL6H7+zdu1aXnvkDjZu3UF6ejpDhgyhyFKE2Wxm+JDhpfaxefNmLhlySam6CPt2bHWud96LiuoiAD379WT+y/MhB6677jpNXneERYHRixlNa8HWo1n0sX+OiTDw8k0p3KcZRlpNgGOltw/WtvJUTllLINAmYgPzyobccBBA58admXDRBHo0qvugEpvNRsOGDUlLSyMtLY1lvyzj69++dq53l4u/76C+rPn+W1q2bMm0adP48AMteavBYHD2mPR6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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for quadrature in [legendre_gauss_weights, lobatto_weights, clenshaw_curtiss_weights]:\n", " cost, wq = quadrature(n_theta, -1, 1)\n", " tq = np.flip(np.arccos(cost))\n", "\n", " out = project(tq, wq, f(tq))\n", " # print(np.abs(out - f(tq)))\n", "\n", " plt.semilogy(tq, out - f(tq), '.-', label=quadrature.__name__)\n", "\n", "plt.legend(loc='lower left')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now add interpolation into the mix to evaluate performance with interpolation taken into account. For this particular case, we will assume that the data is given to us on an equidistant grid." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.linspace(0, np.pi, n_theta)\n", "ref = f(t)\n", "plt.plot(t, ref, label=\"reference\")\n", "\n", "for quadrature in [legendre_gauss_weights, lobatto_weights, clenshaw_curtiss_weights]:\n", " cost, wq = quadrature(n_theta, -1, 1)\n", " tq = np.flip(np.arccos(cost))\n", "\n", " if quadrature == lobatto_weights or quadrature == legendre_gauss_weights:\n", " f_interp = interpolate(t, tq, ref)\n", " mmax = len(tq)\n", " else:\n", " f_interp = ref\n", " mmax = len(tq)\n", "\n", " out = project(tq, wq, f_interp, mmax=mmax)\n", "\n", " plt.plot(tq, out, '.-', label=quadrature.__name__)\n", "\n", "plt.legend(loc='lower left')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "again, let us plot the overall error, this time including the interpolation error:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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pxw9e/ZkyZIlNGzYkKZNm/Kvf/2Lm2++mZtvvpmbbrqJkSNH8tBDD7Fo0SLy8vK46667uP3220lPT+eKK65g/fr1nDp1igkTJrB+/Xq6dOnCvn37eOWVV0hOtja0ffTRR5k7dy516tTh888/Z8eOHcyZM4fvv/+eJ554gk8++YT//e9/TJ06lYiICLp168aHH34YcB4oC0ZBhTymgjVUH8dPO3C520Uutc5LUlBlYf78+Wzbto0VK1agqowePZrFixdTp04dPvnkE9asWUNBQQF9+/alX79+ANx2221MnTqVTp06sXz5cn7zm9+wYMECAPbv38/SpUvZvHkzo0ePZuzYscyePZstW7awceNGsrKy6NatG7fccotHhiZNmrB69WoOHz7MNddcw7fffktsbCzPPPMMzz//PI899thZcp8+fZrbb7+dxYsX0759e8aNO2Mf1rVrV5YsWUJERATffvstjzzyCJ988onfOEhLSyMzM5P16601to8ePQrAKy/8k/k/rqF3dCZHnXX9Pj948GB++OEHEhIS6NChA0uWLOHmm2/mp59+4rXXXuPNN9+kYcOGrFy5kry8PAYPHszFF19cxHru1VdfJS4ujo0bN7J+/XqSkpI8906ePMnAgQN58skneeCBB5g2bRp/+tOfGD16NFdccYVnmPDpp59m165dREdHe8JQFRgFZTDUEgLp6azancON05dR4HARGWHjhRv6VNoWJfPnz2f+/Pn06dMHgNzcXLZt28aJEye46qqriImJISYmhiuvvNJz/8cff+S6667z+JGXl+c5vvrqq7HZbHTr1o2srCwAFi9ezLhx47Db7bRu3ZqRI0cWkeH6668HYNmyZWzcuJHBgwcDkJ+fz6BBg3zKvXnzZjp06OD5uHTcuHG88cYbABw7dozx48ezbds2RISCgoIS46BDhw7s3LmT3/72t1x++eVcfLG1wv653XrwwN23ctOo/lw91qeBNAApKSksXryYhIQE7rzzTt544w0yMzOJi4sjNjaW+fPns3btWs9w3rFjx9i2bRudO5/ZU27p0qXce++9APTo0YNevc5shhoVFcUVV1jLpvbr149vvvnGpxy9evXixhtv5Oqrr+bqq68uMcwVwSgog8HgoV9CHO9PHsiyndkM7NCkUvfPUlUefvhhbr/99iLX//3vf/t073K5aNSoEWlpaT7v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KCjwhEW16N5UK1eu1GHDhqmq6pQpU7Rv376evZ3efvttzz5Rxc+7nNtdF6RuUs1crTm7N6mq6t13363vvfeeqqrm5eX53SMqVPa0ClTesuwHZYb4DLWDMFpzMpgkNU9i2sXTSM1KJblFMknNkyrk34IFC7juuuto2rQpAI0bN/bcy83N5ccffyyyf1Lhgqzgex+l/v37c8stt1BQUMDVV19NUpIlX1RUFFdccQVg7fFU2AvKyMjg+uuvZ//+/eTn59O+fXvAWiB28eLFJCQkcOedd/LGG2+QmZlJXFwcsbGxPsPy7bffcscddxAREXFWWPwxevTogPZ26n/eQB69704mXjmEa667AYBBgwbx5JNPkpGRwTXXXEOnTp18Plt8T6u+fft69rR68cUXi+xpBZCfn8+gQYOK+OG9pxXAddddV2TV9kD2tApU3rJghvhCGrMWn6H6SWqexOSekyusnErD5XLRqFEj0tLSPL9NmzZ57vvaR2no0KEsXryYNm3aMGHCBM/QXGRkpGdPKbvdjsPhAOC3v/0td999N+vWreP111/37Cc1dOhQlixZwpIlSxg+fDjNmjXj448/LnFbDn9ERER4tqgvvl+VP2VXnKf/9RL3PPAn9u7Lot+wUWRnZ/OrX/2KOXPmUKdOHS677DIWLFjg89nie1qlpKQU2dNKVbnooos8cbxx40befPPNMoUxkD2tApW3LBgFFeoYxVQxjGavZorG98iRI/noo4/Izs4G4MiRI557DRo0oH379nz00UeAVfGtWbOmRN93795NixYtuPXWW5k8eTKrV68u0f2xY8do06YNAO+8847nenx8PIcPH2bbtm106NCBIUOGePaE8sdFF13E66+/7lF+hWFJTExk1apVACXuBVV8Dyhv0nftpFffZP76xztp1qQJe/fuZefOnXTo0IF77rmHq666qsQ9okJhT6uyyBsoRkEZDIYqo3v37jz66KMMGzaM3r17c//99xe5//777/Pmm2/Su3dvunfvzueff16if4sWLaJ379706dOHmTNncu+995bo/vHHH+e6666jX79+nmHGQs477zzPvk4pKSlkZmYyZMgQv35NnjyZdu3aeQw+Ck2sp0yZwr333ktycjJ2u93v8yNGjGDjxo0eIwlvnnjsEa6+4Hx6jLyO889Lpnfv3syaNYsePXqQlJTE+vXrufnm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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.linspace(0, np.pi, n_theta)\n", "ref = f(t)\n", "\n", "fig, ax = plt.subplots(2, 1)\n", "\n", "for quadrature in [legendre_gauss_weights, lobatto_weights, clenshaw_curtiss_weights]:\n", " cost, wq = quadrature(n_theta, -1, 1)\n", " tq = np.flip(np.arccos(cost))\n", "\n", " if quadrature == lobatto_weights or quadrature == legendre_gauss_weights:\n", " f_interp = interpolate(t, tq, ref)\n", " mmax = len(tq)\n", " else:\n", " f_interp = ref\n", " mmax = len(tq)\n", "\n", " out = project(tq, wq, f_interp, mmax=mmax)\n", "\n", " ax[0].semilogy(tq, out - f(tq), '.-', label=quadrature.__name__)\n", " ax[1].semilogy(tq, f_interp - f(tq), '.-', label=quadrature.__name__)\n", "\n", "ax[0].set_title(\"Projection error after interpolation\")\n", "ax[1].set_title(\"Interpolation error\")\n", "# ax[0].legend(loc='lower left')\n", "# ax[1].legend(loc='lower left')\n", "plt.legend()\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we can see that the interpolation dominates when we interpolate the solution. For this reason, it is reasonable t choose Clenshaw-Curtiss quadrature in scenarios where we expect the interpolation error to dominate." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.6 64-bit", "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.12" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 2 }