{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "4ec40081b048ce2f34f3f4fedbb0be10", "grade": false, "grade_id": "cell-98f724ece1aacb67", "locked": true, "schema_version": 3, "solution": false, "task": false } }, "source": [ "# CDS: Numerical Methods Assignments\n", "\n", "- See lecture notes and documentation on Brightspace for Python and Jupyter basics. If you are stuck, try to google or get in touch via Discord.\n", "\n", "- Solutions must be submitted via the Jupyter Hub.\n", "\n", "- Make sure you fill in any place that says `YOUR CODE HERE` or \"YOUR ANSWER HERE\".\n", "\n", "## Submission\n", "\n", "1. Name all team members in the the cell below\n", "2. make sure everything runs as expected\n", "3. **restart the kernel** (in the menubar, select Kernel$\\rightarrow$Restart)\n", "4. **run all cells** (in the menubar, select Cell$\\rightarrow$Run All)\n", "5. Check all outputs (Out[\\*]) for errors and **resolve them if necessary**\n", "6. submit your solutions **in time (before the deadline)**" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "team_members = \"Koen Vendrig, Kees van Kempen\"" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "177d489a4104e3c95a4de1a4c7768c01", "grade": false, "grade_id": "cell-1e89a94d71771bb6", "locked": true, "schema_version": 3, "solution": false, "task": false } }, "source": [ "## Composite Numerical Integration: Trapezoid and Simpson Rules\n", "\n", "In the following we will implement the composite trapezoid and Simpson rules to calculate definite integrals. These rules are defined by\n", "\n", "\\begin{align}\n", "\t\\int_a^b \\, f(x)\\, dx &\\approx \\frac{h}{2} \\left[ f(a) + 2 \\sum_{j=1}^{n-1} f(x_j) + f(b) \\right] \n", " &\\text{trapezoid} \\\\\n", " &\\approx \\frac{h}{3} \\left[ f(a) + 2 \\sum_{j=1}^{n/2-1} f(x_{2j}) + 4 \\sum_{j=1}^{n/2} f(x_{2j-1}) + f(b) \\right]\t \n", " &\\text{Simpson}\n", "\\end{align}\n", " \n", "with $a = x_0 < x_1 < \\dots < x_{n-1} < x_n = b$ and $x_k = a + kh$. Here $k = 0, \\dots, n$ and $h = (b-a) / n$ is the step size." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "deletable": false, "nbgrader": { "cell_type": "code", "checksum": "a60a63e0450a3157dd421b394288f18a", "grade": true, "grade_id": "cell-44d29c12deac7ed7", "locked": false, "points": 0, "schema_version": 3, "solution": true, "task": false } }, "outputs": [], "source": [ "import numpy as np\n", "import scipy.integrate\n", "from matplotlib import pyplot as plt\n", "\n", "# And for printing the lambdas:\n", "import inspect" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "e11bb7c15d840e7a9397f209769ebb66", "grade": false, "grade_id": "cell-ce9a56067e726f36", "locked": true, "schema_version": 3, "solution": false, "task": false } }, "source": [ "### Task 1\n", "\n", "Implement both integration schemes as Python functions $\\text{trapz(yk, dx)}$ and $\\text{simps(yk, dx)}$. The argument $\\text{yk}$ is an array of length $n+1$ representing $y_k = f(x_k)$ and $\\text{dx}$ is the step size $h$. Compare your results with Scipy's functions $\\text{scipy.integrate.trapz(yk, xk)}$ and $\\text{scipy.integrate.simps(yk, xk)}$ for a $f(x_k)$ of your choice.\n", "\n", "Try both even and odd $n$. What do you see? Why?\n", "\n", "Hint: go to the Scipy documentation. How are even and odd $n$ handled there?" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "deletable": false, "nbgrader": { "cell_type": "code", "checksum": "2bc6bd3985c2b7ab4ab051ebe94496f9", "grade": true, "grade_id": "cell-59f0de06f77dce3e", "locked": false, "points": 6, "schema_version": 3, "solution": true, "task": false } }, "outputs": [], "source": [ "def trapz(yk, dx):\n", " \"\"\"\n", " Return integration estimate for curve yk with steps dx\n", " using the trapezoid algorithm.\n", " \"\"\"\n", " \n", " a, b = yk[0], yk[-1]\n", " h = dx\n", " integral = h/2*(a + 2*np.sum(yk[1:-1]) + b)\n", " return integral\n", " \n", "def simps(yk, dx):\n", " \"\"\"\n", " Return integration estimate for curve yk with steps dx\n", " using Simpson's algorithm.\n", " \"\"\"\n", " \n", " a, b = yk[0], yk[-1]\n", " h = dx\n", " # Instead of summing over something with n/2, we use step size 2,\n", " # thus avoiding any issues with 2 ∤ n.\n", " integral = h/3*(a + 2*np.sum(yk[2:-1:2]) + 4*np.sum(yk[1:-1:2]) + b)\n", " return integral" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def compare_integration(f, a, b, n):\n", " \"\"\"\n", " Prints an analysis of integration estimates to function f(x)\n", " over interval [a,b] in n steps using both the trapezoid and Simpson's\n", " algorithm, self-implemented and Scipy implemented.\n", " \"\"\"\n", " \n", " h = (b - a)/n\n", " xk = np.linspace(a, b, n + 1)\n", " yk = f(xk)\n", " \n", " print(\"For function\", inspect.getsource(f))\n", " print(\"for boundaries a =\", a, \", b =\", b, \"and steps n =\", n, \"the algorithms say:\")\n", " print(\"trapezoid:\\t\\t\", trapz(yk, h))\n", " print(\"Simpson:\\t\\t\", simps(yk, h))\n", " print(\"scipy.integrate.trapz:\\t\", scipy.integrate.trapz(yk, xk))\n", " print(\"scipy.integrate.simps:\\t\", scipy.integrate.simps(yk, xk))\n", " print()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "deletable": false, "nbgrader": { "cell_type": "code", "checksum": "9599217f233689affb19148157e62b41", "grade": true, "grade_id": "cell-ff04b1d785ea895f", "locked": false, "points": 1, "schema_version": 3, "solution": true, "task": false } }, "outputs": [], "source": [ "# We need a function to integrate, so here we go.\n", "f = lambda x: x**2\n", "\n", "n = 100001\n", "a, b = 0, 1" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For function f = lambda x: x**2\n", "\n", "for boundaries a = 0 , b = 1 and steps n = 100001 the algorithms say:\n", "trapezoid:\t\t 0.33333333334999976\n", "Simpson:\t\t 0.3333300000666658\n", "scipy.integrate.trapz:\t 0.33333333334999965\n", "scipy.integrate.simps:\t 0.3333333333333335\n", "\n", "For function f = lambda x: x**2\n", "\n", "for boundaries a = 0 , b = 1 and steps n = 100002 the algorithms say:\n", "trapezoid:\t\t 0.3333333333499994\n", "Simpson:\t\t 0.33333333333333337\n", "scipy.integrate.trapz:\t 0.3333333333499993\n", "scipy.integrate.simps:\t 0.3333333333333333\n", "\n" ] } ], "source": [ "compare_integration(f, a, b, n)\n", "compare_integration(f, a, b, n + 1)" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "f3a2f1f2b9ba3ffeb8646c346797d95a", "grade": false, "grade_id": "cell-1a7e33464e3be83b", "locked": true, "schema_version": 3, "solution": false, "task": false } }, "source": [ "### Task 2\n", "\n", "Implement at least one test function for each of your integration functions." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "deletable": false, "nbgrader": { "cell_type": "code", "checksum": "c3b7ee0d3ced97054590e89bba97e031", "grade": true, "grade_id": "cell-d8f2e0aa55860e08", "locked": false, "points": 6, "schema_version": 3, "solution": true, "task": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For function f(x) = x^3 + 6x\n", "for boundaries a = 2 , b = 16 and steps n = 82198 the algorithms say:\n", "trapezoid:\t\t 1362.6666667343538\n", "scipy.integrate.trapz:\t 1362.6666667343543\n", "with difference trapz(yk, h) - scipy.integrate.trapz(yk, xk) = -4.547473508864641e-13\n", "\n", "For function f(x) = -x^3 + 6x\n", "for boundaries a = 2 , b = 17 and steps n = 82228 the algorithms say:\n", "Simpson:\t\t 1635.0\n", "scipy.integrate.simps:\t 1635.0000000000002\n", "with difference simps(yk, h) - scipy.integrate.simps(yk, xk) = -2.2737367544323206e-13\n", "\n" ] } ], "source": [ "# In the comparison of n even and n odd, and the testing of the integrations,\n", "# we have already tested the functions, but as it is asked, here we go again.\n", "\n", "def test_trapz():\n", " fun = lambda x: x**3 + 6*x\n", " a, b = 2, 16\n", " n = 82198\n", " \n", " h = (b - a)/n\n", " xk = np.linspace(a, b, n + 1)\n", " yk = f(xk)\n", "\n", " trapz_our = trapz(yk, h)\n", " trapz_scipy = scipy.integrate.trapz(yk, xk)\n", " \n", " print(\"For function f(x) = x^3 + 6x\")\n", " print(\"for boundaries a =\", a, \", b =\", b, \"and steps n =\", n, \"the algorithms say:\")\n", " print(\"trapezoid:\\t\\t\", trapz_our)\n", " print(\"scipy.integrate.trapz:\\t\", trapz_scipy)\n", " print(\"with difference trapz(yk, h) - scipy.integrate.trapz(yk, xk) =\", trapz_our - trapz_scipy)\n", " print()\n", " \n", "def test_simps():\n", " fun = lambda x: -x**3 + 6*x\n", " a, b = 2, 17\n", " n = 82228\n", " \n", " h = (b - a)/n\n", " xk = np.linspace(a, b, n + 1)\n", " yk = f(xk)\n", "\n", " simps_our = simps(yk, h)\n", " simps_scipy = scipy.integrate.simps(yk, xk)\n", " \n", " print(\"For function f(x) = -x^3 + 6x\")\n", " print(\"for boundaries a =\", a, \", b =\", b, \"and steps n =\", n, \"the algorithms say:\")\n", " print(\"Simpson:\\t\\t\", simps_our)\n", " print(\"scipy.integrate.simps:\\t\", simps_scipy)\n", " print(\"with difference simps(yk, h) - scipy.integrate.simps(yk, xk) =\", simps_our - simps_scipy)\n", " print()\n", " \n", "test_trapz()\n", "test_simps()" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "ead1d68798b82e5c9c5dba354a255abb", "grade": false, "grade_id": "cell-71d20f6b94c6ed05", "locked": true, "schema_version": 3, "solution": false, "task": false } }, "source": [ "### Task 3\n", "\n", "Study the accuracy of these integration routines by calculating the following integrals for a variety of step sizes $h$:\n", "\n", "- $\\int_0^1 \\, x\\, dx$\n", "- $\\int_0^1 \\, x^2\\, dx$\n", "- $\\int_0^1 \\, x^\\frac{1}{2}\\, dx$\n", "\n", "The integration error is defined as the difference (not the absolute difference) between your numerical results and the exact results. Plot the integration error as a function of $h$ for both integration routines and all listed functions. Comment on the comparison between both integration routines. Does the sign of the error match your expectations? Why?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "deletable": false, "nbgrader": { "cell_type": "code", "checksum": "90eaf3d9beb2347589518aba4e8ad3c4", "grade": true, "grade_id": "cell-b0bb51b7eae7769b", "locked": false, "points": 4, "schema_version": 3, "solution": true, "task": false } }, "outputs": [], "source": [ "f1 = lambda x: x\n", "f2 = lambda x: x**2\n", "f3 = lambda x: x**(1/2)\n", "\n", "a, b = 0, 1\n", "h_list = np.logspace(-3, 1, 50)\n", "\n", "f1_simps = np.zeros(len(h_list))\n", "f1_trapz = np.zeros(len(h_list))\n", "f2_simps = np.zeros(len(h_list))\n", "f2_trapz = np.zeros(len(h_list))\n", "f3_simps = np.zeros(len(h_list))\n", "f3_trapz = np.zeros(len(h_list))\n", "\n", "for i in range(len(h_list)):\n", " h = h_list[i]\n", " xk = np.arange(a, b, h)\n", " n = len(xk)\n", " \n", " # The repetition could be reduced, but we deem that unnecessary.\n", " f1_simps[i] = simps(f1(xk), h)\n", " f1_trapz[i] = trapz(f1(xk), h)\n", " f2_simps[i] = simps(f2(xk), h)\n", " f2_trapz[i] = trapz(f1(xk), h)\n", " f3_simps[i] = simps(f2(xk), h)\n", " f3_trapz[i] = trapz(f1(xk), h)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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efzhD38A4K677uJjH/sYAM8//zxvfetbmT9/Ptddd914HhpJFcRap0qQH1HtoLt2UtyhKMHSWu/GdI2qpKF96YH/YOtf9hX1Nee+YTLX/+O8QbevXbuWLVu2sHnzZtavX88ll1zCli1b+qcDv/POO5k6dSqdnZ0sXLiQyy+/nObmZjo6OmhtbeXrX/86N9xwA1/60pe4+eab+chHPsK3vvUtTjvtNJ544gk++tGP8sgjj7B582YAHnjgAb761a/ytre9jU9/+tOcffbZ3HfffTzyyCNcddVV/fv1+cQnPsE111zDVVddxS233FLUYyMpHtY6a51GJ5PNMTkcIFd33PA7K3Zx1DpIb72zUZUq3LnnnnvEPatuuukm7r33XgBefvlltm3bRnNzM1VVVSxfvhyAFStWcNlll9He3s5vf/tbrrjiiv7f7+rq6l/etm0bq1ev5tFHH6W2tpbHHnuMH/3oRwBceOGF7Nq1i337jizov/nNb/r3ef/738+1115bmsQlpYq1TuUok+1hMgfITXDGX41cWuqdjapUQsP9D9l4aGxs7F9ev349v/zlL3n88cdpaGhgyZIlg97TKoRAT08PU6ZMed3/nAG0t7dz5ZVXcscddzBjxoyCYnKad6myWOsGZq3TcDLdOaaHDnrqvUa1HCSh1kF66p3XqEoVZtKkSezfv3/AbXv37uXYY4+loaGBZ555ht/97nf923p6eli3bh0AP/jBD3j729/O5MmTaWlp4Z577gEgiiKeeuopAD74wQ/ygQ98gMWLF/e/xuLFi/n+978P5AvntGnTmDz5yH98Fy1axA9/+EOA/n0lqVDWOlWCvll/g/dQ1RDSWu9sVKUK09zczKJFizjzzDNZvXr1EduWLl1Kd3c3c+bMYc2aNZx33nn92xobG3nyySc588wzeeSRR/jCF74A5AvOd77zHd785jczb948fvKTn/Diiy+ybt067rzzzv6L7jds2MAXv/hFNm7cyFlnncWaNWu4++67XxffN7/5TW655Rbmz5/Pjh07SnswJFUsa50qQaazk4nhIKF+StyhKMHSWu9CFEVFe7Fiam1tjTZs2BB3GFLBnn76aebMmRN3GAVramqivb097jCOMNCxDCFsjKKoNaaQSsJ6p3JkrSsea116/d8n/8jSB9/Oq+d/mekXfizucDSAcq11kLx6V2itc0RVkiRJikHPgT0AVE+cEmscUhLZqEoCSNT/uElSqVjrlCRR5x4AahqPjTcQVaRyr3c2qpIkSVIcMnsBqLVRlV7HRlWSJEmKQVVXvlGd0Dgl3kCkBLJRlSRJkmLQ16jWNDiiKh3NRlWSJEmKQfXBffkF76MqvY6NqlShvvzlLzNv3jzOOussFixYwBNPPMGHP/xhtm7dGndoklQ01jqVs5qD+8lSA7UT4w5FCZfGWlcTdwCSiu/xxx/npz/9KZs2baKuro7XXnuNgwcP8u1vfzvu0CSpaKx1Kne12X2008CxIcQdihIsrbXORlWqQK+88grTpk2jrq4OgGnTpgGwZMkSbrzxRlpbW2lqauKaa67hwQcfZMaMGXzlK1/hc5/7HC+99BLf+MY3WLZsGXfddRf33nsve/fuZceOHaxYsYLrr7+ejo4OrrzyStra2sjlcnz+859n+fLlPPzww3z2s5+lu7ubhQsXctttt1FXV8esWbNYuXIlDzzwANlslnvuuYczzjgjzkMkqQJY6yrTa399me3rro87jHHxpr0b6ahqwitUNZS01jobVamUfr4G/vrH4r7mCfPhP68dcpd3vvOd3HDDDcyePZuLL76Y5cuXc8EFFxyxT0dHBxdeeCFf+9rXeO9738t1113HQw89xNatW1m5ciXLli0D4Mknn2TLli00NDSwcOFCLrnkEl588UXe8IY38LOf/QyAvXv3kslkWLVqFQ8//DCzZ8/mqquu4rbbbuOTn/wkkC+qmzZt4tZbb+XGG2+s+P8FlFLFWmetK6LO9j2c/tov4g5j3Px56kXMjDsIjYy1blxrnY2qVIGamprYuHEjv/71r3n00UdZvnw5a9ceWQQnTJjA0qVLAZg/fz51dXXU1tYyf/58Xnjhhf793vGOd9Dc3AzAZZddxmOPPca73vUuPvOZz3Dttdfy7ne/m8WLF/PUU0/R0tLC7NmzAVi5ciW33HJLf0G77LLLADjnnHP48Y9/XOIjICkNrHWV6U2nzocv7og7jHFzbtwBKPHSWutsVKVSGuZ/yEqpurqaJUuWsGTJEubPn8/dd999xPba2lpC7zUxVVVV/aeTVFVV0d3d3b9fOOq6mRACs2fPZtOmTTz44INcd911XHTRRbznPe8ZMp6+16+urj7i9SVVAGtdP2udVMGsdf3Go9Y5669Ugf70pz+xbdu2/uebN2/mpJNOGtVrPfTQQ+zevZvOzk7uu+8+Fi1axF/+8hcaGhpYsWIFq1evZtOmTZx++um88MILPPvsswB873vfe91pKZJUTNY6SWmQ1lrniKpUgdrb2/n4xz/Onj17qKmp4dRTT+X222/nfe97X8Gvde6553L55ZfT1tbGihUraG1t5Re/+AWrV6+mqqqK2tpabrvtNurr6/nud7/LFVdc0X/R/dVXX12C7CQpz1onKQ3SWutCFEXj+oYj1draGm3YsCHuMKSCPf3008yZMyfuMIrirrvuYsOGDdx8882xvP9AxzKEsDGKotZYAioR653KkbWueKx1UnJZ64qn0Frnqb+SJEmSpETx1F9Jg1q1ahWrVq2KOwxJKilrnaQ0KLda54iqVAJJPaW+nHgMpeTz73TsPIZS8vl3OnajOYY2qlKR1dfXs2vXLovaGERRxK5du6ivr487FEmDsNaNnbVOSj5r3diNttZ56q9UZDNnzqStrY2dO3fGHUpZq6+vZ+bMmXGHIWkQ1rrisNZJyWatK47R1DobVanIamtraWlpiTsMSSopa52kNLDWxcdTfyVJkiRJiWKjKkmSJElKFBtVSZIkSVKihKTOYBVC2Am8WMCvTANe610+Btg7wPJong+3fqTbC91vOCPJdyS5jSbfQnIodr5D5TTafMvxsx3N85HGmcR8D18+KYqi44rwvolRYL3z+zH08mDvXW617ujXrPR8/S6/fjnttQ6K8/0oZF0h2wvdbzhx1nZr3eCSVOsKWVfI9kL3G06h3+XBa10URRXxA2w4bPn2gZZH83y49SPdXuh+xch3JLmNJt9Ccih2vkPlNNp8y/GzHc3zcs63WO9VCT9+PwrPfbT5xlnr0pav3+Xivlel/BTj+1HIuqR/P0ab/3BxWuvGL1+/y4W9X6We+vvAIMujeT7c+pFuL3S/QgyW70hyG02+heRQ7HyHymm0+ZbjZzua58OtH+n2QvcrxEi/y8rz+zHwe1VCrTv6NSs9X7/LpXuvSjCW70ch6wrZXuh+hRjvvwdrXXH2LfT1/C4PI7Gn/hYqhLAhiqLWuOMYL+ZbudKUK6Qv37FK2/Ey38qWpnzTlGuxpOmYpSlXMN9KVsxcK2lE9fa4Axhn5lu50pQrpC/fsUrb8TLfypamfNOUa7Gk6ZilKVcw30pWtFwrZkRVkiRJklQZKmlEVZIkSZJUAWxUJUmSJEmJYqMqSZIkSUqUim1UQwgnhxC+E0JYF3cs4yGE0BhCuDuEcEcI4b/FHc94SeHnfGnvZ/yvIYR3xh1PqYUQ5oQQvhVCWBdCuCbueJIohX8Dqax1kK7P2lqno6Xp+w/WurR81ta6oZVVoxpCuDOE8GoIYctR65eGEP4UQng2hLAGIIqi56Io+lA8kRZHIfkClwHroij678CycQ92FArMb0Dl9DkXKd/7ej/jq4HlpYx3rIqU79NRFF0NXAksKmW8SWKt619fEbUO0lXvrHX96611w7DW9a+31h2mXD5ra13/+tLVuiiKyuYHOB94C7DlsHXVwHbgZGAC8BQw97Dt6+KOezzyBf4JWNC7zw/ijr0E+c0HfnrUz/Ry+pyLnO//AN4Sd07jkS/5f6B/DvzXuHNK4rE7bHvi/waK9F0pu1o3ihzLut5Z66x1pTh2h21P9Pe/iN8Va13CP2trXelrXQ1lJIqifw8hzDpq9bnAs1EUPQcQQvgh8B5g6ziHV3QF5tsGzAQ2UyYj5YXkF0XRvwDvHucQi6oY+YYQArAW+HkURZtKHPKYFOvzjaLofuD+EMLPgB+UMOTEsNYBFVTrIF31zloHWOtGxFoHWOusdda6QZXNF38IbwRePux5G/DGEEJzCOFbwNkhhH+KJ7SSGDBf4MfA5SGE24AH4gisSAbLb0AV8DkXlC/wceBi4H0hhKtLGViJFPr5Lgkh3BRC+F/Ag6UOLuGsdZVV6yBd9c5aZ60bKWudta6cP2trXRFrXVmNqBYiiqJd5M/3ToUoijqAD8Qdx3hL4ed8E3BT3HGMlyiK1gPrYw4j0VL4N5DKWgfp+qytdTpamr7/YK0jJZ+1tW5olTCiugN402HPZ/auq1SVnm+l53c0863sfIspbccuDfmmIcc+acoV0pdvMaXt2KUh3zTk2CdNuUKJ862ERvX3wGkhhJYQwgTgvwD3xxxTKVV6vpWe39HMt7LzLaa0Hbs05JuGHPukKVdIX77FlLZjl4Z805BjnzTlCqXON+4ZpAqcber/AK8AWfLnQH+od/27gD+Tn3Xqn+OO03zNz3zTl6/HznzTnmMac01jvh478017jmnMNa58Q+8bSJIkSZKUCJVw6q8kSZIkqYLYqEqSJEmSEsVGVZIkSZKUKDaqkiRJkqREsVGVJEmSJCWKjaokSZIkKVFsVJVYIYRZIYQtccchSaVmvZOUBtY6FcJGVZIkSZKUKDaqSrrqEMIdIYT/CCH8WwhhYtwBSVKJWO8kpYG1TiNio6qkOw24JYqiecAe4PJ4w5GkkrHeSUoDa51GxEZVSfd8FEWbe5c3ArPiC0WSSsp6JykNrHUaERtVJV3XYcs5oCauQCSpxKx3ktLAWqcRsVGVJEmSJCWKjaokSZIkKVFCFEVxxyBJkiRJUj9HVCVJkiRJiWKjKkmSJElKFBtVSZIkSVKi2KhKkiRJkhLFRlWSJEmSlCg2qpIkSZKkRLFRlSRJkiQlio2qJEmSJClR/j90CcHQeGP+3gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 3, sharex=True, sharey=True, figsize=(16,6))\n", "\n", "fig.suptitle(\"Difference estimated integral minus true analytic value for three functions and two algorithms:\")\n", "\n", "ax[0].set_xlabel(\"h\")\n", "ax[1].set_xlabel(\"h\")\n", "ax[2].set_xlabel(\"h\")\n", "\n", "# We only need to set the scale and direction for one graph,\n", "# as we set sharex.\n", "ax[0].set_xscale(\"log\")\n", "ax[0].invert_xaxis()\n", "\n", "ax[0].set_title(r\"error in $\\int_0^1xdx$\")\n", "ax[0].plot(h_list, f1_trapz - 1/2, label=\"trapezoid\")\n", "ax[0].plot(h_list, f1_simps - 1/2, label=\"Simpson\")\n", "ax[0].legend(loc=\"lower right\")\n", "\n", "ax[1].set_title(r\"error in $\\int_0^1x^2dx$\")\n", "ax[1].plot(h_list, f2_trapz - 1/3, label=\"trapezoid\")\n", "ax[1].plot(h_list, f2_simps - 1/3, label=\"Simpson\")\n", "ax[1].legend(loc=\"lower right\")\n", "\n", "ax[2].set_title(r\"error in $\\int_0^1x^\\frac{1}{2}dx$\")\n", "ax[2].plot(h_list, f3_trapz - 2/3, label=\"trapezoid\")\n", "ax[2].plot(h_list, f3_simps - 2/3, label=\"Simpson\")\n", "ax[2].legend(loc=\"lower right\")\n", "\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Somehow, the shape of the error functions seems to be similar, with peaks a similar pattern, for the three functions and the the algorithms.\n", "The errors to the Simpson algorithm seems to be negative, thus the integration function gives lower estimates to the integrals.\n", "This cannot be said about the trapezoid algorithm.\n", "The trapezoid algorithms has the same trend, but becomes larger and positive in the latter two functions.\n", "For Simpson's algorithm, as desired, over the range of decreasing $h$, the error decreases converging to around zero" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }