{ "cells": [ { "cell_type": "markdown", "id": "c2c5c691-1277-4f3f-bc5d-c2961ae90e73", "metadata": {}, "source": [ "MCS 320 Quiz 4 Friday 5 July 2024" ] }, { "cell_type": "markdown", "id": "90882db2-a158-47a6-9876-ac0aee37e0a6", "metadata": {}, "source": [ "# Question 1" ] }, { "cell_type": "markdown", "id": "f3e897a8-46bd-4ed3-8311-76fc25725b39", "metadata": {}, "source": [ "Define the following piecewise function\n", "$$\n", " f(x) = \\left\\{\n", "\t\t \\begin{array}{ccl}\n", " 0 & \\mbox{ if } & x \\leq 0 \\\\\n", " x^2 & \\mbox{ if } & x > 0.\n", " \\end{array}\n", " \\right.\n", "$$\n", "Compute the derivative of $f$." ] }, { "cell_type": "markdown", "id": "da4ddbf9-e061-42c7-b41a-a3f76930120c", "metadata": {}, "source": [ "## answer to question 2" ] }, { "cell_type": "code", "execution_count": 1, "id": "5569ffdc-b3db-46f4-ae48-be19937350e8", "metadata": {}, "outputs": [], "source": [ "f(x) = piecewise([((-infinity, 0), 0), ((0, 0), 0), ((0, infinity), x^2)])" ] }, { "cell_type": "markdown", "id": "ca810f62-cb8d-4ff5-89d5-a344c47acf43", "metadata": {}, "source": [ "Just to check, we plot the function." ] }, { "cell_type": "code", "execution_count": 2, "id": "d98f9d3c-3d55-42e9-93f9-866d891bb980", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAHUCAYAAAC+g8X7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8cElEQVR4nO3deVxVdf7H8Tfjgk7qNS0QkxSrwdQWQ0xKK6UwLSfLNnNM2zGXzJxK/c1U0/SgGitLyaUMRUxbLm5pjlYCTmJqYVouWWNiBJlNglqB4Pn9cUYmEpDl3vu9957X8/E4j7qHczjvex6H5jPf811CLMuyBAAAgIDzO9MBAAAAUDcUcgAAAAGKQg4AACBAUcgBAAAEKAo5AACAAEUhBwAAEKAo5AAAAAIUhRwAR7AsS0VFRWLqTADBhEIOgCMcOnRILpdLhw4dMh0FADyGQg4AACBAUcgBAAAEKAo5AACAAEUhBwAAEKAo5AAYlZSUpJCQEI0bN67a4zIzMxUTE6MmTZqoY8eOmjlzpm8CAoAfo5ADYMymTZs0e/ZsnX/++dUet2fPHg0YMEC9e/dWTk6OJk2apLFjx8rtdvsoKQD4Jwo5AEYcPnxYQ4cO1SuvvKJTTz212mNnzpypM888U1OnTtW5556ru+++W3feeaemTJnio7QAUD+7d0u//OL530shB8CIUaNG6ZprrtGVV1550mOzs7OVkJBQYV+/fv20efNmHT16tNJziouLVVRUVGEDAFNuuEEaOdLzv5dCDoDPLVq0SJ988omSkpJqdHxBQYHCw8Mr7AsPD1dpaakOHDhQ6TlJSUlyuVzlW2RkZL1zA0BdbNsmffaZXcx5GoUcAJ/at2+fHnjgAaWlpalJkyY1Pi8kJKTC5+NLbf12/3ETJ05UYWFh+bZv3766hwaAeli4UDr1VKlfP8//7oae/5UAULWPP/5Y+/fvV0xMTPm+srIyZWVlafr06SouLlaDBg0qnNOmTRsVFBRU2Ld//341bNhQrVu3rvQ6oaGhCg0N9fwXAIBasCy7kLvxRqlxY8//fgo5AD4VHx+vbdu2Vdh3xx13qFOnTnrkkUdOKOIkKS4uTsuXL6+wb/Xq1erevbsaNWrk1bwAUB8bNkhffy0NGeKd308hB8Cnmjdvrq5du1bYd8opp6h169bl+ydOnKi8vDylpqZKkhITEzV9+nSNHz9e99xzj7KzszVnzhwtXLjQ5/kBoDYWLpQiIqTLLvPO76ePHAC/k5+fr9zc3PLPUVFRWrlypTIyMnThhRfqySef1EsvvaTBgwcbTAkA1Sstld58U7rlFqmSlw0eEWId7zEMAEGsqKhILpdLhYWFatGihek4ABzgvfekq66SNm6UYmO9cw1a5AAAALzg9dels86Sunf33jUo5AAAADysuFhKT7cHOVQxS5JHUMgBAAB42MqVUmGh90arHkchByCoJScnq3Pnzor1VgcVAKjEggXShRdKnTt79zoMdgDgCAx2AOArhYVSeLj0979LEyZ491q0yAEAAHiQ2y2VlHj/tapEIQcAAOBRr78uXXGFdMYZ3r8WhRwAAICHfPut9MEH0tChvrkehRwAAICHLFokNWok+WrhGQo5AAAAD1mwQLr2WqllS99cj0IOAADAA3bulD75xHevVSUKOQAAAI9YsEByuaQBA3x3TQo5AACAerIse7Tq4MFSkya+uy6FHICgxsoOAHzho4+kf//bt69VJVZ2AOAQrOwAwJvGjJHS06XcXKlBA99dlxY5AACAejh6VHrjDXslB18WcRKFHAAAQL289570/fe+f60qUcgBAADUy4IF0rnnShde6PtrU8gBAADU0ZEj0pIldmtcSIjvr08hBwAAUEdLl9rF3G23mbk+hRwAAEAdvf66dMklUlSUmetTyAEAANTB/v3SP/9pZpDDcRRyAAAAdbBokd0v7pZbzGWgkAMAAKiD+fOla66RWrc2l4FCDkBQY4kuAN6wY4e0ebM0bJjZHCzRBcARWKILgCdNmiTNnCnl50uhoeZy0CIHAABQC8eOSWlpdt84k0WcRCEHAABQK5mZ0r590u23m05CIQcAAFArqanS2WdLPXuaTkIhBwAAUGM//SS9/bY9yMHEkly/RSEHAABQQ0uWSIcPS3/6k+kkNgo5AACAGpo/X7r0UqljR9NJbBRyAAAANZCfL61e7R+DHI6jkAMAAKiBhQulhg2lm24yneR/KOQABDVWdgDgKamp0h//KJ16qukk/8PKDgAcgZUdANTH1q3SBRdIS5faxZy/oEUOAADgJObPl047Tbr6atNJKqKQAwAAqEZZmbRggXTrrVLjxqbTVEQhBwAAUI3337dHrPrTaNXjKOQAAACqMX++FB0tde9uOsmJKOQAAACqcPiwlJ5u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", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(f, (x, -2, 2))" ] }, { "cell_type": "markdown", "id": "4f732d6a-3b6c-4bd6-97cd-791e70e72d54", "metadata": {}, "source": [ "Now we compute the derivative." ] }, { "cell_type": "code", "execution_count": 3, "id": "dfa63dd8-601b-44d2-b818-ae126797095a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "piecewise(x|-->0 on (-oo, 0), x|-->2*x on (0, +oo); x)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diff(f(x),x)" ] }, { "cell_type": "markdown", "id": "50eb6070-009c-4a36-a668-ef464bfdeca2", "metadata": {}, "source": [ "which is again a piecewise function, as expected." ] }, { "cell_type": "markdown", "id": "fbe8ce18-b8ef-464a-9193-4073b36de8e2", "metadata": {}, "source": [ "# Question 2" ] }, { "cell_type": "markdown", "id": "e2ab7a05-407e-45ac-972f-c55241c069eb", "metadata": {}, "source": [ "Use the recursion $p_n = 2 p_{n-1} - p_{n-2} + 3$, for $n > 1$,\n", "with $p(0) = 1$, $p(1) = 5$ to define a function `P`\n", "which takes on input $n$ and which returns $p_n$.\n", " \n", "Make sure your function can compute $p_{100}$." ] }, { "cell_type": "markdown", "id": "89ecc035-1ae8-4868-a62e-028dab547d9d", "metadata": {}, "source": [ "## answer to question 2" ] }, { "cell_type": "code", "execution_count": 4, "id": "425de3bd-5abc-4fee-a240-44d9e023a3ca", "metadata": {}, "outputs": [], "source": [ "def P(n, D={}):\n", " \"\"\"\n", " Memoized version of the recursive p.\n", " \"\"\"\n", " if n in D:\n", " return D[n]\n", " else:\n", " if n == 0:\n", " result = 1\n", " elif n == 1:\n", " result = 5\n", " else:\n", " result = 2*P(n-1) - P(n-2) + 3\n", " D[n] = result\n", " return result" ] }, { "cell_type": "code", "execution_count": 5, "id": "8e7b36da-a038-4fbe-abcc-f45778cf9254", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 5, 12, 22, 35, 51, 70, 92, 117, 145]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[P(k) for k in range(10)]" ] }, { "cell_type": "code", "execution_count": 6, "id": "710e0d78-f954-4693-a8bd-bf78c3cd0d69", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15251" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P(100)" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 10.3", "language": "sage", "name": "sagemath" }, "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.14" } }, "nbformat": 4, "nbformat_minor": 5 }