{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Numerical integration\n",
"\n",
"The antiderivative of $e^x$ is, of course, itself. That makes evaluation of $\\int_0^1 e^x\\,dx$ by the Fundamental Theorem trivial."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using FundamentalsNumericalComputation"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.718281828459045"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"exact = exp(1)-1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Julia package `QuadGK` has a good all-purpose numerical integrator that estimates the value numerically without finding the antiderivative first. As you can see here, it's often just as accurate."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Q = 1.718281828459045\n"
]
}
],
"source": [
"Q,errest = quadgk(x->exp(x),0,1)\n",
"@show Q;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The numerical approach is far more robust. For example, $e^{\\sin x}$ has no useful antiderivative. But numerically it's no more difficult."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Q = 1.6318696084180515\n"
]
}
],
"source": [
"Q,errest = quadgk(x->exp(sin(x)),0,1)\n",
"@show Q;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you look at the graphs of these functions, what's remarkable is that one of these areas is the most basic calculus while the other is almost impenetrable analytically. From a numerical standpoint, they are practically the same problem."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
],
"text/plain": [
"Plot{Plots.GRBackend() n=2}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot([exp,x->exp(sin(x))],0,1,fill=0,leg=:none,\n",
" ylabel=[\"exp(x)\" \"exp(sin(x))\"],ylim=[0,2.7],layout=(2,1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia (faststart)",
"language": "julia",
"name": "julia-fast"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.4.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}