{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a99f4209",
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Info: verify download of index files...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/MatrixDepot.jl:139\n",
"┌ Info: reading database\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:23\n",
"┌ Info: adding metadata...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:67\n",
"┌ Info: adding svd data...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:69\n",
"┌ Info: writing database\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:74\n",
"┌ Info: used remote sites are sparse.tamu.edu with MAT index and math.nist.gov with HTML index\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/MatrixDepot.jl:141\n"
]
}
],
"source": [
"using FundamentalsNumericalComputation\n",
"FNC.init_format()"
]
},
{
"cell_type": "markdown",
"id": "1d50d070",
"metadata": {},
"source": [
"(section-leastsq-fitting)=\n",
"# Fitting functions to data\n",
"\n",
"```{index} interpolation; by polynomials\n",
"```\n",
"\n",
"In {numref}`section-linsys-polyinterp` we saw how a polynomial can be used to interpolate data—that is, derive a continuous function that evaluates to give a set of prescribed values. But interpolation may not be appropriate in many applications.\n",
"\n",
"(demo-fitting-tempinterp)=\n",
"```{proof:demo}\n",
"```\n",
"\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%start demo%%\n",
"```\n",
"\n",
"Here are 5-year averages of the worldwide temperature anomaly as compared to the 1951–1980 average (source: NASA)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "fcc18381",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 2,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_2_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_2_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"year = 1955:5:2000\n",
"temp = [ -0.0480, -0.0180, -0.0360, -0.0120, -0.0040,\n",
" 0.1180, 0.2100, 0.3320, 0.3340, 0.4560 ]\n",
" \n",
"scatter(year,temp,label=\"data\",\n",
" xlabel=\"year\",ylabel=\"anomaly (degrees C)\",leg=:bottomright)"
]
},
{
"cell_type": "markdown",
"id": "45237834",
"metadata": {},
"source": [
"A polynomial interpolant can be used to fit the data. Here we build one using a Vandermonde matrix. First, though, we express time as decades since 1950, as it improves the condition number of the matrix."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f2730e28",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10-element Vector{Float64}:\n",
" -14.114000002897516\n",
" 76.36173811075241\n",
" -165.45597225538512\n",
" 191.9605667047853\n",
" -133.27347224857206\n",
" 58.0155777892561\n",
" -15.962888892063518\n",
" 2.694806349746933\n",
" -0.2546666667183191\n",
" 0.010311111113228591"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = @. (year-1950)/10\n",
"n = length(t)\n",
"V = [ t[i]^j for i in 1:n, j in 0:n-1 ]\n",
"c = V\\temp"
]
},
{
"cell_type": "markdown",
"id": "566d3592",
"metadata": {},
"source": [
"```{index} Julia; plotting functions\n",
"```\n",
"\n",
"\n",
"::::{panels}\n",
":column: col-7 left-side\n",
":card: border-0 shadow-none\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.5\\textwidth}\n",
"```\n",
"The coefficients in vector `c` are used to create a polynomial. Then we create a function that evaluates the polynomial after changing the time variable as we did for the Vandermonde matrix.\n",
"```{raw} latex\n",
"\\end{minipage}\\hfill\n",
"```\n",
"---\n",
":column: col-5 right-side\n",
":card: shadow-none comment\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.4\\textwidth}\\begin{mdframed}[default]\\small\n",
"```\n",
"If you `plot` a function, then the points are chosen automatically to make a smooth curve.\n",
"```{raw} latex\n",
"\\end{mdframed}\\end{minipage}\n",
"```\n",
"::::"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "118a44e0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 4,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_6_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_6_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"p = Polynomial(c)\n",
"f = yr -> p((yr-1950)/10)\n",
"plot!(f,1955,2000,label=\"interpolant\")"
]
},
{
"cell_type": "markdown",
"id": "04c84f78",
"metadata": {},
"source": [
"As you can see, the interpolant does represent the data, in a sense. However it's a crazy-looking curve for the application. Trying too hard to reproduce all the data exactly is known as _overfitting_.\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"\n",
"```{index} data fitting\n",
"```\n",
"\n",
"In many cases we can get better results by relaxing the interpolation requirement. In the polynomial case this allows us to lower the degree of the polynomial, which limits the number of local max and min points. Let $(t_i,y_i)$ for $i=1,\\ldots,m$ be the given points. We will represent the data by the polynomial\n",
"\n",
"```{math}\n",
":label: vanderls\n",
"y \\approx f(t) = c_1 + c_2t + \\cdots + c_{n-1} t^{n-2} + c_n t^{n-1},\n",
"```\n",
"\n",
"with $n\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%start demo%%\n",
"```\n",
"\n",
"\n",
"Here are the 5-year temperature averages again."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "034af5e7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10-element Vector{Float64}:\n",
" -0.048\n",
" -0.018\n",
" -0.036\n",
" -0.012\n",
" -0.004\n",
" 0.118\n",
" 0.21\n",
" 0.332\n",
" 0.334\n",
" 0.456"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"year = 1955:5:2000\n",
"t = @. (year-1950)/10\n",
"temp = [ -0.0480, -0.0180, -0.0360, -0.0120, -0.0040,\n",
" 0.1180, 0.2100, 0.3320, 0.3340, 0.4560 ]"
]
},
{
"cell_type": "markdown",
"id": "9dadc2e0",
"metadata": {},
"source": [
"```{index} Julia; \\\\\n",
"```\n",
"\n",
"::::{panels}\n",
":column: col-7 left-side\n",
":card: border-0 shadow-none\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.5\\textwidth}\n",
"```\n",
"The standard best-fit line results from using a linear polynomial that meets the least-squares criterion.\n",
"```{raw} latex\n",
"\\end{minipage}\\hfill\n",
"```\n",
"---\n",
":column: col-5 right-side\n",
":card: shadow-none comment\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.4\\textwidth}\\begin{mdframed}[default]\\small\n",
"```\n",
"Backslash solves overdetermined linear systems in a least-squares sense.\n",
"```{raw} latex\n",
"\\end{mdframed}\\end{minipage}\n",
"```\n",
"::::"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "49657545",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(V) = (10, 2)\n"
]
},
{
"data": {
"text/html": [
"-0.18773333333333328 + 0.11670303030303028∙x"
],
"text/latex": [
"$-0.18773333333333328 + 0.11670303030303028\\cdot x$"
],
"text/plain": [
"Polynomial(-0.18773333333333328 + 0.11670303030303028*x)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"V = [ t.^0 t ] # Vandermonde-ish matrix\n",
"@show size(V)\n",
"c = V\\temp\n",
"p = Polynomial(c)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "b64adbd9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 7,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_11_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_11_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"f = yr -> p((yr-1955)/10)\n",
"scatter(year,temp,label=\"data\",\n",
" xlabel=\"year\",ylabel=\"anomaly (degrees C)\",leg=:bottomright)\n",
"plot!(f,1955,2000,label=\"linear fit\")"
]
},
{
"cell_type": "markdown",
"id": "8201b878",
"metadata": {},
"source": [
"If we use a global cubic polynomial, the points are fit more closely."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "8f9afea6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(V) = (10, 4)\n"
]
},
{
"data": {
"text/plain": [
"(10, 4)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"V = [ t[i]^j for i in 1:length(t), j in 0:3 ] \n",
"@show size(V)"
]
},
{
"cell_type": "markdown",
"id": "8d5045c0",
"metadata": {},
"source": [
"::::{panels}\n",
":column: col-7 left-side\n",
":card: border-0 shadow-none\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.5\\textwidth}\n",
"```\n",
"Now we solve the new least-squares problem to redefine the fitting polynomial.\n",
"\n",
"```{raw} latex\n",
"\\end{minipage}\\hfill\n",
"```\n",
"---\n",
":column: col-5 right-side\n",
":card: shadow-none comment\n",
"```{raw} latex\n",
"\\begin{minipage}[t]{0.4\\textwidth}\\begin{mdframed}[default]\\small\n",
"```\n",
"The definition of `f` above is in terms of `p`. When `p` is changed, then `f` calls the new version.\n",
"```{raw} latex\n",
"\\end{mdframed}\\end{minipage}\n",
"```\n",
"::::"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "0ad1e0de",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 9,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_15_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_15_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"p = Polynomial( V\\temp )\n",
"\n",
"plot!(f,1955,2000,label=\"cubic fit\")"
]
},
{
"cell_type": "markdown",
"id": "9d2a0a46",
"metadata": {},
"source": [
"If we were to continue increasing the degree of the polynomial, the residual at the data points would get smaller, but overfitting would increase.\n",
"```{raw} html\n",
"\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"\n",
"## The least-squares formulation\n",
"\n",
"In the most general terms, our fitting functions take the form\n",
"\n",
"```{math}\n",
":label: fitbasis\n",
"f(t) = c_1 f_1(t) + \\cdots + c_n f_n(t)\n",
"```\n",
"\n",
"where $f_1,\\ldots,f_n$ are all known functions with no undetermined parameters. This leaves only $c_1,\\ldots,c_n$ to be determined. The essential feature of a linear least-squares problem is that the fit depends only *linearly* on the unknown parameters. For instance, a function of the form $f(t)=c_1 + c_2 e^{c_3 t}$ is not of this type.\n",
"\n",
"At each observation $(t_i,y_i)$, we define a residual, $y_i - f(t_i)$. A sensible formulation of the fitting criterion is to minimize\n",
"\n",
"```{math}\n",
" R(c_1,\\ldots,c_n) = \\sum_{i=1}^m\\, [ y_i - f(t_i) ]^2,\n",
"```\n",
"\n",
"over all possible choices of parameters $c_1,\\ldots,c_n$. We can apply linear algebra to write the problem in the form $R=\\mathbf{r}^T \\mathbf{r}$, where\n",
"\n",
"```{math}\n",
"\\mathbf{r} =\n",
"\\begin{bmatrix}\n",
"y_1 \\\\ y_2 \\\\ \\vdots \\\\y_{m-1} \\\\ y_m\n",
"\\end{bmatrix} -\n",
"\\begin{bmatrix}\n",
"f_1(t_1) & f_2(t_1) & \\cdots & f_n(t_1) \\\\[1mm]\n",
"f_1(t_2) & f_2(t_2) & \\cdots & f_n(t_2) \\\\[1mm]\n",
"& \\vdots \\\\\n",
"f_1(t_{m-1}) & f_2(t_{m-1}) & \\cdots & f_n(t_{m-1}) \\\\[1mm]\n",
"f_1(t_m) & f_2(t_m) & \\cdots & f_n(t_m) \\\\[1mm]\n",
"\\end{bmatrix}\n",
"\\begin{bmatrix}\n",
"c_1 \\\\ c_2 \\\\ \\vdots \\\\ c_n\n",
"\\end{bmatrix}.\n",
"```\n",
"\n",
"```{index} linear least-squares problem\n",
"```\n",
"\n",
"Recalling that $\\mathbf{r}^T\\mathbf{r}=\\| \\mathbf{r} \\|_2^2$, and renaming the variables to standardize the statement, we arrive at the general **linear least-squares problem**.\n",
"\n",
"```{index} ! argmin\n",
"```\n",
"\n",
"(definition-fitting-linearls)=\n",
"````{proof:definition} Linear least-squares problem\n",
"Given $\\mathbf{A}\\in\\mathbb{R}^{m \\times n}$ and $\\mathbf{b}\\in\\mathbb{R}^m$, with $m>n$, find\n",
"\n",
"```{math}\n",
":label: linls\n",
"\\argmin_\\limits{\\mathbf{x}\\in \\mathbb{R}^n}\\, \\bigl\\| \\mathbf{b}-\\mathbf{A} \\mathbf{x} \\bigr\\|_2^2.\n",
"```\n",
"````\n",
"\n",
"The notation **argmin** above means to find an $\\mathbf{x}$ that produces the minimum value.\n",
"\n",
"```{index} norm; vector\n",
"```\n",
"\n",
"While we could choose to minimize in any vector norm, the 2-norm is the most common and convenient choice. *For the rest of this chapter we exclusively use the 2-norm.* In the edge case $m=n$ for a nonsingular $\\mathbf{A}$, the definitions of the linear least-squares and linear systems problems coincide: the solution of $\\mathbf{A}\\mathbf{x}=\\mathbf{b}$ implies $\\mathbf{r}=\\boldsymbol{0}$, which is a global minimum of $\\| \\mathbf{r} \\|_2^2 \\ge 0$.\n",
"\n",
"## Change of variables\n",
"\n",
"```{index} data fitting; by straight line\n",
"```\n",
"\n",
"The most familiar and common case of a polynomial least-squares fit is the straight line, $f(t) = c_1 + c_2 t$. Certain other fit functions can be transformed into this situation. For example, suppose we want to fit data using $g(t)= a_1 e^{a_2 t}$. Then\n",
"\n",
"```{math}\n",
":label: exptransfit\n",
"\\log y \\approx \\log g(t) = (\\log a_1) + a_2 t = c_1 + c_2 t.\n",
"```\n",
"\n",
"```{index} data fitting; power law\n",
"```\n",
"\n",
"While the fit of the $y_i$ to $g(t)$ is nonlinearly dependent on fitting parameters, the fit of $\\log y$ to a straight line is a linear problem. Similarly, the power-law relationship $y\\approx f(t)=a_1 t^{a_2}$ is equivalent to\n",
"\n",
"```{math}\n",
":label: powtransfit\n",
"\\log y \\approx (\\log a_1) + a_2 (\\log t).\n",
"```\n",
"\n",
"(demo-fitting-pirate)=\n",
"```{proof:demo}\n",
"```\n",
"\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%start demo%%\n",
"```\n",
"\n",
"\n",
"Finding numerical approximations to $\\pi$ has fascinated people for millennia. One famous formula is\n",
"\n",
"$$ \n",
"\\displaystyle \\frac{\\pi^2}{6} = 1 + \\frac{1}{2^2} + \\frac{1}{3^2} + \\cdots. \n",
"$$\n",
"\n",
"\n",
"Say $s_k$ is the sum of the first $k$ terms of the series above, and $p_k = \\sqrt{6s_k}$. Here is a fancy way to compute these sequences in a compact code."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "0bcfe815",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFACAIAAADF7xm+AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3dZ0AT2fc38JNGQqihV5GigoqFYleUoqBiV1TsBXtZUHEVbGsB14au2DtW7F3AXlfEip2iNOkJBNKTeV7M/nj4o6KwZgPhfF5Nbm5uTsbh6+TOZIZCEAQghBBSL1RVF4AQQujXw3BHCCE1RFd1Aahe+vTp0+HDh9+9e1dcXGxsbNy8efPAwEBLS0tV14UQ+gcF59xRTaWmps6ZM8fKysrX19fAwCAvL+/SpUs8Hi86OtrCwkLV1SGEADDcUS2sWrXqzZs3e/bsYbFYZEtZWdmkSZPc3NzmzZun2toQQiSclkE1lp2drampWZHsAKCtrT169Gg+n1/R8uDBg+PHj6elpenr6/v4+AQGBtJoNACQy+UHDx68fft2aWmpk5PTyJEj586du3379pCQkDFjxgwaNIh8+cWLF6Ojoy9fvlzNaJGRkZ07dy4oKIiLi8vKymratOmsWbMaN25MvuTUqVPXrl3Ly8uzs7MLDAx0c3OrvrCvfW+E8+fPX758OTs728rKqlevXgMGDACAbxZz4MCBjx8/xsTEVIwZFhaWnZ29b9++71WyZs0aDw+P7OzsU6dOhYSEuLu7KxSKmJiYGzdulJWVtW3btlevXr///vupU6d0dXVVtWZQvUBbtmyZqmtA9Uxqaurjx495PJ6xsTGHwyEbmzZt2rJlS3I5Pj5+9erV7u7ugwcP1tfXP3HiRHZ2dpcuXQAgMjLy4sWLvr6+vXr1ysnJ2b17N0EQffv2jYuLa926tZOTEznChw8fEhMTAwMDqxlt7969r1+/zs3NHT58uIODw7179xITE/v16wcAO3fuPHLkSO/evb28vLKzs2NiYhwdHS0tLasprIrvjXDgwIHdu3d7eHj079+fRqMdOnRIJpO1bdv2m8X4+/tfuXKlU6dOBgYGAFBeXh4VFTVo0CBnZ+fvVbJ79+709PTExMTu3bu7ubnp6upGRUWdO3fO39/f29v748ePx48fl8lkAQEBTCZTJWsG1RsEQjVUXl6+du1aPz8/b2/vIUOG/PHHHxcuXCgpKSGflUgkAQEBW7Zsqeh/5coVb2/v9PT01NRUb2/v8+fPVzy1ePFib2/vlJSU/v37nzp1qqL9woULfn5+1Y82fvz4oUOHikQisv3AgQPe3t5isTgvL8/X1/f06dNku1QqHTly5PLly6sZqsoH/N4IPB6vd+/e5H9IpL179/bu3ZvL5X6zmJKSkj59+uzfv59sjIuL8/HxycvLq6aSMWPG9O/fPzc3l2zPysrq2bPnxYsXyYcKhWL69OnkyCpZM6gewWkZVGNsNnv+/PkzZ85MTk5++fLls2fPoqKioqOj582b5+npmZWVVVRU5OLiUlhYSPZ3dHQEgLdv30okEiqV6uvrWzFUz549//7772req5rRAMDV1ZXJZJLttra2ACCXy9+8eSOTyby8vMh2Op2+c+dOuVxezVAVUxak742QkpIikUi8vb0renp7ex85ciQ1NfWbxTAYjA4dOty/f3/s2LEAcPv27TZt2piYmKSnp1fzodzc3ExNTcn25ORkhUJRUQmFQvHw8Pjw4YOq1gyqRzDcUc0QBCGVShkMhqampru7u7u7OwBkZ2evWrVq/fr1bm5uubm5ALB06dIqL+Tz+Twej8PhMBiMikYjI6PvvQu5UM1oAKCvr//1a/Py8hgMBjklTdLS0gKA169fVzPUz4xAZl/lmsnlgoKC7xXj4eGxYsWKnJwcPT29pKSk4ODgH34oMzOzipb8/HwtLa3KhzcMDQ3JBZWsGVSPYLijmsnOzh4/fvzSpUsrT8haWloOGzZs1apVX758IWNl3759VlZWVV4bGxvL4/FkMhmd/s+GV1xc/M13KSkpIReqGe3q1asUCuXr1xoYGEilUoFAwGazyZacnBw+n1/NUD85AhnlRUVFZCZW1E8G7jeLad++PYvFunfvHofDodPp5EqrppJLly5VPoxpaGhYXl4ukUg0NDTIFi6Xq8I1g+oR/IUqqhlzc3NDQ8MzZ86IxeLK7c+ePWMwGLa2tjY2NiwW69atWxVP3bx5c+zYsfn5+U2bNpXL5fHx8RVPxcXFkQtUKjUjI6OivWKupprRvleho6MjhUKpeIlCoVi0aNHhw4d/fqjvjWBra8tgMK5fv17RMyEhgcFg2Nvbf68YDQ2NTp063b9///bt2926ddPU1KzRhyKPMN+4caOi5c6dOypcM6gewT13VDM0Gi0kJGTVqlVTpkzx9PQ0NTUVCoVPnz59+PDh7NmzNTQ0NDQ0Ro8evWvXLh6P17p169TU1DNnzri4uJiYmJiYmLRt23bz5s25ubm2trYPHjxITk4mh3VwcLh+/bqFhYW9vX1cXJxIJCLb2Wz290b7XoXW1ta9evX666+/uFyuubn5rVu3srOzZ86c+fNDfW8EDoczZMiQo0ePSqXS5s2bv3nz5uTJkwEBAeTJMN/j4eGxdOlSOp2+Zs2amn4oW1tbHx+fLVu2cLlcKyurGzdukN9pqFSqStYMqkcw3FGNubu7b9u2LSYm5sGDB1lZWbq6ujY2NuSJdGSHYcOG6enpnTt37tq1a/r6+gMGDBg5ciT51PLly3ft2pWQkCASiVq1ahUWFhYaGgoAwcHBUVFRMTExBgYGHh4eAQEB586d++Fo3zN37lwzM7MbN27k5+dbWVktXbqUPJv754f63ggTJkzgcDhXr169cOGCpaXltGnTyPPcq+Hm5qalpaWlpdW6deuKxp+vJDg42NDQkDxhpkePHu3atduwYQM5C6+SNYPqC/yFKlKl1NTUqVOnbt++vZqZjYastLT0zp07nTt3rvg9wa5du+7du3fgwAHVFobqPpxzR6juYrFYe/fu3bx58/v378vLy+/evXvp0iXy50gIVQ+nZRCquzQ0NFauXLlhw4aZM2cCgKam5sCBA/v376/qulA9gNMySJX4fP7jx4/btWuno6Oj6lrqNB6PJ5FIjI2Nv3mOI0Jfw3BHCCE1hHPuCCGkhjDcEUJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1FCdDvecnJwvX7588ymFQvEfF6MGcKXVjlwuV3UJ9RJub7WgUCh+1enpdTrct23btmfPnq/bFQpFxVUD0c8TiUT491YLAoFA1SXUPwRBCIVCVVdR//zCP9I6He4IIYRqB8MdIYTUEIY7QgipIQx3hBD6PyrPelc+4lJcXCyTycjl3Nzc0tJScjkrKys7O5tczsjIePPmDXlQNCsr6+HDh+QBwpycnBs3bhQVFQFAXl7exYsX09LSAKCoqCj21OnExEQA4PP5R0+cvHL12i+ZdsdL/iKEfkwsFjOZTHK5sLBQT0+PwWAAwKdPn7S0tIyNjQHg/fv3EonE2dkZAJKTk7Oysnr06MFisV68ePEhJbVbl86mpqYvX768+3eSR0f3li1bvnyVfPpKvHur5n18e719927H4ZN2VhZTx4/KysqKiN6nzWb9PitILBaHr9taLhAtmTPJ1MRkwaoNmdlfZo0b3qNrp7lL1rxLz/D37Dw3aHzw0ognb1PaNLXduHzh4oiN956/N9XX3hUZvvNw7Jkbj9gatM1LQh49T94Ze4kKEDp5JIVCWbntIEHT6N+1rVeXDnNXRQlBo421weJZk8bO/4NP07bQEO9cvXhU8FIuw1BLVLBvze+zlv75hWmhUZIVOXdC9KHjHwgTWnnRpJ5uL95+eFhIA4LoZk410Nc9+5Yr1TJxKFnm16Prjltvy4yamaevnj1myOoTt4obdTVeEb14dN8/Yq7kNutnFB0526vFzrMJGa3H6hdeHWh26u7T5JRW41nCrE4HJsaf2Pcv/8nq9FUhw8PDmUxmWFhYlXbybJmKO7ijnyQQCFgsFpWKX9dqhs/n/5dXJOZyuWw2m0zStLQ0KpXauHFjAHjx4kVJSUnHjh0ZDMbDhw9T0j/38vY0MTGJv3Hz/pPnfb083FxdLsclnLl2u6t7q9EBQy5ejd917GxTW6tl82bfe/Q4cvsBPR3tjUvmfcrMDt+4Q6Egls6epKujHbxqk0AsG+7Xra+Xx8SFK/lyWlsbkxXzpg+fvbhYSjdnw57I8LEhS7/I2Wwxd9fK0IURUZ+pJgx+btjEIUfPXXktN6aJ+QNamX/JK7jH11PQmM7Sj7aNrC9kUct0rBqnXuzTvdP+V6XF5m6WLw+P7905+t7nQqd+xq9Pj3O3PPAgJb99kG7Gw76a6bfe5+d4LtIoTm+XejSzVPK512qKuNzx1nI5UD74/glMrUYXgvVpkpc9VoNhI6OLv9sTeY/dQgnrVloP97b8Ep/kPE3WpBs17VGbx+vfNhkidA0AXk7zs5OzG3mWeIaAVNho7wCxWYu8/huAICyPjgOFLDswBigUTvwa7c8PMiecBSqN+eqC6cNtGWNjgalFyU+xiJ2aPSoG9MxAxLfY3T/X/0+FjSsQCrO/PIs6z5K6DAYA090DJHaduZ7zAcDgcjidn58fsAMAGM9Pc54czJ90FgAg543xmd8Kpl8FCgUkAs5fvtxZ14ChCQCGUT2KRuwCEwcAMNriU+Q1n2jeEwDMLy9K3DLX0tLy32xIuOeOUHUIgsjPz9fW1qZQKEKh8NWrVzY2NqampqWlpdfiE8xMjLt27VpUVLTj4DGWBiNo7EiBQLB8Q3QJv/z3GeONDA3nLInIzi+cOKxfH+/ukxYszyoscWvWeGXo7FGzF33mCkzZtP3rl08OXZ7Kk7Pk5VuXBkdG73tdpkEXlUwb0P3+42eJ5bpAKLoYSug0WgJPX8g2dlixwc3Z6VSuTolxc+vtQX06OB/JYJU4eEUv2TOgWezJz1RuuwlH4+NPXwq6x2MX+a6i5ry+N3jUJzDMGxgNAu7rwEliln7msN0AlImrg+iiks+jjgKDlRG/es+J+akjDwNTOz350t+jp6cFHABto/SijJ6BEzMHbwcTe5AKR8zom9szXN60OwAsjuxR0n68qP0YAIg9PFZuZFfUaykAPL791+uniQWjDgDAO8MmhZfXFQadA4BMh05b9gRwZycAhVLQtNvODd1KZscBQ7O0sdvVzZ7FQ7aChZPEovnbe9t4HaeAiQMBkKPTBHRNwNgOADIdB5W9uwymTQCgsOM02ZkQwroVAJS3H/tm00HZoG4AoLDrkHL6i3BwPwAAfYucElFJ054AAAzNcqo2z7oLAACFUqJvR6fRgEIBAK65CyXnNVBpACC2aF0qowBTCwAII1u+SAJ6ZgAALB2BRK4waAQAQKFKgCHVNSc3DxlDU6xpSC5LGTpUZvk/7Ro6CqD9sw0xWPKKfWgKFYAActaFIKhAgOSfE0apoKCLSqXksphf8T2p1jDckfqomDoQCoXv3r2zsbExMDAoKiq6eCXOxtqiu4dHRkbGup0HdDRZIdMm5hcUzF+1SSgSLZs7RVdHZ/qSiDKJwr+r69A+PUeHLCsDlh2HEblw9sjflpXq2eqUpG9eNHPmys2F9j5aOdtm92m3K/ZSeuux2qWJnnuOvk7P/NgxhCIV7e8fKFcQb7qvAAO9OzNCDeiyF16R4Nbo9cnlm/ceeeYZCZ1tk99cuTd4zFuftYS543tutlfAhEzPMJlDV5BLx8zqWdh5uth7KABs3NFX1NSzxC8YAK5fCmeISgoHRwJAsrZZzt8HeBNiASDDosXx49NKZlwBgIJGbY5v6F4acgcolPKOE29vPMSbcBSY2grb9h8ulnB95wBdA3RNi5gmIrsuQGcCQL5Fex1uKjBYAMBr0ovy6QkwtQFAbNe56EYUaBsBABg2KikXglFjAACGpkBGyDmNyLUtp7Ek7H9yTaahraBr/tPO0Pz/swEUCij+maQGiYhGIUAmBgYLpEINOhVK88HQBhRyJhUYxWlSCycA0FBIdArf8cAfANiiQhAVlgAAAKf4PVuYXyyXAo3B/vzIiAk8fgHoGNNT7lob6b7LfK6wbkPJft3YwiTl+WmBeyAUZ1obaFOfHSm2XAVlRQY0sea7s1ktfUEmMSpKZhByHjcbNHUtXh2z1Jbz0h8rzByNbq93d7S++TRW1MRD/8GO3t3aXY5bxXMdpf3mUu+ubtcv/Z7XLZid/ayzc5NX99d/AmCW5Tpx6KWfLr/WMqEQCvuiRCMD/QcP94g1jexf7u/epc2puJU8k5bWLw5NHT806tT0QhsP0/cXlsyfvmr/xIKmfpzPdxfPDdp8aOkXG2+tondBo4fE3T73ofgjQ1DYz9nMyMjoX/45YLijOkQkErFYLACQy+WJiYna2totW7bk8/k7Dx4VS6RTx44QiUTBy/8s5JXMGTe8eTOH8fOXcwUy16bWC6ePHzrj9xKaLofgbwmbMzFsXbGth1bO85BB3TYdPv/ZZaJ23FOvvUdfpOeme6+gCPhnB44RAS1t0E7Q0HwXPp0lLk4dcRiY2um3o45emJ868igwtT5lPO03KTh77Alg638R8ceE+OePjgEDKx7An1HdC/tGgH2HEoC7O/qVuI0mHDoTAJ9Sb9E1WGDZAgCynEeVPztMxiK33UTi+HQwtgUAiZNv5pU1hLkjAADHspgvlFm0BACgMYQEXaxnTa4KGUtHytL/Z1lDhyYiIw4ICgVkkv+tLz4dZCCTAF0DyovZTHopNxsMrEBcrstiCLKeS/TMQS7VpSuIT/d4TbqAQq4tLmZ/upPdbgxQKMa5SSxBQbGAC5p6hi+P2+gxeNmvCQsnvfvb2zna3H0aK2rZRzvxkE9HlxtXlnI7T9f8eKu7a/O/ry3J6R7Kyn/r2tQ67dnuFJqGhojnyCiBslfPHh2Q05nNMq62btXscvwqvo6Vbcq5CeOGRJ2cyjdrbZwWv3bF/JBNY8st3bSzErf+uWz+2pBiQydWwceNq8M27zvyIeUqvawgbN70Jy+SrxwbS1VIJw/w0tXWjjo8Qg7UAV3b+s9aMuePcWJgdHJqFH5429iQ34uEipZWhltPH5q+aNW7xxubWBjtPnVwzZYd18+MtTDS33lsT9zt+zuOTdLXYm+J2ZaXX7hkw1w6nb72r5X6errzV20sLStfsmp2i+aOK9b/9THpyIyQoZ4eXaP3HrqftH7EWJ8Bff0uXIm7cONgD/+2wwfPfvkqOebMpZbd7UYH7MjLy9t//LSZkcGojYekUunRk2doVGrA2qNMJjMuPqGwmNt/zVEdHZ0pT59++pzRfcV+AwOD4QM+Jycnu7v/ZWJiMmSA/4sXL5o162Nubj5h1PBnz55ZWQ22srJaEjLr+fPnHA6HnIj7l3DOvQH5j+fcCYKQSqUaGhoA8ObNm/T09M6dO+vq6u48eOTmw6f9fLoO7ddnWuiyZx8zLQ10tq1eNC44/EMJoSEu+WPWuA27Dn407coQFvfQ471L+/y67XSCzmzycD2DRn3dawPomRmfn28szHrTfydoGzKTL1n8vTV9xGFgc4BfYLp3WN64o6BnBgRhuLlH0aAosG4NAIbRfrwuM+St+gKA3pl5hL5laY/fAIDy5CTnw9XikbsBAPI+cs6EcKeeBwCQS3WjfEqDb5EfR39DN17QaXJ/1niLd6HPIsLREwBMd/UTOXQv6REMACZn59IE3C8jDwCA3q1NeinXM8aeAIamVuKhxu/PvPaJBNMmzFcXXFKOPrcZKHQZSn+X0P3TkWciTpFXKD3rRbdPR1IKyjO6L2KUZrunHC0XiV83HUEh5M5pJxtbWtwUWYg0jezTL47o57vt2lOBiZPp51sR86f/9ucuobGjbkHygcjF05b8WUjTZwsLYtYtXbll98ssHhvEW5fPS7j36NT1vxkUxeqQqTKZ7I+t+wiAhUGjWjk1mb10balANG3kwH69vOYtX/vxc1Zgf98JgcOidu678TDJ36vLlLGBV+Kvn7h0vWPbFpPHjPyYkrL/xLkmja3GjhjG5/OPxJ7R19UZOqg/lUq9ei1OLJH08fNlMpnPnz/PyMjw8fHR1NT88uVLenp6mzZt2Gy2QCBIT0+3s7PT1NQkCCIrK8vU1JTcSPh8vqamJp1OBwC5XE6lUhvgPQUFAgGTyaTRaD/u+iMY7g3ILwz3L1++GBgYMJnM/Pz8A8dPmxhyRg4d9ODvxLAN2wFg2ZzJHz9l/bn/lJTBdrfWa2Znszspn2vsbPUm1qN101ixk6C5r27SkbZlzx46jJI4+kDhJ4ezUz91CpY17wkEYbqle3GXWVKXIQBgFDNO0si1tNssANC4t1sn90XRkC0AAJkvOZeXcqecAQCQCnW39i2de52sTW9915IZl4GlAwDGWzyLfJcrmnQFALPtvYXNfEp6/AYA5scnU2SinJEHgUIxvrRILz85Zcge0DbSv/ZHS2nKI4fRMvvOerejeusXXS3S4ToP0X99dqwDcfp+clbr0QbZj8c7a8ffe5xh3oVVmjW8rWluXuGdDD5FJhngZu/kYLfh4GkFTaOnS9NJwwdOC48QKOhdWtiuWjhnSuiKz3lFHVs1Xbd04dq/dsTdfdzJxXlF6Nw79x/uOnaulaPdvOmT8/Pztx06bmliNHnMSIIgzpy/SKVSBvj3ZTKZSUlJXC63W7duGhoaubm5X758adGihYaGhlQqzc3NtbCwIBNBKBRqamr++3/if4kgCIFAoKWlpepC6hkMdwz32qhpuCclJT1+/sqraydbW9vgpasfvfrQ1No8ctHcgZPm5mg2YvCy5o3023jwdFqHORrCorYpx3MkGplDdwGFYnl8Eihk2aOPAoDm34f0Xp/NnXAKAKAow+BYUPGMq+T4On925s+/Ty7rb/Lkjd4HhjYAYBTdm9tpirxNfwAwPjkTmOwC/7UAoH9jPTv1Vs7EM0Cla9/b3vhzXLJXBJg11b63vav4+T1GS36rQbrPjo80415ISstuM8ow48HktvpXbj/MMuvA4n2a6OGUmZN3/XUWRSae0KdrM/vGK6MPyoEyrp/XkD4+M8IiivnlY/r3nBg4LGLz9sRX70b06zlq6KAbt+6cjb/t79XFx7NHbm7uzTt3nZo2adOmjUwme/78ubGxsY2NDQBwuVw6nY63+a6A4V47dT3cFQrFs2fPkpOT5XJ5ixYt2rdv/81uubm5b9++tbCwaNas2Tc7YLj/WpXDvaSkhEKh6OrqFhcXr47aXsAtXTB1TE5+0ew/Noqomk4mWl3cWm+4m1lk52n24khHS81LBn0kzXtRspMdri5I9VyqsG0PBGG8uUdhr6WEYw8AMDw0WtDES9hhHAAwbm/TKf5YPHADAEDa34ZxK4umXgAAKEgzPR6UN+EksPWBm930TNBn96liZ3/Ifd/xwfI0CTvPJ5yR97bL59giXsl7u35MEa8rfGhsbXnuaTpBY3RrpDM+YMC8NVvEBM3btdnyebPmLIlIzcwZ4N0ldPa0oyfPXL37uE/3jsMG9svKyoq/cbt1SycXFxe5XP769WtjY2Nzc3MAkEgkNBqtRn88//GpkOoBw7126nq45+Tk9O7d29XVlcVinTt3zt/ff9u2bVX6TJo06dixY0wmMzAwcPPmzd8cB8P93ystLdXW1qZSqfcePIrYtt/SzHjlgtnz/lh/42MhEAo/Z6u/n7181WkRoWVodeV3DbkgbfRJoNIYb+MM727JDboAACCX6m7yLA25Sw6ov6kHb2wMcCwBwCTal9dunMRtOACYHx5NoTFyAnYDgMXJqUayomT3YIWeheW1sICurY6+yC8xdTZ/d373ynlzVm3hAtuULjq9Y/2GnQfuPntrZ2G8PWJJ+qfP2w+fbmprNXvyOAqFcvPmTW1t7c6dOwMAn8+XyWQcDkcl6xDDvRYw3Gunrod7Za9fv27VqhWPx6vy55GXl2dkZDRnzhwqlYrh/gsl3Lx9/vod747u3bt28hkxKYdqpMH/8tvIvqti7+T2W0/h5jS5PLewcY9i74UAYHhqNoWtX+i3AgDg3S2DB9uKJxwHACj5wtk/ijvrGlDpIOA2Ojjsi1e4tEk3yPvY+eGytHLal67B7Lzk3rKn3FL+G7khXVA8ysPZpYXj6u0HCYIIDRrVx7v7uuhdOQXc4EmBTo6O6enpnz9/dnNz09bWBgC5XP5LNt//BoZ7LWC4184vDHelnwpZXFysr6//9Qn5pqamyn5r9cbj8QoKCuzt7XNycsb8Fl5QLm1hbdzZrfXSqx+4bUYcOHKl+dbdT1znkb+pWx7Vo3DAetDUIzT1iuiGAp1/fvkmMWrC/vTPrLd24btGbHnpx9sys+bG1yNCJgzddnRMuaWLfuajk3s3b9h9+MWZfY1N9Pcc2FZYVBRz+qKTl83wIVFUKjUnJ4fNZuvr6wPAkH69KypcHhpcsWxra2tra1vxsB4lO0L1lBLDfdSoUWlpaRkZGefOnSNPdaopgiBu375dcQDQzs5u8ODBAKBQKKRSqVQq/ZXl1nkymezM+Yul5YKh/fvuPXZ6y7l7In0bS+4rTU32Q481oGf+PuXu7W1/cKfHAUCpuePbDd0UPRsDAFCoNCZbK+dZeWM3IAgtQmz0/vRHjg0Q8kZZNyePHrw5JkBOZ3V1tPzr1ME/o3e/TT4XFDzE06Nr0LhRnz9/dnCYxWQyd69fWVGJrq7ukpBZACCXy+VyOXldETX+52iAG9u/R54Ii+utpqRSKZVK/eGFw+h0+g/PE1ViuIeGhubm5h44cCA4OPjevXu1y3ehUMjlcsllPp9PfmbF//zKcuukT58+RWzbz2ZpLJg2YcSMBU+t/SVMg437x4gozMzRxwGgKPUBJyES9MwBQGrfRSwUQlkhaBuBuMzSiMO89Hu+R4hm1tOubZ202J9vHQ5kUeRLgid6demwK+Y4nUabuGCvrq7u1LEjFAoF+Z9oePBM8q0VCgWbzXZycoIGf7+0BrKx/VoEQeB6qwVypf2SE/yVGO7Ozs7Ozs5eXl7m5ub37t3z9PSs6QgUCsXX1/ebc+4EQfz7ay/UTQk3b3NWMEAAACAASURBVK/ffdjazGTelDF+QQvTe60GqfhqwMQym05i1wAASJWKOC9OkJ0VWkY6FHFx5gvCujX7yZGJQ3pfPj+tRNtaqzTjyF+Rcrl8/8kzbbo4jB2xiUajVT5bJixktio/ZL0ikUjUdWNTHoIg5HI5rreaIlda/ZhzLykpKSsrI89zKCsrEwqF5Ld4VNmZi1cOnb7s0rKpV+d2gZEx+f5/Uoozrw+fkNFhFnnFuMJG3TRKc8jODElpM32K6MHOMsNm1o/+Or1z/Zb9x9893+TT2W3pvLA/qdSioiJDw38u+uHSto3KPhVCSHWUEu5Hjx49evSoi4uLVCqNjY318/Nr06YNAERHR1+8ePHOnTsAcOnSpfPnz9+/fx8ApkyZ0r9//969e/9gXPXyJOlpwr1HXp3bp2XlTDv4gNs9/OLnxENzw/N9I4GpRZg7lulY6ha85sIgANAu/+Jlr3P93Fw5U6cF5Fw7e+RqfEJaxufBc7daWlru3fR/Erwi2RFCDZZSwr13794aGhpv3rzR0tKKjo729vYm2/v27du2bVty2dbW1tvbu+KpyqdSqDGZTFZUVGRqarr70LHfY/8ubDHQ8I8jprx33OFHgaEpderJv7WBnfVEYNkSCIUWiPs0oV88NoaikE/s133x3Om5ubkCgcDOzg4A+vr5qvrTIITqLqWEu56e3uDBg8kzWypr3rx58+bNv15uIK5dvzVtRZTYoLERP53GYBUOOggUSpF9R/oWT2p2sqKxO0hFJkYGvbTS7sWO05CL1i6e3aen56ZKV1AyMzNT9YdACNUPeMlf5eLxeMvWbcn4UjB7XMC8yK3pgUeASs/JTzU9HgQSATC1QCKwtbFq8X5n2t9btQjRzojF7dxcKo+Ap4QjhGoBw125fAOnJLqGKFrb3l/5O1tCAJUOAMCxsLMy1YkdX2raSifv5eZ14e7/N9ARQuhfwnD/9U5euLJy6345hTrKzyObwlE0agsA+V3mON/4XfvBzjKbTiYPti6ZP92zW+dPnz41bry4dr8AQAihamC4/2LFxcXBmw5lDj8IFOr6CwuYRRlAKIBCZeW8mDNhJEdX9/HL+GERM8kzFJs2barqehFC6gnD/dfYtHP/3jPXaKAY5du1zModKFQAKLTxCG6pd+nYSDFFw93OdHzgBiqVOqh/X1UXixBSfxjuv8CrV69WX3pZMPggKORFh0fpEVKu6yhgsMzfnJq1Z+W6VTaqLhAh1OBguNfem7dvdxw55dDIUkuDXti4OwAAlVZu02G7f+PdpxeJJeKlS6aQt+lBCKH/GIZ7LSW/ftNrxoocz0UayWluKYfNJOwvTp4gEepn3O/TZ/rQoUNUXSBCqEHDcK+l3cdO53iHgVkziYVTVsqlHcFD1u2aztRgrP9rJd5FBCGkchjuNUAQxLqtO89fv9fcvrGtlRnjc5rUrBkAUMuL+vTy8ffrpeoCEULoHxjuNbBpx77lSbLyPnsfZDztlbinq/jxhw+XGOWF4VNGVtxRBCGE6gIM9xo4n3C7vOcOAFA0ckl7vOXd1ZiysjJNTU28QgBCqK7B/c0fy8vLu3nzZkFBgWuLZoy0BwAAZYWGLAAAbW1tTHaEUB2Ee+4/cOFq/PR1B4psexil7tjx++RPx8++ebHXgEU5tGnlj1+MEEIqguH+Ayu37s8athuo9EzX4Sujp94/c0jVFSGE0I/htMwPKADIawkAlUoQKi4GIYR+Eob7d4nFYgBYODnQIjaI8eS45fHJ4TPGq7oohBD6KTgt8w037tyfuuRPEYvTiCm+ErPjb5dWz58/d3FZa2FhoerSEELop2C4f8PsPzZ+HHEEaIzsjKdhkZuiVoZbWVmpuiiEEKoBnJb5BjGVBTQGAChMmqRnflF1OQghVGMY7t/Q1saI+fwMFGcZXQ6fGlj1Nt8IIVT3Ybh/w5HodetaC8Z/2R37+8jePb1UXQ5CCNUYzrn/Izc3d/4f63MLi0Imj/L19pw5eZyqK0IIodrDcP9Hr1HTXnpFQkvzl+vnXTE0IO9xihBC9ZRSpmVevXo1Y8aM3r17Dxo0aPv27XK5/Os+xcXFwcHBPj4+ISEhXC5XGWX8vIKCgiJtGzC2BQYrv93kU1cSVFsPQgj9S0oJ96KioubNm8+dO3fEiBEbN25csWLF130CAgK+fPkSHh6ek5MzYsQIZZTx8wwMDDS4n0AhBwDtjEeuLR1VWw9CCP1LSpmW6d69e/fu3cnl4uLimJiY5cuXV+6QnJz84MGDgoICNpvt6upqbGz89u1bJycnZRTzM2g0WvSSufMjR0upGj1aOwzqN1NVlSCE0C+hrDl3uVxeWlpaUFBw4sQJX1/fKs8+ffq0devW5O3otLS0WrdunZSUpMJwBwBfr+6+Xt1VWABCCP1Cygr3d+/ede3atayszN3dfcaMGVWezcvL43A4FQ8NDQ1zc3O/HoQgiOjo6FOnTpEPO3TosHbtWgBQKBRisfibU/moGkKhUCqV4k2jaqqsrEzVJdQ/BEEIhUKFQqHqQuoZoVAokUh+eJcINpv9wz7KCvcWLVoUFxeLRKLZs2cPGzYsLi6u8rPa2toikajioUAg0NHR+XoQCoUyYMCAiRMnkg/19PTIbgqFgsFg/Pv7UGdnZ6/YtEMilYbNmmRvb/8vR6v7aDQai8XCcK+Fb26fqBoEQdBoNC0tLVUXUs/QaDQmk/lLbgGk3FMhWSzWlClTunTpUqXd2to6PT294mF6enqjRo2+OYKFhYWrq6syahMIBJ6B0z94rwKaxu0J8xJP7zY0NFTGGyGE0H9PKTtxKSkp5NcxhUIRGxvr7OxMtp86derZs2cA4O3tzefzExISACA+Pr68vNzT01MZlVTjxYsXebbeYNYMjG2zWgy7f//Bf1wAQggpj1LCfePGjaampi4uLlZWVleuXNmzZw/ZvmHDhuvXrwMAi8WKjo4ePnx4hw4dRowYsW3bNiaTqYxKqmFlZaVV8JZc1it4bWPz7a8OCCFUHyllWmbr1q3Lli3Lzs42MTExNzenUChk+/Xr1+n0f95x6NChvr6+aWlp9vb22trayiijetbW1jN8nPccGUlQaYO7tW3duvV/XwNCCCmJsubcjY2NjY2NqzSyWKzKD3V0dFQbqYvmTFs0Z5oKC0AIISXBEycQQkgNYbgjhJAawnBHCCE1hOGOEEJqqMGF+5qobc5+I9v6BVy8dl3VtSCEkLI0rJt1JCYmrrubVTz4ACjkMyNGe3bt+O+vYYAQQnVQw9pzT3yeXGzTDQCAShOYt/78+bOqK0IIIaVoWOHu1a2T2avjIJNAWZFedmJDuFgYQqhhaljTMs2aNds7f9SabVO12ewNO9dqaGiouiKEEFKKhhXuAODn4+nn819fpAwhhP5jDWtaBiGEGggMd4QQUkMY7gghpIYw3BFCSA1huCOEkBrCcEcIITWE4Y4QQmoIwx0hhNRQgwj3LbsOdOw/asD4mdnZ2aquBSGE/gvq/wvV0xcuhydklPjvA15O1qTfnlw5oeqKEEJI6dR/z/18wt0St9EAAPoWBYSWVCpVdUUIIaR06h/u3dq10X4fBwAg4uvIShgMhqorQgghpVP/aZnxI4e9eLvyxqmxukza9qiVqi4HIYT+C0oMd5FIpKGhQaVW9+VAIBAo+15IFAolamW4Ut8CIYTqGqVMy8TExDg6OnI4HB0dneHDh5eWln6zj5WVlYODg6OjY2JiojLKQAihBksp4c5kMmNiYsrLy7OysjIzM5cuXVqlw+vXr6dOnXrx4sWcnJzw8PCRI0cqFAplVIIQQg2TUsJ96NChbm5uVCqVw+EMHDjwzZs3VTrcvn3b3d29TZs2ABAYGFhQUHD37l1lVIIQQg2Tcs+WUSgU58+f9/DwqNKuqanJ5/PJZYlEIhaLU1JSvjmCUCjk/k9ZWZlSq0UIIbWh3LNlwsPDy8rKQkJCqrT7+fn99ttvmzZt6tmz55YtWxQKBY/H+/rlCoViw4YN0dHR5ENPT8/9+/eT7WKxWC6XK7V49SMUCqVSafWHuNHXcK+iFgiCEAqFON1aU0KhUCKR0Gi06rux2ewf9lFiuEdERJw+ffr27dtMJrPKU2ZmZnfu3ImMjLx48WK/fv2cnZ2tra2/HoFKpS5evDgsLKxKu0KhYDAYyj7NRv3QaDQWi4XhXgs6OjqqLqGeIQiCRqNpaWmpupB6hkajMZnMHwb3z1BWuG/atGnv3r23bt0yMTH5ZodWrVodPnwYAHJyckJDQ93c3JRUCUIINUBK2YnbtWvXokWLFi1a9ObNm4SEhEePHpHtCxYsOHDgALl86tSplJSUv//+OyAgYNSoUXZ2dsqoBCGEGial7Lnn5eV17tyZ3DEHAFtb2w4dOgAAnU6vmBO4dOnS4sWLNTQ0hg0bFhoaqowyEEKowaIQBKHqGr4rPDycyWR+c85dJBLhnHtNCQQCnHOvBT6fj3PuNUUQhEAgwDn3mhIIBL9qzh3/zhFCSA1huCOEkBrCcEcIITWE4Y4QQmoIwx0hhNQQhjtCCKkhtQ338vLyR48eFRQUqLoQhBBSAfUM9+TXb5x7B/ba/rfLyJBjp8+ruhyEEPqvqec9VBesjkofvAvY+qUEsWbnmOGD+qm6IoQQ+k+p5567VC4DBhMAgEJRUNTzMyKEUDXUc889fNakt+FTcloEGGXcHt/PS9XlIITQf009w71b546PDlrfuf+gdctJLVq0UHU5CCH0X1PPcAcAKyurkQHDVF0FQgipBs5HI4SQGsJwRwghNYThjhBCagjDHSGE1BCGO0IIqSEMd4QQUkMY7gghpIYw3BFCSA1huCOEkBrCcEcIITWE4Y4QQmpIWdeWSU5OTk5O1tHR6datm46OztcdCIK4f/9+RkaGlZVV165dKRSKkipBCKEGqAZ77jt27PDx8QGApKSk+Pj4anrOmjWrX79+58+f37hxo4ODw+vXr6t0UCgUAwYMmDFjxqNHj+bOnevr6yuTyWpRPUIIoW+qwZ67nZ0dmenFxcVPnz4lg/6b5syZExUVRaVSAWD8+PERERGHDh2q3OHt27dXrlwpLCzU1dUtLy83MzN79uyZu7t7bT8FQgih/+PHe+7x8fFcLhcAfHx8YmNjY2NjT5486eLiUs1LHBwcyGQHAEtLS7FYXKWDnp4elUol26VSKUEQ+vr6tfwECCGEvvLjPfeFCxcCAI/Hc3FxcXNzS0hIqH5OprK8vLw9e/bs3bu3SruVldXu3bt79OjRqlWrly9fRkVFNWnS5OuXEwTx+PHj7du3kw+tra19fX0BQKFQyOVyuVz+k2UgErnSCIJQdSH1DG5stUAQBK63WvjJlUalUn94nPLH4Z6QkMDhcAAgKSkpISEBAOzt7b29vXfs2FH9C/l8/oABAwIDA/38/Ko8JRQKo6OjO3bs6OXlZWBgEB0dPXToUF1d3a8HycnJefLkCbksEAi8vLwAQKFQSKVSqVT6w+JRZVKplEajVXypQj8JN7ZaIAgC11stSKVSKpWqUCiq76ahofHDcKfUbj+Oy+WSif895eXlfn5+zZs337Zt29dFxMTEREREJCcnkw/bt28/ceLEoKCgKt3Cw8OZTGZYWFiVdoVCIRKJ2Gx2LSpvyAQCAYvFwnCvKT6f/80zvlA1CIIQCARaWlqqLqSeEQgETCaTRqP9+6F+8HeelJS0Y8eOpKSkKu3VJ7tQKOzXr5+dnV10dHTlZC8vLyfn2alUqkwmq/h/RSaTYeIghNAvVF2khoaGLly4cOfOnd7e3vb29j8/1f7bb789ePCAwWBMmzZtypQpq1atItv79u27fv16APDz8xMIBCNHjtyzZ8/YsWNzcnL69+//Lz8JQgihCtXNudvZ2UVGRpLLSUlJ5JHVas6ArDBo0KDKp9MYGRmRC8HBwVZWVgDA4XBevHhx5MiR9+/fu7q6btiwwdDQsNafASGEUBXVhbuBgUHFsqura3x8fGRk5M+Ee8+ePb/Z7u/vX7HM4XBmzJjx03UihBCqgeqmZVxcXHx8fCpPuNvZ2Sm/JIQQQv9WdeG+du1aOzu7oKAgCoXi4+MzdOjQtLQ08qmfn39HCCH036tuWsbFxYU8lAoA8fHxCQkJJ06cWLhwoYuLC4/HS01N/a+KRAghVDPVhfuUKVPi4+N5PJ6rq6uPj0/FbHvFwVWEEEJ10w9+ofrNw6eurq4RERHKqQchhNAvUMufDrm6uv7aOhBCCP1C+LtQhBBSQxjuCCGkhjDcEUJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1JD6hHt2dnaXAaMcfUf1HD6Rx+OpuhyEEFIl9Qn3cSFL7ndd/X7IvoSWv03//Q9Vl4MQQqqkPuGezxeDnjkAEGbN0nPyVF0OQgipkvqEu0sTa8aba0AQmomHvTu6/PgFCCGkvtQn3LdHLptv9M7j6qQlzQXLF8xVdTkIIaRKP7gqZD3CZDJXLZqn6ioQQqhOUJ89d4QQQhUw3BFCSA1huCOEkBrCcEcIITWE4Y4QQmpIKWfL5OfnHzt2LDExkSAILy+vMWPG0Gi0yh0EAsGKFSsqt/Ts2dPT01MZxSCEUAOklD33M2fOJCYm9uzZ09fXd/Xq1QsWLKj6rlQq53+0tLTWrl0rl8uVUQlCCDVMStlzDwoKmjJlCrmsp6c3bdq09evXV+7AYrFCQ0PJ5djYWCsrK9xtRwihX0gpe+4UCqViOTMz09zcvJrOe/bsmTBhQpV5G4QQQv+Gcn+hmpGRsXTp0oMHD36vQ1ZW1vXr16Ojo7/5LEEQe/fuvXHjBvnQ1dV16dKlAKBQKEQikUKhUEbNakwgEMhkMioVj6LXTHl5eeX9FfQzCIIQCoUEQai6kHpGIBBIpdIf7uyy2ewf/iErMdzz8vJ69uy5YMECPz+/7/XZt29fjx497OzsvvkshULx8PAIDAwkHxoZGWlrawOAQqGg0+lsNlsZZasxKpXKYrEw3GuKIAhyw0M/jyAIKpWqpaWl6kLqGSqVymQyf8lMhrLCvaCgwNvbOzAwcP78+d/rQxDEgQMHVq5cWc049vb23t7eSigQIYTUmVJ24ng8np+fn6+vb3h4eOX2J0+e3Lx5s+LhzZs3uVzugAEDlFEDQgg1ZErZc4+Ojn769CmXyz19+jTZkpKSQqFQjh8/npqa2qNHD7Jxz549gYGBLBZLGTUghFBDRlHGEQ+RSCQUCiu3cDgcACgrK5PL5Xp6emRjaWkpi8XS0ND43jjh4eFMJjMsLKxKO3lAFefca0ogEOCcey3w+XwdHR1VV1HPEAQhEAhwzr2mBAJBnZ5zZ7FY39wfr3JUSldXVxnvjhBCCHfiEEJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1BCGO0IIqSEMd4QQUkMY7gghpIYw3BFCSA1huCOEkBrCcEcIITWE4Y4QQmoIwx0hhNQQhjtCCKkhDHeEEFJDGO4IIaSGMNwRQkgNYbgjhJAawnBHCCE1hOGOEEJqCMMdIYTUEIY7QgipIQx3hBBSQxjuCCGkhpQS7nv27GnVqhWLxTI2Ng4ODpbJZF/34fP5EyZM0NbWZrFYXl5eyigDIYQaLLoyBpXL5Tt27HB1dc3Ozvb19bW0tAwJCanSJzAwkMVipaWlcTicFy9eKKMMhBBqsJQS7kFBQeSCra1t//79nz9/XqXDq1evbt68mZmZqa+vDwBubm7KKAMhhBos5c65S6XSuLi4Tp06VWl/+fKlk5PT8uXLGzdu7O7ufvny5e+NIBQKuf9TVlam1GoRQkhtKGXPvcK8efO0tLQmT55cpT03N/fJkycDBw58+/ZtQkLC0KFDX758aW9vX6WbQqHYsGFDdHQ0+dDT03P//v1ku1gslsvlSi1e/QiFQqlUSqXiUfSawb2KWiAIQigUKhQKVRdSzwiFQolEQqPRqu/GZrN/2EeJ4b5kyZLbt2/fuHGDTq/6LoaGhmw2OzQ0lEql+vv7u7i4JCQkfB3uVCp18eLFYWFhVdoVCgWDwWCz2corXi3RaDQWi4XhXgs6OjqqLqGeIQiCRqNpaWmpupB6hkajMZnMHwb3z1BWuK9bt+7EiRO3bt0yMDD4+tnmzZtXfkgQBIVCUVIlCCHUACllJ27jxo2rVq1av359dnZ2UlLShw8fyPa5c+deuXIFANq1a+fo6BgRESESiS5cuPDixYuePXsqoxKEEGqYlLLn/u7dO3t7+6VLl5IP3d3dt23bBgA8Hk8kEpGNJ06cmDlz5pYtW+zs7M6dO9e4cWNlVIIQQg2TUsJ9x44d32wnD4eS7OzsqjlJBiGE0L+Bx9YQQkgNYbgjhJAawnBHCCE1hOGOEEJqCMMdIYTUEIY7QgipIQx3hBBSQxjuCCGkhjDcEUJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1BCGO0IIqSEMd4QQUkMY7gghpIYw3BFCSA1huCOEkBrCcEcIITWE4Y4QQmoIwx0hhNQQhjtCCKkhDHeEEFJDGO4IIaSG6Eoat6io6OnTpwqFwtXV1cjI6OsOHz584PP55DKLxWrRooWSKkEIoQZIKeF+4sSJqVOnurq60mi0R48eHTp0yN/fv0qfadOmffr0icPhAICNjc2pU6eUUQlCCDVMSgl3d3f39PR0PT09APjrr7/mzZv3dbgDQGRk5JAhQ5RRAEIINXBKmXO3tbUlkx0AHBwcKqZfqsjOzn7w4EFxcbEyakAIoYZMWXPuJIVCsW7dutGjR3/9FI1GO3To0LFjx169erVgwYIlS5Z83YcgiMePH2/fvp18aG1t7evrSw4rl8vlcrlSi1c/5EojCELVhdQzuLHVAkEQuN5q4SdXGpVKpVAo1fdRbrgHBwcLBIJly5Z9/dS5c+c0NTUB4NWrVx07dvT29u7UqdPX3bKzsxMTE8nl8vLyHj16AIBCoRCLxTQaTYmlqyOxWEyhUKhUPEWqZiQSiVgsVnUV9QxBEGKxmE5XbsKoH3JL+2G4sVgsVYb777//fvfu3evXr5MhXkVFo7Ozc4cOHRITE78OdwqFMnDgwLCwsCrtCoWCSqWy2WxllK3eWCwWhntNyeVy3NhqivyCiOutFphM5i/Zc1VWuC9ZsuTy5cs3btzQ19evaFQoFABQJVzEYnFqaqq5ubmSKkEIoQZIKeF+5MiRP/74Y8KECX/++SfZsnLlSjqdHh4e/vLlywsXLuTm5k6bNq179+40Gu3EiRO6urr9+vVTRiUIIdQwKSXc7e3tIyIiKreQ00N+fn5ubm4AwOFwevfunZycDACjR48ePXo0i8VSRiUIIdQwKSXc27dv3759+6/bu3TpQi4wmczJkycr460RQggBXlsGIYTUEoY7QgipIQx3hBBSQxjuCCGkhjDcEUJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1FD9DvfS0tJZi5Z7DRl79NRZVdeCEEJ1SP2+2vLAibNvOU5V+LR6dmQVU4M5yN9P1RUhhFCdUI/33AmCSC+RK2xcgcbgdpt95NxVVVeEEEJ1RT0OdwqFokUIQCoCAI3Pj9u2aKLqihBCqK6o39My+yLDJy+aWA7MlhZ6CyI3qrochBCqK+rlnvvx48fHjRsHAG4ubZ5dPfHh6qHTe/9iMBiqrquuGz169MmTJ1VdRf3D4XDwRs81de7cueHDh6u6ivonKCjo4MGDv2SoehnuCCGEqofhjhBCagjDHSGE1BCFIAhV1/Bde/fu3bhxo5mZWZX24uJiHo9nZ2enkqrqr7S0NA6Hw+FwVF1IPfP06dO2bduS9wFGP6mkpKSwsNDe3l7VhdQz6enpurq6hoaG1Xfbvn37D9dtnQ53giCuX7+u6ioQQqhuad++vY6OTvV96nS4I4QQqh2cc0cIITWE4Y4QQmoIwx0hhNRQvbz8wMePH0tLS1u3bk2n18v6/zM8Hi81NVVPT8/e3r7iZI/S0tKK31vS6fQfHpZpaKpZP2lpacXFxa1atdLQ0FBRdXWURCIpLy+v3KKjo0On00UikVAorGjU09OjUnGHEgBAIBDIZDJdXd3KjaWlpe/evbO2tjY3N6/c/uHDBz6fX+PEI+oVmUw2bNgwGxubdu3aOTg4fP78WdUV1V3z58/X09Nzd3e3tLTs1KlTcXEx2e7i4mJubm5nZ2dnZzdw4EDVFlkHtWnTpmL9DB48uKJ94sSJlpaWHTt2bNSo0bt371RYYR104cIFu/+xtLQk84ggiGXLlunq6lY8lZ+fr+pKVe/q1avNmjWjUChOTk6V2+Pi4oyMjLp162ZkZLR+/XqyUSaTDR06tCLxMjIyfv6N6lm4nz171sHBgc/nEwQxZcqUiRMnqrqiuuvWrVvkihKLxV27dl24cCHZ7uLiEh8fr9LS6rQ2bdpcv369SuOtW7csLCyKiooIgggNDa0c+qiKqKgod3d3cnnZsmWzZs1SbT11zcePHx89enTkyJHK4a5QKJo1a3bo0CGCIN6+fctms3NzcwmCOHPmTEXiBQUFTZo06effqJ59RTpx4sSwYcO0tbUBYMKECbGxsaquqO7y8PAgV5SGhoarq2teXl7FU3w+PysrS6FQqK66Oq20tLTK+jlx4sSAAQMMDAwAYMKECefPnxeLxaorsE7bt2/fxIkTKx7KZLL09HRcXRUcHBzat2/PYrEqN7548SIrK2vYsGEA4Ojo6ObmdvbsWQCIjY0NCAioSLwTJ078/BvVs3DPyMiwtbUll21tbUtLS7lcrmpLqvuKiopiY2MHDhxY0TJz5syOHTsaGxsfPnxYhYXVWeT6MTExOXr0KNlSZcOTyWQ5OTmqK7DuSkpKev/+fUBAQEXL0aNHvb299fX1p0+fjhfX/J6MjAwrK6uKYzm2trYZGRnwrcTj8Xg/OWY9C3ehUMhkMsll8r++KodxUBUikSggIMDPz8/f359suXTpUnZ2tk8hxwAABGFJREFUdmZm5v79+ydNmpSSkqLaCuuaK1euZGVlZWZm7tmzZ+LEiampqfB/Nzw6nU6j0XDD+6a9e/cOGTJEX1+ffDh9+vTCwsLU1NT3799fu3Zt27Ztqi2vzhIIBJWP0mtqapIbmEAgqHXi1bNwNzU1LS4uJpeLioqoVKqpqalqS6rLJBLJ0KFDDQ0Nt2/fXtFYca0ef39/Jyenhw8fqqi6Oqpi/fTv379p06aPHj2C/7vhlZSUyGSyKuczIAAQiURHjx6tPCdjbGxMo9EAoFGjRqNHj759+7bqqqvTzMzMKjYwACgsLCS3w8rtNU28ehbu7u7u9+7dI5fv3bvXpk0bvEfH98jl8jFjxjAYjJiYGPIPrAqJRJKXl0fOI6OvicXi/Px8cv1U2fDs7e1xvX3t1KlT+vr63bp1++azmZmZeNG673F2di4qKkpPTwcAhULx4MEDd3d3+GrDa9u27c+fDUlbtmyZcqpVCgcHh3nz5jGZzIKCgpCQkLCwsFatWqm6qDpq+vTpFy5cmDBhwqtXr5KSknJzc5s2bZqWlrZixYqysrK3b98uWLBALBavWbMG/4OskJqaunLlSj6f/+bNmwULFkil0jVr1tDp9KZNm4aFhUmlUj6fHxISMmfOnPbt26u62Drnt99+GzJkSOVw/+233/Ly8rKzs/fs2bN79+5t27bhN568vLwjR448ePDg+fPnOjo6OTk5zZo1Y7PZmZmZe/futbCwWLt2LY/Hi4yMpFAoDg4OISEhFYkXHh7+84lXz34EZGVldfPmzS1btty9ezciImLkyJGqrqjuatu2rb6+flZWFvmQ3Hk3MDDQ0dE5duwYlUrt2rXrjBkzNDU1VVpm3WJgYKCtrU2uHw8Pj+nTp5MTnQYGBnfu3Nm4ceOTJ08WLFgwYcIEVVda50gkkvbt248fP75yY8uWLRMSEkpLS+3s7JKSkpo3b66q8uoOkUiUlpamq6s7ZsyYtLS0ivbNmzdv2LBh69atdnZ2cXFx5K8OKyfe2rVrR4wY8fNvhFeFRAghNVTP5twRQgj9DAx3hBBSQxjuCCGkhjDcEUJIDWG4I4SQGsJwRwghNYThjhBCagjDHSGE1BCGO0IIqSEMd4R+IDIyksPhxMfHq7oQhGoALz+A0I9RKPiXguoZ3HNH6AeSkpJcXFxUXQVCNYPhjtAPJCQkuLm5qboKhGqmnl3yF6H/XkJCQlBQEADs2LGDbJkyZYpKK0Lox3DPHaEfePLkibe3944dO4YNG/b06dOfv0MxQiqEh4kQqk5SUpK3t3dERATuraP6BffcEaoOOeHO4/FCQ0NVXQtCNYDhjlB1njx5EhQUFBoampaWFhsbCwCpqamqLgqhH8NwR6g6CQkJ3t7e5LK+vn5SUpJq60HoJ2G4I/RdXC7Xzs6Ow+EAQFBQ0NOnT9PS0uzt7VVdF0I/hgdUEUJIDeGeO0IIqSEMd4QQUkMY7gghpIYw3BFCSA1huCOEkBr6fzN3UlhhI0wnAAAAAElFTkSuQmCC",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 10,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_17_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_17_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"a = [1/k^2 for k=1:100] \n",
"s = cumsum(a) # cumulative summation\n",
"p = @. sqrt(6*s)\n",
"\n",
"scatter(1:100,p,title=\"Sequence convergence\",\n",
" xlabel=L\"k\",ylabel=L\"p_k\")"
]
},
{
"cell_type": "markdown",
"id": "09f1f7a8",
"metadata": {},
"source": [
"This graph suggests that maybe $p_k\\to \\pi$, but it's far from clear how close the sequence gets. It's more informative to plot the sequence of errors, $\\epsilon_k= |\\pi-p_k|$. By plotting the error sequence on a log-log scale, we can see a nearly linear relationship."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "b1262036",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFACAIAAADF7xm+AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deVxNedwH8O+tbvte0qqNyk6hEKESGUQka2PJvmaMYQwyCDPGNsaQdYRIdtlDZRuVFMlSoUVpue3LrXvv88edp8eDilSne/q8/zr317nnfLqvfDp+53QORyQSEQAAsIsU0wEAAKD+odwBAFhIhukAwCrPnj07fvx4cnJyTk5Oy5Yte/XqNWbMGGVlZaZzSQAej7dmzZrnz59v2LChU6dOTMcBiYdyh3oTHBy8Z8+etm3bDhw4UFlZOTExMTg4+MGDB9u2bVNQUGA6XVMXEhLy6tWrlStXmpubM50F2ADlDvUjOTnZ39/f3d3d29ubw+GIB4cMGTJ//vygoKBJkyYxG6/pKy4u1tXVtbOzYzoIsATKHerHnj17WrRoMWXKlKpmJyJLS0tXV9eMjIyqkXPnzoWEhKSlpRkaGrq4uLi5uRHRxo0be/funZWVdfXq1dTUVAsLi3nz5h06dOjly5cBAQFV712xYkVaWtqBAweI6O7du8ePH09KSlJXV3d2dh4/fry0tLSfn5+Dg0NaWlpwcPDixYu7d+8uFAoDAgJCQ0OLioq6du3q4uKybNmy4OBgVVXV6jby2TAmJibiDMHBwVeuXMnMzDQzMxs/fny3bt3E45/d1Gc/qM9+AitWrHjw4AEROTs7b9y40dra+tM3fsm3fP369Y8+ger2+OlnlZqaunfv3qdPn/L5/DZt2nh7e1taWtb9BwKYJr169WqmM4DEE4lE27dvd3FxqSq7KnZ2dr179xYvHzp0aO/evQ4ODsOHD5eWlj58+HBlZWXXrl3379//9OnTjIwMT0/P1q1bR0REPHz4cOjQoZcuXerVq5empiYRFRcXb9u2beTIkR07drx27dr69eu7d+/u7u6urq5+4sSJtLQ0e3v7vXv3JicnP3z4sF+/ft26dVNVVd22bdvZs2eHDh3q5OT08uXL48ePV1ZWjhkzRk5OrrqNfDbMsGHDiGjPnj1Hjx51dXV1dHRMS0sLCAiwsrIyMDCoblOfflDVfQJdu3YtLi4uKSnZtWuXsbHxp78YvvBbFp/w+PATqG6PH71RQUFh7ty5JSUlo0aN6tatW0xMzKVLl9zc3Kr7FQUSQATwzTIyMpycnC5cuFDDOnl5ea6urnv37q0a2b9/v6urK4/Hmzx58ujRo8vKysTjhw4dcnJyys/PHzJkyMGDB8WDV69edXZ2zszM5PP5Y8aM2bFjR9V2Ll265OTklJycPGnSpOHDh2dkZIjHU1NTBw4cWJVKKBTOnj1bvOUaNvLZMOXl5ZmZmYMGDTp16pR4vKKiYty4cb6+vjVs6ss/AZFItHv37mnTpn32o/vyb/mjlzXs8aM1ExMTnZycbt68KX759OnTzZs3Z2VlfTYPSARcCgn1oLKykog+nJD5VGJiIp/Pd3JyqhpxcnLi8/mJiYlEZGNjIycnJx43NTUlIi6Xa2dnd+fOHfHg7du3u3TpoqOjk5qampOTY21tnf2/rKysiOjZs2dE1K1bt5YtW4rf8uTJE6FQ6OjoKH7J4XAcHBzEyzVv5NMwAoEgPj6+srKyamsyMjJ79uxZuHBhzZv68k+gBl/+LX/0suY9frimjo6OkpLSoUOHLl68mJGR0a5dOx8fH21t7ZqDQVOGOXeoB3p6enJycunp6Z9+6fHjxw8ePBg3blx2djYRfdgX4uWsrCwiUldX//S9Dg4Oa9asSU9PV1NTi4qK8vHxISLxDP6qVas+WrmwsJCIdHV1q0bev3+vpKQkLy9fNaKlpSVeqHkjnw2TmZnJ5XLFk/ViSkpKRPT06dMaNvWhmj+BGnz5t/zRy5r3+OGaysrKmzdvDggI+Pvvv8vKynR1dYcNGzZq1Kiaf2FDU4Zyh3ogJSVlYWFx+/ZtLy8vLpf74ZfOnj0bFxc3ffp0ca3k5OSIO5GIcnNz6X8L97MlYmtrKy8vHxERoaGhISMjI57FFjfvgQMHDA0NP1r/4sWLH84Ra2lpFRcX8/l8WVlZ8QiPxxMv1LCRy5cvfzaMpqZmRUVFSUmJoqKieCQ9Pb2wsLCGTX2k5k+gBl/+LRPRhy9r3uNHbzQ3N1+1alVlZeWrV68uXbq0Z88eNTW1gQMH1pwNmixMy0D9mDlz5vv37/39/YVCYdXgw4cP796927dvXyIyNTXlcrk3btyo+ur169e5XG4Nl3XLysr26tXrzp07t2/f7tu3r/hieWNjY3l5+Vu3blWtdvPmTS8vr/fv33/09rZt2xJRaGho1UhYWJh44cs3UsXKyorD4VS9RSgULl++/MiRI1++qTp8AnVO+7V7jIiImDBhQnZ2toyMjJWV1aJFixQVFdPS0mrePjRlOHKH+mFhYTF58uR9+/bFx8fb2dmpqaklJCSEhoa2bNly6tSpRKShoTFq1Khjx45VVFS0a9cuPj7+5MmTY8aMEV8MUx0HB4dVq1bJyMj4+fmJRxQVFSdOnOjv75+Xl9e5c+fExMTTp09bW1vr6Oh89F5TU1NnZ+cdO3bweDxDQ8PQ0ND8/HwikpKS+vKNVDEyMnJxcfnzzz95PJ6ent6tW7fS0tLmzp375Zuq2yfwVd9ynfdoYWGRl5e3Zs2a4cOHE9Hdu3fLyspsbW1r3j40ZSh3qDeenp5t27YNDAwMCQkpLCzU19cfNWrUuHHjqv48dcqUKRoaGpcvXz5//ryBgcGsWbPE11zXoFu3bkpKSkpKSp07d64a9PDwUFNTO3v27JUrV9TV1d3c3MaNG/fZt/v4+GhpaYkvmOnfv3+PHj3++OMP8Sz8l2+kysKFC3V1dUNDQ9+/f29oaLhq1SrxpZ9fvqk6fAJf+y3XbY86Ojpr1649ePDgjh07iMjU1PTXX39t167dl+wCmiaOCLf8BZYqKCgICwvr3bu3hoaGeMTf3z8iIuLQoUPMBgNoBJhzB9aSl5ffv3//9u3bnz9/XlxcHB4efvHiRfGfIwGwHo7cgc3i4+P/+OOPN2/eEJGCgsKIESMmTpwoI4PZSGA/lDuwX15eHp/Pb9GiBa7ahuYD5Q4AwEKYcwcAYCGUOwAAC6HcAQBYCOUOAMBCKHcAABZCuQMAsJBElntGRkat96sTiUQf3p4QoB4JBAKmIwA71WNxSWS5HzhwYOfOnTWvIxQKy8vLGycPNDclJSVMRwB2EggE9VVcElnuAABQM5Q7AAALodwBAFiInbfHKysr23f4WBYvb5bXuA8fDA8A0Eyw8MhdJBL1Gzlx4RMNX163XqO9a320PAAA+7Cw3JOTk9+oWFV2HELmdsk2M09fuMR0IgCAxsbCcldXV5fOTxcvyxem62jX8vRhAAD2YeGcu6amppdD+8NB0wSyyl1UK4YN+ZvpRAAAjY2F5U5E65b5/Dg7v6CgwMjIiOksAAAMYGe5E5GysrKsrCzTKQAAmMHCOXcAAEC5AwCwEModAICFUO4AACyEcgcAYCGUOwAAC6HcAQBYCOUOAMBCKHcAABZCuQMAsBDKHQCAhVDuAAAshHIHAGAhlDsAAAuh3AEAWAjlDgDAQih3AAAWQrkDALAQyh0AgIVQ7gAALIRyBwBgIZQ7AAALodwBAFgI5d5UCIXCCXN+sBg0sYPzqGu3wpmOAwCSTYbpAPCfA0eOnxJ0Kh01loSVs1ePfXmrD9OJAECC4ci9qXgU/6K0VXciIimZciWd4uJiphMBgARDuTcVnkNdtCN2UEUpJ+2pHuUrKSkxnQgAJBimZZoK+152hxYWbTvgY2qkv/7wLqbjAIBkQ7k3Ia4DnVwHOjGdAgDYANMyAAAshHIHAGAhlDsAAAuh3AEAWAjlDgDAQih3AAAWQrkDALAQyh0AgIVQ7gAALIRyBwBgIZQ7AAALodwBAFgI5Q4AwEIo9+Yo4fkLB3cv6+8m/vTrJqazAECDQLk3R6Pn/BTm8Psjt/07ExUCTgQzHQcA6h/Kvdnh8/kFMuqkqE5ERe2+u3EviulEAFD/UO7NjqysrKaogAoyiUgt5viQfr2YTgQA9Q9PYmqOzuzZPPvntVn5haNdHEYN/47pOABQ/1DuzZGxsfHFgL+ZTgEADQjTMgAALIRyBwBgIZQ7AAALodwBAFgI5Q4AwEIodwAAFkK5AwCwEModAICFUO7wTcrKypat3dTffdLmv/yFQiHTcQDgPyh3+CbeP6z8Pa/jrUF7Vz6idVt3Mh0HAP6DcodvEpOUXmnlRBxOie33l24/YDoOAPwH5Q7fRFtRhgrfE5HUu/jWrfSZjgMA/8GNw+CbHPpjjee8H3PKpYzV5Xbs3sx0HAD4D8odvkmrVq3unj3CdAoA+BimZQAAWAjlDgDAQih3AAAWQrkDALAQyh0AgIVwtQwwpqio6NjJ03KysmPc3eTk5JiOA8AqOHIHZhQXF9t+N3ZWjNq0u1L2w8dVVlYynQiAVXDkDsy4eev2KysPQYfBAqKkgjexsbHW1tZMhwJgDxy5AzPUVFXkSrLFyzLF2crKyszmAWAZHLkDM+zt7fv5H428+BNHwHcyUbKwsGA6EQCroNyBGRwO59w/u96+fcvlcvX09JiOA8A2KHdgUqtWrZiOAMBOmHMHAGAhlDsAAAuh3EGSFBYWlpeXM50CQAJgzh0kg0gk8pi+8H5qsVRl2URHm7U/LWI6EUCThiN3kAw3boRerjBPdd/1dsyBg2EJmZmZTCcCaNJQ7iAZ0jOzStT+u7SGr9EqJyeH2TwATRzKHSSDq4uTyaP99DpK+vlNg/eRlpaWTCcCaNJQ7iAZtLW1I47vXqYQvs4oMfz0YWlpaaYTATRpOKEKEkNPT2/9z0uYTgEgGXDkDgDAQih3YKGKiorU1FShUMh0EADGoNyBbW7cDrdyHmO7cEdHxxEpKSlMxwFgBubcgW1+2PBn0tgAkuam571buPq34H3bmU4EwAAcuQPbVHC4JM0lIlLR5hUUMh0HgBkod2CbQT3aq97aSm9jWpxetGCyJ9NxAJiBaRlgm99XL3O8eu1udPgIv1nWXbswHQeAGSh3YKHBA50HD3RmOgUAkzAtA81URkZGcnIy0ykAGgqO3KE5mr5k5cXnuUKuUkeZrEtH/XEzA2Cfplju8fHxN2/eTE9PX7duHdNZgIVSUlIuvCh4N2wLERXc3Xf9+g0Xl4FMhwKoZ01xWiYiIqK8vHz7dlyeDA2iqKioUklLvFyuqIXLJYGVmmK5T58+3cfHB/9ThgZiaWnZuuCJXHSQ1JNLbZ784+qCU6/AQk2x3AEalJSU1O3TAQf7y/3dJf/f80dVVVWZTgRQ/6qdc3/48KG+vr6BgUHD7dvb2zs6OvrDkb/++svW1rbh9gggxuVyPUe7M50CoAFVW+6bN2/u37//jBkz6rbd5OTkxMREc3NzU1PTqkE+n3/u3LnMzExHR0crKyt/f/+6bRygQcU8jpuweHWRlJKBfMWFQ39paGgwnQjgq1U7LTNy5Mhbt27V7THErq6uNjY2Hh4eR44cqRoUCoXOzs7bt29/+fKlvb19SEhIdW9/8uRJUFBQRUVFUFBQXFxcHQIAfAvvn9c/Hbn/jce+ez1+9lm9kek4AHVR7ZG7oaGhrq7ujBkzunXrpqur++HpzcmTJ9e80YMHD+ro6IwePfrDwUuXLqWmpsbHx8vJyXXp0mXlypWurq6ffTuPx0tKSlq5cmVSUpKOjs5n1ykrK+PxeP99DzIyKioqNUcC+HLFAmmSVSQikU7r5Jh3TMcBqItqy/327du5ublqamovX758+fLlh1+qtdw/28iXLl0aPHiwnJwcEQ0fPnzy5Mnv37//7Jp9+vTp06dPzbvYs2fPgQMHxMt2dnYnTpz4aAWBQMDn8ysrK2veDsCnupjoJD0KLm/dV+3OLo/BjoWFH18rWVRUxEgwYL3KysqKiopai0tRUbHW6wmrLfdly5YRUV5eXmJiYlZWlpaWVuvWrb9l8jE9Pd3Gxka8rKGhoaCgkJ6eXt2Bea3mz5+/fv36GlYQl7uCgkLdtg/N2T87NvXwP3T30W+eXs4jh37+/5f4zyI0BHG510tx1fQXqvv37z958mRFRYX4JZfLdXd3nzJlCofDqcOeRCLRh2/kcDh4Cho0TTIyMgtnTV1YzVcjo6KPn7/cp4f1MNdBjRoL4GtUW+5nzpwJDAwcO3ask5OTtrZ2Tk7OjRs3jhw5oqWl5ebmVoc96enpVZ2eLSgoKCkp0dfXr2NqAIacDbnivf1Ulu30PYFhk+9Fbv11BdOJAD6v2nK/fPnyiBEjqqbXDQ0Nvby8SktLL1++XLdyd3JyWr58uUAgkJaWDgkJ6dixo66ubh1TAzBk+8HALLc/SUa2wKjTtVO1nHwCYFC1l0KmpaW1a9fuo8H27dunpaXVutF9+/Z5eHjcv3//+PHjHh4eN27cIKJhw4YpKysPHz7c19d3/vz5K1eu/MboAI1PS12NCt4TEQkquKIKpuMAVKvaI3d9ff34+HgHB4cPB+Pj47/kb1atra1VVVWrLoUU/x2TjIzM7du3jx07lpmZefHixe7du39bcgAGbF3947OJs7NVzRV5SZt9fZiOA1Ctast98ODBO3fulJWV/XDOPTg4ePbs2bVutGvXrl27dv10XElJadq0ad+UF4BR+vr6sddPv3z50szMTEbm//3zyc/PPxR4Ul5OduKYUbhMCxhXbbm7ubnl5+efOHEiMDBQPMLlcj09Pes24Q7AGhwOR09P76NmLyoqshs+4bn1LGkBf/fR8Q9CTny0AkAjq+nGYU5OTm5ubomJidnZ2dra2mZmZurq6o0ZDkBShN68ldTWU9TOuZLoNe9VbGystbU106GgWav9xmH4GQWolYa6mnzxCz4REXGLMtXU1BgOBM1eg9w4DKC5sbe3HyCTpH/+B8Mz84aZK5ibmzOdCJq7BrlxGEBzw+FwTu//MyMjg8vlamlpVY2XlpZO9Vnx9E2GkbbqwT9+1dbWZjAkNCsNcuMwgObp07/LW7TS74Smm8DGLjYryWvhiosBfzMSDJqhasvdyclp0qRJDfokJgDWe/wiSTDUjoiohVkKD/eShMZT7Zz75s2bL1y40JhRANinV5d2sk8vEZHU20cWelq1rg9QX3BCFaABbVixZJbS4+7nJk/MP3Vgy9qq8cPHg0dNW7D17/0CgYDBeMBiOKEK0IC4XO7Wtb98NPjHrn2+EdkFPZZffHzt+bI1uzb5MpIN2A0nVAEa28nLNwuGHiCiMpsxd07jXxM0iFqexPT69etnz54VFhZ6eHhU91Q8APgqhjpalP2atE2oNF9Vti6PvgGoVbXlLhAINm3aFBoaKn7p4eGxZMkSc3PzpUuXip+DCgB1s3P9ipQp89+Vy6hzSvft+O9pkYmJiUs3bC8v56/xmdm1S2dmEwILVHtCNSAgIDw8fPHixXv37hWPeHl5RUZGHj16tLGyAbBTixYt7p0/9vrq4ZgrJy0tLIiouLjYZcriYKvFF7r5Dl+0LiMjg+mMIPGqLfdr1655eHgMGjRISUlJPDJgwIARI0ZUHcsDQH158uRJtukAUtMjRY309qPv3L3HdCKQeNWWe35+vpmZ2UeD5ubmeXl5DRwJoNkxMTFRfvdIvKyZ/tDSog2zeYAFqi13U1PT6OjojwZjYmJatWrVwJEAmp2WLVuuHO9iFTjO8sTEefatOnToQER7/gm0dBzV2mmMz6r1TAcEyVPtCVVPT8/Vq1dzuVzxM5VSU1Nv3bp1/vz5JUuWNGI8gOZi+iTP6ZM8q17yeLxfD4ekjj1GRAdvbPS4f9/Ozo65dCB5qi33Xr16LVmyZN++fWfOnCGiyZMnKygoeHt7Dxw4sBHjATRTaWlpZS3/e0J9XsvOCS+TUO7wVWp6Epizs3O/fv1SU1MzMjLU1dWNjY0VFRUbLRlAc2Zpaamd9nP2+0RSUDV8HOD0w2Yiin4Us+fYaSuzVrOnTJSVlWU6IzRptTzmkcvlmpqampqaNk4aABDjcrk3juz65bc/8wqKVm5bYWho+O/DqGHLtmcOWCabkHDl+zmXjvoznRGaNDzDF6CJ0tfX37fl/06l7j52OtN5JWm14uuYJwSfraysxDO4oQbVXi0DAE2KmWFLmexXREQikUxpnoyMjEgkevDgQXh4uFAoZDodNDn4zQ8gGRbP9r4xYfqrJye4pbl+i6eLRCIXz6kPZdsJpGXbb9gRduYIl8tlOiM0ISh3AMkgLy8fevKf0tJSeXl5DocTFxcXLW2W57CAiGLvyd0OC3NydGQ6IzQhmJYBkCQKCgocDoeIRCIRUdUdJTkikYiIEhISYmNjmUsHTQiO3AEkUseOHbtWbnl4e7tAWrZDVng/hyMjp8yNKNIQSct2rPj92vEDHz5gB5ohlDuAROJwOFeP779//z6fz7e3n/38+fOIYq2sgSuI6OGd3WHh4f379WM6IzAJ5Q4gqTgcTs+ePcXLfD5fwP3vbwwrZRT55fyCgoKbN2/p6en26NGDuYzAGMy5A7BBp06d2hY8Urh/UO7hsbavz1tYtLH+brz7lZJBW69PXriM6XTAABy5A7CBlJTU7dNHrl27Xsbnuw46vuq3bYn9VlKrLjyi0CDv8vJyPECtuUG5A7CEtLT0oEEu4mVZGRlOUZmIiIg4gorS0tK1W3YmJL2dNd59gEMfBkNCo0G5A7DQAm+vYPfvU945KvKSPRw6j5y2IKy1l6Ct5+2NvwZJSzvY92I6IDQ4lDsAC2lqakZfORkVFaWrO8zIyKj1kGmC1n2IKKv/0gNBu1HuzQHKHYCdZGVlq66lkePnk1BAUtKy7+JatdToPXz8uxLSlhWc3LUJz1ZjK5Q7APtt/2XhwrXjyqQV2rdUfpwrfbf3r6RplFz4fuqPK68F7mM6HTQIlDsA+7kMcHg2wEG8bDtsAmkaERGp6GQXlUdGRZ++EmrbpcMw10FMRoT6huvcAZqXQfbdlO7tp4pS+eggAxVZ1xV71pf3nxgYv+iXtUxHg/qEcgdoXlYvWbCxl7xL+OK1HYpLKoVZbn+QUaeCvvOuRSUQEY/HYzog1A9MywA0LxwOZ85UrzlTvYjo/qMnVPCeNAxIUCEoym3b361QxVC1KPXM7t8s2rRhOil8E5Q7QPO1dfWPCZPm5KqZy+ckysnJPR7mTwpqaSV5s35eeuPEfqbTwTdBuQM0XwYGBnE3zqSnp+vo6NiN+J4U1IiIFNWzsnIGjJ6cX1I+emCfnxbMYjom1AXKHaC509fXJ6JRTr1fXd+Y38FNPTb4fV5+3Ii9pKieeOO39m2uDHV1YTojfDWcUAUAIqKfFsw6Mtl2bsmp/ROsuQZWpKhORPkd3A6eODXKe4HPynX5+flMZ4SvgCN3APjPEBfnIS7ORPTz1n1UwiNFDeXwXaFlxXluvlI5r++Om37/4nGmM8KXQrkDwMdO7do055ef8ovLFOSEEb2Wk7KWUFkr9ZH69r/3vsvmTfUc0bp1a6YzQi0wLQMAH7OytLhxYn/kxaOTRw+XfxdLRCQS5cY//PGp2oZKx35TlyU8f850RqgFjtwBoFrfjxtz+faiyMAQmYpinkn77M5uRJTm+Mvq37ZbWbTuZ9e9X197pjPC56HcAaBaUlJSJ/y3EZFQKDQfMDqbiIikHx47z+cc1+u1ffv5n58kLJ49jdmQ8FkodwConZSU1LIpo/0Ojq9Q1il4FVXoc5s4HJ6x9f6Akenvszq0MZ3kOVpaWprpmPB/MOcOAF9k+iTPF1eOPD7g262DFZUVEBG9jHhVyPlDasjsiIoxMxYxHRD+Hxy5A8CX4nK5WlpaO3x/HDF7alGLdoWxN4qmB5Oabpl+27t7A0dOnWdioLtq8Vw1NTWmkwLKHQC+Uvt2bZ/dOJWenr5jv9rm3DdCNV16HfVepHi68y9SWUn3J8y8e/4Y0xkB5Q4AX09aWtrIyOgXnzlhnlPTnrQseBFZMH4vKWoIjW3iL2Rbu3q21FD7a90yUxMTppM2Xyh3AKgjFRWV+xdP5Obmnjh7YVFkbJmuBcWcLzSxfzRkORW+HzFjQcyVk0xnbL5wQhUAvommpqb3pPFD+fdNAyep3dgk7DmJiEhaNiHxrbHzhI7O7jGP45jO2BzhyB0AvpW0tLT4cvgjQadmXTxXaD+bLqwrn+T/Vr8d8Uu8Fk38fdk8GxsbTU1NppM2IzhyB4B6M370yAVWAuuzU9RT7pGuJRHRo7PxJQpDg9KsR0x7FPOY6YDNCModAOrTrz/5RJ0/vHnFYvVr66kom/PgWOW0gPIe4984rv7u+7nDvGZHP4phOmOzgGkZAKh/U8Z7qKsqHzu/MUJOmEFElXw6tTx97MF0eeVHixfcObipVatWTGdkORy5A0CDGDnUNWjP1pVzJumdmsu9sUWqVWfSakWyCqk5hdbjfKz6j7hxO4LpjGyGI3cAaECzvh8/uF/vyMjIBbtOpxPRzb/JZXGORZ8cAd9r4eCZE0ZNHDXc2NiY6ZgshCN3AGhYJiYmo0aNWjPVzTJwnPLjU6Tfjojo2KL0zhN+ye5iP8nn+YsXTGdkIZQ7ADSGqeNGJ1wPOvnXBu1rv1LOG05Zkch+Mpl0S61Uths333rwmKhHuJamPmFaBgAaj4tjv+My0v6Bu67wc3hEFL6PbEbmdXJ9VJrnNmXEgqkTJ48dpaWlxXRMNsCROwA0qgEOfY7t2rxmzgTjwO/lY06RuR2JhPTPrLSe8398bWbr5pWbm8t0RjZAuQMAA+ZOnfj07J7tP0zVCNtBGc9J10pkPUKkrp/I41sO9bb7zjMrK4vpjJIN5Q4AzFBSUvL+fsIOT5veD9Yq5b8mIgrxoxnHsicHPmg5uKvLqJ/X/15SUsJwSomFcgcAJo0fPSLiwokZAzoYBc/kFrwjBVV6FkopMWmTgzcWdHUaOf4FrqWpE5Q7ADBv8+qfYo9tHtvfWj7yGEWfJtcfSVZRcNP/X27bvssPjpu1mOmAkgflDnnoXMAAABLFSURBVABNgrq6+v6tG37rJmoneCOdEkPx16m9s2C4b6a+bdCtSIsB7hu2/810RkmCcgeApkJaWnruNK/oa2cGZpxucXsLhytHJXn0b2Clz7WXbn+vOXDWZcyU+w8eMh1TMuA6dwBoWuTk5EKO7CkuLrYbOvZ57ptKg/YiDocOzyr9btVVDcPoBbNXTxo8aeIEFRUVppM2aThyB4CmSElJ6WHIiX9GW+imhFPmK1LTI2Mbur0nW7vD/EcKXV09X716xXTGJg3lDgBNlLy8vKfH6NDD24ckbJVPf0yCCspKIjdfobx6YgHHevJKhxETSktLmY7ZRKHcAaBJs7K0vHB49yG/pRaBE2QKM4mI7hykuacKBywOT84z7ev2w2o/hiM2SSh3AJAAHsOHPL95apGHs+65JVLSMsTh0Dlf0fQjmR67t52J6DRg6PWbt5nO2LSg3AFAYmz65ceILfO6a4vkooJIWZu4CnR0fuW4P+OG7HRb4DvT5yfctKAKyh0AJIm5uXn4ucA/ulVo572gN9Gk355UtOnwnGLXlXtknDv1/+78+fMikYjpmMxDuQOAhOFyubOnekWHHBuackgu6Q69fUQdBpJ+e9GVLRn2Cz0CX/RyGZ6ens50TIah3AFAIhkZGZ07tOvElpUW4X4yqbEUG0L9Z5CZbdnTmw80+lh7Lf9l/W8VFRVMx2QMyh0AJNiwQU7PIy7NdTDVivqHU1ZIN/+msVtF5j0zcwv8bqW0c3J//LiZPuAJ5Q4AEm+L7/LEW6dsXgfLvYsjGTkK3Une/wiMrF8VydhN/3XwOO/KykqmMzY2lDsAsIGamtqDkKAjK6frB8+m0kIiorgQmhlYpmFy5Xm2Qc/vdu4PYDpjo0K5AwBLSElJuY8cEXN2/3hbU5ULv5CyFsVfJ21j0fgd76XUF2493GWge2JSEtMxGwnKHQBYpUWLFgF7dlz8aXSr/HipZzdI14ourCf39ZX95zzOFnQY7j1xzpLmcK0kyh0AWKiPfa+EiMvL7XVUbvxOhe9JXY8iDtDMwLKW7Y7ceWZoO+jcpWtMZ2xYKHcAYCcFBYVfVyz9N3C7tXoF95IfaRpR5EkysxUNW5UuUHJf+nuf4ePy8vKYjtlQUO4AwGZWlpaRV8/8Paq9esoDTvJDMupMl3+jaYcqDTpHvKts1X/0z+t+Yzpjg0C5AwDLcTicKePHJN69NMqILxfyK3GkKPlfUtUhl8WFpLDx8lPzHo4PH7LtAU8odwBoFjQ1NU/s33X1t4WGFe+kHl8kXQu6tpW8/xGQVJJmlz5zN343ZlJ+fj7TMesNyh0AmpG+9r2SHlxf0U9P8fpmElRQ4gMysSHTHuWyKiHU0czO2X/fPnZcS4NyB4Dmhcvl+i5b8vTiIRuNSu79AFLWoqhT5L5elHA7t9/iWYciLHo6P0tIYDrmt0K5A0BzZGJiEnn1TMBid83w7VReRI/OkfMCSrglsHJ8ZTa069BJ0xb8KNHP8EO5A0Dz5THS7fW9K549TBViTlJZAfGLSU6ZCjLLR/jtC0sw6OZ48cp1pjPWEcodAJo1FRWVY/5/Pgj4o3XkX1K8FIoNoX4z6eYucl/PUzF28/HrO3ysJJ5oRbkDAFDHjh2f3722ZoqbSmYs5/E5snSgkA00cl2lcovwfBX9bk5r/H4TCoVMx/wKKHcAACIiKSmpn39YkPrv1d554TKPz5NISI/OUt+pJBSWdBq++mK8sXXfqOhHTMf8Uih3AID/o6qqGn7++Nk/ftLIT6bUOBIKScOAyktFJjapJs52o2e4ec0oKipiOmbtUO4AAB9zdR6QFhU6sYMyN2QdEVHOa5JVJEW1StvxZ2Pf6Xd3Phx4kumMtUC5AwB8hoKCwj+7tkef3NUq9TYnP50SbpKxDRXlkFW/Qs023/vt69DL8e3bt0zHrBbKHQCgWh3at38dedPPe4Ri1jOKCyHjLpQaR4YdhUbWT9Vs2vQfMW/pyqb5DD+UOwBATTgcztJF8zOib/bhvJK+vZtUW9KbaNLQJ00DvtXAP6/G6Hayv3k7jOmYH0O5AwDUTkVFJex80OVty1VfXqNiHr26S8rapGNOaro5+t2dpy/v+93oJnV3eJQ7AMCXcurv8D7u7sQ+bblZLynxPnHlyaAj5b8T2E0If8/Rte7/p/9BpjP+B+UOAPAV5OTk/vlry5OQALP8OE5kEIkEZNiJnlyl3l7lGibztwYYd+yW0ATuO4ZyBwD4ahYWFokPb22fMVzu7n7KeUMq2hRxkHp4ijSN3ur26jB43LgZ8/l8PoMJUe4AAHU0d8aUjJgwe/ViqZTHJM2lR2fJ2IZamAkMOh978FrLwvrkqTNMZUO5AwDUnbq6evi5wMt7NqjnvaLiXEq8S+XF1HkIkbCo/XceP27q1P+77Ozsxg+GcgcA+FbOjv3fx92Z2r+jTMZzSn1CqY/JbjyV5InMbePyZfS7OPy8em0jP+CpKZb7nDlzOnfu3KVLlylTplRUVDAdBwCgdlwud+/2355dO25SmcZJ+peS/yXDjqTZioSVFdbu64/faNG+Z2xcXKPlaYrl7uXlFRMT8+jRo8LCwoCAAKbjAAB8qdatWydHhe1c4CkXf5WSHlBZAXUaQrwUMuiYo2radajXII+JjfOAp6ZY7j169OBwOBwOp0WLFgKBgOk4AABfZ9a0ydnPHtirFkrFXqT0eNKzIjVdKisUdnS98ixLw7LbvkOHGzqDTEPvoAZxcXFZWVkfjnTo0EFHR0e8/ODBg/Dw8N9//52JaAAA30RZWTn80um79+4PHjetIMuEDDtQW0fKeU1ySuVt+k9bu2vdzv13zh7V09NroABMlnt0dPSTJ08+HNHU1BSXe2xsrLe399mzZxUVFRlKBwDwrXr1tOMlxs70WXrg5LlK4x6kaUite1PKY9K1TC7ONewxcProITt/Xy8lVf+TKJyGOIEbExMTGhr64sWLAQMGeHh4VI2/ePHC19c3NTW1b9++K1askJOT++zbnz9/7uHhcezYsXbt2n12BT8/v8LCwvXr19eQQSAQ8Pl8BQWFb/lGAD6rsLBQRUWF6RQgSdLS0np/5/G2REpk2IlUdUhWmRLvkrwK5aWpFKafPvCn44D+RFRZWVlRUVEvxdUgc+7Hjx9/8uRJdHT0vXv3qgbLy8sdHR3Nzc03bNgQERGxZMmS6t7u6urK5XJXr17t4eFx9OjRhkgIANCYDAwMXj+68/dP3nIJNyg1jrKTyKgzGXYkWaVC/S7O05Z2d/yuoKCgHvfYIEfuYjNnzlRQUNiyZYv4ZWBg4Lp16+Li4ogoPj7e1tb23bt3ysrKn77x9evXVQ+iVVdX19TU/GgFPz+/8PDwoUOHil/q6ekNGTLko3Vw5A4NB0fuUGelpaWuYybdTUgVtTAjOSVS0yUlTXp5h0QCmdy3vy6YMnva5FqLS0ZGhsPh1LJO/WWuRUxMjJ2dnXi5Xbt2UlJSL168sLa2/nRNExOTWreWkZERFRUlXm7Tps2gQYM+WkHwv74pNMDn4EcL6kxWVvb66cCoqKjBE2cXymsTv5SykklFh7SMKoW07K/Azf5Hwk//U3MNSktLN6Fyz8zMbNGiRdVLTU3NzMzMOm9t0KBBtc65S0lJycvL13kXANWpqKjAjxZ8i969exckPZ616Mc9p64Itc2JX0Svo0hamkb8mq2gZj92TvyVY1WXDtZN413nrqysXFZWVvWyuLhYVVW10fYOANDU7NqyKSnsnDFlc94nkbQsGVuTpQO16pLrsDDkyvVv3HjjlbuxsfGrV6/Ey3l5ebm5ua1atWq0vQMANEHGxsavo8L2rpwjm/GEMl+IBxVyEg10v+mwnRqz3EePHh0WFvb8+XMi8vf379mzp5GRUaPtHQCgyZriNTH/ZbSzoYzKrmEtj00ZqvjGycnxG7fZIOW+atUqDoeze/furVu3cjgcPz8/IjI2Nl6zZk3Pnj07deq0c+fO7du3N8Suqxw9etTHx6dBdwHNlq2tbXp6OtMpgFXk5eWvnji4eebIkZYqgbu31Hq+tFYNckLV19fX19f303EfH5+pU6dmZmaamZnJyDTsudzy8vLGuTsPNEMFBQVVV+sC1KPKysr6en5TY99+QE1NTU1NrZF3CgDQ3DTFu0ICAMA3YvLGYXWmp6d36tSpqmtvPistLS0vL+/DO9sA1JfKyso5c+ZUd3MkgDpLTU0tKCiotbg2bdpU6x97NuDtBxpUcHAwJj0BoHlydnZWV1eveR1JLXcAAKgB5twBAFgI5Q4AwEISeUK1bp49exYaGtqxY8e+ffsynQVYJTU1NSYmpkWLFra2tkxnAVbJy8u7evVqWlqatbW1g4PDV723uRy5x8bGjh07VktLa/369YcPN/ijaaFZ8fLy2rVr144dO5gOAmzz119/xcfHt2jRYsWKFVu3bv2q9zaXE6ozZ87s27fvuHHjXr9+7ebmFhMTw3QiYJULFy4EBgYGBAQwHQTY6e7du6tWrbp27dqXv6W5HLknJCS0b9+eiExMTFJSUprJrzQAYIcLFy7Y29t/1Vuay5w7n8+vupsNh8MRCoXS0tLMRgIA+BJBQUF37ty5cuXKV72LDUfuAoHgzZs3+fn5H40/ffo0PDxcfPswAwODtLQ0IiosLFRUVESzwxfi8/lJSUkf3YROKBRGRkY+ePAAD9uDb5GampqVlfXR4Nu3b2/dupWbmyt+efbs2W3btp07d+5rH/4l8eXu5eWlrq5uZmZ26NChqkGRSDR27NihQ4euXLmyTZs2CQkJo0eP3r17d1lZ2c6dO93d3RkMDBKkZ8+eKioqbdq0uXfvXtVgYWFhr169pk2bNnfuXBsbGx6Pl5KSkpGRUVRUlJSUVF5ezmBgkBTr16/X0tIyNjZevnz5h+Nr167t3r27n5+fpaXllStXLl26tGTJkm3btuXk5KSmpn7VLiT+hOq9e/eMjY0nT548ZMiQ+fPniwevXr3q7e0dFxenqqq6bNmyV69eBQUFbdmy5eLFix06dPDz86v14eIARBQaGtq1a9cOHTocPnx4wIAB4sHNmzefP38+NDSUw+EMGzbMxsYmLy+v6vbuGzduNDU1ZS4ySIaYmBgVFZVdu3bl5+f7+/uLB1NTUy0tLWNjY83NzY8dO+br6ztnzpzw8HDxV1u1avX7779/+S4kfs69Z8+enw4GBQWNHDlS/IxWLy+vTp06VVRULFq0aNGiRY0eECRYVaF/KDg4eOrUqVJSUkTk5eW1evXqJ0+eNHo0kGxdunQhoo+eyHH69Gk7Oztzc3Micnd39/b2dnBwmDdvXt12IfHTMp+VkpJibGwsXjYxMamoqHj37h2zkYA13r59++FPV0pKCrN5gDVSUlKq7vUoKyurr6//9u3bOm+NneVeVlYmKysrXuZyuRwOB09lgvry4U+XnJxcaWmppM9tQhPx4Y8W/e9PV523xs5y19XVrTrXnJubKxKJ9PT0mI0ErKGrq5uTkyNezs7O1tXV/fbHXQLQ///RIqLs7OxvKS52lrutrW1YWJh4OSwsrG3btuL5d4Bv16NHj6pzXGFhYbifDNQXW1vbO3fuiJ9U8fLly4KCgo4dO9Z5a9KrV6+ut2hMuHDhwunTp0NDQwsLC9++fautra2trW1pablixYrCwsLs7Owffvjhp59+sra2ZjopSJ6DBw9euXLlxo0bRBQfH29lZaWoqGhsbDxv3jx1dfXY2FhfX98///zTyMiI6aQgYf7999+AgIBbt26lpqbm5uYKhUJjY2NTU9MjR47cv3+fiJYsWTJ06FA3N7c670Lij9yLi4t5PN7IkSPbtm3L4/HEDw7X1NSMiIjIzc09c+bMhg0bpk6dynRMkEgFBQU8Hm/WrFmampo8Hk/8J0tdunS5fPlyZGRkRETEmTNnevXqxXRMkDxlZWU8Hq9nz54DBgzg8XjiuXUOh3P16lVdXd3AwMAxY8Zs3rz5W3Yh8de5AwDApyT+yB0AAD6FcgcAYCGUOwAAC6HcAQBYCOUOAMBCKHcAABZCuQMAsBDKHQCAhVDuAAAshHIHAGAhlDvAV9i4caOGhsa1a9eYDgJQC9xbBuDrcDj4VwMSAEfuAF8hKioKt48GiYByB/gK169f79atG9MpAGonw3QAAEly/fr16dOnE9Hu3bvFIzNmzGA0EcDn4cgd4CtERkY6OTnt3r3bw8MjOjo6Ly+P6UQAn4dTQwBfKioqysnJacOGDThah6YPR+4AX0o84Z6Xl7d06VKmswDUAuUO8KUiIyOnT5++dOnSpKSkoKAgIkpMTGQ6FMDnodwBvtT169ednJzEy+rq6lFRUczmAagByh3gi/B4PDMzMw0NDSKaPn16dHR0UlKSubk507kAPg8nVAEAWAhH7gAALIRyBwBgIZQ7AAAL/Q9pe4hPRG8L+gAAAABJRU5ErkJggg==",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 11,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_19_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_19_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"ϵ = @. abs(π-p) # error sequence\n",
"scatter(1:100,ϵ,title=\"Convergence of errors\",\n",
" xaxis=(:log10,L\"k\"),yaxis=(:log10,\"error\"))"
]
},
{
"cell_type": "markdown",
"id": "c3369f28",
"metadata": {},
"source": [
"The straight line on the log-log scale suggests a power-law relationship where $\\epsilon_k\\approx a k^b$, or $\\log \\epsilon_k \\approx b (\\log k) + \\log a$."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "9012af6a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2-element Vector{Float64}:\n",
" -0.182375249728302\n",
" -0.9674103233127926"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k = 1:100\n",
"V = [ k.^0 log.(k) ] # fitting matrix\n",
"c = V \\ log.(ϵ) # coefficients of linear fit"
]
},
{
"cell_type": "markdown",
"id": "07b661c9",
"metadata": {},
"source": [
"In terms of the parameters $a$ and $b$ used above, we have"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "b2b5961b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b = -0.9674103233127926\n"
]
}
],
"source": [
"a,b = exp(c[1]),c[2];\n",
"@show b;"
]
},
{
"cell_type": "markdown",
"id": "65e13969",
"metadata": {},
"source": [
"It's tempting to conjecture that the slope $b\\to -1$ asymptotically. Here is how the numerical fit compares to the original convergence curve."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "db991d0b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFACAIAAADF7xm+AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deVxM+/8H8M+ZpWmmbdqjlBatQgspFBW5URKyy5Y9u+tarp1s2deydYUIiVJKoYhUZCu0oH1valqmWX9/zP31dVGS6jTT+/nXmTNnznk1j7ycPnPmczCBQIAAAACIFwLeAQAAALQ9KHcAABBDJLwDALGSnp5+9erVT58+lZeXq6qq2tjYTJw4UVpaGu9cIqCysnLbtm0fPnzYvXt3nz598I4DRB6UO2gzN27c8PPzMzIyGjFihLS0dFZW1o0bNxITEw8fPkylUvFO19ndvXs3MzNz06ZNurq6eGcB4gDKHbSNT58++fv7jxs3zsvLC8Mw4cpRo0YtXbo0ODh4xowZ+Mbr/Gpra9XU1AYOHIh3ECAmoNxB2/Dz81NWVp49e3ZjsyOEDAwMnJ2di4qKGtfcvn377t27+fn5GhoaTk5Obm5uCKE9e/YMGjSotLQ0KioqLy9PX1/f29s7ICAgIyMjMDCw8bUbN27Mz88/f/48QighIeHq1avZ2dl0On348OFTp04lEok+Pj52dnb5+fk3btxYtWpV//79+Xx+YGBgbGxsTU2NmZmZk5PTunXrbty4ISsr29ROfhimZ8+ewgw3bty4d+9ecXGxjo7O1KlTLS0thet/uKsfvlE/fAc2btyYmJiIEBo+fPiePXvMzc2/f2FLfuT79+9/8w40dcTv36u8vLwzZ868e/eOzWb36tXLy8vLwMCg9b8QAG/ELVu24J0BiDyBQHDkyBEnJ6fGsms0cODAQYMGCZcDAgLOnDljZ2c3ZswYIpF48eJFLpdrZmZ27ty5d+/eFRUVTZo0SU9P7/Hjx0lJSS4uLhERETY2NgoKCgih2traw4cPu7u7m5qaRkdH79q1q3///uPGjaPT6deuXcvPzx88ePCZM2c+ffqUlJQ0dOhQS0tLWVnZw4cPh4aGuri4ODo6ZmRkXL16lcvlTpw4kUKhNLWTH4ZxdXVFCPn5+V2+fNnZ2dnBwSE/Pz8wMNDQ0FBdXb2pXX3/RjX1DpiZmdXW1tbV1Z08eVJLS+v7/xha+CMLP/D4+h1o6ojfvJBKpS5ZsqSurm78+PGWlpapqakRERFubm5N/RcFRIAAgN9WVFTk6OgYFhbWzDYMBsPZ2fnMmTONa86dO+fs7FxZWTlr1qwJEyawWCzh+oCAAEdHx6qqqlGjRl24cEG4Mioqavjw4cXFxWw2e+LEiUePHm3cT0REhKOj46dPn2bMmDFmzJiioiLh+ry8vBEjRjSm4vP5ixYtEu65mZ38MExDQ0NxcfHIkSNv3rwpXM/hcKZMmbJ169ZmdtXyd0AgEJw+fXru3Lk/fOta/iN/87CZI36zZVZWlqOj44MHD4QP37175+vrW1pa+sM8QCTApZCgDXC5XITQ1wMy38vKymKz2Y6Ojo1rHB0d2Wx2VlYWQsjCwoJCoQjXa2trI4TIZPLAgQOfPHkiXPno0aN+/fqpqKjk5eWVl5ebm5uX/T9DQ0OEUHp6OkLI0tJSVVVV+JK3b9/y+XwHBwfhQwzD7OzshMvN7+T7MDweLy0tjcvlNu6NRCL5+fktX768+V21/B1oRst/5G8eNn/Er7dUUVGRkpIKCAgIDw8vKioyNjZeuXKlkpJS88FAZwZj7qANdOvWjUKhFBQUfP/Uq1evEhMTp0yZUlZWhhD6ui+Ey6WlpQghOp3+/Wvt7Oy2bdtWUFAgJyeXkpKycuVKhJBwBH/z5s3fbMxkMhFCampqjWtKSkqkpKQkJSUb1ygqKgoXmt/JD8MUFxeTyWThYL2QlJQUQujdu3fN7Oprzb8DzWj5j/zNw+aP+PWW0tLSvr6+gYGBp06dYrFYampqrq6u48ePb/4/bNCZQbmDNkAgEPT19R89euTp6Ukmk79+KjQ09M2bN/PmzRPWSnl5ubATEUIVFRXo/wv3hyViZWUlKSn5+PFjeXl5EokkHMUWNu/58+c1NDS+2T48PPzrMWJFRcXa2lo2my0hISFcU1lZKVxoZieRkZE/DKOgoMDhcOrq6mg0mnBNQUEBk8lsZlffaP4daEbLf2SE0NcPmz/iNy/U1dXdvHkzl8vNzMyMiIjw8/OTk5MbMWJE89lApwXDMqBtLFiwoKSkxN/fn8/nN65MSkpKSEiwtbVFCGlra5PJ5JiYmMZn79+/TyaTm7msW0JCwsbG5smTJ48ePbK1tRVeLK+lpSUpKfnw4cPGzR48eODp6VlSUvLNy42MjBBCsbGxjWvi4uKECy3fSSNDQ0MMwxpfwufz169ff+nSpZbvqhXvQKvT/uoRHz9+PG3atLKyMhKJZGhouGLFChqNlp+f3/z+QWcGZ+6gbejr68+aNevs2bNpaWkDBw6Uk5N7//59bGysqqrqnDlzEELy8vLjx4+/cuUKh8MxNjZOS0u7fv36xIkThRfDNMXOzm7z5s0kEsnHx0e4hkajTZ8+3d/fn8Fg9O3bNysrKyQkxNzcXEVF5ZvXamtrDx8+/OjRo5WVlRoaGrGxsVVVVQghAoHQ8p006tGjh5OT07FjxyorK7t16/bw4cP8/PwlS5a0fFetewd+6Udu9RH19fUZDMa2bdvGjBmDEEpISGCxWFZWVs3vH3RmUO6gzUyaNMnIyCgoKOju3btMJrN79+7jx4+fMmVK49dTZ8+eLS8vHxkZeefOHXV19YULFwqvuW6GpaWllJSUlJRU3759G1d6eHjIycmFhobeu3ePTqe7ublNmTLlhy9fuXKloqKi8IKZYcOGDRgw4MCBA8JR+JbvpNHy5cvV1NRiY2NLSko0NDQ2b94svPSz5btqxTvwqz9y646ooqKyY8eOCxcuHD16FCGkra29fft2Y2PjlhwCdE6YAKb8BWKquro6Li5u0KBB8vLywjX+/v6PHz8OCAjANxgAHQDG3IHYkpSUPHfu3JEjRz58+FBbWxsfHx8eHi78OhIAYg/O3IE4S0tLO3DgwJcvXxBCVCp17Nix06dPJ5FgNBKIPyh3IP4YDAabzVZWVoartkHXAeUOAABiCMbcAQBADEG5AwCAGIJyBwAAMQTlDgAAYgjKHQAAxBCUOwAAiCGRLPeioqKfzlcnEAi+np4QgDbE4/HwjgDEUxsWl0iW+/nz548fP978Nnw+v6GhoWPygK6mrq4O7whAPPF4vLYqLpEsdwAAAM2DcgcAADEE5Q4AAGIIyh0AAMQQlDsAAIghcS535qW9jJsn+Sy4sAEA0OWI7V0LuMU57HfP2AJB/avHcqNn0SwdEMzlDcCvCAkJKS0txTtFFzJixAgNDY222pvYljtJVVNu8b768PPsT+8qLu2viQuluy+Q0DbBOxcAImPu3LkuLi4UCgXvIF3Cs2fPampqli5d2lY7FNtyRwiR1HVVlu6vf/WYEerPzs0oObKa2ncwfYwXUV4F72gAiIYDBw4oKCjgnaJLWL16ddveOkmcx9wRQgjDqP2GqK3zlx05DSOR61Pji3y8qiMDBRw23skAAKAdiXu5I4QQwiQosiOnqW04S+vvIGA3VEcGFu2cU5d0H+9cAADQXrpEuQsR6coKU9coL9lL7q7NY5RWXNpfenwtp+AT3rkAAKDtdaFyF6Lo9VFdc0Jh6mqCNL0h41XxvkUVl/bxaxh45wIAgLYknuX++s3bEZPnDvWYc+3WnR88jWG0/o5q68/IOHhgBGJdygNedWWHZwQAgHYkhlfLsNls9yUbssafQxQpb78VxnravXv3/n4zAk1azmU2rb9jQ+Zrcnftjs8JAADtRwzP3D99+sTsboGosohALDEZ9+BJYjMbk9U0pQeP7rBsAIBO6O3bt5s2bWqTXaWmpnp7e3t4eFRUVMyYMaNN9tk6YljuWlpatIKXiMtGCClm3LOx7Id3IgBAp1ZYWBgREfH7+xEIBM7Ozn369Jk3bx6BQKiqqhKuHzp06KNHj35//79EDMtdUlLywq4/+4d59b42dfNoUwsLC7wTAQBahMFglJaWMpnM+Pj4oqKir5+qqKh48uRJbm6u8GF9fX1eXp5wuby8vLCwULhcUlJSXV0tXK6urn769GlmZmbjToqKimpqaoqLi2NjYzkczg8z8Hi81NTU+Pj4srIy4Zra2trG/ZeWlpaUlHy9t29eWFRUZG9vb2JiIisre/ToUYRQWVlZWVlZTk5OdnY2g9Fx126IYbkjhOwGWT8Nvfg8NMB77m/9WSTgsMvP72B/SmurYACAZvj5+bm7u9vZ2R09erRv377nz58Xrg8ICDA2Nvb19R08ePDy5csRQpWVlcbGxsKCnjFjhrW1tXBLZ2fn58+fI4SCg4N79+69f//+8ePHT5kyRfjlTy8vr2nTpo0YMWLfvn2Np9XfGDBgwIYNG44cOWJqanr58mWE0OfPny0tLYXPurq6jhw5Urg8aNCgjx8/Nr6wqqpKmG3BggUHDhwoLy/X0dFBCF2+fDknJ+fQoUPz58+Pjo5u8zetKWL4gWobqn0SVv/qcf3rJzTzoXIuc4h0JbwTAYCb+tcJ3NK879eT1bQkTawaH/IYpXUpD364B2lbN4ws0fiw9nk0hmG0/o5fb/P27duMjAwlJaXU1NShQ4eOHTuWw+EsWbLk4cOHFhYWlZWVRkZGLi4uDg4O6urqSUlJ/fv3T01NVVFRycrKUlBQSE9Pt7GxKS4uXrx4cUJCgp6eHo/HGzp0aEhIiLu7O0KIyWSmpKSQSE1W35MnTyQlJYVJhg8fPmXKFGNjYz6f//79++7duxcUFFAolLKyspqaGgaD0a/f/0Z9FRQUrl+/rqamJmzwxjnXli5dGhAQsGfPHkdHxx8esZ1AuTdHymaUgMetjrpSl/Kg/k2C9JAxsiMmYxQq3rkAwIGgoZ5fV/P9ej6b9Z/NeLwfboYQQgL+fx6x6gTfzdVqb2+vpKSEEOrXr1/37t1TU1PZbLampqZwfFVeXt7Z2Tk+Pt7BwcHBwSE2NlYgEJibm5uYmMTExCgpKVlZWdFotKioKAqFcuPGDeE+JSQknj9/Lix3d3d3EonU0NAQHBwsfHby5MlfB3jx4sW5c+fy8/O5XG5xcTGDwaDT6fb29jExMZqamnZ2dlQq9eHDh1VVVcOGDSMQOu/gB5R7czAJioyDB83Cvir8fF1yLDPmWl1KrNyomTCBMOiCaP0dWrIZSVFNzmV2S7aUth3z/UoJif+d2lMoFBaLxWazv56ZUlJSsr6+HiFkb29/9OhRPp/v4OBgYmJy5swZJSUle3t7hFBtba2kpKS8vLzwJRMnTjQ2NhYuy8jIIIQ4HM6TJ08an23c+cePH93d3U+fPm1qasrlco2MjFgslvBY4eHhmpqaDg4OVCo1JiamqqpKeKxOC8r954h0JYWpa6SsRjJCTnHysyou7a9NvEcfu4Csrot3NADETWJiIo/HIxKJZWVlGRkZJiYmbDb748ePZWVlSkpKAoEgPj5+3bp1CKFhw4ZNmzatpqbm3Llzenp6s2bNkpaWFg7Tm5ubl5WVubu7C/8I+J60tPTJkye/X5+ammpqajpmzBiE0KNHj/j8f//UcHR0XL16tbq6+urVqyUlJTdu3FhdXb158+YW/lBUKrWhoaEV78bvgHJvKYqeqerqY3XJMVW3zzZkvinev4RmaS/nOpcoI493NADEB4FAcHNzc3Jy+ueffzw9PXv06IEQ8vT0dHJymjFjRmxsLI1GmzBhAkJIXl7e2Ng4Jyend+/eGIb16tUrJSVF+MmnkZHRwoULbW1tZ8+eTSaTExMTPTw83Nzcfnr0AQMGeHl5bd26lUaj3blzp3FoXktLS0FBgcfjCW+mQaPRamtrDQwMWvhDDR48eNOmTfHx8c7Ozra2tq17Z34VlPuvwDBaf0fJ3gOZ96/VPAqpS4phvU2UcfSQthuLkch4hwNAHAwbNmzmzJkxMTF//vnnuHHjhCuPHz8eERHx8uVLDw+P8ePHk8n//nM7efJkXV0dhmEIoYMHD5aXlzc+tWvXLldX18ePH9fX10+dOtXBwQEhtHbtWuH/Ft8wNTXdvn07Qqhnz54JCQmhoaGSkpIhISEPHz6k0+nCbS5evIj9/2Csn5/fD8/EZWVlr1692rj8zz//CJd9fHycnZ2Li4tVVVXb4D1qGaxtp4fvGD4+Pkwmc9euXc1sw+Px2Gw2ldpeH35yS/MZt/xY7xIRQiRldbrbvK8vGADijclkCoduxZuiomJGRkZH3qxj7969GRkZ/v7+HXbEzmP16tXdunVbtmwZh8Npk+LqvB/1dnIkZXUlr61K87aRVDS4pfmVVw8J2B09pgaAmFFTU9PS0sI7hZiAYZnfImk8QNXAvCYulCiniEnArSYB+C34TsYiZqDcfxdGJMkMG4d3CgAA+A8YlgEAADEE5Q4AAGIIyr3dccsLqyMD4eNWAEBHgjH3dlcV6l//OqH2aYTc6FkwbwEQLYcPH6bRaHin6BKeP38u/GZsW4Fyb3cyjhN51RXsz+8rLu2vib9Dd18o0dMQ71AA/NydO3du377d8d+b75oGDRrk7OzchjuELzF1CIGgLjmm6s5ZXnUlwjCapb2cy1yiLMxbIKq6yJeYQMfjcrnwJSaRgmG0/o5qG8/LjpyGEUl1STFFO2ZVRwYKuD++FwwAAPwmKPeOg0lIyo6cpvrXaWq/IQI2qzoysHj3/PrUeLxzAQDEEJR7RyMpdVecuUF50W5yt57csoLyCztLT/zFKfyMdy4AgFiBcscHRb+f6prj8h5LCVKyDR9Ti/ctrrx2hF9bjXcuAICYgHLHD4EoZeOstv6MlI0zQoLahLuVVw/hnQkAICag3HFGkJKV91iquuoYRb+frNNUvOMAAMQElHunQFbXUV60O59D3Lrv0MWgYB6Ph3ciAIBog3LvLD58/DhkxqotjAHzHjW4zliIdxwAgGiDcu8sTl+6nue4GWn3Z1lMfFvJF97fHQAAWgfKvbNQU1IgVucLlwn1DArlP7f+aMh6w879iEcuAIBIgrllOgvvuZ6hHrM+Z98nVxeumjaGQPjf/7sCHrcy6BC3rADmLQAAtBCUe2dBpVKf3AkqLCyUk5P7dh4+Ho/ax6bm0a26pJj61wmyI6ZI27lhJDJOSQEAIgCGZTqXbt26fT/DKiZBkXOZ8++8BQ31VXfOwrwFAIDmQbmLjH/nLVj81bwFx2HeAgDAj0G5ixhKr/+ft0BariHj/+ctqKnCOxcAoHOBchdB/85bcFbadgxCqDbhbtGuOTWPbiE+fPUJAPAvKHdRRaBJ090Xqq09JWnUn19Xwwg5VbRnASs9Ce9cAIBOAcpdtJFUeyjN3644exNJsRu3OLfs9N+1z6PxDgUAwB9cCikOqH1sJE0G1D4Oq4m/Te1jg3ccAAD+oNzFBEYkSdu5SQ9xQQQi3lkAAPiDYRnxAs0OAEAIQbkDAIBYgnLvQhqy3gg4bLxTAAA6Aoy5dxW8ypKy0xsJNFm5UZ60/o54xwEAtC84c+8q+LVMkmI3HqO04tL+0uN/MT+9z8/PxzsUAKC9QLl3FWQNXdU1x+njlxCkZBsyUssPLb++eY2Dy/iamhq8owEA2h6Ue1dCIEoPHq26/uzlYrKAQBonXXFEjxu9b72Ax8U7GQCgjUG5dzl8CckTlYpOukfipc3kBKz+VR9L9i1ifXiBdy4AQFuCcu9yyGSyWTep/DePpghGL82k8eVVOUU5ZSfXl55YxynKwTsdAKBtQLl3RTfOHj03Qn6bfLLvUd8eG8/Sxy4gSEo1fHxZsm8R4+ZJPqsW74AAgN8Fl0J2RQQCYeI4t8aH0nZuVDO76vDztc+ja+JC61PjVJYfJiqo4JgQAPCboNwBQggRZeXlJ6+UHuLKuHlKIBAQ5ZXxTgQA+C1Q7uB/yBp6yt77+PU1CMPwzgIA+C0w5g7+C8MINBm8QwAAfheUOwAAiCEod/BruGUFeEcAAPwclDv4Bax3z4p2zqm4tI/HrMQ7CwCgOVDu4BdwivMwArEuKaZ4l1fNoxCYtwCATguulgG/QMZ+PNXUmnHLj/UukRFyuuZxmNwYr8CU7EdJqe4j7NxdR+EdEADwLyh38GtIyupKXlsbPr5k3DzFKfpSfmaLHE81SWNh2KWoorKKRbOn4x0QAIAQDMuA1qHom6msOS43xquOh9kQiyOLdyztrXIr/B7euQAA/4JyB62EEUkyw8Yty5e/IjuMKODNK791WKOy9lkkEgjwjgYAgHIHv2ff9o0BCYmzPymm1ZNkMF5l0KFi3yUNWW/wzgVAVwdj7uC39DYxfnv/JofDIZNIdalxVbfPcvKySo/9SbMYpjDtT7zTAdB1QbmDNkAmkxFCNDM7am/rmrhb1VFXiNJ0vEMB0KVBuYO2hJElZBw8aBbDMAoV7ywAdGlQ7qDtEekwYzAAOIMPVAEAQAxBuYOOJuCwYd4CANoblDvoaMz7QcW759enxoeERVq5TLEZM+3R4wS8QwEgbmDMHXQsgaD+XSK3NL/8wk5uLaVixP5McjfPTXNSbxrT6XCBDQBtBs7cQcfCMJUVh+lj5/NIFGuphujsFZvKArk9rdLT0/FOBoBYgXIHHQ0jkqTtxvJm77haKY0hvlfZrSipaF3GJ8Tn4x0NAPEB5Q7woWNsquHmuTpH+h2LJEsUsO/9U+zr3ZAJ8xYA0DZgzB3gZuJYl4ljXRBCrHfPGDdPcfKzSo+tkTSxorsvJCmq4Z0OANEG5Q7wJ2kyUNXQsvZxWNXdANa7xOL3KVKDRsmNmglfcwWg1WBYBnQKGJEkbeemts6fZmEv4PNq4kKLfLzq3zzFOxcAogrKHXQiRLqSwvQ/VVYcluhpxGOUCTgNeCcCQFRBuYNOR0JTX2XZAcU5m2lmdl+vP3EusO/IiZajJt+LfYRXNgBEBYy5g04Jw6im1l+vePPmzZZbKaXjAxGPM3/7zLcDLKSlpfFKB0DnB2fuQDQkvXhVquuIEEJEco26RXZ2Nt6JAOjUoNyBaBhsPUAtPQTxuYjFlMt71ktPD+9EAHRqMCwDRIO+vv6ppRP2nPaSlCAfOLy19tJelpyCnLMnQVoO72gAdEZQ7kBkjHF2GuPshBDiFOUUpz9HfH79q8eyzjOkrZ0RAf4GBeA/4J8EED1kNU21tacljSz5tdWM4GNFe+az0pPxDgVA5wLlDkQSSbWH0vwdSl5bSIrduMW5Zac3lvlv5pYXCp9lMBivXr2qr6/HNyQAOIJhGSDCGuctqI74p3Hegoeo27Lj12q7m9G//H33rK9+r154xwQAB3DmDkSbcN4C1fVnpGychfMW6MaeHjJiUqXdsix3v1XbD+AdEAB8QLkDcUCUVZD3WKqy/KCElqE8SbC78MStrDVmggIWm413NADwAeUOxIeElqHK8oMJymalPLJZ/YfQL+sPD1DkVVfgnQsAHEC5A/GCYR4bfLDpG7JVTDASWS4/jV9fg3cmAHAAH6gCMdRvwEA0YCC3vLAh6y1ZVRPvOADgoMlyT0pK6t69u7q6ekemAaANkRS7kRS7/fCpioqKvcf9mbX1axbM7NmzZ8fmAqAjNDks4+vrGxYW1pFRvlZUVPTixQu8jg7EG5fLtRs/a2+D7QnpCcM8V5SUlOCdCIC212S5u7u7P3z4sLi4uCPTCC1fvtzd3X3w4MEdf2jQFaSnpxd1txb0tERq+jn9PKNiHuCdCIC21+SwjIaGhpqa2vz58y0tLdXU1IhEYuNTs2bNatdMhw4dQgjR6fR2PQroslRVVSnlmZICtn/OrkvVfE0NZ7wTAdD2miz3R48eVVRUyMnJZWRkZGRkfP1Ue5c7AO1KRUVl0UiL6vvThnarHyqHqB8luUa6JKXueOcCoC1hAoGgmacZDEZWVlZpaamioqKenp68vHwbHtvX1/fjx49fr1m+fLmRkZFwmU6nMxiMH77Qx8eHyWTu2rWrmZ3zeDw2m02lUtsqLRAzXHZD7eOw2qhLfFYdRiRJDRol6+xJkKS15LVMJlNGRqa9E4IuiMvlcjicNimu5i6FPHfu3PXr1zkcjvAhmUweN27c7NmzMQxr9fFYLBaDwVBTU0MIjR49mslkfv0sXJwDOgxJgiJnP07Ganj1vUs1j+/UxIXWpTyQHTFFeogri83ecfB4Yuq7iaOGz50xGe+kALRGk+V+69atoKCgyZMnOzo6KikplZeXx8TEXLp0SVFR0c3Nrfmd7tmzJzg4ODs7e8OGDatWrWpcv3///h07dsjIyCgpKYWGhhoYGLTZzwFAqxCkZOnuC6UGDGfcPNmQ/Y4Rcqo26f7BLK6v1BjusAWJUSdZ7H+WzJ2Bd0wAflmTV8tERkaOHTt21qxZPXr0oFKpGhoanp6e7u7ukZGRP92pjo7O7t27Bw4c+PWcq+np6du3b09OTs7NzR0yZMiaNWuaevnJkyctLS319PQsLS2PHTv2qz8SAL+KrKGnvNRXyWsLUUGFk5e5hPLZn/pUg1/FtPMOvnsf73QAtEaTZ+75+fmTJ3/7B6mJiUl4ePhPdzphwgSE0OnTp79eGRgY6OzsrKenhxBaunSpsbFxTU3ND29gv3DhwoULFzZ/iKCgoGfPnjWm+n78XTjmzuVyf5oWgH9pmkgvOdAQF1L94IYj87lN7esTEoPre6h9M3iIEKqpgSkNQLsQjrn/tLhoNNrXVzD+UJPl3r1797S0NDs7u69XpqWltXpY/NOnT43jMLq6ugKBIC8vz9DQsHV7s7a2brxoR15e/vtPt+ADVdAqMjJuXuUapkkndw6SYa1m3SfIK5OyU6l9h3y3HXygCtpeR3yg+scffxw/flxCQuLrMfcbN24sWrSodUeqrq6m0f69FAHDMBqNVlVV1bpdIYS0tLQcHR1b/XIAmmFgOdDg7J2GzDeMkFOc/CzGzVOSRgMwCYrw2ZKSkgcPHpibm/eC24CATqzJcndzc6uqqrp27VpQUJBwDZlMnjRp0k8/TW2KiopK46WNXNGx+FoAACAASURBVC6XyWSqqqq2blcAdACKnqnqqqO1zyIJUrKNzf48KWX8mt0FRu5KFw//5WKxfD585wN0Us1NHObo6Ojm5paVlVVWVqakpKSjo/M73xrt06dP43h9cnKygoICXPgIOjsCQcrmP99f3XTwdO4EP0SRLrYYf+b6DCh30Gk1We6+vr7Dhg2bP3++ubn5r+705cuXmZmZeXl5JBIpODjYwsJCR0dn+vTpW7duPXPmjLW19dq1a728vMhk8u+FB6CjEYkExOMghJBAgAn4eMcBoEntMnHYixcvgoODe/TowePxgoODP336hBBSVFS8e/fu9evXp0+fbmNjs3Xr1tanBgAnu9d697w+T+rpWfXr81d6jsc7DgBNanL6gYSEBGEvd/zEYT8F0w8AHFVXVyckJPTp06d79+7c0vzapxEyIyYTJKWKi4uPnL1IpUh4z/WUk5PDOyYQSR1xtQxMHAbAD8nKyg4aNEh4KSTjlj/r3bPa5/fJ9h62W89/HLKeUM26OnZGSmSwhIQE3klBl9ZkuTs6Os6YMQM+8wSgGXJ/TBewahuy3jTc9jvST2GzsmSilGV+Yerr168tLS3xTge6tE56JyYARAJZQ1d5yV4Fz3VcmpwJVhH8ef2J3L09azKUlZXxjga6us54JyYARAmG0czstLZevCfoVs/DXKrib2p+pr+OETT8b2KlioqK5ufWBqDNdcY7MQEgcjCyxJzD55kFXxqiAlmvHjNjrtWlPJAbM7dMoafz7GUM6R60qtzLvpstLczwTgq6CvhAFYA2I9NdS2bmBnbOB8bNk+zP7ysCfHK4FIrjqnxla8SuW7J10bPbl/DOCLqKJst93bp1CKHPnz+np6czmUwPD4+SkhIVFZUOzAaASJLQNFBZdrA28V51eEBPZmVIsc9V9vC9atPrea2/yw0Av6rJcufxeHv37o2NjRU+9PDwWLNmja6u7tq1aykUSkfFA0A0YZjUwJHUfkOeHtrSvfDt5Moo5eKXH6z7fr0Jn88nEJr80AuA39Tk71ZgYGB8fPyqVavOnDkjXOPp6ZmcnHz58uWOygaAaCNISg36a1+h08JMkoKa7Qifjf/eoKa4uNhq1ETtkTP7DB+Xlv4e35BAXDV55h4dHe3h4TFy5MiysjLhGnt7+y9fvsTGxsKYOwAtZ+Psipxdv16zeMPO57a7kKImqq/2Wrfsya1AvLIBMdbkmXtVVZWOjs43K3V1dRun7QUAtE5heSVS1EQIIaosk4N3GiCmmix3bW3tFy9efLMyNTVVU1OznSMBIOYmOTvK3d+LqoupSYFDTPUa16elpaWmpsIV8aBNNDksM2nSpC1btpDJZDMzM4RQXl7ew4cP79y508yNrQEALeHt5ammfOd6xIFhA83meW5ifXiBEcmTdp56UqvII1FM6/fHXA/46R0yAWhek7NCIoSio6PPnj1bXl4ufEilUqdNm+bh4dFR2ZoEs0ICfDGZzLa6h6qAwy728eJWFMc10P8y3Z8roSqVcObWVH1HB4c22T8QLR0xKyRCaPjw4UOHDs3LyysqKqLT6VpaWo03QQUAtBWalVNVdJAtYsRmLDqt7H6OTOKwYSQe/K6fXGZLJpO1tbWtra2NjIyg2QFocxhZQtZpitqGs49rKRQBZ1lJ0APyTWtaAxII3rx9N2LSHNux0yOiY/GOCURPc2fuAICOQZZX9jgd8vT6ReU3sQrM4pqQk6wXD/6Kyo7+4yySoGXuWxKnramnp/fzHQHw/+ALcgB0CgQCYZCHp/62CwpTVxNl5blf3p8y4JwsP9VdUF1oMj7uyTO8AwIRA2fuAHQmGEbr70jtO7g88nJ1TPDoqif2zJSLlbIWvZcihHJzc2+E39PT0hg10gnDYKYa0Bw4cweg08EkJJVcZ2cNnZNYQ6bxWfPpJaoRJzIib9hMXbYiW2dycNaUhavwzgg6Oyh3ADqp4WPHjztzR2nhLrKaFresgBrpP2SoK9IfUmMz79mnci6Xi3dA0KlBuQPQqUkamKv+eULeY2kFSTqM00O4ksCuJRKJAoEgPj4+NjYWih58D8bcAej0CEQpG2ctYxvdCbMKsuMolZ+WTXUVCASOEzyTpS14RAmTfSceh16WkJDAOyjoRKDcARANcnR6yr0bWVlZysrKdDr99evXrylGzCGLEUJvn5EfxcUNd3TEOyPoRKDcARAZBAKhV69ewmUMwzAB799lAQ/DMA6Hcyf8bgOb4+YyCibeADDmDoBI6t27d38sRzF2Hz3uqFnpQytl2vCxkydHVM14yLMaPam+vh7vgABncOYOgEjCMOzuZf8XL15wOBwz7Ykle+Yf0iHu15C/ouCUwat/9Chu5EgnvDMCPMGZOwAizNzc3MrKCuNzeUrqSoSG3QXHb2WtseB9odGosY/ix872XvH3jqqqKrxjAhxAuQMg8shqWlp/nbrI0SjiSZjVf7gi/VQtOXTF/vO3+m06ghz/mLYA74AAB1DuAIgFDFt3/Iyi9z5O/z8IZAlazrvreqUrayLIPUzz+DK1tbV45wMdDcodAPGhrW+gPXWZ2oaz+QraVAFnRcnluIz5LhIFz5JfmgwfrzN8itusxfCNpy4Cyh0AcUOkK1tuOHaS1SObRezOKVunxa276MN33flpYkAEffhhv/N4BwQdAa6WAUAMEYnEnaf8EZ9XkxBRHfGPGaqOzF5xWX7kPjX7Nx8SnyQ8uxeXMHSgpf1QW7yTgvYCZ+4AiC8CUXrwaLUN5+4xqQIBml5xNz5vrY40ccye4O31tuOPx+w+fBLviKC9QLkDIOYINGmPQ/9cljZP59KIKhp3334uH+2DevStdNp4LfoJQqimpgbvjKDtwbAMAOJPRkZm/Y4dCCFBQ730jMWovgrR6IhdR+SyzJ3GlZKVqTVFF/ZssLHqj3dS0Gag3AHoQjAK9fj2v1znza1RMqSVvldQU4gyW4+UeiJug/fWuSl3g/AOCNoMlDsAXYuBvn56bEhhYaGqqurwyXORggZCCJEodTw0w3tt2qc8Uz3N47v+ptFoeCcFvwXG3AHocggEgrq6OolEmj/ZXfHOelSSJfX0LL+m8oXMwBS3CxelnBet24Z3RvC74MwdgK5rkrurmrLi1bArg5z6JNTIrav3u5X7wUdj5qvbn9Zu2/M5r8h75sTBNgPxjglaA8odgC5t6JBBQ4cMQggx4sIaBHVjqx46VSVcIDEPN1jVGeo92vz33b2S5mb98I4JfhkMywAAEELI0+fIgQbtx7UUGmIv0qXEcM6OFmQW2606evbi+l37/S4EcjgcvDOCXwBn7gAAhBCSkZE5cfIoQoiV8frp/r96odKTubtncuT3v2NcUJxCSckOvjsv+hpMXSAy4MwdAPAfkr36VLksPZgnweBhVuTKIDPkQ4yXNhn2oZZ85kLg9v2Hv3z5gndG8HNQ7gCAb7mNHul7/bbx3uAPioY8AWFaRWRcxgJ3XvqqRP6mSsvBM1ZmZGbinRH8BJQ7AODHCFTpwX/u2Zgv+7SeJsurWW0oFSobN1SJmOewae32vUvWbb0VFoF3RtAkGHMHADSJQqFcDr5SVlYmkff+3eldeijv4pctkUzZZQzdOv0JF6+ErXqfsWn1Urxjgh+AM3cAwE8oKSnJ9hucYu5xtIhWyyfmlZbWuWxDqr2qh60IuBE2corXir93MJlMvGOC/4ByBwC0yBKvmZvPBcos9X0hrY1qyhFC6OWdHKle94YcOMIf5jbbG++A4D9gWAYA0FI0Go2mZ3hwx8asuQuqpdSrPiYxF9xCZEm+9oAXdzaYj54uLYGd2LGut7ER3kkBlDsA4Bfp6ui8i71VVVV14nzglpwUtvFIlHq7Ws/+pfM6VF/tsWROcthlKpWKYRjeSbs0GJYBALSGnJzc6sXznCsj9a7PVnzgy7ecgBCiElBhYbHBOG+9YeOu3grDO2OXBmfuAIBWIpPJIeePI4TC70VPO3uNMWL9spfrxzl136PhcUN26No9Y1g11X17G/frB1PT4ADO3AEAv2uU0/AtDpoDbnkO4X9WQ7UH8w7eeL+ETsBmJkk7br2y89BxvAN2RVDuAIA2sGz+rMSwy6qLd+/IkykjyPTn597uj/YqZGJ28/b7BVqPmfb37gN8Ph/vmF0IlDsAoM1YWJgt3LTpgoTRpWIiFyNOrox6kr1ktqv7i9F+vp+Vtuw5UFJSgnfGrgLG3AEAbalvH9NDfUwzMjPnLFrp1UvJlly2ghUzJiN9G5O+N+TTuWc55nKcWxeOEwhwZtm+4P0FALS9Xnp6d0OvGsxe4VMom0lW02EXXFBOO+NkTB2xIrqMauc2Zdv+w/X19XjHFGdQ7gCAdkGlUi0sLNYfOLjrC3Yij1jNJw5lpkRnLFmrkP966M7txYbuc7yrqqrwjim2oNwBAO1IXV096tr5HdfuLM2iXBYYYYg3V6kqrmD9H/Uv77/M7D19vd3YqSwWC++YYgjKHQDQ7ggEQtiNy3L9zP8uoscReipyq3gZCdxV0Xmuh55gBn0d3FZu2llTU4N3TLEC5Q4A6AiSkpLzZ033u3AhoICz4rNMdBmGEELvonj11R+nBR/m2Y2cNDs9PV0gEOCdVExAuQMAOo6kpOS9oLPBt4KH9VKivApFz4OR02pEluSnhj1jythtC7Zzmwp34m4TUO4AAByEXTx12Lzehl5LyklBjALEruNNP1Vq5fUkh6lvP27a4jUwEP+boNwBADggk8nzZ01/EHLJuSJcM3QZSTiDZMgm/oR9eZ7Xgjgmg1wmXgwKhi+1thqUOwAANxISEqEXTnyOCxksXUF9dgFVFyEV3YD3q/bW3cq1Wb3gYZ3r1LnFxcV4xxRJUO4AAJxhGBZz/Z9gdw1LFXKvz/cHcrI9lFhxzAMzy8Nii0nmc7fN/3Mz3hlFD5Q7AAB/BAJhlPMfMcEXrBgPJj6vjSIZSPPr16kzoyw5vXX0z92ONbAft++YH94xRQmUOwCgs5CVlb14bG/MvbCTb/PnpZE+Cug92YVnsYh/xg8SjPxrk9+1QS6T7j94hHdM0QDlDgDoXGRlZZMirx89edg7tWZzjTGDTxpSkxqV//f6UcPShu+b8OfetZu25+fn4x2zs4NyBwB0Rrq6uk/vXO5rYeieyPqHNgghbFZ9fFzGAte+xgdYAweMm3srNJTNZuMds/OCcgcAdFKysrJLF84LDTgW/znXLaH2Mc1UnsjbKf0mos5PW1Fx0qW3Zk7j4RS+KVDuAIBOzcjQMOKy344dm7cnZi1I5eRIqBmSmEG9yo6q5VbV8YwnLB8xcTacwn8Pyh0AIAJGOzm8i7lpP2nqjFf8fZ8ItQSqI/os4Xmi2nrO/fSCHoPHrN7ig3fGzgXKHQAgMlYumJ189Uihss7oQpNlWTKfCEro4WmBd2iJ3apD16IN7Vxu3onAO2NnAeUOABAldDr92plj/ywdlVXNJKVcQyp6qLYCxZ3hLQv7YL5w8sotDhNmZmRm4h0Tf1DuAADRY21t/eJ+6K6+bPmcBPQhHhnYouJM9CKEvfpBrNzQfiMnrty0s7a2Fu+YeIJyBwCIJAqFsmbJ/Nf3ro6pjZV8dQt9jEMDp6C3Uagkq27lg0Mva3VtRv4TdL3LThAP5Q4AEGEaGhq3/jkVduRvky93SK/D0dtINGIFLXrv9Z555uOWex28auU84fWbt3jHxAGUOwBA5DnYDXkbf+9vRy3l8ndYduIUlDaAWOJX4R8wSKHaZIK1x/yFq9YxGAy8Y3YoKHcAgJjYtMo7N+n+qNLQK2kF62XGV3CJg/lfIjnnN4z941qelI6109mLV7rOBPFQ7gAA8UGhUO5cPPUyPPD1swj7uPrzbD2EEWbUPX6kmujmPmvJyVBj21FJySl4x+wIUO4AAHHTS08vNfrG/vWLTya8Hlk+ML6KTCdwttXeujuQrNJvxJDJiyZ6eZeXl+Mds31BuQMAxNPMSePyXz4yk2LMSSidLT3jM1uiF7/0MuneyfFDn+fW9bQeuf+4nxhfSwPlDgAQWxiGXTl14H30tfLkEKeHjF2VWjUYZXj9qxjD4qV/OGz3u9Zr0B/PnifjHbNdQLkDAMScpqZmSmTw6a0rb6am2TEcrpVSSIi3EEt96KhgriI3bNYalxkLxO8bT1DuAIAuYdoEt4KXj0ZI5W54XujCGJyMuinzqlfqEZGRfdjbwu4DR+3wPYp3xrYE5Q4A6CoIBMLFY/ve3gsi5j2bkMxbmiX9N8mJxeWhESuryXJbbqX0NB8SHx+Pd8y2AeUOAOhadHV0Xty/47/Y9WFWXszHL6hHXxR7HHn682orv/Qa47jywOBR4woKCvCO+bug3AEAXdHMyeNzk2Kmd6+ixB5BCEOvw9GQOaiqiN3L7om0tZ6d2+q/t4v0PUCg3AEAXZSUlFTAMd+XN04aSDCIaVGIQELVxUi1F6rMrx+9xfdOYndz+4joWLxjthKUOwCgSzMyNHz/+F7AcnfF6J0YsxS9vI1GLEePz+m5eq8yVZi11mfACNfCwkK8Y/4yKHcAAEBTJ07IeR49x96UVvwWvYlABnYbvxybrsqOtSH1VVY0GDrWy3sli8XCO+YvgHIHAACEEKLRaP6H9328f80sL5z0OnxHDu1hg6IsSbBZufC2U4+sT8WqfQZfDg7BO2ZLQbkDAMD/qKurv4i5c3Pf6oriL9PfkGai0dkcqh6B+Y9e+WHbnpv3HTexc/78+TPeMX8Oyh0AAL7l4uSY/+LhvP5q8eEXHT/p7cihMfkkR+maKGuSe3eaxUiPybMX1NXV4R2zOVDuAADwA5KSkqcP7smICTZivT/zttj2lewVgRERQ/NVa2JGdCNUVqr1tfUPCMQ7ZpOg3AEAoEmampqvYu9c912Hyj6tfVUzmuX8vI6mRGjYo1V1dVi3M/4XtS1s37x5g3fMH4ByBwCAn3BzGV385om3dfcP9wPHf1BclCldwCGb0jjXLbE1/bqNnrrwj4kzmUwm3jH/A8odAAB+jkAgHPbZmv0oxJRYFP6xcOgL6YNMbRYiucpU/T1EP/J9maq5w4Hjp/GO+T9Q7gAA0FLq6uqvYu+EHtxIZWQffFs5rHzQLZ727leVyNytXlFv9enQbr2tklNe4B0TISh3AAD4VaNH/VHyNmHFcMOSuCveHyhZalbobSRS0RMY2BXJGQyctMTOxaOqqgrfkFDuAADwy4hEou+OLXlJ9y0Fn4iv7yCqHCrNQowCZDGOJ6UYV0FT6Tds4/bdON7GD8odAABaSUVFJSk6NMrfR77kDaouQTVl6HU4sp2DiES23uCdQTFKBpYxDx7gkg3KHQAAfou9nW3pu6cr3AaTi9IRswy9vot0rZFqL0ShmZma7d642XLE2PLy8g5O1RnLfceOHVZWVv3799+yZQufz8c7DgAA/ASRSDywc3NhcrSlPBcreIeyExGrhmruukul4Hx/2nI11uAh9iv+2tiRhdYZy713794PHjyIj49PSEgIDg7GOw4AALSIoqJi0v3bsX675AuSsawETuEHf45BNZ80VEEQMby73IfnPYwt7t6L6pgwnbHc3dzcaDSapKRk7969O/5vGQAA+B1Dh9pVZLxcN9aG8Dr8THrFkNw+gfWaGCaYq0W469gtaO/OPrbOJSUl7R0Dz3IvLCzM+K+amprGZz98+BAeHj558mQcEwIAQOvs3LSu8FW8pWQZIzVq3Ueic0G/Z2y6Iom/y5S6T18w1umPOd4ruVxu+wUgtd+uf+rKlStJSUlfr/H29raxsUEIffnyxcPD48qVK/Ly8jilAwCA36KgoJAUE56UnOI0aVZ6ieoE9d6j1LptlM02kW64aqccVvzO2MR8245NkyaMb4+jY+1xGWZeXl5CQsKbN28GDBjg4uLSuL64uPjQoUM5OTl2dnZz584lEH78d0NeXt6oUaOOHTs2ZMiQH27g4+PDZDJ37drVTAYej8dms6lU6u/8IAD8EJPJlJGRwTsFEBkCgWDD9t37TwdwNPpSFNTnd2ctlvpMI/BZfOSX1RBWzAkPvqitrY0Q4nK5HA6nTYqrXYZltm3b5u/vf/PmzdjY/91blsfj2dvbl5aWjh079sSJE1u3bm3q5aNGjVJSUgoPD//rr78iIyPbIyEAAHQYDMN2bVpXlv58gFwdO+3BkQ91dll6IXWqFAJa2osSMEBm9fTJHp7z2naUpl3O3IUWLFhApVIPHjwofHj79u2VK1dmZGRgGJacnOzk5JSfny8pKfn9Cx89esThcITLPXv21NPT+2YDHx+fpKSkSZMmCR8qKSkNHTr0m23gzB20HzhzB62WmprqOGEWg6IskFWxVCRv0azpS6lFCK1PF1z9UHxy6+qJ48f+tLiaGvb4WseNuT979szW1hbDMISQhYUFm83+8OFD3759v9/Szs7up3t7//59UFCQcNnQ0HDAgAHfbCAsdxy/+wvEWH19PZFIxDsFEEn6+vo5r57s3Hdw/7mg5PqerhWy45XQjG6c65J92bLJc7cdXbf3yIPgC5qams3shEaj/bTfO67ci4qKFBUVhcsYhikqKhYWFv6w3FvCzc0NxtwBXgQCgbS0NN4pgAjz2fr3+tXLHd2nJGV+vMbVuVYmjVivEYkicN9ZQpWzneqddu+KiorK7xyi4y6FpFKpjYMtCCEWi0Wj0Trs6AAA0KnIyMgkRt95dvUkvfoTKs9BZArSMkcGdkizX4Xd8rv37v/m/juu3NXV1b98+SJcrq2traio0NDQ6LCjAwBAJzRgwIDKD8k7508gFbxBxRnCldTyLHW13zptRx1Z7u7u7jExMQUFBQihoKAgExMTHR2dDjs6AAB0WutXLav6mDJUlS99wlXl8iwX2hdHR4ff3Ge7lPuhQ4d0dXWvXLly/vx5XV3dU6dOIYQMDQ3nzZs3YMAAZ2fndevWHThwoD0O3ejy5csrV65s10OALsvKykp4mgJAW6HRaA9CLh1Y6D7OUDbo9EHhtSe/o10+UPX09HR1dW18qKCgIFzYv3//vHnz8vPz+/Xr195fPW1oaKivr2/XQ4Auq7q6GuYrBe2By+Wy2ew22VW7lLu8vHxT3a2vr6+vr98eBwUAANCoM84KCQAA4DfhOXFYq3Xr1u3mzZuZmZnNbJOfn89gMDw8PDosFeg6uFzu4sWLKRQK3kGAuMnLy6uurv5pce3du7dnz57Nb9OO0w+0qxs3bsCgJwCgaxo+fDidTm9+G1EtdwAAAM2AMXcAABBDUO4AACCGRPID1dZJT0+PjY01NTW1tbXFOwsQK3l5eampqcrKylZWVnhnAWKFwWBERUXl5+ebm5u3ZLrcr3WVM/fXr19PnjxZUVFx165dFy9exDsOECuenp4nT548evQo3kGAuDlx4kRaWpqysvLGjRsPHTr0S6/tKh+oLliwwNbWdsqUKZ8/f3Zzc0tNTcU7ERArYWFhQUFBgYGBeAcB4ikhIWHz5s3R0dEtf0lXOXN///69iYkJQqhnz565ubld5L80AIB4CAsLGzx48C+9pKuMubPZbBLp3x8WwzA+nw930gEAiITg4OAnT57cu3fvl14lDmfuPB7vy5cvVVVV36x/9+5dfHy8cPowdXX1/Px8hBCTyaTRaNDsoIXYbHZ2dvY3k9Dx+fzk5OTExEQej4dXMCAG8vLySktLv1mZk5Pz8OHDiooK4cPQ0NDDhw/fvn37h3ecbobIl7unpyedTtfR0QkICGhcKRAIJk+e7OLismnTpl69er1//37ChAmnT59msVjHjx8fN24cjoGBCLG2tpaRkenVq9fTp08bVzKZTBsbm7lz5y5ZssTCwqKysjI3N7eoqKimpiY7O7uhoQHHwEBU7Nq1S1FRUUtLa/369V+v37FjR//+/X18fAwMDO7duxcREbFmzZrDhw+Xl5fn5eX90iFE/gPVp0+famlpzZo1a9SoUUuXLhWujIqK8vLyevPmjays7Lp16zIzM4ODgw8ePBgeHt67d28fHx+4typoidjYWDMzs969e1+8eNHe3l640tfX986dO7GxsRiGubq6WlhYMBiMxund9+zZo62tjV9kIBpSU1NlZGROnjxZVVXl7+8vXJmXl2dgYPD69Wvh/TC2bt26ePHi+Ph44bOampr79+9v+SFEfszd2tr6+5XBwcHu7u6ysrIIIU9Pzz59+nA4nBUrVqxYsaLDAwIR1ljoX7tx48acOXOE95739PTcsmXL27dvOzwaEG39+vVDCH1zR46QkJCBAwfq6uoihMaNG+fl5WVnZ+ft7d26Q4j8sMwP5ebmamlpCZd79uzJ4XAKCwvxjQTERk5Ozte/Xbm5ufjmAWIjNze3ca5HCQmJ7t275+TktHpv4lnuLBZLQkJCuEwmkzEMg7sygbby9W8XhUKpr68X9bFN0El8/auF/v+3q9V7E89yV1NTa/ysuaKiQiAQdOvWDd9IQGyoqamVl5cLl8vKytTU1H7/dpcAoP/+aiGEysrKfqe4xLPcrays4uLihMtxcXFGRkbC8XcAft+AAQMaP+OKi4uD+WRAW7Gysnry5InwThUZGRnV1dWmpqat3htxy5YtbRYND2FhYSEhIbGxsUwmMycnR0lJSUlJycDAYOPGjUwms6ysbPXq1X/99Ze5uTneSYHouXDhwr1792JiYhBCaWlphoaGNBpNS0vL29ubTqe/fv1669atx44d69GjB95JgYh5/vx5YGDgw4cP8/LyKioq+Hy+lpaWtrb2pUuXnj17hhBas2aNi4uLm5tbqw8h8mfutbW1lZWV7u7uRkZGlZWVwhuHKygoPH78uKKi4tatW7t3754zZw7eMYFIqq6urqysXLhwoYKCQmVlpfArS/369YuMjExOTn78+PGtW7dsbGzwjglED4vFqqystLa2tre3r6ysFI6tYxgWFRWlpqYWFBQ0ceJEX1/f3zmEyF/nDgAA4Hsif+YOkQ6n+gAAAVBJREFUAADge1DuAAAghqDcAQBADEG5AwCAGIJyBwAAMQTlDgAAYgjKHQAAxBCUOwAAiCEodwAAEENQ7gAAIIag3AH4BXv27JGXl4+OjsY7CAA/AXPLAPBrMAz+1QARAGfuAPyClJQUmD4aiAQodwB+wf379y0tLfFOAcDPkfAOAIAouX///rx58xBCp0+fFq6ZP38+rokA+DE4cwfgFyQnJzs6Op4+fdrDw+PFixcMBgPvRAD8GHw0BEBLpaSkODo67t69G87WQecHZ+4AtJRwwJ3BYKxduxbvLAD8BJQ7AC2VnJw8b968tWvXZmdnBwcHI4SysrLwDgXAj0G5A9BS9+/fd3R0FC7T6fSUlBR88wDQDCh3AFqksrJSR0dHXl4eITRv3rwXL15kZ2fr6urinQuAH4MPVAEAQAzBmTsAAIghKHcAABBDUO4AACCG/g/2eZmif4hcJwAAAABJRU5ErkJggg==",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 14,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_25_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/leastsq/fitting_25_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"plot!(k,a*k.^b,l=:dash,label=\"power-law fit\")"
]
},
{
"cell_type": "markdown",
"id": "f0ff1d9a",
"metadata": {},
"source": [
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"\n",
"Thus the variable $z=\\log y$ can be fit linearly in terms of the variable $s=\\log t$. In practice these two cases—exponential fit and power law—are easily detected by using log-linear or log-log plots, respectively.\n",
"\n",
"## Exercises\n",
"\n",
"1. ✍ Suppose $f$ is a twice-differentiable, nonnegative real function. Show that if there is an $x^*$ such that $f'(x^*)=0$ and $f''(x^*)>0$, then $x^*$ is a local minimizer of the function $[f(x)]^2$.\n",
"\n",
" (problem-fitting-census)=\n",
"2. ⌨ Here are counts of the U.S. population in millions from the census performed every ten years, beginning with 1790 and ending with 2010.\n",
"\n",
" ``` julia\n",
" 3.929, 5.308, 7.240, 9.638, 12.87, 17.07, 23.19, 31.44, 39.82, 50.19, 62.95, 76.21,\n",
" 92.22, 106.0, 122.8, 132.2, 150.7, 179.3, 203.3, 226.5, 248.7, 281.4, 308.7\n",
" ```\n",
"\n",
" **(a)** Find a best-fitting cubic polynomial for the data. Plot the data as points superimposed on a (smooth) graph of the cubic over the full range of time. Label the axes. What does the fit predict for the population in the years 2000, 2010, and 2020?\n",
"\n",
" **(b)** Look up the actual U.S. population in 2000, 2010, and 2020 and compare to the predictions of part (a).\n",
"\n",
"3. ⌨ The following are weekly box office earnings (in dollars) in the U.S. for the 2012 film *The Hunger Games*. (Source: boxofficemojo.com.)\n",
"\n",
" ```julia\n",
" 189_932_838, 79_406_327, 46_230_374, 26_830_921, 18_804_290,\n",
" 13_822_248, 7_474_688, 6_129_424, 4_377_675, 3_764_963, 2_426_574,\n",
" 1_713_298, 1_426_102, 1_031_985, 694_947, 518_242, 460_578, 317_909\n",
" ```\n",
"\n",
" (Note that Julia lets you use `_` where you would normally put a comma in a long number.) Fit these values to a function of the form $y(t)\\approx a e^{b t}$. Plot the data together with the fit using standard linear scales on the axes, and then plot them again using a log scale on the vertical axis.\n",
"\n",
"4. ⌨ In this problem you are trying to find an approximation to the periodic function $g(t)=e^{\\sin(t-1)}$ over one period, $0 < t \\le 2\\pi$. As data, define\n",
"\n",
" $$\n",
" t_i = \\frac{2\\pi i}{60}, \\; y_i = g(t_i), \\quad i=1,\\ldots,60.\n",
" $$\n",
" \n",
" **(a)** Find the coefficients of the least-squares fit\n",
" \n",
" ```{math}\n",
" y(t) \\approx c_1 + c_2t + \\cdots + c_7 t^6.\n",
" ```\n",
"\n",
" Superimpose a plot of the data values as points with a curve showing the fit.\n",
"\n",
" **(b)** Find the coefficients of the least-squares fit\n",
"\n",
" ```{math}\n",
" y \\approx d_1 + d_2\\cos(t) + d_3\\sin(t) + d_4\\cos(2t) + d_5\\sin(2t).\n",
" ```\n",
"\n",
" Unlike part (a), this fitting function is itself periodic. Superimpose a plot of the data values as points with a curve showing the fit. \n",
"\n",
"5. ⌨ Define the following data in Julia.\n",
"\n",
" ``` julia\n",
" t = 0:.5:10\n",
" y = tanh.(t)\n",
" ```\n",
"\n",
" **(a)** Fit the data to a cubic polynomial. Plot the data together with the polynomial fit over the interval $0 \\le t \\le 10$.\n",
"\n",
" **(b)** Fit the data to the function $c_1 + c_2z + c_3z^2 + c_4z^3$, where $z=t^2/(1+t^2)$. Plot the data together with the fit. What feature of $z$ makes this fit much better than the original cubic?\n",
" \n",
"\n",
"6. ⌨ One series for finding $\\pi$ is\n",
"\n",
" $$\\frac{\\pi}{2} = 1 + \\frac{1}{3} + \\frac{1\\cdot 2}{3\\cdot5} + \\frac{1\\cdot 2\\cdot 3}{3\\cdot 5\\cdot 7} + \\cdots.$$\n",
"\n",
" Define $s_k$ to be the sum of the first $k$ terms on the right-hand side, and let $e_k=|s_k-\\pi/2|$. \n",
" \n",
" **(a)** Calculate $e_k$ for $k=1,\\ldots,20$, and plot the sequence on a log-linear scale.\n",
"\n",
" **(b)** Determine $a$ and $b$ in a least-squares fit $e_k \\approx a \\cdot b^k$, and superimpose the fit on the plot from part (a).\n",
" \n",
"7. ⌨ Kepler found that the orbital period $\\tau$ of a planet depends on its mean distance $R$ from the sun according to $\\tau=c R^{\\alpha}$ for a simple rational number $\\alpha$. Perform a linear least-squares fit from the following table in order to determine the most likely simple rational value of $\\alpha$.\n",
"\n",
" | Planet | Distance from sun in Mkm | Orbital period in days |\n",
" |---------|:--------------------------------------------:|:-----------:|\n",
" | Mercury | 57.59 | 87.99 |\n",
" | Venus | 108.11 | 224.7 |\n",
" | Earth | 149.57 | 365.26 |\n",
" | Mars | 227.84 | 686.98 |\n",
" | Jupiter | 778.14 | 4332.4 |\n",
" | Saturn | 1427 | 10759 |\n",
" | Uranus | 2870.3 | 30684 |\n",
" | Neptune | 4499.9 | 60188 |\n",
"\n",
"8. ✍ Show that finding a fit of the form\n",
"\n",
" ```{math}\n",
" y(t) \\approx \\frac{a}{t+b}\n",
" ```\n",
"\n",
" can be transformed into a linear fitting problem (with different undetermined coefficients) by rewriting the equation.\n",
"\n",
"9. ✍ Show how to find the constants $a$ and $b$ in a data fitting problem of the form $y(t)\\approx t/(at+b)$ for $t>1$ by transforming it into a linear least-squares fitting problem."
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"formats": "md:myst",
"text_representation": {
"extension": ".md",
"format_name": "myst",
"format_version": 0.13,
"jupytext_version": "1.10.3"
}
},
"kernelspec": {
"display_name": "Julia 1.7.1",
"language": "julia",
"name": "julia-fast"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.7.1"
},
"source_map": [
15,
19,
43,
50,
54,
59,
88,
92,
162,
167,
194,
201,
206,
210,
213,
238,
242,
359,
366,
370,
374,
378,
382,
386,
389,
393,
395
]
},
"nbformat": 4,
"nbformat_minor": 5
}