{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "interactive-link",
   "metadata": {},
   "source": [
    "> **This is a saved, working copy.** Every cell below runs exactly as\n",
    "> shown, just like it did in the browser.\n",
    "> For the live browser version of this practice (handy if you want to\n",
    "> tinker), see [Python Basics practice — interactive](https://math4120.pages.dev/wasm/python_basics_practice.html).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ipython-import",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:23.287386Z",
     "iopub.status.busy": "2026-11-13T23:25:23.287190Z",
     "iopub.status.idle": "2026-11-13T23:25:23.291315Z",
     "shell.execute_reply": "2026-11-13T23:25:23.290532Z"
    }
   },
   "outputs": [],
   "source": [
    "from IPython.display import Markdown, HTML\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "Hbol",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "# Python basics: practice\n",
    "## Reading the lecture code, one piece at a time\n",
    "\n",
    "**MATH4120 — Mathematical Modelling and Programming** Lancaster University, 2026–27\n",
    "\n",
    "---\n",
    "\n",
    "If the code in the computing lectures looks like a wall of text, start here. You are not expected to write lecture-style code from scratch. The aim is that you can look at any cell from a lecture and say what it does, which lines matter, and which lines you can skim past.\n",
    "\n",
    "Every exercise below uses code taken from the Week 1–3 lectures, or something very close to it. Allow about an hour. You need no previous programming at all.\n",
    "\n",
    "**How the exercises work.** Some ask you to *predict* what a piece of code does before you run it: write your guess down first, then type the code into the empty cell underneath and run it. Others ask you to *write or fix* a line yourself, and a check cell underneath tells you whether you've got it. Answers are hidden under **Show answer**: open one only after you've committed to a guess.\n",
    "\n",
    "Press **Ctrl+Enter** (or **Shift+Enter**) to run a cell after changing it. For explanations of anything you meet here, and much more, see the [Python Basics reference guide](https://math4120.pages.dev/static/python_basics_guide.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "MJUe",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:23.293007Z",
     "iopub.status.busy": "2026-11-13T23:25:23.292761Z",
     "iopub.status.idle": "2026-11-13T23:25:23.840245Z",
     "shell.execute_reply": "2026-11-13T23:25:23.839317Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.integrate import solve_ivp"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "vblA",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 0. Most of a lecture cell is presentation\n",
    "\n",
    "Here is the first plot from the Week 1 lecture (geometric growth, $N_n = R^n N_0$), with comments added. In the lecture the three inputs come from sliders; here they are plain numbers.\n",
    "\n",
    "Look at how the cell splits up. The mathematical model is **two lines**. Everything after that is about making the picture look right: size, colours, labels, font sizes, a grid. Those lines are worth recognising, but you can skim them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bkHC",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:23.843105Z",
     "iopub.status.busy": "2026-11-13T23:25:23.842821Z",
     "iopub.status.idle": "2026-11-13T23:25:24.061236Z",
     "shell.execute_reply": "2026-11-13T23:25:24.060110Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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PMwqkLfbmBkicJCHRt1qVtuotI+FkZERunXrhm7dusnbCgoKcO3aNVy6dAlVXBdORERERFRnAjxt4d2yCdynrAB09PHH/LHwdbPhSIWKVN4g73kGBgbo1KkTOnXqJPapiYiIiIhEoSOVQMjLBAB0cWzMokIEvE8ZERERERGpjIUFERERERGpjIUFERERERGpjIUFERERERGpjIUFERERERGpjIUFERERERGpTKXbzSYmJmL//v2Ij49Hfn6+0nF3d3dMnTpVlZcgIiIiIiItUOPC4vfff8fUqVNRUFBQYR9/f38WFkREREREL4EaFRZPnjzB9OnTUVBQgI8++ghTp05FkyZNlE+uK/r+e0REREREpIFqdOUfGRmJvLw8uLq6YunSpWLHREREREREWqZGi7dNTEwAABYWFqIGQ0RERERE2qlGhYWXlxc8PDwQFRWF7OxssWMiIiIiIiItU6PCQiqVYteuXbC2tsb48eORkJAgdlxERERERKRFalRYHDt2DB06dMC9e/ewZ88eNGvWDMbGxmjYsKHC1+uvvy52vEREREREpIFqtHjbwsICAQEBlfZr3759TU5PRERERERapkaFhZeXF7Zv3y52LEREREREpKVqNBWKiIiIiIjoWSrtYCcIAg4fPowTJ04gJSUFxsbGaNOmDUaNGsVb0RIRERERvURqXFikp6djyJAhCA0NVTq2YMEC/P777xg2bJhKwRERERERkXao8VSot956C6GhoXBzc8OePXuQkJCAK1euYPr06Xj69Cn+85//ICYmRsxYiYiIiIhIQ9WosEhOTsbu3bthaGiIQ4cOYfDgwbC3t0e7du3w008/4T//+Q8KCwvx66+/ih0vERERERFpoBoVFrdu3QIAtGvXDs2bN1c6PmjQIADAzZs3VQiNiIiIiIi0RY0KC319fQBATk5OucefPn2q0I+IiIiIiOq3GhUWbdu2haGhIaKionDmzBmFY8XFxVi7di0AoGvXrqpHSEREREREGq9GhUXDhg3x/vvvQxAEBAQEYPbs2fj999/x7bffomPHjrh48SLs7e3x1ltviR0vERERERFpoBrfbjYoKAhSqRTLly/Hd999p3CsZ8+e+O2332BmZqZqfEREREREpAVqXFhIpVIEBQXh/fffR1hYGFJSUmBkZIS2bdvC2dlZzBiJiIiIiEjDqbTzNgCYmJjA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gzwQ4GmrxuioLtSosOjZsydu3rxZ7rGjR49i2LBhGDBgAFasWKFScERERESkPQI8beHdsgncp6wAdPQRsmAcfFytOVLxkhD9Rrj9+vXDrFmz8M0332Dbtm1in56IiIiINJiOVAIhLxPC0zR0adGERcVLpFZ22Gjfvj0AYNeuXbVxeiIiIiIi0jC1Uljcv38fAFBYWFhJTyIiIiIiqg9qtMYiNzcXDx48UGovLCxEeHg4li5dCgDw8/NTLToiIiIiItIKNSoszpw5g1dffbXC41KpFBMnTsTkyZNrHBgREREREWmPGhUWrq6uWLZsmVK7np4emjZtis6dO8PJyUnl4IiIiIiISDvUqLBo0aIFFixYIHYsRERERESkpWpl8TYREREREb1cVCosYmJiMHXqVLRq1QqmpqawtrZG3759sWHDBrHiIyIiIiIiLVCjqVBA6Q7bQ4YMQV5eHqytrdGxY0ekp6fjxIkTOH78OPbu3YvNmzdDIuGmKERERERE9V2NRiwKCwsxfvx45OXlYc6cOUhISMDJkycRGRmJsLAwNG7cGFu3bkVISIjY8RIRERERkQaqUWERERGBhw8fws7ODl999RX09PTkxzp16oQPPvgAAPDXX3+JEyUREREREWm0GhUWMpkMANCyZUvo6OgoHW/VqhUAQBAEFUIjIiIiIiJtUaPCwsvLC40bN8atW7dQWFiodPzq1asAuPM2EREREdHLokaFhbGxMUJCQpCfn48pU6YgOztbfuzAgQNYsWIFRo8ejbfeeku0QImIiIiISHPV6K5QFy5cwKJFi9CoUSP8/vvv2LJlC1q0aIHHjx8jNTUV+vr6iImJQdeuXRWe16NHD/zwww+iBE5ERERERJqjRoWFTCZDfn4+TE1N0bp1a3m7paUlLC0tAQD5+flKzytv2hQREREREWm/GhUW3t7euH79utixEBERERGRllJp520iIiIiIiJAhZ23y8TExODkyZNISUmBsbEx2rRpAz8/P+jqqnxqIiIiIiLSEjW++i8oKMCUKVPw559/Ku1X4ejoiE2bNqFbt24qB0hERERERJqvxlOhZs2ahT/++APm5uZYsWIFTp48ie3bt6N///6Ij4/Hq6++ipSUFDFjJSIiIiIiDVWjEYuMjAysW7cOurq6OHr0KLy8vOTHhg0bBn9/fxw9ehRr167FwoULxYqViIiI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bNOmTfD29sa+fftw8OBBdOzYEY6OjigpKUFSUhIuXryI4uJi9OnTR/6coUOHolevXli1ahW2bt2KLl26wMzMDImJibh27RoyMzMxbty4ctc9VOaLL75A79690aNHD3h5ecHJyQklJSW4c+cOoqKiMGXKFAwYMKDS85St53j11Vfh6+sLY2NjxMTE4ObNm7C0tFTq7+bmhu3bt6Nnz55wcnKCRCKR72PxPDs7O0yYMAG//PIL2rVrBx8fHxgYGODcuXNIT09Ht27d4OfnV+33XpGoqCgUFhaia9euSsf++ecfACwsiEg7sLAgIqrHWrZsiUuXLmHevHnYsmUL/vnnH/nFKgC0atUKS5YsUdiATSqVYu/evZgxYwY2bdqEgwcPyo8ZGxtj8uTJVZ5W9bwePXrg4MGDmDJlCq5cuSJftAxAvjN4VQwYMABvv/021q1bh7179wIAGjZsiA0bNiAwMFCp/5w5c3Do0CGcO3cO586dA1Ba5FQ01WvlypUoKChASEgIjhw5Im/v3bs3Nm/eXK2pVZUpy0F5hUVYWBgcHR3LLZaIiDQN97EgInpJZGVlITw8HKmpqdDX14erqytat279wuckJycjPDwcOTk5aNasGdq0aaO08/bGjRthY2ODV155RaH9/v37OHHiBPr27as0NUkmkyEiIgJ3796FsbExnJ2dlfZ6uHPnDkJDQxEQEFDuQmqgdPrU9evXYWRkBB8fH5iammLv3r2QSqVKRUp6ejrOnTuHjIwMyGQy+T4Whw4dQm5uLoYNG6Z0/vj4eFy6dEm+83abNm2U+hw5cgSZmZlKu2Pn5uZi69at8PLyUrpj1rMuX76MyMhIeTzP2rp1Kxo3box+/fpV+HwiIk3BwoKIiIiIiFSmfKsNIiIiIiKiamJhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKmNhQUREREREKvs/IwemegE4XWAAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ---- the inputs (in the lecture these come from sliders) ----\n",
    "R_d = 1.5\n",
    "N0_d = 50\n",
    "n_d = 15\n",
    "\n",
    "# ---- the model: two lines ----\n",
    "n_disc = np.arange(n_d + 1)       # the generations 0, 1, 2, ..., 15\n",
    "N_geom = N0_d * R_d ** n_disc     # N_n = R^n N_0, for every n at once\n",
    "\n",
    "# ---- the plot: everything from here on is presentation ----\n",
    "fig_disc, ax_disc = plt.subplots(figsize=(8, 4))\n",
    "ax_disc.stem(n_disc, N_geom, linefmt=\"#1a5276\", markerfmt=\"C0o\", basefmt=\"k-\")\n",
    "ax_disc.set_xlabel(\"Generation $n$\", fontsize=13)\n",
    "ax_disc.set_ylabel(\"Population $N_n$\", fontsize=13)\n",
    "ax_disc.set_title(f\"Geometric growth  $N_n = R^n N_0$   ($R = {R_d}$,  $N_0 = {N0_d}$)\", fontsize=12)\n",
    "ax_disc.grid(True, alpha=0.3)\n",
    "fig_disc.tight_layout()\n",
    "fig_disc;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "lEQa",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 0\n",
    "\n",
    "Without running anything, answer these by reading the cell above:\n",
    "\n",
    "1. Which single line would you change to show 25 generations instead of 15?\n",
    "2. Why does the code say `n_d + 1` rather than `n_d`? (Guess, if you don't know yet. Section 3 explains it.)\n",
    "3. Which line would you delete to get rid of the faint grid lines?\n",
    "4. Which line would you change to model a population that halves every generation?\n",
    "\n",
    "Now edit the cell to check your answers to 1, 3 and 4.\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "1. `n_d = 15` becomes `n_d = 25`. Nothing else needs to change: every later line uses `n_d`, so it all follows.\n",
    "2. `np.arange(16)` gives the 16 numbers 0, 1, ..., 15. It stops *before* the number you give it, so `n_d + 1` is needed to include generation 15 itself.\n",
    "3. `ax_disc.grid(True, alpha=0.3)`.\n",
    "4. `R_d = 1.5` becomes `R_d = 0.5`, since halving means $N_{n+1} = 0.5\\,N_n$.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "PKri",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 1. Variables and arithmetic\n",
    "\n",
    "`x = 5` means \"store 5 under the name `x`\". It is an instruction, not an equation: the right-hand side is worked out first, then stored. Python reads a cell from top to bottom, one line at a time.\n",
    "\n",
    "The arithmetic is `+ - * /` as usual, and `**` for powers: $R^n$ is written `R ** n`. Names are case-sensitive, so `N0` and `n0` are different variables.\n",
    "\n",
    "### Exercise 1.1: predict\n",
    "\n",
    "What does this show? Write your answer down, then type it into the empty cell below and run it.\n",
    "\n",
    "```python\n",
    "a = 3\n",
    "b = a * 2\n",
    "a = 10\n",
    "b\n",
    "```\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "`6`. When the line `b = a * 2` runs, `a` is 3, so `b` becomes 6. Changing `a` afterwards doesn't go back and change `b`: `b` stores a number, not a formula. (Marimo does re-run *other cells* when something they depend on changes, which is how sliders work, but within one cell it's strictly top to bottom.)\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "Xref",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.063120Z",
     "iopub.status.busy": "2026-11-13T23:25:24.062940Z",
     "iopub.status.idle": "2026-11-13T23:25:24.065739Z",
     "shell.execute_reply": "2026-11-13T23:25:24.064894Z"
    }
   },
   "outputs": [],
   "source": [
    "# type the code from Exercise 1.1 here, then run this cell"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "SFPL",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 1.2: predict\n",
    "\n",
    "Many people's first guess for \"2 to the power 3\" is `2 ^ 3`. What does Python give for it? Try it in the cell below.\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "`1`, not 8. In Python `^` is a completely different operation (it works on the binary digits of whole numbers), and with a decimal number such as `1.5 ^ 10` it stops with a `TypeError`. Powers are always `**`.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "BYtC",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.067835Z",
     "iopub.status.busy": "2026-11-13T23:25:24.067655Z",
     "iopub.status.idle": "2026-11-13T23:25:24.070333Z",
     "shell.execute_reply": "2026-11-13T23:25:24.069619Z"
    }
   },
   "outputs": [],
   "source": [
    "# try 2 ^ 3 here, then 2 ** 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "RGSE",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 1.3: write a line\n",
    "\n",
    "Using the geometric growth model $N_n = R^n N_0$, work out the population after $n = 10$ generations, starting from $N_0 = 50$ with $R = 1.5$. Replace `None` with your calculation, then run the cell. The check cell after it tells you whether it's right."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "Kclp",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.071889Z",
     "iopub.status.busy": "2026-11-13T23:25:24.071724Z",
     "iopub.status.idle": "2026-11-13T23:25:24.074311Z",
     "shell.execute_reply": "2026-11-13T23:25:24.073577Z"
    }
   },
   "outputs": [],
   "source": [
    "N_10 = None  # ← replace None with your calculation\n",
    "N_10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "emfo",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.075861Z",
     "iopub.status.busy": "2026-11-13T23:25:24.075709Z",
     "iopub.status.idle": "2026-11-13T23:25:24.079420Z",
     "shell.execute_reply": "2026-11-13T23:25:24.078486Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not attempted yet: replace None in the cell above.\n"
     ]
    }
   ],
   "source": [
    "if N_10 is None:\n",
    "    print(\"Not attempted yet: replace None in the cell above.\")\n",
    "elif abs(N_10 - 2883.251953125) < 1e-6:\n",
    "    print(f\"✓ Correct: N_10 = {N_10:.1f}\")\n",
    "else:\n",
    "    print(f\"Not yet: you got {N_10}. Check you used ** for the power, and the right numbers.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "Hstk",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 2. Functions\n",
    "\n",
    "A **function** packages up a calculation so you can reuse it with different inputs. In the lectures, every ODE you hand to the solver is written as a function. The pattern is:\n",
    "\n",
    "```python\n",
    "def name(input1, input2):\n",
    "    result = ...\n",
    "    return result\n",
    "```\n",
    "\n",
    "`def` starts it, the inputs go in brackets, the colon `:` is required, and the **indented** lines underneath are the body. `return` hands the answer back. Defining a function doesn't run it: it runs when you **call** it, as in `name(3, 4)`.\n",
    "\n",
    "### Exercise 2.1: predict\n",
    "\n",
    "What do the last two lines give? Predict both, then try it below.\n",
    "\n",
    "```python\n",
    "def double_then_add(x, y):\n",
    "    return 2 * x + y\n",
    "\n",
    "double_then_add(3, 4), double_then_add(4, 3)\n",
    "```\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "`(10, 11)`. Inputs are matched up by position: in the first call `x` is 3 and `y` is 4, giving $2 \\cdot 3 + 4 = 10$; in the second they swap, giving $2 \\cdot 4 + 3 = 11$. The order you pass things in matters.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "nWHF",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.081185Z",
     "iopub.status.busy": "2026-11-13T23:25:24.081003Z",
     "iopub.status.idle": "2026-11-13T23:25:24.083578Z",
     "shell.execute_reply": "2026-11-13T23:25:24.082836Z"
    }
   },
   "outputs": [],
   "source": [
    "# type the code from Exercise 2.1 here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "iLit",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 2.2: write a function\n",
    "\n",
    "Newton's law of cooling (Week 2) says the temperature $T$ of a cup of tea changes at the rate $$\\frac{dT}{dt} = -k\\,(T - T_\\infty),$$ where $k$ is a cooling constant and $T_\\infty$ is the room temperature. Complete the function below so that it returns this rate."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ZHCJ",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.085104Z",
     "iopub.status.busy": "2026-11-13T23:25:24.084959Z",
     "iopub.status.idle": "2026-11-13T23:25:24.087692Z",
     "shell.execute_reply": "2026-11-13T23:25:24.086914Z"
    }
   },
   "outputs": [],
   "source": [
    "def cooling_rate(T, k, T_inf):\n",
    "    return 0.0  # ← replace 0.0 with the right-hand side of the ODE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ROlb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.089359Z",
     "iopub.status.busy": "2026-11-13T23:25:24.089144Z",
     "iopub.status.idle": "2026-11-13T23:25:24.093120Z",
     "shell.execute_reply": "2026-11-13T23:25:24.092462Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not yet: cooling_rate(80, 0.5, 20) gave 0.0, expected -30.0\n",
      "Not yet: cooling_rate(5, 1.0, 20) gave 0.0, expected 15.0\n"
     ]
    }
   ],
   "source": [
    "_tests = [(80, 0.5, 20, -30.0), (20, 0.5, 20, 0.0), (5, 1.0, 20, 15.0)]\n",
    "_all_ok = True\n",
    "for _T, _k, _Tinf, _expected in _tests:\n",
    "    _got = cooling_rate(_T, _k, _Tinf)\n",
    "    if abs(_got - _expected) > 1e-9:\n",
    "        _all_ok = False\n",
    "        print(f\"Not yet: cooling_rate({_T}, {_k}, {_Tinf}) gave {_got}, expected {_expected}\")\n",
    "if _all_ok:\n",
    "    print(\"✓ Correct on all three test cases.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "qnkX",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "Once it passes: the third test case has the tea at 5 °C in a 20 °C room. Why is the rate *positive* there, and what does that mean physically?\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "One version that works: `return -k * (T - T_inf)`. The brackets matter: `-k * T - T_inf` would be a different formula.\n",
    "\n",
    "When $T < T_\\infty$, $T - T_\\infty$ is negative, and minus a negative is positive: a cold drink warms up towards room temperature. The same formula covers both cooling and warming.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "TqIu",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 3. NumPy arrays: lots of numbers at once\n",
    "\n",
    "Every lecture starts with `import numpy as np`, which is why so many lines start with `np.`. NumPy gives you **arrays**, lists of numbers you can do arithmetic on all at once. Two ways of making them appear everywhere in the lectures:\n",
    "\n",
    "- `np.arange(n)` gives the whole numbers `0, 1, ..., n-1`. It stops *before* `n`.\n",
    "- `np.linspace(start, stop, num)` gives `num` evenly spaced numbers from `start` to `stop`, *including* both ends. This is how every time axis in the course is made.\n",
    "\n",
    "Arithmetic on an array acts on **every entry**. That's why the Week 1 cell had no loop: `N0_d * R_d ** n_disc` works out $R^n N_0$ for all sixteen values of $n$ in one line. NumPy versions of the usual functions, such as `np.exp`, `np.sqrt` and `np.log`, work on whole arrays in the same way.\n",
    "\n",
    "### Exercise 3.1: predict\n",
    "\n",
    "Predict what each of these shows, then check in the cell below (one line at a time works best).\n",
    "\n",
    "```python\n",
    "np.arange(5)\n",
    "np.linspace(0, 1, 5)\n",
    "np.arange(4) ** 2\n",
    "```\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "- `np.arange(5)` gives `[0 1 2 3 4]`: five numbers, starting at 0, stopping before 5.\n",
    "- `np.linspace(0, 1, 5)` gives `[0.   0.25 0.5  0.75 1.  ]`: five points, both ends included, so four gaps of 0.25.\n",
    "- `np.arange(4) ** 2` gives `[0 1 4 9]`: each entry squared.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "Vxnm",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.095398Z",
     "iopub.status.busy": "2026-11-13T23:25:24.095220Z",
     "iopub.status.idle": "2026-11-13T23:25:24.097905Z",
     "shell.execute_reply": "2026-11-13T23:25:24.096971Z"
    }
   },
   "outputs": [],
   "source": [
    "# try the Exercise 3.1 lines here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "DnEU",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 3.2: write two lines\n",
    "\n",
    "The exact solution of the cooling ODE from Exercise 2.2 is $$T(t) = T_\\infty + (T_0 - T_\\infty)\\,e^{-kt}.$$ Take $T_0 = 80$, $T_\\infty = 20$ and $k = 0.5$.\n",
    "\n",
    "1. Make `t_cool`, an array of 101 equally spaced times from 0 to 10.\n",
    "2. Make `T_cool`, the temperature at every one of those times, using the formula above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ulZA",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.099441Z",
     "iopub.status.busy": "2026-11-13T23:25:24.099289Z",
     "iopub.status.idle": "2026-11-13T23:25:24.101726Z",
     "shell.execute_reply": "2026-11-13T23:25:24.100907Z"
    }
   },
   "outputs": [],
   "source": [
    "t_cool = None  # ← replace None\n",
    "T_cool = None  # ← replace None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "ecfG",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.103890Z",
     "iopub.status.busy": "2026-11-13T23:25:24.103736Z",
     "iopub.status.idle": "2026-11-13T23:25:24.107782Z",
     "shell.execute_reply": "2026-11-13T23:25:24.106975Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not attempted yet: replace both Nones in the cell above.\n"
     ]
    }
   ],
   "source": [
    "if t_cool is None or T_cool is None:\n",
    "    print(\"Not attempted yet: replace both Nones in the cell above.\")\n",
    "elif len(t_cool) != 101 or abs(t_cool[0]) > 1e-9 or abs(t_cool[-1] - 10) > 1e-9:\n",
    "    print(f\"t_cool not right yet: it has {len(t_cool)} entries, from {t_cool[0]} to {t_cool[-1]}.\")\n",
    "elif abs(T_cool[0] - 80) > 1e-6 or abs(T_cool[-1] - 20.404276819945128) > 1e-6:\n",
    "    print(f\"t_cool is right. T_cool not yet: it starts at {T_cool[0]:.3f} (should be 80) and ends at {T_cool[-1]:.3f}.\")\n",
    "else:\n",
    "    print(f\"✓ Correct: the tea cools from {T_cool[0]:.0f} °C to {T_cool[-1]:.2f} °C by t = 10.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "Pvdt",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "```python\n",
    "t_cool = np.linspace(0, 10, 101)\n",
    "T_cool = 20 + (80 - 20) * np.exp(-0.5 * t_cool)\n",
    "```\n",
    "\n",
    "Note `np.exp`, not `exp` on its own: plain Python doesn't know `exp` (and the `math` version won't take an array). This is the same line as the Week 2 lecture's `T_sol = Tinf + (T0 - Tinf) * np.exp(-k * t_dim)`, with numbers instead of names.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ZBYS",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 4. Picking entries out of an array\n",
    "\n",
    "Square brackets pick out entries. Python counts from **0**, so `x[0]` is the first entry, and `x[-1]` is the last one. A colon picks out a range: `x[2:5]` is entries 2, 3, 4 (again stopping *before* the end number).\n",
    "\n",
    "For a 2D array (a matrix), you give a row and a column: `D[i, j]`. A colon on its own means \"all of them\", so `D[:, j]` is the whole of column `j`. You've already seen this in the Week 3 lecture: `ns_pend[:, 0]` takes the first column of the null space.\n",
    "\n",
    "### Exercise 4.1: predict\n",
    "\n",
    "Here is the Week 3 dimension matrix for the pendulum. Rows are the dimensions $[L, T]$ and columns are the quantities $[\\tau, \\ell, g]$.\n",
    "\n",
    "```python\n",
    "D_demo = np.array([\n",
    "    [0, 1,  1],   # L exponents\n",
    "    [1, 0, -2],   # T exponents\n",
    "])\n",
    "```\n",
    "\n",
    "Predict each of these, then check them below:\n",
    "\n",
    "1. `D_demo[1]`\n",
    "2. `D_demo[0, 2]`\n",
    "3. `D_demo[:, 2]`, and what that column means physically\n",
    "4. `D_demo.shape`\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "1. `[1 0 -2]`: the second row (row number 1), the $T$ exponents.\n",
    "2. `1`: row 0, column 2, the $L$ exponent of $g$.\n",
    "3. `[1 -2]`: the whole of column 2, i.e. the dimensions of $g$, $L^1 T^{-2}$. An acceleration, as it should be.\n",
    "4. `(2, 3)`: 2 rows and 3 columns.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "aLJB",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.109701Z",
     "iopub.status.busy": "2026-11-13T23:25:24.109561Z",
     "iopub.status.idle": "2026-11-13T23:25:24.111945Z",
     "shell.execute_reply": "2026-11-13T23:25:24.111128Z"
    }
   },
   "outputs": [],
   "source": [
    "# type D_demo in here and try the four expressions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "nHfw",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 5. Loops, `zip`, and f-strings\n",
    "\n",
    "A `for` loop repeats the indented lines underneath once for each item in a list. Plot cells in the lectures use one to draw several curves on one plot, for example this line from Week 2:\n",
    "\n",
    "```python\n",
    "for k, color in zip(k_values, colors):\n",
    "```\n",
    "\n",
    "`zip` walks along two lists side by side, so on each pass round the loop `k` is the next value of $k$ and `color` is its matching colour.\n",
    "\n",
    "The labels on those curves use **f-strings**: an `f` before the quote, and anything inside `{curly brackets}` gets replaced by its value. `{x:.2f}` means \"show `x` to 2 decimal places\".\n",
    "\n",
    "### Exercise 5.1: predict\n",
    "\n",
    "How many lines does this print, and what is the first one?\n",
    "\n",
    "```python\n",
    "for k_demo in [0.1, 0.5, 2.0]:\n",
    "    print(f\"k = {k_demo}, half-life = {np.log(2) / k_demo:.2f}\")\n",
    "```\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "Three lines, one per value of `k_demo`:\n",
    "\n",
    "```\n",
    "k = 0.1, half-life = 6.93\n",
    "k = 0.5, half-life = 1.39\n",
    "k = 2.0, half-life = 0.35\n",
    "```\n",
    "\n",
    "The half-life $\\ln 2 / k$ is the time it takes for the gap between $T$ and $T_\\infty$ to halve.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "xXTn",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.113642Z",
     "iopub.status.busy": "2026-11-13T23:25:24.113497Z",
     "iopub.status.idle": "2026-11-13T23:25:24.116066Z",
     "shell.execute_reply": "2026-11-13T23:25:24.115186Z"
    }
   },
   "outputs": [],
   "source": [
    "# type the code from Exercise 5.1 here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "AjVT",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 5.2: discuss first, then run\n",
    "\n",
    "Someone copies the Week 2 plot cell and adds a fourth value of $k$, but forgets to add a fourth colour:\n",
    "\n",
    "```python\n",
    "k_list = [0.1, 0.5, 2.0, 5.0]\n",
    "colour_list = [\"navy\", \"green\", \"darkred\"]\n",
    "\n",
    "for k_z, c_z in zip(k_list, colour_list):\n",
    "    print(k_z, c_z)\n",
    "```\n",
    "\n",
    "**Before running it:** do you expect an error message, four lines, or something else? Would you notice if this happened inside a plot?\n",
    "\n",
    "Then run it below, and fix it so that all four values of $k$ are printed.\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "No error at all: it prints three lines and quietly drops `5.0`. `zip` stops as soon as the shorter list runs out. In a plot, the fourth curve would just be missing, with no warning, which is easy to miss. The fix is to add a fourth colour, e.g. `colour_list = [\"navy\", \"green\", \"darkred\", \"orange\"]`.\n",
    "\n",
    "The lesson: no error message doesn't mean the code is right. Always check the output looks like what you expected.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "pHFh",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.117563Z",
     "iopub.status.busy": "2026-11-13T23:25:24.117419Z",
     "iopub.status.idle": "2026-11-13T23:25:24.120055Z",
     "shell.execute_reply": "2026-11-13T23:25:24.119175Z"
    }
   },
   "outputs": [],
   "source": [
    "# type the code from Exercise 5.2 here, then fix it"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "NCOB",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 6. Plotting: the minimum, then the extras\n",
    "\n",
    "Every plot in the course comes from `import matplotlib.pyplot as plt`. The minimum is three lines:\n",
    "\n",
    "```python\n",
    "fig, ax = plt.subplots()   # make an empty figure (fig) with one set of axes (ax)\n",
    "ax.plot(x, y)              # draw a line through the points (x, y)\n",
    "fig                        # show it\n",
    "```\n",
    "\n",
    "Everything else in a lecture plot cell is optional extras. These are the ones you'll see most:\n",
    "\n",
    "| Code | What it does |\n",
    "|---|---|\n",
    "| `plt.subplots(figsize=(8, 4))` | figure size, width by height |\n",
    "| `ax.plot(x, y, color=\"red\")` | line colour |\n",
    "| `ax.plot(x, y, linestyle=\"--\")` | dashed line (`\":\"` is dotted) |\n",
    "| `ax.plot(x, y, linewidth=2.5)` | thicker line |\n",
    "| `ax.plot(x, y, label=\"text\")` with `ax.legend()` | name a curve, then show the key |\n",
    "| `ax.set_xlabel(\"text\")`, `ax.set_ylabel(\"text\")`, `ax.set_title(\"text\")` | axis labels and title |\n",
    "| `ax.grid(True, alpha=0.3)` | faint grid; `alpha` controls transparency |\n",
    "| `fontsize=13` | text size, on any label |\n",
    "| `fig.tight_layout()` | stops labels overlapping |\n",
    "\n",
    "### Exercise 6.1: change a plot yourself\n",
    "\n",
    "The cell below plots the cooling curve with the bare minimum. Edit it, one change at a time, re-running after each:\n",
    "\n",
    "1. Make the curve red and dashed.\n",
    "2. Label the axes \"Time t (s)\" and \"Temperature (°C)\".\n",
    "3. Add a second curve for a faster-cooling cup, with $k = 2$, on the same axes. Give both curves labels and show a legend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "aqbW",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.121593Z",
     "iopub.status.busy": "2026-11-13T23:25:24.121445Z",
     "iopub.status.idle": "2026-11-13T23:25:24.197394Z",
     "shell.execute_reply": "2026-11-13T23:25:24.196486Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "t_plot = np.linspace(0, 10, 101)\n",
    "T_plot = 20 + 60 * np.exp(-0.5 * t_plot)\n",
    "\n",
    "fig_ex6, ax_ex6 = plt.subplots()\n",
    "ax_ex6.plot(t_plot, T_plot)\n",
    "fig_ex6;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "TRpd",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "```python\n",
    "t_plot = np.linspace(0, 10, 101)\n",
    "T_plot = 20 + 60 * np.exp(-0.5 * t_plot)\n",
    "T_plot_fast = 20 + 60 * np.exp(-2 * t_plot)\n",
    "\n",
    "fig_ex6, ax_ex6 = plt.subplots()\n",
    "ax_ex6.plot(t_plot, T_plot, color=\"red\", linestyle=\"--\", label=\"k = 0.5\")\n",
    "ax_ex6.plot(t_plot, T_plot_fast, label=\"k = 2\")\n",
    "ax_ex6.set_xlabel(\"Time t (s)\")\n",
    "ax_ex6.set_ylabel(\"Temperature (°C)\")\n",
    "ax_ex6.legend()\n",
    "fig_ex6\n",
    "```\n",
    "\n",
    "Calling `ax_ex6.plot` twice draws two curves on the same axes. If you leave out `color`, Matplotlib picks one for you.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "TXez",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 7. Solving an ODE with `solve_ivp`\n",
    "\n",
    "When there's no formula for the solution, the lectures hand the ODE to `solve_ivp` from SciPy. You never need to know how it works inside (that's Chapter 6). You do need to know the recipe, which is the same every time:\n",
    "\n",
    "1. Write the right-hand side of $\\frac{dy}{dt} = f(t, y)$ as a function of `t` and `y`, in that order.\n",
    "2. Call `solve_ivp(function, [start time, end time], [initial value])`. Adding `t_eval=...` tells it which times you want answers at.\n",
    "3. The times come back as `sol.t` and the solution values as `sol.y[0]`.\n",
    "\n",
    "Why the square brackets around the initial value, and why `y[0]` rather than `y`? `solve_ivp` is built to handle *systems* of several ODEs at once (you'll need that later), so the unknown is always a list, even when it has only one entry. That's also why the function returns a list, `[...]`.\n",
    "\n",
    "Here is the cooling ODE solved this way, plotted against the exact formula:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "dNNg",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.199533Z",
     "iopub.status.busy": "2026-11-13T23:25:24.199274Z",
     "iopub.status.idle": "2026-11-13T23:25:24.310354Z",
     "shell.execute_reply": "2026-11-13T23:25:24.309354Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVFFJREFUeJzt3Xd8FHXixvHPlmTTC2kQkpDQe0dAmtIFhMOGil3ROyu2uwP17PUUsevZQPTOLqggFoqiCNJ7J4FAgCSEZFN3k935/cGxP3IUQZJMNnner9e+zszMzjzZQ/fhOzPfsRiGYSAiIiLip6xmBxARERE5EyozIiIi4tdUZkRERMSvqcyIiIiIX1OZEREREb+mMiMiIiJ+TWVGRERE/Jrd7ADVzev1kpWVRXh4OBaLxew4IiIicgoMw6CwsJDExESs1pOPvdT5MpOVlUVycrLZMUREROQPyMzMJCkp6aTb1PkyEx4eDhz+MCIiIkxOIyIiIqfC6XSSnJzs+x4/mTpfZo6cWoqIiFCZERER8TOncomILgAWERERv6YyIyIiIn5NZUZERET8Wp2/ZkZERKqe1+vF7XabHUP8WEBAADabrUr2pTIjIiKnxe12k56ejtfrNTuK+LmoqCgaNmx4xvPAqcyIiMgpMwyDffv2YbPZSE5O/t3JzESOxzAMSkpKyM7OBqBRo0ZntD+VGREROWUVFRWUlJSQmJhISEiI2XHEjwUHBwOQnZ1NfHz8GZ1yUqUWEZFT5vF4AAgMDDQ5idQFRwpxeXn5Ge1HZUZERE6bnnUnVaGq/hyZeprJ5XLx8ccfs3HjRgIDA+nZsyfnnXfeMb/cd999x7x58wgKCuLCCy+kY8eOJiUWEZH6KDc3l5KSElJSUurk8fydaSMzxcXFnHXWWTz11FNERERQUVHB1VdfzRVXXFFpu0mTJjFu3DgsFgv79++ne/fufP755yalFhGR+mjq1KlcddVVdfZ4/s60kZn58+ezdu1a9uzZQ+PGjQHo0qULF198MVOnTiUuLo6tW7fyzDPP8MUXXzB69GgAIiMjufXWWxk9ejR2u65fFhGRuicuLk6jMqfBtJGZhg0bAlBQUOBblp+fT0REBKGhoQB8/fXXREREMHLkSN82V155Jfv27WPZsmU1G/g4DMOg1O0xO4aIiJwCr9dLVlYWhYWFx11fVFTEzp07KS0tPel+CgoK2LZt2zHLCwsL2bJlS6VlbrebjIwMysrKTivr+PHjeeyxx075eNnZ2ezZs8f3exz55/rCtDLTo0cPXn/9dS655BKuueYaLr74Yl599VVmzZrlu7p527ZtpKSkVLpdq2nTpr51x+NyuXA6nZVe1WH22n30fXoBj85cUS37FxGRqjN37lySk5Pp2rUraWlpnHfeeWRlZQGH76T585//TExMDH379qVBgwZMnjwZwzCOu6/MzExatmx5THF5/PHHufTSS4HDf9l97LHHiI+Pp1+/fsTGxjJu3LhKf4E/maNPM53K8Z544gkuuugihg4dSlpaGi1atKBHjx71ptSYVmZcLhcLFy7EMAxatGhBixYtyM7OZvHixb5tSktLCQ8Pr/S+0NBQbDYbJSUlx93vk08+SWRkpO+VnJxcLfnjyvfwesmd3L7xMgzNgiki9ZRhGJS4K0x5nahsHM8NN9zAXXfdxf79+8nNzeWuu+5iw4YNwOHiMHPmTNasWUNWVhYLFy7kxRdf5IMPPjjuvtq3b0/Hjh0rrTcMg//85z++6z5feeUVpk+fzsqVK8nMzCQrK4vc3Fzuueee0/6MT+V4AEuXLmXgwIHk5OSQk5NDaGgof/7zn0/7eP7ItItO3nrrLWbPnk1GRgYNGjQAYPjw4QwYMIDzzjuPLl26EBYWRn5+fqX3OZ1OPB4PERERx93vpEmTuOuuuyptXx2FpmObNli+3IuDcnZtXU2T1l2r/BgiIrVdabmHtv/41pRjb3xkGCGBp/Y1VlhYSEJCgu/nIUOG+P75tdde47bbbqN169YA9OzZk6uvvprXXnvtmJtSjrjiiit4/fXXeeSRRwBYtGgRe/bs4bLLLgPg+eef5+qrr8br9bJt2zYMw+CSSy5h8uTJvPnmm6f9u/7e8eDwLLr33nsvAGFhYTzxxBP06dOHvXv3+q5NratMG5nZunUrqampviID0K1bNwDfUFq7du2OOde4adMmANq2bXvc/TocDiIiIiq9qkNQSBhbgzoAsG/lnGo5hoiIVI2nnnqKCRMm0L9/fx566CHWrVsHHD7FtGvXLjp06FBp+44dO57wcgaAyy67jIyMDJYsWQLABx98wMCBA0lMTKSsrIydO3fy1ltvMWrUKM4//3xGjx7N888/T1xc3O9ek3O6xzuidevWlS7LaN++PQA7duw47eP5G9NGZjp06MAbb7zBzp07fdfBzJ07F/j//wPGjBnDnXfeyfTp07npppuAw0N3rVq1olOnTuYEP0pxcn/YvpLgzB+B+82OIyJS44IDbGx8ZJhpxz5Vf/nLX7j88suZP38+c+fOpWfPnrz00ktcd911BAYGHlMwSktLT/q4hqSkJAYMGMAHH3xA165d+fTTT5kyZQoANpsNq9XKY489VmW3V5/seEf870XGRy7HOPLYgLrMtDJzzTXX8Pnnn9O9e3dGjhxJcXExc+bM4b777vOVmcTERF566SXuuOMO5s6dS15eHmvXrmXOnDm1YvbJ+M4jYPtUWpSswVVWgiNIzykRkfrFYrGc8qkes3i9XgzDIDIykrFjxzJ27FjsdjsfffQR119/PZ06dWLBggWMGzfO95558+bRpUuXk+53/PjxTJo0iXPOOYfS0lIuuOACAAICAjjrrLP49NNPjykz5eXlBAQE/KHf40THO2Lt2rXk5+cTFRUFwMKFCwkODqZVq1Z/6Hj+xLQ/gXa7nTlz5rBs2TI2bdpEYGAgTz/9NC1atKi03YQJExg4cCA//fQTDoeDYcOGERMTY1LqytLa9iCXKGIt+axfMY/2fc43O5KIiPyP4uJi+vTpwx133EHnzp3Jyclh7ty5vuthHnnkEc4//3yaNWvGOeecw6xZs/juu+98p3RO5KKLLuLWW29l4sSJjBkzptINK8888wxDhgxhwoQJXHXVVXi9Xn788UfWr1/Pxx9//Id+j5MdDw7fWHPJJZfwj3/8gwMHDjBx4kRuv/32arvcojYxvU736NGDHj16nHSbZs2a0axZsxpKdOosVivpkWcRW/AdhRu+A5UZEZFaJzw8nI8++ojnnnuO1157jYiICG699VZuv/12AIYOHcrMmTN58cUXmTFjBmlpaceMzBxvErvIyEiuueYaFixYwHXXXVdpXb9+/fjtt9947rnnuP3224mKiuLcc8/lrbfeOqXMp3s8gGHDhjFixAgeeughDh06xC233MKkSZNO6Xj+zmKczr1tfsjpdBIZGUlBQUG1tNMls6exf8lHrI4awkN33/X7bxAR8WNlZWWkp6eTlpZGUFCQ2XHkvyZOnMj27dv5+uuvzY5yWk725+l0vr9NH5nxd037X8qli+IgB24rchET5jA7koiI1HJbt27Fe4I5ypKSkggLC6vhRP5NZeYMxYcH0aZRBJv2Ofllx0FGd0r8/TeJiEi9dvHFF+NyuY677pVXXmHQoEGntb+EhIQT7q8+UJmpAv2bx+Ddv57sFXuh041mxxERkVpuzZo1Vbq/+nJtzImozFSBURHbmeT4O9m7G2B4b8BiNW0uQhERkXpH37pVoEX3QZQZAcSTx+4tK82OIyIiUq+ozFSBoOBQtgYfnpFYjzYQERGpWSozVaQkuT8AIZk/mZxERESkflGZqSIJXUYA0KL08KMNREREpGaozFSR1NbdyCGaYIubbcu+NzuOiIhIvaEyU0UsVivpUb0BKNww1+Q0IiLirzweD3/729/o1KkTqamp7Nmzx+xIx+XxeEhNTf3dZ1jVBN2aXYVcXW/gyrkdyS3uzjdmhxERkVpn7NixDBo0iFtvvfWE23z00UdMnz6dr7/+mtjYWBo2bFiDCU+dYRjs2rWLsrIys6OozFSljj36s3iuC0+Om8y8EpIbhJgdSUREapF9+/aRn59/0m3Wr19Px44d6d69e82EqgN0mqkKRQYH0C0lGoCFW3NMTiMiIkf79ddfGTNmDK1bt2bgwIG8++67vnUZGRm0bt2azz77zLds3bp1NGvWjHnz5gFw8803k5qaSlpaGmeddRb33HMPTqfzmOPMmDGDgQMH0rZtW6688krfaaLrr7+eVatW8dxzz5GamkpqaiqHDh2q9N5LL72UV155hUWLFpGamsrYsWOBw6d0nn76aXr06EHr1q254oor2LlzZ6X3jhgxgilTpnD77bfTvn17br75ZpxOJ6mpqcyYMYNx48bRvn17Bg8ezNKlS1m9ejVjxoyhTZs2jB07loyMDN++du3addxTXM2bN+fHH3884WfctWtXUlNTadq0KQMGDODll18+4TOoqpRRxxUUFBiAUVBQUCPHe2/OQuON+y4zvn/2qho5nohITSotLTU2btxolJaWVl7hKjrxy30625ac2ranacGCBUZkZKTx2muvGevXrze+/PJLIzk52Zg6dapvmylTphjR0dFGZmamUVpaarRv39646qr//295dna2kZ6ebqSnpxuLFi0yzjnnHGPUqFGVjvPQQw8ZkZGRxr/+9S9j7dq1xowZM4yrr77aMAzDOHDggNG5c2fj7rvv9u3H4/FUev++ffuMCRMmGP379zfS09ONrKwswzAM49577zUaNWpkzJw501i+fLlx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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def cooling_rhs(t, T):\n",
    "    return [-0.5 * (T[0] - 20)]\n",
    "\n",
    "t_eval_cool = np.linspace(0, 10, 101)\n",
    "sol_cool = solve_ivp(cooling_rhs, [0, 10], [80], t_eval=t_eval_cool)\n",
    "\n",
    "fig_cool, ax_cool = plt.subplots()\n",
    "ax_cool.plot(sol_cool.t, sol_cool.y[0], label=\"solve_ivp\")\n",
    "ax_cool.plot(t_eval_cool, 20 + 60 * np.exp(-0.5 * t_eval_cool), linestyle=\"--\", label=\"exact formula\")\n",
    "ax_cool.set_xlabel(\"t\")\n",
    "ax_cool.set_ylabel(\"T\")\n",
    "ax_cool.legend()\n",
    "fig_cool;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "yCnT",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "### Exercise 7.1: adapt the recipe\n",
    "\n",
    "The logistic equation (Week 2) models a population $N$ that grows but is limited by a carrying capacity $K$: $$\\frac{dN}{dt} = r N \\left(1 - \\frac{N}{K}\\right).$$\n",
    "\n",
    "**Before writing any code:** start with $N(0) = 5$, $r = 0.8$ and $K = 100$. Sketch on paper what you expect $N(t)$ to look like for $0 \\le t \\le 15$. Where does it end up? Is it fastest at the start, the middle, or the end?\n",
    "\n",
    "Then, using the cooling cell above as a template:\n",
    "\n",
    "1. Complete `logistic_rhs` so it returns the right-hand side.\n",
    "2. Replace `None` with a call to `solve_ivp` that solves it from $N(0) = 5$ over $0 \\le t \\le 15$, at 151 equally spaced times.\n",
    "\n",
    "The cell after that plots your solution once it's right, so you can compare it with your sketch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "wlCL",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.312726Z",
     "iopub.status.busy": "2026-11-13T23:25:24.312495Z",
     "iopub.status.idle": "2026-11-13T23:25:24.315705Z",
     "shell.execute_reply": "2026-11-13T23:25:24.314855Z"
    }
   },
   "outputs": [],
   "source": [
    "def logistic_rhs(t, N):\n",
    "    return [0.0]  # ← replace 0.0\n",
    "\n",
    "sol_logistic = None  # ← replace None with a call to solve_ivp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "kqZH",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.317329Z",
     "iopub.status.busy": "2026-11-13T23:25:24.317089Z",
     "iopub.status.idle": "2026-11-13T23:25:24.322553Z",
     "shell.execute_reply": "2026-11-13T23:25:24.321657Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not attempted yet: replace None in the cell above.\n"
     ]
    }
   ],
   "source": [
    "if sol_logistic is None:\n",
    "    print(\"Not attempted yet: replace None in the cell above.\")\n",
    "elif len(sol_logistic.t) != 151 or abs(sol_logistic.t[-1] - 15) > 1e-9:\n",
    "    print(f\"The solver ran, but not at the right times: it gave {len(sol_logistic.t)} times, ending at t = {sol_logistic.t[-1]}. Check t_eval.\")\n",
    "elif abs(sol_logistic.y[0][0] - 5) > 1e-9:\n",
    "    print(f\"Check the initial value: N(0) came out as {sol_logistic.y[0][0]}.\")\n",
    "elif not (99 < sol_logistic.y[0][-1] < 100.5):\n",
    "    print(f\"Not yet: N(15) came out as {sol_logistic.y[0][-1]:.2f}. Check logistic_rhs, including its brackets.\")\n",
    "else:\n",
    "    print(f\"✓ Correct: N(15) = {sol_logistic.y[0][-1]:.2f}\")\n",
    "    _fig, _ax = plt.subplots()\n",
    "    _ax.plot(sol_logistic.t, sol_logistic.y[0])\n",
    "    _ax.axhline(100, color=\"grey\", linestyle=\":\")\n",
    "    _ax.set_xlabel(\"t\")\n",
    "    _ax.set_ylabel(\"N\")\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "wAgl",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "```python\n",
    "def logistic_rhs(t, N):\n",
    "    return [0.8 * N[0] * (1 - N[0] / 100)]\n",
    "\n",
    "sol_logistic = solve_ivp(logistic_rhs, [0, 15], [5], t_eval=np.linspace(0, 15, 151))\n",
    "```\n",
    "\n",
    "An S-shaped curve: slow at first (few individuals), fastest around $N = K/2 = 50$, then levelling off at $K = 100$. The three changes from the cooling template were the formula, the time span, and the initial value. Everything else was copied.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "rEll",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 8. Reading error messages\n",
    "\n",
    "Error messages look alarming but are usually helpful. **Read the last line first**: it names the kind of error and, usually, the exact problem. The lines above it show where it happened.\n",
    "\n",
    "### Exercise 8.1: what went wrong?\n",
    "\n",
    "For each piece of code, the last line of its error message is shown. Say what's wrong and how you'd fix it. (You can type them into the cell below to see the full messages.)\n",
    "\n",
    "**(a)**\n",
    "```python\n",
    "N0 = 50\n",
    "N_5 = N0 * r ** 5\n",
    "```\n",
    "`NameError: name 'r' is not defined`\n",
    "\n",
    "**(b)**\n",
    "```python\n",
    "def growth(N0, R, n):\n",
    "return N0 * R ** n\n",
    "```\n",
    "`IndentationError: expected an indented block after function definition on line 1`\n",
    "\n",
    "**(c)**\n",
    "```python\n",
    "times = np.linspace(0, 10, 101)\n",
    "times(0)\n",
    "```\n",
    "`TypeError: 'numpy.ndarray' object is not callable`\n",
    "\n",
    "**(d)**\n",
    "```python\n",
    "T = 20 + 60 * np.exp(-0.5 * 3\n",
    "```\n",
    "`SyntaxError: '(' was never closed`\n",
    "\n",
    "**(e)** You copy two lecture cells into your own notebook, and both contain the line `k = 0.5`. Marimo refuses to run them and says the variable `k` is defined in more than one cell.\n",
    "\n",
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "- **(a)** `r` was never given a value. Either add a line like `r = 1.5` before it, or this is a typo for a name you did define (names are case-sensitive: `R` is not `r`).\n",
    "- **(b)** The body of a function must be indented. Put four spaces before `return`.\n",
    "- **(c)** Round brackets mean \"call a function\". To get an entry of an array, use square brackets: `times[0]`.\n",
    "- **(d)** A missing closing bracket. Count them: every `(` needs a `)`. Here it should end `np.exp(-0.5 * 3)`.\n",
    "- **(e)** In marimo, every name can be defined in only one cell, so it always knows which cell a value came from. Rename one of them (`k2`, `k_fast`, ...), or start the name with an underscore, `_k`, which makes it private to its own cell.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "dGlV",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.324566Z",
     "iopub.status.busy": "2026-11-13T23:25:24.324414Z",
     "iopub.status.idle": "2026-11-13T23:25:24.326998Z",
     "shell.execute_reply": "2026-11-13T23:25:24.326218Z"
    }
   },
   "outputs": [],
   "source": [
    "# try the broken code from Exercise 8.1 here, if you want to see the full messages"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "SdmI",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## 9. Putting it together: read a whole lecture cell\n",
    "\n",
    "Below is the draining-tank cell from the Week 1 lecture, with the sliders replaced by numbers (and one solver option dropped). It's the longest cell in that lecture. You now know every piece of it.\n",
    "\n",
    "### Exercise 9.1\n",
    "\n",
    "Read the cell, then answer:\n",
    "\n",
    "1. Which line is the exact (analytic) solution for the depth?\n",
    "2. Which lines set up and solve the ODE numerically? Write the ODE being solved in mathematical notation.\n",
    "3. Which lines could you delete and still get a (plainer) plot with both curves on it?\n",
    "4. The tank currently starts 2 m deep. **Before changing anything**, use the line that defines `t_drain` to predict how much longer the tank takes to drain if it starts 4 m deep. Then change `h0_tank` and check."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "lgWD",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-13T23:25:24.328621Z",
     "iopub.status.busy": "2026-11-13T23:25:24.328459Z",
     "iopub.status.idle": "2026-11-13T23:25:24.526123Z",
     "shell.execute_reply": "2026-11-13T23:25:24.524029Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "h0_tank = 2.0     # initial depth (m)\n",
    "aA = 0.005        # area ratio a/A\n",
    "g = 9.81\n",
    "\n",
    "c_tank = aA * np.sqrt(2 * g)          # shorthand: (a/A) sqrt(2g)\n",
    "t_drain = 2 * np.sqrt(h0_tank) / c_tank\n",
    "t_eval_tank = np.linspace(0, t_drain * 1.05, 400)\n",
    "h_exact = h0_tank * np.maximum(1 - t_eval_tank / t_drain, 0.0) ** 2\n",
    "\n",
    "def tank_ode(t, h):\n",
    "    return [-c_tank * np.sqrt(max(h[0], 0.0))]\n",
    "\n",
    "sol_tank = solve_ivp(tank_ode, [0, t_drain * 1.05], [h0_tank], t_eval=t_eval_tank)\n",
    "\n",
    "fig_tank, ax_tank = plt.subplots(figsize=(8, 4))\n",
    "ax_tank.plot(t_eval_tank, h_exact, color=\"#1a5276\", linewidth=2.5, label=\"Analytic\")\n",
    "ax_tank.plot(sol_tank.t, sol_tank.y[0], color=\"tomato\", linewidth=2, linestyle=\"--\", label=\"solve_ivp\")\n",
    "ax_tank.axvline(t_drain, color=\"grey\", linestyle=\":\", linewidth=1.5)\n",
    "ax_tank.set_xlabel(\"Time $t$ (s)\", fontsize=13)\n",
    "ax_tank.set_ylabel(\"Depth $h(t)$ (m)\", fontsize=13)\n",
    "ax_tank.set_title(f\"Draining tank: $h_0 = {h0_tank}$ m, drains in {t_drain:.1f} s\", fontsize=13)\n",
    "ax_tank.legend(fontsize=11)\n",
    "ax_tank.grid(True, alpha=0.3)\n",
    "fig_tank.tight_layout()\n",
    "fig_tank;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "yOPj",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "<details><summary><b>Show answer</b></summary>\n",
    "\n",
    "\n",
    "1. `h_exact = h0_tank * np.maximum(1 - t_eval_tank / t_drain, 0.0) ** 2`, which is $h(t) = h_0\\,(1 - t/t_\\text{drain})^2$. The `np.maximum(..., 0.0)` keeps it at zero once the tank is empty, instead of the formula curving back up.\n",
    "2. `def tank_ode` (two lines) and the `sol_tank = solve_ivp(...)` line. The ODE is $\\frac{dh}{dt} = -\\frac{a}{A}\\sqrt{2gh}$. Inside `tank_ode`, `max(h[0], 0.0)` stops the solver ever taking the square root of a tiny negative number.\n",
    "3. `figsize=...`, every `color=`, `linewidth=`, `linestyle=` and `fontsize=`, the `axvline` line, the labels, title, grid and `tight_layout`. Keeping the legend (and the `label=`s) is what tells you which curve is which.\n",
    "4. $t_\\text{drain} = 2\\sqrt{h_0}/c$ grows like $\\sqrt{h_0}$, so doubling the depth multiplies the time by $\\sqrt{2} \\approx 1.41$: from about 127.7 s to about 180.6 s. Twice the water, but it comes out faster at the start because the pressure is higher.\n",
    "\n",
    "\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fwwy",
   "metadata": {
    "marimo": {
     "config": {
      "hide_code": true
     },
     "md_prefix": "r"
    }
   },
   "source": [
    "## Lines you can safely skim\n",
    "\n",
    "When you look at a lecture cell, these are bookkeeping, not mathematics:\n",
    "\n",
    "- **Styling**: `figsize`, `color`, `linewidth`, `linestyle`, `fontsize`, `alpha`, `grid`, `tight_layout`.\n",
    "- **`mo.vstack([slider1, slider2, fig])`**: just \"show the sliders, then the figure underneath\".\n",
    "- **`something_slider.value`**: the number the slider is currently set to. A line like `R_d = R_slider.value` just means \"R is whatever the slider says\".\n",
    "- **Names starting with `_`**, like `_fig`: a marimo convention for names used inside one cell only. Read `_fig` as `fig`.\n",
    "- **`def _(...):` and `return` around every cell**, if you ever open a notebook's `.py` file: marimo writes these for you. You never type them.\n",
    "\n",
    "What's left is usually a few lines: the inputs, the formula or the ODE, and `ax.plot`. Find those first.\n",
    "\n",
    "If something in a lecture still doesn't make sense, look it up in the [Python Basics reference guide](https://math4120.pages.dev/static/python_basics_guide.html), or ask in the lab: that's what it's for."
   ]
  }
 ],
 "metadata": {
  "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.3"
  },
  "marimo": {
   "app_config": {
    "app_title": "Python Basics — Practice",
    "width": "medium"
   },
   "marimo_version": "0.25.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
