{"cells": [{"cell_type": "markdown", "metadata": {"tags": ["module-nm"]}, "source": ["(nm_num_integration)=\n", "# Numerical integration\n", "[Numerical Methods](module-nm) \n", "```{index} Numerical integration\n", "```\n", "\n", "Numerical integration involves finding the integral of a function. While [SymPy](https://www.sympy.org/en/index.html) can be used to do analytical integration, there are many functions for which finding an analytical solution to integration is very difficult, and numerical integration is used instead. \n", "\n", "To understand how to perform numerical integration, we first need to understand what exactly is the purpose of integration. For a 1D function, integration means finding the area underneath the curve. However, integration can also be extended for a 2D function and even a 3D function. \n", "\n", "[Quadrature](https://en.wikipedia.org/wiki/Numerical_integration) is the term used for numerical evaluation of a *definite* (i.e. over a range $[a,b]$) integral, or in 1D finding the area under a curve. \n", "\n", "
\n", "\n", "Source: [Wikipedia](https://upload.wikimedia.org/wikipedia/commons/f/f2/Integral_as_region_under_curve.svg)\n", "\n", "\n", "```{admonition} Wondered why the symbol of integration looks like this $\\int$?\n", "The symbol of integration actually comes from the cursive of capital letter $S$, meaning summation. But why would it come from the idea of summation? Well, integration is very much related to summation. \n", "```\n", "\n", "We know that for a 1D function, which will be our primary topic of discussion today, if we evaluate an integral, we find the area under the function, as illustrated in the figure above. If your curve was a straight line (remember, straight lines are but a subset of curves which has no curves), then it would be rather straightforward to calculate the area under the curve, since you would either have a rectangle if your line was a horizontal straight line, or a trapezoid if your line was not a horizontal straight line. Yet, what happens if your line got a bunch of bend and curves? \n", "\n", "For example, we could have a very simple equation like\n", "\n", "$$f(x) = \\sin(x) +5.$$\n", "\n", "This equation is a sinusoidal function, of much more complicated shape that is not as easy to get the area through a rectangle or a trapezoid. Therefore, integration comes in to help you find the area. But how does the integration actually get you the area underneath the curve?\n", "\n", "Well, what integration essentially does is basically breaking the area into smaller and smaller parts, evaluating the area of each part, and then summing each small part together. The small part of the area can be approximated to be a rectangle, a trapezoid, or some other weird shape if you find it suitable.\n", "\n", "A very simple example, using rectangles are shown below: \n", "\n", "\n", "\n", "Source: [Wikipedia](https://upload.wikimedia.org/wikipedia/commons/2/28/Riemann_integral_regular.gif)\n", "\n", "```{margin} Note\n", "It should also be noted that although the example shown uses rectangular slices, it is not neccesary to use rectangular slices. It is not even neccessary to use slices that are of the the same width. Even if you used slices with different width, and which are not rectangles, like trapezoids for example, you could still make the slices increasingly thinner so that the summation of the area under the slices comes closer and closer to the area underneath the curve, until the slices become infinitely thin, and the summed area of slices becomes essentially equal to the area under the curve. \n", "```\n", "As each rectangle slice becomes thinner and thinner, the summed area from the rectangles become more and more closely fitting to the area under the curve. It should be understood that if the rectangle slice becomes infinitely thin, then the summed area from the rectangle would become so close to the area underneath the curve that the two would be essentially the same. You may find the mathematics for the Riemann integral on [Wikipedia](https://en.wikipedia.org/wiki/Riemann_integral). Of course, integration has come a long way since the Riemann integral, and other integrals were developed to deal with the deficiencies with the Riemann integral.\n", "\n", "The choice of approximation method, as well as the size of the intervals, will control the error. Better methods as well as smaller (i.e. more to cover our total interval of interest: $[a,b]$) sub-intervals will lead to lower errors, but will generally cost more to compute.\n", "\n", "Here the following quadrature methods will be covered in the context of a simple function:\n", "\n", "* Midpoint rule (also known as the rectangle method)\n", "* Trapezoid rule\n", "* Simpson's rule\n", "* Composite Simpson's rule\n", "* Weddle's rule.\n", "\n", "## Example\n", "\n", "Let's begin with a simple function to demonstrate some of the most basic methods for performing numerical integration:\n", "\n", "$$f\\left ( x \\right ) := \\sin \\left ( x \\right ),$$\n", "\n", "and assume that we want to know what the area under the, $\\sin$ function between 0 and $\\pi$, i.e. $[a,b]=[0,\\pi]$.\n", "\n", "The indefinite integral (or anti-derivative) of $\\sin \\left ( x \\right )$ is of course $-\\cos \\left ( x \\right )$ (plus a constant of integration, $C$, which we can simply ignore as we saw above as it drops out as soon as we perform a *definite* integral).\n", "\n", "Since we know the indefinite integral exactly in this case, we can perform the definite integration (i.e. find the area under the curve) ourselves exactly by hand:\n", "\n", "$$I := \\int_{0}^{\\pi} \\sin \\left ( x \\right ) = \\left [ -\\cos\\left ( x \\right )+ C \\right ]_{0}^{\\pi} =-\\cos\\left ( \\pi \\right ) - (-\\cos\\left ( 0 \\right )) =-\\cos\\left ( \\pi \\right ) + \\cos\\left ( 0 \\right ) = -(-1) + 1 = 2.$$\n", "\n", "We included the constant $C$ here to just to emphasise again the fact that it's present doesn't matter - we can just not write it down in this type of expression.\n", "\n", "Let's start by plotting the function between these points."]}, {"cell_type": "code", "execution_count": 68, "metadata": {"tags": ["hide-input"]}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["