508 lines
65 KiB
Plaintext
508 lines
65 KiB
Plaintext
{
|
|
"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",
|
|
" 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",
|
|
" 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",
|
|
" # Let's check whether f is callable.\n",
|
|
" # TODO: Improve checks on f, or not.\n",
|
|
" assert callable(f)\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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\n",
|
|
"text/plain": [
|
|
"<Figure size 1152x432 with 3 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"fig, ax = plt.subplots(1, 3, sharex=True, sharey=True, figsize=(16,6))\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
|
|
}
|