{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Basic Numerical Integration: the Trapezoid Rule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A simple illustration of the trapezoid rule for definite integration:\n", "\n", "$$\n", "\\int_{a}^{b} f(x)\\, dx \\approx \\frac{1}{2} \\sum_{k=1}^{N} \\left( x_{k} - x_{k-1} \\right) \\left( f(x_{k}) + f(x_{k-1}) \\right).\n", "$$\n", "
\n", "First, we define a simple function and sample it between 0 and 10 at 200 points" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def f(x):\n", " return (x-3)*(x-5)*(x-7)+85\n", "\n", "x = np.linspace(0, 10, 200)\n", "y = f(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Choose a region to integrate over and take only a few points in that region" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a, b = 1, 8 # the left and right boundaries\n", "N = 5 # the number of points\n", "xint = np.linspace(a, b, N)\n", "yint = f(xint)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot both the function and the area below it in the trapezoid approximation" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n", "VenRo0d9fb3vjh07kuvq6rKXLl36575eS6lzMewTurXe+acjW35oDH1eHlX1XXV1dRZAenr6gC1I\n", "VVJSstrr9R5/4403Ll66dOkvO4//Pl1sbGzLggULHnzsscduaW/v/Re45uZm9x//+McbFy9efF93\n", "91NqIIyEPvRLgQnAQeABh2NRthMnTowCyM/PH7AW+mWXXfYW0OPp8TNmzNh18uTJNU8++eTCa665\n", "5tXe3POJJ564ePr06S9OnDjR8b1R1cgzrBO63TrvWLPlx8bQ7GQ86pT6+vpRLperZdKkSQO+hsu5\n", "KCsr+wTrwXmvXH/99X/UlrlyynDvclkAzASqgXscjkXZdu3alRQMBr1xcXG7hlvyG25/HjW0DPeE\n", "/k/26/8YQ72jkahPbdu2LRcgLS1ts9OxKDWcDNuELsJE4K+ABuB/z1JdDaJDhw7lARQWFmpCV6of\n", "DduEDvyd/XqfMVR3W1MNqpqamrFut7tp6tSpu52ORanhZFgmdBGygRuAduAnDoejOjl58mTkiRMn\n", "xiQlJW0MNWtTKdV7wzKhA18FIoEnjWHn2SqrwfPOO+8EjDEReXl5652ORanhplcJXURyROQ1EflE\n", "RDaIyFft40kislpEtorIyyKS0L/h9iQ24oAv28X/Guz7q8/6zW9+c92PfvSjb7W2troAtmzZcp7b\n", "7W5YsGBBl7M2lVK909sWeivwdWPMeGAW8BURKcFaL2W1MaYIeJVT66cMptuAOGCNMbzjwP1VJ0eP\n", "Hi1pb2+Pamtrc+3evTuxqqpqan5+/isda3srpfpPryYWGWMOA4ft9/UisgnIBpYC8+1qDwAVDGJS\n", "FyES+Jpd/M/Buq/qWmJi4nav13uiurra/9RTTy33er2VV1999UtOx6XUcNTnmaIikgdMAd4B0o0x\n", "HSvnVQLpfb3+OboKa/PnLcBzg3xvFcIVV1zxh0ceeeQL991334UJCQlbli1bdnd0dHTI3YlaW1td\n", "jz322KUxMTG1wWAw4tChQ4ElS5b8rqCg4Ohgx63UUNSnhC4iMcCTwB3GmDqRU/vsGmOMiIQcxSAi\n", "d3UqVhhjKvoSRyd32K8/1SVyw0NaWtrJr33ta3f3pO7KlStvTEpKOnDllVf++eDBg7H33nvvlaNG\n", "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(x, y, lw=2)\n", "plt.axis([0, 9, 0, 140])\n", "plt.fill_between(xint, 0, yint, facecolor='gray', alpha=0.4)\n", "plt.text(0.5 * (a + b), 30,r\"$\\int_a^b f(x)dx$\", horizontalalignment='center', fontsize=20);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the integral both at high accuracy and with the trapezoid approximation" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The integral is: 565.2499999999999 +/- 6.275535646693696e-12\n", "The trapezoid approximation with 5 points is: 559.890625\n" ] } ], "source": [ "from __future__ import print_function\n", "from scipy.integrate import quad\n", "integral, error = quad(f, a, b)\n", "integral_trapezoid = sum( (xint[1:] - xint[:-1]) * (yint[1:] + yint[:-1]) ) / 2\n", "print(\"The integral is:\", integral, \"+/-\", error)\n", "print(\"The trapezoid approximation with\", len(xint), \"points is:\", integral_trapezoid)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.4.2" } }, "nbformat": 4, "nbformat_minor": 0 }