diff --git a/solutions/week05/Linear systems - Poisson equation.ipynb b/solutions/week05/Linear systems - Poisson equation.ipynb
index 4f1c806c58aec6b8aa8a07d913cedcd9240be845..570dd9a498b91c73fca6a7bea82b8d12ce260265 100644
--- a/solutions/week05/Linear systems - Poisson equation.ipynb	
+++ b/solutions/week05/Linear systems - Poisson equation.ipynb	
@@ -2,8 +2,8 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 1,
-   "id": "044b8034",
+   "execution_count": null,
+   "id": "5410f063",
    "metadata": {
     "deletable": false,
     "editable": false
@@ -86,7 +86,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "d1f8bd46",
+   "id": "ca746265",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -180,28 +180,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
-   "id": "756d9370",
+   "execution_count": null,
+   "id": "1abc2b2c",
    "metadata": {
     "deletable": false,
     "editable": false
    },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<p><strong><pre style='display: inline;'>q2</pre></strong> passed! 🚀</p><p><strong><pre style='display: inline;'>q2 - 1</pre> message:</strong> Good, results seem correct</p>"
-      ],
-      "text/plain": [
-       "q2 results: All test cases passed!\n",
-       "q2 - 1 message: Good, results seem correct"
-      ]
-     },
-     "execution_count": 4,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "grader.check(\"q2\")"
    ]
@@ -221,7 +206,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "fc67bfcb",
+   "id": "63a9357b",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -291,28 +276,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
-   "id": "d592616d",
+   "execution_count": null,
+   "id": "58dbd947",
    "metadata": {
     "deletable": false,
     "editable": false
    },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<p><strong><pre style='display: inline;'>q4</pre></strong> passed! 🍀</p><p><strong><pre style='display: inline;'>q4 - 1</pre> message:</strong> Good, results seem correct</p>"
-      ],
-      "text/plain": [
-       "q4 results: All test cases passed!\n",
-       "q4 - 1 message: Good, results seem correct"
-      ]
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "grader.check(\"q4\")"
    ]
@@ -332,7 +302,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "70f5637a",
+   "id": "19ecce3a",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -388,28 +358,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
-   "id": "d77116d4",
+   "execution_count": null,
+   "id": "c0c17d8b",
    "metadata": {
     "deletable": false,
     "editable": false
    },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<p><strong><pre style='display: inline;'>q4</pre></strong> passed! 🙌</p><p><strong><pre style='display: inline;'>q4 - 1</pre> message:</strong> Good, results seem correct</p>"
-      ],
-      "text/plain": [
-       "q4 results: All test cases passed!\n",
-       "q4 - 1 message: Good, results seem correct"
-      ]
-     },
-     "execution_count": 8,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "grader.check(\"q4\")"
    ]
@@ -431,7 +386,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "ce8aa19a",
+   "id": "fd6f7561",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -472,7 +427,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 8,
    "id": "79f8c6d1-7b92-48b6-bb90-e888aaa41243",
    "metadata": {
     "tags": [
@@ -516,7 +471,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "53e63141",
+   "id": "d47ff697",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -555,7 +510,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 9,
    "id": "96381701-e737-41c1-8642-fa1a5c13924c",
    "metadata": {
     "tags": [
@@ -566,10 +521,10 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16d950b10>]"
+       "[<matplotlib.lines.Line2D at 0x10af67a10>]"
       ]
      },
-     "execution_count": 19,
+     "execution_count": 9,
      "metadata": {},
      "output_type": "execute_result"
     },
@@ -610,7 +565,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "e1c9c95f",
+   "id": "41b1af96",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -649,7 +604,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 10,
    "id": "d81b4501-b2a5-4412-a266-d04ffa8dd2c7",
    "metadata": {
     "deletable": false,
@@ -659,10 +614,10 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16d5b4150>]"
+       "[<matplotlib.lines.Line2D at 0x10fe128d0>]"
       ]
      },
-     "execution_count": 11,
+     "execution_count": 10,
      "metadata": {},
      "output_type": "execute_result"
     },
@@ -698,7 +653,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "1482c041",
+   "id": "e0d2ec3d",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -717,7 +672,50 @@
     ]
    },
    "source": [
-    "If we deliberately choose $f$ to be outside of the solution space, we obtain a poor approximation and our constraints are not met (which is expected)."
+    "If we deliberately choose $f$ to be outside of the solution space, we obtain a poor approximation and our constraints are not met (which is expected). \n",
+    "We can check that the Laplacian of computed solution and the Laplacian of the step function (from which the constraints are sampled) do not match"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "id": "21d1f686-af17-4660-a29e-656e6eee670b",
+   "metadata": {
+    "tags": [
+     "otter_assign_solution_cell"
+    ]
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<matplotlib.legend.Legend at 0x1187e2610>"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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ne1XOPjWt76lU6dO6V//+pd33SWXXOK3X3p6uqqrg1sJDWrlxTAMzZs3Txs2bFBxcbGysrI63Sc7O1tvvvmm37rNmzdr3Lhxio2NDVZTAZiRs775MeElpBJirfrkketDduyecOTIEU2dOlVz5szRo48+qv79++u9997TrFmzWvW5bOtKQHdvj5CUlKQ9e/aouLhYmzdv1sMPP6yCggLt2rWr3SsPhmG0e7yYmJhWl9La6jPambaO0VZ7Wv5vtlgscrlcXT5eVwS18nLvvffqpZde0h//+EclJSWpqqpKVVVVOnPmjHeb/Px83Xnnnd7nc+bM0ZEjR5SXl6cDBw7ohRde0OrVq7VgwYJgNhWAGflVXuisH0oWi0WJcbaQLD11T6WSkhI5nU4988wzmjBhgoYOHapjx4612s7pdKqkpMT7vKysTCdOnNDw4cO7fWybzabrrrtOTz31lD766CMdPnxYW7Zs0de+9jXFxcX5dbloaGhQSUmJRowY0eZ7nXfeeaqqqvILMC3nbomLi+v0TuBf//rXtX37dr/32b59u5KSknT++ed347vsOUENLytWrFBNTY1ycnKUnp7uXV57rXlkQGVlpcrLy73Ps7KytHHjRhUXF+uyyy7To48+qqVLlzJMGkBrVF7QDTU1NSotLfVbysvLdfHFF8vpdOq5557TZ599pj/84Q9tTpIaGxurefPm6YMPPtCePXv0wx/+UBMmTGi3v8uGDRs6DDZ/+ctftHTpUpWWlurIkSNat26dXC6Xhg0bpj59+ujuu+/Wz372M23atEmffPKJZs+erbq6Os2aNavN98vJydHnn3+up556Sp9++qmef/55vf32237bDB48WB999JHKysp0/PjxNisz99xzjyoqKjRv3jz9/e9/15/+9CctWrRIeXl5Ib8tRNAvG3VmzZo1rdZNmjRJe/bsCUKLAESURsILuq64uNjbIdbjrrvu0po1a7R48WI9+eSTys/P11VXXaXCwkK/qwOSlJiYqAceeEB33HGH/vWvf+mKK67QCy+80O7xampqOpxdPiUlRa+//roKCgp09uxZDRkyRK+88opGjhwpSXriiSfkcrk0Y8YMnTx5UuPGjdM777yjc845p833GzFihJYvX67HH39cjz76qG677TYtWLBAq1at8m4ze/ZsFRcXa9y4cTp16pS2bt3qHUrtcf75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dgAIOxbDMIzeOtivf/1rrVixQp999lmbrxuGoYyMDM2fP18PPPCAJKm+vl6pqal68skn9V//9V+dHqO2tlbJycmqqalRv379Ot0eQJg6+P+kl29zV13+T3WoWwMgyLry/7tX+7zU1NSof//+7b5+6NAhVVVVKTc317vObrdr0qRJ2r59e5v71NfXq7a21m8BEAE8lRdGGgFoodfCy6effqrnnntOc+bMaXebqqoqSVJqaqrf+tTUVO9rLRUWFio5Odm7ZGZm9lyjAYROUtPfgcT2P/AAiE5dDi8FBQWyWCwdLiUlJX77HDt2TDfccIO++93v6sc//nGnx7BYLH7PDcNotc4jPz9fNTU13qWioqKr3xKAcHTOYOm21dKtvw91SwCEGVtXd5g7d66mT5/e4TaDBw/2Pj527JiuvvpqZWdna9WqVR3ul5aWJsldgUlPT/eur66ublWN8bDb7bLbKSsDEWn0d0LdAgBhqMvhZcCAARowYEBA2x49elRXX321xo4dqxdffFExMR0XerKyspSWlqaioiKNGTNGkuRwOLRt2zY9+eSTXW0qAACIQEHr83Ls2DHl5OQoMzNTTz/9tD7//HNVVVW16rsyfPhwbdiwQZL7ctH8+fP1+OOPa8OGDfr44481c+ZMJSYm6o477ghWUwEAgIl0ufISqM2bN+uf//yn/vnPf+qCCy7we813dHZZWZlqamq8zxcuXKgzZ87onnvu0ZdffqnLL79cmzdvVlJSkgAAAHp1npfewDwvAACYT9jO8wIAAPBVEV4AAICpEF4AAICpEF4AAICpEF4AAICpEF4AAICpEF4AAICpEF4AAICpEF4AAICpBO32AKHimTC4trY2xC0BAACB8vzfDmTi/4gLLydPnpQkZWZmhrglAACgq06ePKnk5OQOt4m4exu5XC4dO3ZMSUlJslgsPfretbW1yszMVEVFBfdN6gWc797F+e5dnO/exfnuXd0534Zh6OTJk8rIyFBMTMe9WiKu8hITE9PqLtY9rV+/fvzw9yLOd+/ifPcuznfv4nz3rq6e784qLh502AUAAKZCeAEAAKZCeOkCu92uRYsWyW63h7opUYHz3bs4372L8927ON+9K9jnO+I67AIAgMhG5QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4SVAy5cvV1ZWluLj4zV27Fj99a9/DXWTIsa7776radOmKSMjQxaLRW+88Ybf64ZhqKCgQBkZGUpISFBOTo72798fmsaaXGFhob75zW8qKSlJAwcO1C233KKysjK/bTjfPWfFihW65JJLvBN1ZWdn6+233/a+zrkOrsLCQlksFs2fP9+7jnPecwoKCmSxWPyWtLQ07+vBPNeElwC89tprmj9/vn7+859r7969uvLKKzVlyhSVl5eHumkR4fTp07r00ku1bNmyNl9/6qmntHjxYi1btky7du1SWlqaJk+e7L2PFQK3bds23Xvvvdq5c6eKiorkdDqVm5ur06dPe7fhfPecCy64QE888YRKSkpUUlKia665RjfffLP3DzjnOnh27dqlVatW6ZJLLvFbzznvWSNHjlRlZaV32bdvn/e1oJ5rA50aP368MWfOHL91w4cPNx588MEQtShySTI2bNjgfe5yuYy0tDTjiSee8K47e/askZycbKxcuTIELYws1dXVhiRj27ZthmFwvnvDOeecY/z+97/nXAfRyZMnjSFDhhhFRUXGpEmTjPvvv98wDH6+e9qiRYuMSy+9tM3Xgn2uqbx0wuFwaPfu3crNzfVbn5ubq+3bt4eoVdHj0KFDqqqq8jv/drtdkyZN4vz3gJqaGklS//79JXG+g6mxsVGvvvqqTp8+rezsbM51EN1777268cYbdd111/mt55z3vIMHDyojI0NZWVmaPn26PvvsM0nBP9cRd2PGnnb8+HE1NjYqNTXVb31qaqqqqqpC1Kro4TnHbZ3/I0eOhKJJEcMwDOXl5emKK67QqFGjJHG+g2Hfvn3Kzs7W2bNn1bdvX23YsEFf//rXvX/AOdc969VXX9WePXu0a9euVq/x892zLr/8cq1bt05Dhw7Vv//9b/3qV7/SxIkTtX///qCfa8JLgCwWi99zwzBarUPwcP573ty5c/XRRx/pvffea/Ua57vnDBs2TKWlpTpx4oTWr1+vu+66S9u2bfO+zrnuORUVFbr//vu1efNmxcfHt7sd57xnTJkyxft49OjRys7O1sUXX6y1a9dqwoQJkoJ3rrls1IkBAwbIarW2qrJUV1e3SpToeZ6e65z/njVv3jz9+c9/1tatW3XBBRd413O+e15cXJy+9rWvady4cSosLNSll16q3/zmN5zrINi9e7eqq6s1duxY2Ww22Ww2bdu2TUuXLpXNZvOeV855cPTp00ejR4/WwYMHg/7zTXjpRFxcnMaOHauioiK/9UVFRZo4cWKIWhU9srKylJaW5nf+HQ6Htm3bxvnvBsMwNHfuXL3++uvasmWLsrKy/F7nfAefYRiqr6/nXAfBtddeq3379qm0tNS7jBs3Tj/4wQ9UWlqqiy66iHMeRPX19Tpw4IDS09OD//P9lbv8RoFXX33ViI2NNVavXm188sknxvz5840+ffoYhw8fDnXTIsLJkyeNvXv3Gnv37jUkGYsXLzb27t1rHDlyxDAMw3jiiSeM5ORk4/XXXzf27dtnfP/73zfS09ON2traELfcfO6++24jOTnZKC4uNiorK71LXV2ddxvOd8/Jz8833n33XePQoUPGRx99ZDz00ENGTEyMsXnzZsMwONe9wXe0kWFwznvSf//3fxvFxcXGZ599ZuzcudO46aabjKSkJO//xmCea8JLgJ5//nlj0KBBRlxcnPGNb3zDO7QUX93WrVsNSa2Wu+66yzAM95C7RYsWGWlpaYbdbjeuuuoqY9++faFttEm1dZ4lGS+++KJ3G853z/nRj37k/btx3nnnGddee603uBgG57o3tAwvnPOec/vttxvp6elGbGyskZGRYdx6663G/v37va8H81xbDMMwvnr9BgAAoHfQ5wUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJgK4QUAAJjK/wfptZDbOvulKAAAAABJRU5ErkJggg==",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "D = lapl_matrix(N)\n",
+    "z = D@sol2 # Laplacian of the computed solution\n",
+    "step=np.zeros(50)\n",
+    "step[:25]=1\n",
+    "step[25:]=-1\n",
+    "plt.plot(z)\n",
+    "plt.plot(D@step) # plot the Laplacian of the step\n",
+    "plt.legend(['Lapl. solution', 'Lapl. step'])"
    ]
   },
   {
@@ -747,7 +745,7 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16c85e810>]"
+       "[<matplotlib.lines.Line2D at 0x10feeef50>]"
       ]
      },
      "execution_count": 12,
@@ -789,7 +787,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "1b19e6d2",
+   "id": "ddc8c11f",
    "metadata": {
     "tags": [
      "otter_answer_cell"
@@ -826,7 +824,7 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16d7154d0>]"
+       "[<matplotlib.lines.Line2D at 0x10ff78890>]"
       ]
      },
      "execution_count": 13,
@@ -881,7 +879,7 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16cf93250>]"
+       "[<matplotlib.lines.Line2D at 0x10fff5990>]"
       ]
      },
      "execution_count": 14,
@@ -924,7 +922,7 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16d7c05d0>]"
+       "[<matplotlib.lines.Line2D at 0x10ff7ad90>]"
       ]
      },
      "execution_count": 15,
@@ -963,7 +961,7 @@
     {
      "data": {
       "text/plain": [
-       "[<matplotlib.lines.Line2D at 0x16d85a910>]"
+       "[<matplotlib.lines.Line2D at 0x1180751d0>]"
       ]
      },
      "execution_count": 16,
@@ -1000,7 +998,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "c0f0755f",
+   "id": "daf06368",
    "metadata": {
     "deletable": false,
     "editable": false