diff --git a/notebooks/pdes.ipynb b/notebooks/pdes.ipynb index edb0585..bb634bc 100644 --- a/notebooks/pdes.ipynb +++ b/notebooks/pdes.ipynb @@ -28,6 +28,45 @@ "- Distributed sparse matrix-vector product" ] }, + { + "cell_type": "markdown", + "id": "a343cca6", + "metadata": {}, + "source": [ + "
with
\n", + "\n", + "$$ f(y)= \\frac{1}{2}( y^\\mathrm{T}Ay - y^\\mathrm{T} b ).$$\n", + "\n", + "Thus, the goal is to find vector $x$, the minimum of function $f(y)$. This vector is equivalent to the solution of the system of linear equations, $A x = b$. \n", + "\n", + "The conjugate gradient method is a gradient descent algorithm optimized for symmetic ($A^\\mathrm{T}=A$) positive-definite ($y^\\mathrm{T}Ay > 0$) matrices. The algorithm is applicable to our problem since the matrix $A$ is both symmetric and positive-definite.\n", "\n", - "- The [Conjugate Gradient Method](https://en.wikipedia.org/wiki/Conjugate_gradient_method) is a gradient descent algorithm optimized for symmetic ($A^\\mathrm{T}=A$) positive-definite ($y^\\mathrm{T}Ay > 0$) matrices\n", - "- It is applicable to our problem\n", - "- It is a type of Krylov subspace method\n", "\n", "### Top 10 algorithms of the 20th century\n", "\n", - "According to IEEE Computer Society\n", + "The conjugate gradient method is a type of Krylov subspace method, which is listed by the IEEE Computer Society as one of the top 10 algorithms of the past century:\n", "\n", "- Metropolis Algorithm for Monte Carlo\n", "- Simplex Method for Linear Programming\n", @@ -642,11 +2021,881 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "cb4068bb", + "cell_type": "markdown", + "id": "a9f516e6", "metadata": {}, - "outputs": [], + "source": [ + "### Convergence analysis\n", + "\n", + "For a first convergence analysis, we will use the implementation of the conjugate gradient method from the `IterativeSolvers` package." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9f8dbf39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Converged after 158 iterations." + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAHCCAIAAADjLG0/AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOydd3wU1fr/z+xuEhJSSICQhAghECCAdCkivUkzInj5Kd0IIoIiKOVemkhRRLEhiIgXpIgKSqQXQZqAgAKB0BKSEEhIISGFlM3O/P6Y7509k+zZncnWhM/7NX+cOTlz5pmZzT4753Oe53CCIBAAAACAgcbZBgAAAHBp4CcAsCUzZsyYNm2atJuQkBAdHf3NN9/Y9aQTJkyYPXu2tHvp0qXXXnvthx9+sOtJCSFLliyJjo7Oz8+394mAc4GfcEW+//57dwWsWbPG2ZY6iPz8/LVr1/7222/ONsQyGzdu/O9//yvtpqenr1+//ujRo8p7OHDgwNq1azMzM5Uf8u23327btk3aTUpKWrt27alTp5T3YJ7vvvtu48aN5et37ty5fv36oqIiW50IuCY6ZxsATBAYGNilSxe6Rvyi6dq1q1arlSqDg4MdbJizePDgwWuvvda9e/chQ4Y42xZ1+Pn59ejRo1mzZsoPWbNmzS+//PLUU0/VqlVL4SE9e/asU6dOhQxUxFtvveXu7j5mzJgy9e3bt69evbq7u7v9Tg1cAfgJV6R///79+/eXdnmeF93D7t27fXx8nGcXUE1kZOSRI0fsfZbDhw/b+xQm+eqrr5xyXuBg4CcqNwkJCceOHUtPTw8MDOzZs2f9+vXpv969ezctLa1BgwYBAQF//fXXmTNn3NzcevXqFRERITZIS0s7cOBARkZGs2bN+vfvr9EYxyFzcnLi4+Pr1KkTGhp67dq1P/74o7CwsFWrVt27d6ebSaSmph4+fDgtLc3Pz69r165Nmzal/5qZmZmUlFS3bt2goKAbN24cO3bs4cOHI0eODAoKIoTk5uaeOnUqOTk5Ly+vbt26ZX4dp6amXr58mRCSl5d3/vx5sbJ27dr16tUrKiq6cuWKn59fo0aN6NPdu3cvNTVVvHCx5vLlyyUlJe3atSsuLj5w4EB8fHy9evVeeOEF8a9FRUVHjhy5efOmIAjNmzfv0aOHTqfoXyMnJ2fv3r337t0LDQ0dMGCAr69vmQYFBQXXrl2rWbNmWFiYVFlUVHT8+PHExMT8/PyaNWtGRka2bdtWq9UaDIZ//vknJyeHEBIXF8fzvNi+TZs2Go0mOTk5IyMjIiLC19f3zJkz586d0+v1U6ZM0el0Fy5ccHd3b9GiRXkLb9y4cfTo0UePHrVs2bJHjx70s8vLy7tx40atWrXKfGwSExOzsrKaNGni7e0tfgwMBkNpaal08729vZs0aUIIuXbtWkFBQevWrenXXELIlStXTp069fDhw+Dg4D59+pR518nIyEhOThY/DNevXz969GhhYWGLFi169epl8qMFnI8AXB6DwSA+rNzcXKkyNzf3pZde4jhOepRarXbGjBkGg0Fq8+9//5sQsn79+ueff55u9vnnnwuC8NVXX9EjBj179nz06JF07Pbt2wkh06dPp1VZQki3bt2ysrJo80pKSt588036i5XjuJEjR9K9rV27lhCyePHi119/XWr2xx9/CIIwe/bsMgMXHh4eS5YskY59//33y39uJ02aJAjC9evXCSEDBgwoc8fmzZtHCNm8ebNUU79+fY1Gc+7cuXr16kkXIv5px44dZUbwmjRpcvnyZYvPZe/evZIfIoTUrFnz8OHDtWrV8vPzk9r8+eefhJCXX35Zqjlx4kT5AcPevXuLz7T8lRJCCgsLBUEQb90PP/zQt29f6U95eXmCIHAcFxYWJp0iJiaGEDJlypR33nmH/oR06dIlIyNDaia+hUyYMKHMdY0fP156Ojt27ChvT9euXcWWTz31FCGE7jM3N3fo0KFlnubixYt5npfarF69mhCybNmy6dOn0+Z169ZNvBzgasBPVALK+wm9Xt+9e3dCyLPPPrt///5r167t3r27TZs2hJD58+dLB4p+on79+k2bNt22bduFCxdWrVrl5eWl1WpXrlzp5eX1wQcfnDlzZu/evU8++SQhhP52Fv1ESEhIQEDAhg0bkpOTz549O3DgQPFLjf63Hz16NCGkQ4cOO3fuvHbt2uHDh/v06UMIGT16tNRG9BP16tWrU6fOypUr//jjj5iYmMTEREEQoqOjp0yZsmvXrtjY2MuXL69bt+6JJ54ghGzbtk08NiEhYfPmzYSQli1bHvwfcXFxgko/wXHcE088MXz48J9++unUqVMxMTGCIMTExGg0moCAgM8+++zChQvnz5+fO3euTqcLDg6mv/7Kc+3aNU9PTzc3t+XLlyckJMTGxk6aNMnf39/T09OMn9Dr9SEhIeJRV65cSU5O/vPPPz///PPJkycLglBaWnrw4EFRmlq9erV0saLvF/1E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", + "image/svg+xml": [ + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "using IterativeSolvers: cg!\n", "N = 80\n", @@ -660,30 +2909,151 @@ "visualize(u)" ] }, - { - "cell_type": "markdown", - "id": "a9f516e6", - "metadata": {}, - "source": [ - "### Convergence analysis" - ] - }, { "cell_type": "code", - "execution_count": null, - "id": "100f1b77", - "metadata": {}, - "outputs": [], - "source": [ - "#plt = plot(xlabel=\"N^2\",ylabel=\"Iterations\");" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "30c6e04e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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yF85zK4U9u8HzDAR/UN39EIDAP2iOghlMtm8efO2bdumXI+eoqhx48Zt377d1NRUjeVBC+KWg/glmfE0pyK86O2hAlP0QgMA/aM6CBcuXLh169ZZs2ZNmDDB0dGxqKjo8OHD69atmz179u+//67mEqF5cctBbEpkCmvIJE/q0ki+hznOAAFAf6kIQplMtmXLlqVLl3755ZfcFm9v7969e3t7e8+ePXvdunU2NjbqLRKaQb3lIL7rikugAACEqFyhvqioqKKiYvTo0fW2jxkzhmEYbp160CGJZezSmwr3vfKF1xS97CnxBEH067wBSEEAAEKIyjNCc3NzHo+XkpISEBBQd3tycjIhxNLSUk2lwaspl5JDmcyuVOZ+KRnnRh0dxAuwQvYBANSnIghNTU1ff/31efPmtWnTpn///tzG69evT58+3d/f38PDQ70VwothWHK5gN2VysSImV721GwfeowLloMAAHgm1YNlNmzY8Prrr7/++uu2trYODg5FRUX5+fm2trZ//fWXmuuDpsuuYn9PZTclMkY8EuFFJ4UJbLEcBABAY1QHobu7+507d3799dcLFy6UlJR4eXmFhIRMnz7d2tpazfVBo5TLQdwsZse50fsH8DphOQgAgCZ75oR6MzOzefPmzZs3T53VwAuptxzEGy60EJdAAQBeENpn6R7lchACmkz1opPCBPZYDgIA4GU9CcJDhw59+eWX8+fPf/vtt/v16/fw4UOVT7hz5466aoOnSBTkcBazM4WJLWDfdKN3hPKwHAQAwKt7EoSWlpYBAQF2dnaEkA4dOpSXl6vh5T/99NPTp08rFIrAwMCNGzcaGeHURoW6y0FM8aT39qfRCBsAoLmoXo9QbYqLi21sbFiWnTFjRpcuXd577z2Vu+nneoT5NWRvGrMjmalRkLc8qGletKuZuk8BsZoawKvAO0gnqB5csWvXroYL8xYUFGzevLl5X57r1iaXyyUSia2tbfMeXEcpWHI6lw0/o/COll0qYP/TnZcYxl8azFN/CgIA6APVQfjxxx+npaXV25ienv7OO+80ewVz58719PTMy8t74403mv3guuV+GbvwmsLpd9nCa4oBbancieiFBgDQ4l5guH1FRUVLrMH0888/Z2ZmduvWbcWKFc1+cJ1QJiWbE5neR+SDTygIIZdG8q+P5s/2obEoEgCAGjw16OLu3bux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", + "image/svg+xml": [ + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Ns = [20,40,80,160]\n", "reltol = 1.0e-5\n", @@ -700,6 +3070,14 @@ "plt" ] }, + { + "cell_type": "markdown", + "id": "5396554c", + "metadata": {}, + "source": [ + "The number of iterations needed to converge is much lower with the conjugate gradient method than with the Jacobi method. However, the number of iterations still increase with the problem size, so there is still room for improvement. " + ] + }, { "cell_type": "markdown", "id": "92bfd7d7", @@ -707,11 +3085,10 @@ "source": [ "### Number of iterations\n", "\n", + "We can prove that the number of iterations to achieve a relative error of $10^{-s}$ increases as $O(s \\sqrt{\\kappa(A)})$. As a reminder, the condition number of A $\\kappa(A)$ is ratio between the largest and smallest eigenvalues of A: \n", + "$$\\kappa(A)=\\dfrac{\\lambda_{max}(A)}{\\lambda_{min}(A)}$$\n", "\n", - "- The number of iterations to achieve a relative error of $10^{-s}$ increases as $O(s \\sqrt{\\kappa(A)})$\n", - "- $\\kappa(A)=\\dfrac{\\lambda_{max}(A)}{\\lambda_{min}(A)}$ is the condition number of A (ratio between the largest and smallest eigenvalues)\n", - "- In our example, $\\kappa(A) = O(N^2)$\n", - "- Thus, the iterations number scales as $O(s N)$\n" + "In our example, it can be shown that $\\kappa(A) = O(N^2)$. Thus, the number of iterations scales as $O(s N)$ for the conjugate gradient method. Remember that the number of iterations scales as $O(sN^2)$ for the Jacobi method.\n" ] }, { @@ -721,7 +3098,7 @@ "source": [ "### Goal\n", "\n", - "- Find an iterative method whose number of iterations is independent of problem size" + "The conjugate gradient method provides some improvement to the Jacobi method, since the number of iterations increases more slowly with the problem size. However, the ultimate goal is to find an iterative method whose number of iterations is independent of problem size." ] }, { @@ -731,31 +3108,26 @@ "source": [ "### Preconditioner\n", "\n", - "A linear function $M$ such that\n", + "To achieve this goal, we will apply a [preconditioner](https://en.wikipedia.org/wiki/Preconditioner) to transform the original problem into a format that is easier to solve. \n", "\n", - "$M(b) \\approx x$ with $Ax=b$ for any $b$\n", + "A preconditioner is simply a linear function $M$ such that \n", + "$$M(b) \\approx x, \\text{ with } Ax=b \\text{ for any } b.$$ \n", "\n", - "$\\downarrow$\n", + "When we have found such a function $M(b)$, we can solve the _preconditioned problem_ $(MA)x = Mb$, which is equivalent to $Ax=b$.\n", "\n", - "$ M(b) \\approx A^{-1}b $\n", + "The way that this preconditioning affects the number of iterations is that it reduces the condition number of $A$: \n", "\n", - "$\\downarrow$\n", + "$$ \\begin{align}\n", + "&M(b) \\approx x, \\text{ with } Ax=b \\text{ for any } b \\\\\n", + "&\\rightarrow M(b) \\approx A^{-1}b \\\\\n", + "&\\rightarrow M \\approx A^{-1} \\\\\n", + "&\\rightarrow M A \\approx I \\text{ (Identity matrix)} \\\\\n", + "&\\rightarrow \\kappa (MA) \\approx 1 \\\\\n", + "&\\rightarrow \\text{ Conjugate gradients will be fast when solving } (MA)x = Mb \\Longleftrightarrow Ax=b.\n", + "\\end{align}$$\n", "\n", - "$ M \\approx A^{-1}$\n", "\n", - "$\\downarrow$\n", "\n", - "$ M A \\approx I$ (Identity matrix)\n", - "\n", - "$\\downarrow$\n", - "\n", - "$\\kappa (MA) \\approx 1$\n", - "\n", - "$\\downarrow$\n", - "\n", - "Conjugate gradients will be fast when solving\n", - "\n", - "$(MA)x = Mb \\Longleftrightarrow Ax=b$\n", "\n" ] }, @@ -781,7 +3153,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "cd608f2f", "metadata": {}, "outputs": [], @@ -807,10 +3179,591 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "858ac6ba", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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ceOGg4PD8uXLa70eNyws7MCBAwKBYM6cOQMGDGASi4uLt2zZEhsb6+bm9tlnnxkZGam34A0UExPz/fffFxUVjRkzZtKkSTLP5uXlnThx4tatW1Kp1MvLa9asWcyFZxEREefPn2ezrVixollcI5SXl7d58+aEhAQPD48lS5bo6+vLZNi9e3dCQgKzbGVlxVx9RwhJSkrasmVLVlbW4MGD58yZU8/IKa1x/vz5w4cPC4XCuXPn9uvXT+bZc+fOXblyhZsSHBzM5/MPHDgQGxvLpJiYmHzxxRdqKm4jZGZmXrt27dGjR46Oju+//36teV6+fLl169acnBw/P7/Zs2ez01ocPHjw7NmzpqamS5YseXuu/lJc8/isq9mXX355+PDhqVOnlpaWDh48uObozatXr06cONHPz69fv37+/v7srFtTp06NioqaMWPGgwcP3nvvPbUXvCEyMzO9vb0dHR3Hjx//6aefHjp0SCbDuXPnLl265OXl5e/v//3333/88cdMemRkZHh4uNn/NJffzcDAwMTExOnTp1++fHnevHk1Mxw9ejQ1NZV5UaampkyiRCLx9vbW1dV97733fvjhh02bNqm31A0UHh4+efLkYcOG9enT55133nn8+LFMBpFIxJ7BqKiosLAw5jyGhIQkJCTIvAla7uDBgz///HNERMSJEydqzVBSUuLl5WVoaDh58uStW7du27aNSd+1a9dXX301YcIEW1tbLy+v3NxcNZa6maDhTUVFRSYmJg8ePKBpmqIoJyen0NBQmTxjx45dt24ds7x48eLZs2fTNB0fH6+vr19QUEDTdGFhoUgkevLkiXrL3hAbNmwICAhglg8dOtS9e3eZDBRFsctXrlwxMjJiUjZu3Dh37ly1lbNJ3L59u1WrVuXl5TRNp6Wl6enppaWlyeTx9fU9efKkTOKBAwc8PDyY5StXrtjY2FRUVKihwI0UEBAQHBzMLC9YsGDevHlyMvfs2fOHH35glgMDA/fu3avy8qnA9u3bhw8fXutTe/bs6du3L7McFhbm4OBQVVVF07Srqyt7xocNG7Zt2zb1FLUZaR7/AdXpyZMnPB6vW7duhBAejzdw4MA7d+7I5Llz5w57nwwvLy8mw927d7t06WJiYkIIMTY27t69+927d9Vb9oa4c+eOt7c3s+zt7f3w4cPy8jdmM+ROOZmammptbc2mREVF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", + "image/svg+xml": [ + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "N = 80\n", "u = zeros(N,N)\n", @@ -825,10 +3778,189 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "1750ecb1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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VDAGZgkL5t5jt27dTp48+fbbbxNCTp061b17d0JIcHAws7i8bhwSQnTXTdR1586dsrUZTZo0USqVmZmZTC1ERETE6tWrp0yZwi7E8eDBg6CgoPHjx69atSo6OppZjLes+Ph4rKYEdUq+mtz+N/yYxp7MGu56jT2VJaYbIlRarQShQqG4cuXKrVu3BALBe++9x24vKSn59ddfb9682bRp0/fff5/L5drZ2X377bfJycmxsbEHDhyYMeN1rrRqFpfLXbN2/bixY+z5vMFNxez2aynZ75569PniLyQSSfXPsnLlyvHjxz979qxx48bPnz/Pzs5esWIF+y6Hw2nXrt0777zTpk2bcePGffTRR2FhYUKh0NPT85tvvvnqq6/0jsbecTVo//79x48fv3z5so2NTXZ29qhRo8LDw+/evcs23WZO9PHHHzs7O69cuZK5HdqrV6/Q0NC+ffu+/fbbNE1funRp2rRpnTt31j3yvHnzKIry9vaOiYnZtm1b2eeUAoGga9euFy9eHDp0KCFkzpw50dHRrVu3fuutt0Qi0e3bt0+dOpWcnBwcHPzjjz/26dNnwoQJQUFBRUVFe/bsadasGXOQR48eWVtbIwjB5JjGnmW7Wu8L5zjwTT04qIZa6TW6fv3633//3drauqCgQHdZgOnTp8fExMyZM2fHjh0KheL06dPM9pMnT27cuJFZpdYg4/ca3bt374ypU11tuO1EAisOdT+r6JE8e8mXX3308cevd0CpVHrp0qWRI0eyW168eLFv3z6pVOrt7T1w4MDGjRsnJCTcunVr2LBhhJDc3Nxjx44pFIrBgwdLJJLExMSdO3cqlcq+fft27dqVEJKfn799+3bdmZbluXbtmm6/sdDQ0JYtW2ZkZOzevXvmzJnMqrnPnz//448/iouLx44dy87qpGn6yJEj0dHRPB6vdevWAwcO1Ls6vH379vHjxzMyMsRi8fDhwxs1akTK2Lt3786dO3WfHZ45c+bcuXNFRUXNmjUbNWoUe+MoLi7uwIEDMplMLBZ37NixW7duzPZPPvlEIBB88sknlfpB1y/oNWpyShW5+m9X6wfZdJBT1Rp71kavUahxtdh0e9u2batWrWKDMC0tzcfHJy4uztvbu7i4WCQSnT59um3btoSQzMzMlJSUVq1alXeoxo0bz5w508fHh/nS09OzvHtorIyMjBYtWlRn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", + "image/svg+xml": [ + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Ns = [20,40,80,160]\n", "reltol = 1.0e-5\n", @@ -856,10 +3988,551 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "db9397dd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "image/svg+xml": [ + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "N = 10\n", "u = zeros(N,N)\n", @@ -882,10 +4555,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "ee7679f4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "prolongate! (generic function with 1 method)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "function prolongate!(u_fine,u_coarse)\n", " ni_coarse, nj_coarse = size(u_coarse)\n", @@ -909,10 +4593,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "260bbcb0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mSaved animation to C:\\Users\\gelie\\Home\\TeachingInnovationProject\\XM_40017\\notebooks\\a2.gif\n" + ] + }, + { + "data": { + "text/html": [ + "