diff --git a/README.html b/README.html new file mode 100644 index 0000000..cbdeaa6 --- /dev/null +++ b/README.html @@ -0,0 +1,25 @@ + + + + + + + README + + + + +

Computational Mechanics 03- Initial Value Problems

+
+
Warning: Under Construction!!
+
+ + diff --git a/README.md b/README.md index 1d15de0..b26bad5 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -# Computational Mechanics 03 +# Computational Mechanics 03- Initial Value Problems + +![Warning: Under +Construction!!](https://publicdomainvectors.org/photos/under-construction_geek_man_01.png) diff --git a/data/.ipynb_checkpoints/therocket-checkpoint.txt b/data/.ipynb_checkpoints/therocket-checkpoint.txt new file mode 100644 index 0000000..444c7a3 --- /dev/null +++ b/data/.ipynb_checkpoints/therocket-checkpoint.txt @@ -0,0 +1,151 @@ + 0.0000000e+000 2.7316440e-001 + 1.0000000e-001 1.4411079e+000 + 2.0000000e-001 2.6693138e+000 + 3.0000000e-001 4.2383806e+000 + 4.0000000e-001 5.6499504e+000 + 5.0000000e-001 6.9489214e+000 + 6.0000000e-001 8.4234922e+000 + 7.0000000e-001 9.7402175e+000 + 8.0000000e-001 1.1202077e+001 + 9.0000000e-001 1.2641944e+001 + 1.0000000e+000 1.4119110e+001 + 1.1000000e+000 1.4143788e+001 + 1.2000000e+000 1.3868911e+001 + 1.3000000e+000 1.4228543e+001 + 1.4000000e+000 1.4349276e+001 + 1.5000000e+000 1.4332521e+001 + 1.6000000e+000 1.4485844e+001 + 1.7000000e+000 1.4544145e+001 + 1.8000000e+000 1.4663928e+001 + 1.9000000e+000 1.4723150e+001 + 2.0000000e+000 1.4762523e+001 + 2.1000000e+000 1.4567879e+001 + 2.2000000e+000 1.4700960e+001 + 2.3000000e+000 1.4935190e+001 + 2.4000000e+000 1.4835846e+001 + 2.5000000e+000 1.4939327e+001 + 2.6000000e+000 1.5135346e+001 + 2.7000000e+000 1.5135338e+001 + 2.8000000e+000 1.5306380e+001 + 2.9000000e+000 1.5132562e+001 + 3.0000000e+000 1.5381284e+001 + 3.1000000e+000 1.5236603e+001 + 3.2000000e+000 1.5322400e+001 + 3.3000000e+000 1.5562711e+001 + 3.4000000e+000 1.5585964e+001 + 3.5000000e+000 1.5553633e+001 + 3.6000000e+000 1.5704080e+001 + 3.7000000e+000 1.5741746e+001 + 3.8000000e+000 1.5777032e+001 + 3.9000000e+000 1.5958193e+001 + 4.0000000e+000 1.5851034e+001 + 4.1000000e+000 1.4431351e+001 + 4.2000000e+000 1.2597492e+001 + 4.3000000e+000 1.1252899e+001 + 4.4000000e+000 9.6343471e+000 + 4.5000000e+000 8.0758193e+000 + 4.6000000e+000 6.3308060e+000 + 4.7000000e+000 4.8680179e+000 + 4.8000000e+000 3.0927459e+000 + 4.9000000e+000 1.6899772e+000 + 5.0000000e+000 -2.1230924e-001 + 5.1000000e+000 -9.7152877e-001 + 5.2000000e+000 -2.0733323e+000 + 5.3000000e+000 -3.0773376e+000 + 5.4000000e+000 -3.9848158e+000 + 5.5000000e+000 -5.0336843e+000 + 5.6000000e+000 -5.9029239e+000 + 5.7000000e+000 -7.0107236e+000 + 5.8000000e+000 -7.8986508e+000 + 5.9000000e+000 -9.0475347e+000 + 6.0000000e+000 -9.9931052e+000 + 6.1000000e+000 -9.8490297e+000 + 6.2000000e+000 -9.6661452e+000 + 6.3000000e+000 -9.6046216e+000 + 6.4000000e+000 -9.5843230e+000 + 6.5000000e+000 -9.5816218e+000 + 6.6000000e+000 -9.4019202e+000 + 6.7000000e+000 -9.1890537e+000 + 6.8000000e+000 -9.2108833e+000 + 6.9000000e+000 -8.9708582e+000 + 7.0000000e+000 -8.7781810e+000 + 7.1000000e+000 -8.7532819e+000 + 7.2000000e+000 -8.6501691e+000 + 7.3000000e+000 -8.5149324e+000 + 7.4000000e+000 -8.3228463e+000 + 7.5000000e+000 -8.1884909e+000 + 7.6000000e+000 -8.3247360e+000 + 7.7000000e+000 -8.0905693e+000 + 7.8000000e+000 -7.9411118e+000 + 7.9000000e+000 -7.9152913e+000 + 8.0000000e+000 -7.5282460e+000 + 8.1000000e+000 -7.5810719e+000 + 8.2000000e+000 -7.6406509e+000 + 8.3000000e+000 -7.3632566e+000 + 8.4000000e+000 -7.2633092e+000 + 8.5000000e+000 -7.1462284e+000 + 8.6000000e+000 -7.2824020e+000 + 8.7000000e+000 -6.8462979e+000 + 8.8000000e+000 -7.0498736e+000 + 8.9000000e+000 -6.6668252e+000 + 9.0000000e+000 -6.7776371e+000 + 9.1000000e+000 -6.5170086e+000 + 9.2000000e+000 -6.3479214e+000 + 9.3000000e+000 -6.2515036e+000 + 9.4000000e+000 -6.2185173e+000 + 9.5000000e+000 -6.2037124e+000 + 9.6000000e+000 -6.0111919e+000 + 9.7000000e+000 -5.9691919e+000 + 9.8000000e+000 -5.9442784e+000 + 9.9000000e+000 -5.7568067e+000 + 1.0000000e+001 -5.4967206e+000 + 1.0100000e+001 -5.3890285e+000 + 1.0200000e+001 -5.3748506e+000 + 1.0300000e+001 -5.2160427e+000 + 1.0400000e+001 -5.0653680e+000 + 1.0500000e+001 -4.9800986e+000 + 1.0600000e+001 -4.8631331e+000 + 1.0700000e+001 -4.5697048e+000 + 1.0800000e+001 -4.8943903e+000 + 1.0900000e+001 -4.5216533e+000 + 1.1000000e+001 -4.4154551e+000 + 1.1100000e+001 -4.2671072e+000 + 1.1200000e+001 -4.2803082e+000 + 1.1300000e+001 -4.0223359e+000 + 1.1400000e+001 -3.9828129e+000 + 1.1500000e+001 -3.8040067e+000 + 1.1600000e+001 -3.6814009e+000 + 1.1700000e+001 -3.5344749e+000 + 1.1800000e+001 -3.5619900e+000 + 1.1900000e+001 -3.3127391e+000 + 1.2000000e+001 -3.3105316e+000 + 1.2100000e+001 -3.3651859e+000 + 1.2200000e+001 -3.1260812e+000 + 1.2300000e+001 -3.0504968e+000 + 1.2400000e+001 -3.0618030e+000 + 1.2500000e+001 -2.8195250e+000 + 1.2600000e+001 -2.7281635e+000 + 1.2700000e+001 -2.4834779e+000 + 1.2800000e+001 -2.4105081e+000 + 1.2900000e+001 -2.2450488e+000 + 1.3000000e+001 -2.1937977e+000 + 1.3100000e+001 -2.1256652e+000 + 1.3200000e+001 -2.0089646e+000 + 1.3300000e+001 -1.8599728e+000 + 1.3400000e+001 -1.6612947e+000 + 1.3500000e+001 -1.5860937e+000 + 1.3600000e+001 -1.6911199e+000 + 1.3700000e+001 -1.4323552e+000 + 1.3800000e+001 -1.3555511e+000 + 1.3900000e+001 -1.1650490e+000 + 1.4000000e+001 -1.1411252e+000 + 1.4100000e+001 -8.8657232e-001 + 1.4200000e+001 -9.0682453e-001 + 1.4300000e+001 -9.2448445e-001 + 1.4400000e+001 -5.2713209e-001 + 1.4500000e+001 -5.1147199e-001 + 1.4600000e+001 -3.8790604e-001 + 1.4700000e+001 -4.0269559e-001 + 1.4800000e+001 -1.3883530e-001 + 1.4900000e+001 -3.3484895e-001 + 1.5000000e+001 1.0976441e-001 diff --git a/notebooks/1_Catch_Motion.ipynb b/notebooks/.ipynb_checkpoints/01_Catch_Motion-checkpoint.ipynb similarity index 99% rename from notebooks/1_Catch_Motion.ipynb rename to notebooks/.ipynb_checkpoints/01_Catch_Motion-checkpoint.ipynb index 528aa33..8d8ca10 100644 --- a/notebooks/1_Catch_Motion.ipynb +++ b/notebooks/.ipynb_checkpoints/01_Catch_Motion-checkpoint.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" + "###### Modified under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2020 R.C. Cooper" ] }, { @@ -13,9 +13,9 @@ "source": [ "# Catch things in motion\n", "\n", - "This module of the _Engineering Computations_ course is our launching pad to investigate _change_, _motion_, _dynamics_, using computational thinking, Python, and Jupyter.\n", + "This module of the _Computational Mechanics_ course is our launching pad to investigate _change_, _motion_, and _dynamics_, using computational thinking, Python, and Jupyter.\n", "\n", - "The foundation of physics and engineering is the subject of **mechanics**: how things move around, when pushed around. Or pulled… in the beginning of the history of mechanics, Galileo and Newton seeked to understand how and why objects fall under the pull of gravity.\n", + "The foundation of physics and engineering is the subject of **mechanics**: how things move around, when pushed around. Or pulled... in the beginning of the history of mechanics, Galileo and Newton sought to understand how and why objects fall under the pull of gravity.\n", "\n", "This first lesson will explore motion by analyzing images and video, to learn about velocity and acceleration." ] @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -51,7 +51,7 @@ " " ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -120,7 +120,7 @@ "imageio.plugins.ffmpeg.FfmpegFormat.Reader" ] }, - "execution_count": 4, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -131,27 +131,7 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1233" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(reader)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -173,7 +153,7 @@ "source": [ "##### Note:\n", "\n", - "You may get this error after calling `get_reader()`:\n", + "You may get this error after calling `get_reader()` if you're not running in the class Jupyter server:\n", " \n", "```\n", "NeedDownloadError: Need ffmpeg exe. You can obtain it with either:\n", diff --git a/notebooks/.ipynb_checkpoints/2_Step_Future-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/02_Step_Future-checkpoint.ipynb similarity index 100% rename from notebooks/.ipynb_checkpoints/2_Step_Future-checkpoint.ipynb rename to notebooks/.ipynb_checkpoints/02_Step_Future-checkpoint.ipynb diff --git a/notebooks/3_Get_Oscillations.ipynb b/notebooks/.ipynb_checkpoints/03_Get_Oscillations-checkpoint.ipynb similarity index 100% rename from notebooks/3_Get_Oscillations.ipynb rename to notebooks/.ipynb_checkpoints/03_Get_Oscillations-checkpoint.ipynb diff --git a/notebooks/.ipynb_checkpoints/06_roots-1-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/06_roots-1-checkpoint.ipynb new file mode 100644 index 0000000..aa2b764 --- /dev/null +++ b/notebooks/.ipynb_checkpoints/06_roots-1-checkpoint.ipynb @@ -0,0 +1,892 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "scrolled": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Roots of Nonlinear functions\n", + "## Bracketing ch. 5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## Not always possible to solve for a given variable. \n", + "\n", + "### Freefall example:\n", + "If an object, with drag coefficient of 0.25 kg/m reaches a velocity of 36 m/s after 4 seconds of freefalling, what is its mass?\n", + "\n", + "$v(t)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)$\n", + "\n", + "Cannot solve for m \n", + "\n", + "Instead, solve the problem by creating a new function f(m) where\n", + "\n", + "$f(m)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-v(t)$. \n", + "\n", + "When f(m) = 0, we have solved for m in terms of the other variables (e.g. for a given time, velocity, drag coefficient and acceleration due to gravity)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t140\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t160\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t180\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "setdefaults\n", + "g=9.81; % acceleration due to gravity\n", + "m=linspace(50, 200,100); % possible values for mass 50 to 200 kg\n", + "c_d=0.25; % drag coefficient\n", + "t=4; % at time = 4 seconds\n", + "v=36; % speed must be 36 m/s\n", + "f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m\n", + "\n", + "plot(m,f_m(m),m,zeros(length(m),1))\n", + "axis([45 200 -5 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 0.045626\r\n" + ] + } + ], + "source": [ + "f_m(145)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Brute force method is plot f_m vs m and with smaller and smaller steps until f_m ~ 0\n", + "\n", + "Better methods are the \n", + "1. Bracketing methods\n", + "2. Open methods\n", + "\n", + "Both need an initial guess. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Incremental method (Brute force)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "You know that for one value, m_lower, f_m is negative and for another value, m_upper, f_m is positive. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\r\n" + ] + } + ], + "source": [ + "function xb = incsearch(func,xmin,xmax,ns)\n", + "% incsearch: incremental search root locator\n", + "% xb = incsearch(func,xmin,xmax,ns):\n", + "% finds brackets of x that contain sign changes\n", + "% of a function on an interval\n", + "% input:\n", + "% func = name of function\n", + "% xmin, xmax = endpoints of interval\n", + "% ns = number of subintervals (default = 50)\n", + "% output:\n", + "% xb(k,1) is the lower bound of the kth sign change\n", + "% xb(k,2) is the upper bound of the kth sign change\n", + "% If no brackets found, xb = [].\n", + "if nargin < 3, error('at least 3 arguments required'), end\n", + "if nargin < 4, ns = 50; end %if ns blank set to 50\n", + "% Incremental search\n", + "x = linspace(xmin,xmax,ns);\n", + "f = func(x);\n", + "nb = 0; xb = []; %xb is null unless sign change detected\n", + "for k = 1:length(x)-1\n", + " if sign(f(k)) ~= sign(f(k+1)) %check for sign change\n", + " nb = nb + 1;\n", + " xb(nb,1) = x(k);\n", + " xb(nb,2) = x(k+1);\n", + " end\n", + "end\n", + "if isempty(xb) %display that no brackets were found\n", + " fprintf('no brackets found\\n')\n", + " fprintf('check interval or increase ns\\n')\n", + "else\n", + " fprintf('number of brackets: %i\\n',nb) %display number of brackets\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of brackets: 1\n", + "ans =\n", + "\n", + " 141.84 144.90\n", + "\n" + ] + } + ], + "source": [ + "incsearch(f_m,50,200)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of brackets: 1\n", + "ans =\n", + "\n", + " 142.73 142.83\n", + "\n" + ] + } + ], + "source": [ + "incsearch(f_m,140, 150,100)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Bisection method" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Divide interval in half until error is reduced to some level\n", + "\n", + "in previous example of freefall, choose x_l=50, x_u=200\n", + "\n", + "x_r = (50+200)/2 = 125\n", + "\n", + "f_m(125) = -0.408\n", + "\n", + "x_r= (125+200)/2 = 162.5\n", + "\n", + "f_m(162.5) = 0.3594\n", + "\n", + "x_r = (125+162.5)/2=143.75\n", + "\n", + "f_m(143.75)= 0.0206" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 134.38\n", + "interval left f(x_l)= -0.4,f(x_r)= -0.2\n", + "interval right f(x_r)= -0.2,f(x_u)= 0.0\n", + "ans = -0.18060\n" + ] + } + ], + "source": [ + "x_l=125; x_u=143.75;\n", + "x_r=(x_l+x_u)/2\n", + "fprintf('interval left f(x_l)= %1.1f,f(x_r)= %1.1f\\n',f_m(x_l),f_m(x_r))\n", + "fprintf('interval right f(x_r)= %1.1f,f(x_u)= %1.1f\\n',f_m(x_r),f_m(x_u))\n", + "f_m(x_r)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Bisect Function" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`bisect.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\r\n" + ] + } + ], + "source": [ + "function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin)\n", + "% bisect: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses bisection method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " xr = (xl + xu)/2;\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass_at_36ms = 142.74\r\n" + ] + } + ], + "source": [ + "Mass_at_36ms=bisect(f_m,50,200)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## False position (linear interpolation)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Rather than bisecting each bracket (1/2 each time) we can calculate the slope between the two points and update the xr position in this manner\n", + "\n", + "$ x_{r} = x_{u} - \\frac{f(x_{u})(x_{l}-x_{u})}{f(x_{l})-f(x_{u})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_4a\n", + "\n", + "\t\t \n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%xl=50; xu=200; \n", + "xu=xr;\n", + "xl=xl;\n", + "xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu));\n", + "plot(m,f_m(m),xl,f_m(xl),'s',xu,f_m(xu),'s',xr,0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## False Position" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`falsepos.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\r\n" + ] + } + ], + "source": [ + "function [root,fx,ea,iter]=falsepos(func,xl,xu,es,maxit,varargin)\n", + "% falsepos: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses false position method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " % xr = (xl + xu)/2; % bisect method\n", + " xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); % false position method\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/.ipynb_checkpoints/07_roots_and_optimization-2-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/07_roots_and_optimization-2-checkpoint.ipynb new file mode 100644 index 0000000..4a2ba51 --- /dev/null +++ b/notebooks/.ipynb_checkpoints/07_roots_and_optimization-2-checkpoint.ipynb @@ -0,0 +1,1525 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Roots: Open methods\n", + "## Newton-Raphson" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "First-order approximation for the location of the root (i.e. assume the slope at the given point is constant, what is the solution when f(x)=0)\n", + "\n", + "$f'(x_{i})=\\frac{f(x_{i})-0}{x_{i}-x_{i+1}}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{f'(x_{i})}$\n", + "\n", + "Use Newton-Raphson to find solution when $e^{-x}=x$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Find x when $e^{-x}=x$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.50000\n", + "error_approx = 1\n" + ] + } + ], + "source": [ + "f= @(x) exp(-x)-x;\n", + "df= @(x) -exp(-x)-1;\n", + "\n", + "x_i= 0;\n", + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 0.0014673\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 2.2106e-07\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 5.0897e-15\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Create function `newtraph.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\r\n" + ] + } + ], + "source": [ + "function [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,varargin)\n", + "% newtraph: Newton-Raphson root location zeroes\n", + "% [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,p1,p2,...):\n", + "% uses Newton-Raphson method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% dfunc = name of derivative of function\n", + "% xr = initial guess\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by function\n", + "% output:\n", + "% root = real root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "if nargin<4 || isempty(es),es=0.0001;end\n", + "if nargin<5 || isempty(maxit),maxit=50;end\n", + "iter = 0;\n", + "while (1)\n", + " xrold = xr;\n", + " xr = xr - func(xr)/dfunc(xr);\n", + " iter = iter + 1;\n", + " if xr ~= 0 \n", + " ea = abs((xr - xrold)/xr) * 100;\n", + " end\n", + " if ea <= es || iter >= maxit, break, end\n", + "end\n", + "root = xr;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "In the freefall example, we created a function f(m) that when f(m)=0, then the mass had been chosen such that at t=4 s, the velocity is 36 m/s. \n", + "\n", + "$f(m)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-v(t)$.\n", + "\n", + "to use the Newton-Raphson method, we need the derivative $\\frac{df}{dm}$\n", + "\n", + "$\\frac{df}{dm}=\\frac{1}{2}\\sqrt{\\frac{g}{mc_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-\n", + "\\frac{g}{2m}\\mathrm{sech}^{2}(\\sqrt{\\frac{gc_{d}}{m}}t)$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "setdefaults\n", + "g=9.81; % acceleration due to gravity\n", + "m=linspace(50, 200,100); % possible values for mass 50 to 200 kg\n", + "c_d=0.25; % drag coefficient\n", + "t=4; % at time = 4 seconds\n", + "v=36; % speed must be 36 m/s\n", + "f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m\n", + "df_m = @(m) 1/2*sqrt(g./m/c_d).*tanh(sqrt(g*c_d./m)*t)-g/2./m*sech(sqrt(g*c_d./m)*t).^2;" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root = 142.74\n", + "ea = 1.8806e-04\n", + "iter = 50\n" + ] + } + ], + "source": [ + "[root,ea,iter]=newtraph(f_m,df_m,50,0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Secant Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Not always able to evaluate the derivative. Approximation of derivative:\n", + "\n", + "$f'(x_{i})=\\frac{f(x_{i-1})-f(x_{i})}{x_{i-1}-x_{i}}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{f'(x_{i})}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{\\frac{f(x_{i-1})-f(x_{i})}{x_{i-1}-x_{i}}}=\n", + " x_{i}-\\frac{f(x_{i})(x_{i-1}-x_{i})}{f(x_{i-1})-f(x_{i})}$\n", + " \n", + "What values should $x_{i}$ and $x_{i-1}$ take?\n", + "\n", + "To reduce arbitrary selection of variables, use the" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Modified Secant method" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Change the x evaluations to a perturbation $\\delta$. \n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})(\\delta x_{i})}{f(x_{i}+\\delta x_{i})-f(x_{i})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root = 142.74\n", + "ea = 3.0615e-07\n", + "iter = 7\n" + ] + } + ], + "source": [ + "[root,ea,iter]=mod_secant(f_m,1,50,0.00001)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1.1185e+04\r\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t25000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tprinciple amount left ($)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "car_payments(400,30000,0.05,5,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amt_numerical = 5467.0\n", + "ans = 3.9755e-04\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t300000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t400000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t500000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t600000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t700000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t25\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tprinciple amount left ($)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Amt_numerical=mod_secant(@(A) car_payments(A,700000,0.0875,30,0),1e-6,50,0.001)\n", + "car_payments(Amt_numerical,700000,0.0875,30,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1.9681e+06\r\n" + ] + } + ], + "source": [ + "Amt_numerical*12*30" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Amortization\n", + "\n", + "Amortization calculation makes the same calculation for the monthly payment amount, A, paying off the principle amount, P, over n pay periods with monthly interest rate, r. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amt = 566.14\r\n" + ] + } + ], + "source": [ + "% Amortization calculation\n", + "A = @(P,r,n) P*(r*(1+r)^n)./((1+r)^n-1);\n", + "Amt=A(30000,0.05/12,5*12)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Matlab's function\n", + "\n", + "Matlab and Octave combine bracketing and open methods in the `fzero` function. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'fzero' is a function from the file /usr/share/octave/4.0.0/m/optimization/fzero.m\n", + "\n", + " -- Function File: fzero (FUN, X0)\n", + " -- Function File: fzero (FUN, X0, OPTIONS)\n", + " -- Function File: [X, FVAL, INFO, OUTPUT] = fzero (...)\n", + " Find a zero of a univariate function.\n", + "\n", + " FUN is a function handle, inline function, or string containing the\n", + " name of the function to evaluate.\n", + "\n", + " X0 should be a two-element vector specifying two points which\n", + " bracket a zero. In other words, there must be a change in sign of\n", + " the function between X0(1) and X0(2). More mathematically, the\n", + " following must hold\n", + "\n", + " sign (FUN(X0(1))) * sign (FUN(X0(2))) <= 0\n", + "\n", + " If X0 is a single scalar then several nearby and distant values are\n", + " probed in an attempt to obtain a valid bracketing. If this is not\n", + " successful, the function fails.\n", + "\n", + " OPTIONS is a structure specifying additional options. Currently,\n", + " 'fzero' recognizes these options: \"FunValCheck\", \"OutputFcn\",\n", + " \"TolX\", \"MaxIter\", \"MaxFunEvals\". For a description of these\n", + " options, see *note optimset: XREFoptimset.\n", + "\n", + " On exit, the function returns X, the approximate zero point and\n", + " FVAL, the function value thereof.\n", + "\n", + " INFO is an exit flag that can have these values:\n", + "\n", + " * 1 The algorithm converged to a solution.\n", + "\n", + " * 0 Maximum number of iterations or function evaluations has\n", + " been reached.\n", + "\n", + " * -1 The algorithm has been terminated from user output\n", + " function.\n", + "\n", + " * -5 The algorithm may have converged to a singular point.\n", + "\n", + " OUTPUT is a structure containing runtime information about the\n", + " 'fzero' algorithm. Fields in the structure are:\n", + "\n", + " * iterations Number of iterations through loop.\n", + "\n", + " * nfev Number of function evaluations.\n", + "\n", + " * bracketx A two-element vector with the final bracketing of the\n", + " zero along the x-axis.\n", + "\n", + " * brackety A two-element vector with the final bracketing of the\n", + " zero along the y-axis.\n", + "\n", + " See also: optimset, fsolve.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help fzero" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 563.79\r\n" + ] + } + ], + "source": [ + "fzero(@(A) car_payments(A,30000,0.05,5,0),500)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Comparison of Solvers\n", + "\n", + "It's helpful to compare to the convergence of different routines to see how quickly you find a solution. \n", + "\n", + "Comparing the freefall example\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: axis: omitting non-positive data in log plot\n", + "warning: called from\n", + " __line__ at line 120 column 16\n", + " line at line 56 column 8\n", + " __plt__>__plt2vv__ at line 500 column 10\n", + " __plt__>__plt2__ at line 246 column 14\n", + " __plt__ at line 133 column 15\n", + " semilogy at line 60 column 10\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-14\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-12\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t102\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t104\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t250\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t300\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t350\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t400\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tnewton-raphson\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tnewton-raphson\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmod-secant\n", + "\n", + "\t\n", + "\t\tmod-secant\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tfalse point\n", + "\n", + "\t\n", + "\t\tfalse point\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbisection\n", + "\n", + "\t\n", + "\t\tbisection\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=20;\n", + "iterations = linspace(1,400,N);\n", + "ea_nr=zeros(1,N); % appr error Newton-Raphson\n", + "ea_ms=zeros(1,N); % appr error Modified Secant\n", + "ea_fp=zeros(1,N); % appr error false point method\n", + "ea_bs=zeros(1,N); % appr error bisect method\n", + "for i=1:length(iterations)\n", + " [root_nr,ea_nr(i),iter_nr]=newtraph(f_m,df_m,300,0,iterations(i));\n", + " [root_ms,ea_ms(i),iter_ms]=mod_secant(f_m,1e-6,300,0,iterations(i));\n", + " [root_fp,ea_fp(i),iter_fp]=falsepos(f_m,1,300,0,iterations(i));\n", + " [root_bs,ea_bs(i),iter_bs]=bisect(f_m,1,300,0,iterations(i));\n", + "end\n", + "\n", + "setdefaults\n", + "semilogy(iterations,abs(ea_nr),iterations,abs(ea_ms),iterations,abs(ea_fp),iterations,abs(ea_bs))\n", + "legend('newton-raphson','mod-secant','false point','bisection')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ea_nr =\n", + "\n", + " Columns 1 through 8:\n", + "\n", + " 6.36591 0.06436 0.00052 0.00000 0.00000 0.00000 0.00000 0.00000\n", + "\n", + " Columns 9 through 16:\n", + "\n", + " 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000\n", + "\n", + " Columns 17 through 20:\n", + "\n", + " 0.00000 0.00000 0.00000 0.00000\n", + "\n" + ] + } + ], + "source": [ + "ea_nr" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: axis: omitting non-positive data in log plot\n", + "warning: called from\n", + " __line__ at line 120 column 16\n", + " line at line 56 column 8\n", + " __plt__>__plt2vv__ at line 500 column 10\n", + " __plt__>__plt2__ at line 246 column 14\n", + " __plt__ at line 133 column 15\n", + " semilogy at line 60 column 10\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-14\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-12\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t102\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t104\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tnewton-raphson\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tnewton-raphson\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmod-secant\n", + "\n", + "\t\n", + "\t\tmod-secant\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tfalse point\n", + "\n", + "\t\n", + "\t\tfalse point\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbisection\n", + "\n", + "\t\n", + "\t\tbisection\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=20;\n", + "f= @(x) x^10-1;\n", + "df=@(x) 10*x^9;\n", + "iterations = linspace(1,50,N);\n", + "ea_nr=zeros(1,N); % appr error Newton-Raphson\n", + "ea_ms=zeros(1,N); % appr error Modified Secant\n", + "ea_fp=zeros(1,N); % appr error false point method\n", + "ea_bs=zeros(1,N); % appr error bisect method\n", + "for i=1:length(iterations)\n", + " [root_nr,ea_nr(i),iter_nr]=newtraph(f,df,0.5,0,iterations(i));\n", + " [root_ms,ea_ms(i),iter_ms]=mod_secant(f,1e-6,0.5,0,iterations(i));\n", + " [root_fp,ea_fp(i),iter_fp]=falsepos(f,0,5,0,iterations(i));\n", + " [root_bs,ea_bs(i),iter_bs]=bisect(f,0,5,0,iterations(i));\n", + "end\n", + " \n", + "semilogy(iterations,abs(ea_nr),iterations,abs(ea_ms),iterations,abs(ea_fp),iterations,abs(ea_bs))\n", + "legend('newton-raphson','mod-secant','false point','bisection')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ea_nr =\n", + "\n", + " Columns 1 through 7:\n", + "\n", + " 99.03195 11.11111 11.11111 11.11111 11.11111 11.11111 11.11111\n", + "\n", + " Columns 8 through 14:\n", + "\n", + " 11.11111 11.11111 11.11111 11.11109 11.11052 11.10624 10.99684\n", + "\n", + " Columns 15 through 20:\n", + "\n", + " 8.76956 2.12993 0.00000 0.00000 0.00000 0.00000\n", + "\n", + "ans = 16.208\n" + ] + } + ], + "source": [ + "ea_nr\n", + "newtraph(f,df,0.5,0,12)" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/.ipynb_checkpoints/18_initial_value_ode-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/18_initial_value_ode-checkpoint.ipynb new file mode 100644 index 0000000..e67cb49 --- /dev/null +++ b/notebooks/.ipynb_checkpoints/18_initial_value_ode-checkpoint.ipynb @@ -0,0 +1,794 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Initial Value Problems (ODEs)\n", + "*Ch. 22*" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## Euler's method \n", + "\n", + "$\\frac{dy}{dt}=f(t,y)$\n", + "\n", + "$y_{i+1}=y_{i}+\\int_{t_{i}}^{t_{i+1}}f(t,y)dt$\n", + "\n", + "$y_{i+1}\\approx y_{i}+f(t_{i},y_{i})h$\n", + "\n", + "The error of this method is:\n", + "\n", + "$E_{t}=\\frac{f'(t_i , y_i )}{2!}h^2 + \\cdots + O(h^{n+1})$\n", + "\n", + "or\n", + "\n", + "$E_{a}=O(h^2)$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Example: Freefalling problem\n", + "\n", + "An object is falling and has a drag coefficient of 0.25 kg/m and mass of 60 kg\n", + "Define time from 0 to 12 seconds with `N` timesteps \n", + "function defined as `freefall`\n", + "\n", + "Using the Euler ODE solution results in a conditionally stable solution *(at some point the time steps are too large to solve the problem)*" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "function [v_analytical,v_terminal,t]=freefall(N,tmax)\n", + " t=linspace(0,tmax,N)';\n", + " c=0.25; m=60; g=9.81; v_terminal=sqrt(m*g/c);\n", + "\n", + " v_analytical = v_terminal*tanh(g*t/v_terminal);\n", + " v_numerical=zeros(length(t),1);\n", + " delta_time =diff(t);\n", + " for i=1:length(t)-1\n", + " v_numerical(i+1)=v_numerical(i)+(g-c/m*v_numerical(i)^2)*delta_time(i);\n", + " end\n", + " % Print values near 0,2,4,6,8,10,12 seconds\n", + " indices = round(linspace(1,length(t),7));\n", + " fprintf('time (s)| error (m/s)\\n')\n", + " fprintf('-------------------------\\n')\n", + " M=[t(indices),abs(v_analytical(indices)-v_numerical(indices))];\n", + " fprintf('%7.1f | %10.2f\\n',M(:,1:2)');\n", + " plot(t,v_analytical,'-',t,v_numerical,'o-')\n", + " xlabel('time (s)')\n", + " ylabel('velocity (m/s)')\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)| error (m/s)\n", + "-------------------------\n", + " 0.0 | 0.00\n", + " 6.7 | 23.01\n", + " 6.7 | 23.01\n", + " 13.3 | 36.09\n", + " 13.3 | 36.09\n", + " 20.0 | 24.90\n", + " 20.0 | 24.90\n", + "\n", + "O(h^2)=44.44\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t70\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tvelocity (m/s)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\t \n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[v_an,v_t,t]=freefall(4,20);\n", + "fprintf('\\nO(h^2)=%1.2f',min(diff(t).^2))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Heun Method\n", + "\n", + "Increase accuracy with *predictor-corrector approach*\n", + "\n", + "$y_{i+1}=y_{i}^{m}+f(t_{i},y_{i})h$\n", + "\n", + "$y_{i+1}^{j}=y_{i}^{m}+\n", + "\\frac{f(t_{i},y_{i}^{m})+f(t_{i+1},y_{i+1}^{i-1})}{2}h$\n", + "\n", + "This is analagous to the trapezoidal rule\n", + "\n", + "$\\int_{t_{i}}^{t_{i+1}}f(t,y)dt=\\frac{f(t_{i},y_{i})+f(t_{i+1},y_{i+1})}{2}h$\n", + "\n", + "therefore the error is\n", + "\n", + "$E_{t}=\\frac{-f''(\\xi)}{12}h^3$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Example with Heun's method\n", + "\n", + "Problem Statement. Use Heun’s method with iteration to integrate \n", + "\n", + "$y' = 4e^{0.8t} − 0.5y$\n", + "\n", + "from t = 0 to 4 with a step size of 1. The initial condition at t = 0 is y = 2. Employ a stopping criterion of 0.00001% to terminate the corrector iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dy =\n", + "\n", + " 3\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + "\n", + "y =\n", + "\n", + " 2\n", + " 5\n", + " 0\n", + " 0\n", + " 0\n", + "\n" + ] + } + ], + "source": [ + "yp=@(t,y) 4*exp(0.8*t)-0.5*y;\n", + "t=linspace(0,4,5)';\n", + "y=zeros(size(t));\n", + "dy=zeros(size(t));\n", + "dy_corr=zeros(size(t));\n", + "y(1)=2;\n", + "dy(1)=yp(t(1),y(1))\n", + "y(2)=y(1)+dy(1)*(t(2)-t(1))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dy_corr =\n", + "\n", + " 4.70108\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "y =\n", + "\n", + " 2.00000\n", + " 6.70108\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n" + ] + } + ], + "source": [ + "% improve estimate for y(2)\n", + "dy_corr(1)=(dy(1)+yp(t(2),y(2)))/2\n", + "y(2)=y(1)+dy_corr(1)*(t(2)-t(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### This process can be iterated until a desired tolerance is achieved" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "yp=@(t,y) 4*exp(0.8*t)-0.5*y;\n", + "t=linspace(0,4,5)';\n", + "y=zeros(size(t));\n", + "dy=zeros(size(t));\n", + "dy_corr=zeros(size(t));\n", + "y(1)=2;\n", + "for i=1:length(t)-1\n", + " dy(i)=yp(t(i),y(i));\n", + " dy_corr(i)=yp(t(i),y(i));\n", + " y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));\n", + " n=0;\n", + " e=10;\n", + " while (1)\n", + " n=n+1;\n", + " yold=y(i+1);\n", + " dy_corr(i)=(dy(i)+yp(t(i+1),y(i+1)))/2;\n", + " y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));\n", + " e=abs(y(i+1)-yold)/y(i+1)*100;\n", + " if e<= 0.00001 | n>100, break, end\n", + " end\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y_an =\n", + "\n", + "@(t) 4 / 1.3 * exp (0.8 * t) - 1.0769 * exp (-t / 2)\n", + "\n", + "dy_an =\n", + "\n", + "@(t) 0.8 * 4 / 1.3 * exp (0.8 * t) + 1.0769 / 2 * exp (-t / 2)\n", + "\n" + ] + } + ], + "source": [ + "\n", + "y_euler=zeros(size(t));\n", + "for i=1:length(t)-1\n", + " dy(i)=yp(t(i),y(i));\n", + " y_euler(i+1)=y_euler(i)+dy(i)*(t(i+1)-t(i));\n", + "end\n", + "\n", + "y_an =@(t) 4/1.3*exp(0.8*t)-1.0769*exp(-t/2)\n", + "dy_an=@(t) 0.8*4/1.3*exp(0.8*t)+1.0769/2*exp(-t/2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t70\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\ty\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tHeuns method\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tHeuns method\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tEuler\n", + "\n", + "\t\n", + "\t\tEuler\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tanalytical\n", + "\n", + "\t\n", + "\t\tanalytical\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(t,y,'o',t,y_euler,'s',linspace(min(t),max(t)),y_an(linspace(min(t),max(t))))\n", + "legend('Heuns method','Euler','analytical','Location','NorthWest')\n", + "xlabel('time')\n", + "ylabel('y')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/.ipynb_checkpoints/19_nonlinear_ivp-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/19_nonlinear_ivp-checkpoint.ipynb new file mode 100644 index 0000000..361a7bc --- /dev/null +++ b/notebooks/.ipynb_checkpoints/19_nonlinear_ivp-checkpoint.ipynb @@ -0,0 +1,3482 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "pkg load odepkg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Initial Value Problems (continued)\n", + "*ch. 23 - Adaptive methods*" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Predator-Prey Models (Chaos Theory)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Predator-prey models were developed independently in the early part of the twentieth\n", + "century by the Italian mathematician Vito Volterra and the American biologist Alfred\n", + "Lotka. These equations are commonly called Lotka-Volterra equations. The simplest version is the following pairs of ODEs:\n", + "\n", + "$\\frac{dx}{dt}=ax-bxy$\n", + "\n", + "$\\frac{dy}{dt}=-cy+dxy$\n", + "\n", + "where x and y = the number of prey and predators, respectively, a = the prey growth rate, c = the predator death rate, and b and d = the rates characterizing the effect of the predator-prey interactions on the prey death and the predator growth, respectively." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "```matlab\n", + "function yp=predprey(t,y,a,b,c,d)\n", + " % predator-prey model (Lotka-Volterra equations)\n", + " yp=zeros(1,2);\n", + " x=y(1); % population in thousands of prey\n", + " y=y(2); % population in thousands of predators\n", + " yp(1)=a.*x-b.*x.*y; % population change in thousands of prey/year\n", + " yp(2)=-c*y+d*x.*y; % population change in thousands of predators/year\n", + "end\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 0\n", + " 19\n", + "\n" + ] + } + ], + "source": [ + "predprey(0,[20 1],1,1,1,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t25\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t35\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tpopulation in thousands\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tEuler time plot\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tprey\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tprey\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tpredator\n", + "\n", + "\t\n", + "\t\tpredator\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "h=0.000625;tspan=[0 40];y0=[2 1];\n", + "a=1.2;b=0.6;c=0.8;d=0.3;\n", + "[t y] = eulode(@predprey,tspan,y0,h,a,b,c,d);\n", + "\n", + "plot(t,y(:,1),t,y(:,2),'--')\n", + "legend('prey','predator');\n", + "title('Euler time plot')\n", + "xlabel('time (years)')\n", + "ylabel('population in thousands')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tthousands of predators\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tthousands of prey\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tEuler phase plane plot\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(y(:,1),y(:,2))\n", + "title('Euler phase plane plot')\n", + "xlabel('thousands of prey')\n", + "ylabel('thousands of predators')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Fourth Order Runge-Kutte integration\n", + "\n", + "```matlab\n", + "function [tp,yp] = rk4sys(dydt,tspan,y0,h,varargin)\n", + "% rk4sys: fourth-order Runge-Kutta for a system of ODEs\n", + "% [t,y] = rk4sys(dydt,tspan,y0,h,p1,p2,...): integrates\n", + "% a system of ODEs with fourth-order RK method\n", + "% input:\n", + "% dydt = name of the M-file that evaluates the ODEs\n", + "% tspan = [ti, tf]; initial and final times with output\n", + "% generated at interval of h, or\n", + "% = [t0 t1 ... tf]; specific times where solution output\n", + "% y0 = initial values of dependent variables\n", + "% h = step size\n", + "% p1,p2,... = additional parameters used by dydt\n", + "% output:\n", + "% tp = vector of independent variable\n", + "% yp = vector of solution for dependent variables\n", + "if nargin<4,error('at least 4 input arguments required'), end\n", + "if any(diff(tspan)<=0),error('tspan not ascending order'), end\n", + "n = length(tspan);\n", + "ti = tspan(1);tf = tspan(n);\n", + "if n == 2\n", + " t = (ti:h:tf)'; n = length(t);\n", + " if t(n)h,hh = h;end\n", + " while(1)\n", + " if tt+hh>tend,hh = tend-tt;end\n", + " k1 = dydt(tt,y(i,:),varargin{:})';\n", + " ymid = y(i,:) + k1.*hh./2;\n", + " k2 = dydt(tt+hh/2,ymid,varargin{:})';\n", + " ymid = y(i,:) + k2*hh/2;\n", + " k3 = dydt(tt+hh/2,ymid,varargin{:})';\n", + " yend = y(i,:) + k3*hh;\n", + " k4 = dydt(tt+hh,yend,varargin{:})';\n", + " phi = (k1+2*(k2+k3)+k4)/6;\n", + " y(i+1,:) = y(i,:) + phi*hh;\n", + " tt = tt+hh;\n", + " i=i+1;\n", + " if tt>=tend,break,end\n", + " end\n", + " np = np+1; tp(np) = tt; yp(np,:) = y(i,:);\n", + " if tt>=tf,break,end\n", + "end\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tpopulation in thousands\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tRK4 time plot\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "h=0.0625;tspan=[0 40];y0=[2 1];\n", + "a=1.2;b=0.6;c=0.8;d=0.3;\n", + "tspan=[0 10];\n", + "[t y] = rk4sys(@predprey,tspan,y0,h,a,b,c,d);\n", + "plot(t,y(:,1),t,y(:,2),'--')\n", + "title('RK4 time plot')\n", + "xlabel('time (years)')\n", + "ylabel('population in thousands')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tthousands of predators\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tthousands of prey\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tRK4 phase plane plot\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(y(:,1),y(:,2))\n", + "title('RK4 phase plane plot')\n", + "xlabel('thousands of prey')\n", + "ylabel('thousands of predators')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Adaptive Runge-Kutta Methods\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'ode23' is a function from the file /home/ryan/octave/odepkg-0.8.5/ode23.m\n", + "\n", + " -- Function File: [] = ode23 (@FUN, SLOT, INIT, [OPT], [PAR1, PAR2,\n", + " ...])\n", + " -- Command: [SOL] = ode23 (@FUN, SLOT, INIT, [OPT], [PAR1, PAR2, ...])\n", + " -- Command: [T, Y, [XE, YE, IE]] = ode23 (@FUN, SLOT, INIT, [OPT],\n", + " [PAR1, PAR2, ...])\n", + "\n", + " This function file can be used to solve a set of non-stiff ordinary\n", + " differential equations (non-stiff ODEs) or non-stiff differential\n", + " algebraic equations (non-stiff DAEs) with the well known explicit\n", + " Runge-Kutta method of order (2,3).\n", + "\n", + " If this function is called with no return argument then plot the\n", + " solution over time in a figure window while solving the set of ODEs\n", + " that are defined in a function and specified by the function handle\n", + " @FUN. The second input argument SLOT is a double vector that\n", + " defines the time slot, INIT is a double vector that defines the\n", + " initial values of the states, OPT can optionally be a structure\n", + " array that keeps the options created with the command 'odeset' and\n", + " PAR1, PAR2, ... can optionally be other input arguments of any type\n", + " that have to be passed to the function defined by @FUN.\n", + "\n", + " If this function is called with one return argument then return the\n", + " solution SOL of type structure array after solving the set of ODEs.\n", + " The solution SOL has the fields X of type double column vector for\n", + " the steps chosen by the solver, Y of type double column vector for\n", + " the solutions at each time step of X, SOLVER of type string for the\n", + " solver name and optionally the extended time stamp information XE,\n", + " the extended solution information YE and the extended index\n", + " information IE all of type double column vector that keep the\n", + " informations of the event function if an event function handle is\n", + " set in the option argument OPT.\n", + "\n", + " If this function is called with more than one return argument then\n", + " return the time stamps T, the solution values Y and optionally the\n", + " extended time stamp information XE, the extended solution\n", + " information YE and the extended index information IE all of type\n", + " double column vector.\n", + "\n", + " For example, solve an anonymous implementation of the Van der Pol\n", + " equation\n", + "\n", + " fvdb = @(vt,vy) [vy(2); (1 - vy(1)^2) * vy(2) - vy(1)];\n", + "\n", + " vopt = odeset (\"RelTol\", 1e-3, \"AbsTol\", 1e-3, \\\n", + " \"NormControl\", \"on\", \"OutputFcn\", @odeplot);\n", + " ode23 (fvdb, [0 20], [2 0], vopt);\n", + "\n", + "See also: odepkg.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help ode23" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tthousands of predators\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tthousands of prey\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tPhase plot: ode23- vs ode45--\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tode23\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tode23\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tode45\n", + "\n", + "\t\n", + "\t\tode45\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "h=0.00625;tspan=[0 40];y0=[2 1];\n", + "a=1.2;b=0.6;c=0.8;d=0.3;\n", + "\n", + "[t23 y23] = ode23(@(t,y) predprey(t,y,a,b,c,d),tspan,y0);\n", + "[t45,y45] = ode45(@(t,y) predprey(t,y,a,b,c,d),tspan,y0);\n", + "plot(y23(:,1),y23(:,2),'.',y45(:,1),y45(:,2),'k-')\n", + "title('Phase plot: ode23- vs ode45--')\n", + "xlabel('thousands of prey')\n", + "ylabel('thousands of predators')\n", + "legend('ode23','ode45')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/.ipynb_checkpoints/eulode-checkpoint.m b/notebooks/.ipynb_checkpoints/eulode-checkpoint.m new file mode 100644 index 0000000..ceed97b --- /dev/null +++ b/notebooks/.ipynb_checkpoints/eulode-checkpoint.m @@ -0,0 +1,29 @@ +function [t,y] = eulode(dydt,tspan,y0,h,varargin) +% eulode: Euler ODE solver +% [t,y] = eulode(dydt,tspan,y0,h,p1,p2,...): +% uses Euler's method to integrate an ODE +% input: +% dydt = name of the M-file that evaluates the ODE +% tspan = [ti, tf] where ti and tf = initial and +% final values of independent variable +% y0 = initial value of dependent variable +% h = step size +% p1,p2,... = additional parameters used by dydt +% output: +% t = vector of independent variable +% y = vector of solution for dependent variable +if nargin<4,error('at least 4 input arguments required'),end +ti = tspan(1);tf = tspan(2); +if ~(tf>ti),error('upper limit must be greater than lower'),end +t = (ti:h:tf)'; n = length(t); +% if necessary, add an additional value of t +% so that range goes from t = ti to tf +if t(n)h,hh = h;end + while(1) + if tt+hh>tend,hh = tend-tt;end + k1 = dydt(tt,y(i,:),varargin{:})'; + ymid = y(i,:) + k1.*hh./2; + k2 = dydt(tt+hh/2,ymid,varargin{:})'; + ymid = y(i,:) + k2*hh/2; + k3 = dydt(tt+hh/2,ymid,varargin{:})'; + yend = y(i,:) + k3*hh; + k4 = dydt(tt+hh,yend,varargin{:})'; + phi = (k1+2*(k2+k3)+k4)/6; + y(i+1,:) = y(i,:) + phi*hh; + tt = tt+hh; + i=i+1; + if tt>=tend,break,end + end + np = np+1; tp(np) = tt; yp(np,:) = y(i,:); + if tt>=tf,break,end +end \ No newline at end of file diff --git a/notebooks/.ipynb_checkpoints/1_Catch_Motion-checkpoint.ipynb b/notebooks/01_Catch_Motion.ipynb similarity index 99% rename from notebooks/.ipynb_checkpoints/1_Catch_Motion-checkpoint.ipynb rename to notebooks/01_Catch_Motion.ipynb index ef56f60..8d8ca10 100644 --- a/notebooks/.ipynb_checkpoints/1_Catch_Motion-checkpoint.ipynb +++ b/notebooks/01_Catch_Motion.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" + "###### Modified under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2020 R.C. Cooper" ] }, { @@ -13,9 +13,9 @@ "source": [ "# Catch things in motion\n", "\n", - "This module of the _Engineering Computations_ course is our launching pad to investigate _change_, _motion_, _dynamics_, using computational thinking, Python, and Jupyter.\n", + "This module of the _Computational Mechanics_ course is our launching pad to investigate _change_, _motion_, and _dynamics_, using computational thinking, Python, and Jupyter.\n", "\n", - "The foundation of physics and engineering is the subject of **mechanics**: how things move around, when pushed around. Or pulled… in the beginning of the history of mechanics, Galileo and Newton seeked to understand how and why objects fall under the pull of gravity.\n", + "The foundation of physics and engineering is the subject of **mechanics**: how things move around, when pushed around. Or pulled... in the beginning of the history of mechanics, Galileo and Newton sought to understand how and why objects fall under the pull of gravity.\n", "\n", "This first lesson will explore motion by analyzing images and video, to learn about velocity and acceleration." ] @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -51,7 +51,7 @@ " " ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -120,7 +120,7 @@ "imageio.plugins.ffmpeg.FfmpegFormat.Reader" ] }, - "execution_count": 4, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -131,27 +131,7 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1233" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(reader)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -173,7 +153,7 @@ "source": [ "##### Note:\n", "\n", - "You may get this error after calling `get_reader()`:\n", + "You may get this error after calling `get_reader()` if you're not running in the class Jupyter server:\n", " \n", "```\n", "NeedDownloadError: Need ffmpeg exe. You can obtain it with either:\n", @@ -7826,9 +7806,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.7.5" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/notebooks/2_Step_Future.ipynb b/notebooks/02_Step_Future.ipynb similarity index 54% rename from notebooks/2_Step_Future.ipynb rename to notebooks/02_Step_Future.ipynb index 86ed457..c0c067e 100644 --- a/notebooks/2_Step_Future.ipynb +++ b/notebooks/02_Step_Future.ipynb @@ -15,7 +15,7 @@ "\n", "Welcome to Lesson 2 of the course module \"Tour the dynamics of change and motion,\" in _Engineering Computations_. The previous lesson, [Catch things in motion](http://go.gwu.edu/engcomp3lesson1), showed you how to compute velocity and acceleration of a moving body whose positions were known. \n", "\n", - "Time history of position can be captured on a long-exposure photograph (using a strobe light), or on video. But digitizing the positions from images can be a bit tedious, and error-prone. Luckily, we found online a data set from a fancy motion-capture experiment of a falling ball, with high resolution [1]. You computed acceleration and found that it was not only smaller than the theoretical value of $9.8 \\rm{m/s}^2$, but it _decreased_ over time. The effect is due to air resistance and is what leads to objects reaching a _terminal velocity_ in freefall.\n", + "Time history of position can be captured on a long-exposure photograph (using a strobe light), or on video. But digitizing the positions from images can be a bit tedious, and error-prone. Luckily, we found online a data set from a motion-capture experiment of a falling ball, with high resolution [1]. You computed acceleration and found that it was not only smaller than the theoretical value of $9.8 \\rm{m/s}^2$, but it _decreased_ over time. The effect is due to air resistance and is what leads to objects reaching a _terminal velocity_ in freefall.\n", "\n", "In general, not only is [motion capture](https://en.wikipedia.org/wiki/Motion_capture) (a.k.a., _mo-cap_) expensive, but it's inappropriate for many physical scenarios. Take a roller-coaster ride, for example: during design of the ride, it's more likely that the engineers will use an _accelerometer_. It really is the acceleration that makes a roller-coaster ride exciting, and they only rarely go faster than highway speeds (say, 60 mph) [2].\n", "How would an engineer analyze data captured with an accelerometer?" @@ -32,33 +32,23 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ - "import numpy\n", - "from matplotlib import pyplot" + "import numpy as np\n", + "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", - "pyplot.rc('font', family='serif', size='14')" + "plt.rc('font', family='sans', size='18')" ] }, { @@ -76,17 +66,12 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ "filename = '../data/therocket.txt'\n", - "t, a = numpy.loadtxt(filename, usecols=[0,1], unpack=True)" + "t, a = np.loadtxt(filename, usecols=[0,1], unpack=True)" ] }, { @@ -98,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -119,28 +104,30 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nyPTLwpbzNdC2kG1uHjLPdcA8fz/Pxjsp9biQ6c+F7ZtRRTje04En/Fjn+cu/qZB6F/rH0jL/tRvB\nL0dFVMD78pnpxz8H7zLIl4YtpwVen/x3/vrOiOaxe4htHOXva+fP81zY9DFh0y/wyw3vyoZr/X0/\nDRiGN3qjYP0Fw5KTgTvwWgsX+dP+S9hokMPEeJW/b1f7++13eJ8BBcdDK79eP7xk8Xt/+vPAJ/x8\nDLfz66UB7+ElDwsJGdmB98Nkqf83DrjdX95WYFpIvYfxErlKh4m74PMw9Nh9OpL97tdJ8Y+bpf5+\nW4k33LTyYY7vi/2/0M+YJ0NiKTg+Zhxhnw/nEKMn+PlzqOC9WvB6v3iI+ldw8Gi2q/AS6/6Hi6M0\n/wreSCIiIlFjZpXxvpTfdM79Keh4SoJ/AunlzrmjvuSjeRexewXo67wWlJikEyFFRKQkPA6Mx2tp\nSVQ7gI0hI3aucCE3rYqEf9LvULyWto3E+H0q1NIgIiJRZ2blnXP7j1xT4omSBhEREYmIRk+IiIhI\nRJQ0iIiISESUNIiIiEhElDSIiIhIRJQ0iIiISESUNIiIiEhElDSIiIhIRJQ0iIiISESUNIiIiEhE\nlDSIiIhIRJQ0iIiISESUNIiIiEhElDSIiIhIRJQ0iIiISESUNIiIiEhElDSIiIhIRJQ0iIiISESU\nNIiIiEhElDSIiIhIRJQ0iIiISESUNIiIiEhElDSIiIhIRJKDDiDW1KpVy2VkZAQdhoiISKmYOXPm\nZudc7UjqKmkIk5GRwYwZM4IOQ0REpFSY2epI66p7QkRERCKipEFEREQioqRBREREIqKkQURERCKi\nEyGlTMvLy2fC3CWkJCfRpWUTKqSlBh2SiEjMUtIgZYJzjl1797N5x2627NzD5h27mLpwJcPHTKZG\n5XRSkpNYsGod3Vpn8NFDN1CpQvmgQxYRiTlKGiTubdu1hx+37WLXvv0cyMmjWqUKVK9ckeXrNvHB\nN3P4aEoWqzZsIS0lmVpVK1GzSiVqVa1Emyb1GPng9XRs0QiAvfuzGfzXZ/hkyjwuOKVrwFslIhJ7\nlDRIzMvJzSUl+eBDdfWGLTz42ieMGDeTujWqUKl8GinJSezYs4+tu/ZQt3oVhp7ciXfuuZY2jeuR\nlppy2PVULJ/Gxf26MWL8TCUNIiKFUNIgMWHtj1t548tv2bV3Pxf3606bJvVZs3EL9/33Y14dO4WO\n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\nAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], "source": [ "# plot the acceleration over time\n", - "fig = pyplot.figure(figsize=(8, 3))\n", + "fig = plt.figure(figsize=(8, 3))\n", "\n", - "pyplot.plot(t, a, color='#004065', linestyle='-', linewidth=1) \n", - "pyplot.title('Acceleration of roller-coster ride data, from [1]. \\n')\n", - "pyplot.xlabel('Time [s]')\n", - "pyplot.ylabel('[m/s$^2$]');" + "plt.plot(t, a, color='#004065', linestyle='-', linewidth=1) \n", + "plt.title('Acceleration of roller-coster ride data, from [1]. \\n')\n", + "plt.xlabel('Time [s]')\n", + "plt.ylabel('[m/s$^2$]');" ] }, { @@ -174,16 +161,16 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.10000000000000001" + "0.1" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -196,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -205,7 +192,7 @@ "151" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -218,13 +205,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 9, + "metadata": {}, "outputs": [], "source": [ "#initialize v and x arrays to zero\n", @@ -247,13 +229,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 10, + "metadata": {}, "outputs": [], "source": [ "for i in range(N-1):\n", @@ -270,17 +247,19 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -375,13 +354,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 12, + "metadata": {}, "outputs": [], "source": [ "def freefall(state):\n", @@ -397,19 +371,14 @@ " derivs: array of two derivatives [v -g]^T\n", " '''\n", " \n", - " derivs = numpy.array([state[1], -9.8])\n", + " derivs = np.array([state[1], -9.8])\n", " return derivs" ] }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 13, + "metadata": {}, "outputs": [], "source": [ "def eulerstep(state, rhs, dt):\n", @@ -437,27 +406,16 @@ "source": [ "## Numerical solution vs. experiment\n", "\n", - "Here's an idea! Let's use the `freefall()` and `eulerstep()` functions to obtain a numerical solution with the same initial conditions as the falling-ball experiment from [Lesson 1](http://go.gwu.edu/engcomp3lesson1), and compare with the experimental data. \n", + "Here's an idea! Let's use the `freefall()` and `eulerstep()` functions to obtain a numerical solution with the same initial conditions as the falling-ball experiment from [Lesson 1](./01_Catch_Motion.ipynb), and compare with the experimental data. \n", "\n", - "You can grab the data from its location online running the following code in a new cell:\n", - "```Python\n", - "filename = 'fallingtennisball02.txt'\n", - "url = 'http://go.gwu.edu/engcomp3data1'\n", - "urlretrieve(url, filename)\n", - "```\n", "\n", "You already imported `urlretrieve` above. Remember to then comment the assignment of the `filename` variable below. We'll load it from our local copy." ] }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 14, + "metadata": {}, "outputs": [], "source": [ "filename = '../data/fallingtennisball02.txt'\n", @@ -473,13 +431,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 15, + "metadata": {}, "outputs": [], "source": [ "#time increment\n", @@ -488,13 +441,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 16, + "metadata": {}, "outputs": [], "source": [ "y0 = y[0] #initial position\n", @@ -511,13 +459,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 17, + "metadata": {}, "outputs": [], "source": [ "#initialize array\n", @@ -526,13 +469,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 18, + "metadata": {}, "outputs": [], "source": [ "#Set intial conditions\n", @@ -542,13 +480,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 19, + "metadata": {}, "outputs": [], "source": [ "for i in range(N-1):\n", @@ -564,24 +497,26 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n77///iPmwXPeizv99NOLxHf55Zfr66+/rqqqe/bs0ZCQEH3jjTdUVTUtLU2PP/54veuuu4rMT8Gy\nL22a06dP1+jo6HLjio+PV6Bw/gqWecE8ZWdn66hRo3TChAlH1PnHP/6hqq5l3q5dO33ttddKnWfV\nkr/n5tj7ZdNe7X/ne/r1PTG6b+Zg1a/vU83LczqsEgFxWoXfXduTqSfGjBnDjTfeyO23387atWur\n3N4FF1yAt7c3/v7+REZGkpeXR/fu3QEYPnx4kT2ZZ555hrCwMM4++2wAAgMDueyyy3jmmWeKtJmb\nm8vVV18NQFRUFC+88EKJ0/7Pf/7DxIkTad26NeA6JHj//ffTuLHr39KPP/544bR8fX0ZO3YsCxcu\nrNT87dixg+3bt5OXl1c4zVGjRhXOT1BQEBMnTgQgODiYf/zjH8ycObNwb6omvfvuuyQmJnLLLbcA\nrnm85ZZb+L//+z/i4+OLlL3kkksA1zIfNGgQK1eurPH4TNUN7daCW88dzAO5E0nJ9kG3xMKy15wO\nq0bYZWXKkPDImRUqNyGqIxOiKnapjs+uH16VkMr0yCOPEBsby2WXXcaSJUuq1FabNm0KXwcFBeHv\n71/4vlGjRhw4cKDw/apVq9izZ0+R8yrp6ek0adKEtLQ0mjRpAkBYWBh+fn5lTvfgwYNs27atMKEV\nuPHGGwtfHzhwgNtuu42tW7fi5+dHUlJSpQ8T3X///UycOJHvv/+eiy++mCuvvLLw5Pvq1avp1q1b\nkUOL3bt3JzMzk02bNtG3b99KTauyVq9eTVhYWGFSLZi+qrJ69Wq6dOlSOLxt27aFr4ODg0lLS6vR\n2Ez1mRDVkbAmZ9I1qBfy1Z2w/C0I6Qg9T3M6tGplezL1iL+/P++++y7r16/nvvvuO2J8SVc0KNiS\nL87b27vM98VFREQQGxtb+Fi6dCkJCQmFCaYibVREeno6J598Mk2bNuWnn34iNjaWO+64o9RzUaU5\n77zzSExM5M4772TRokX07t2bjz76qMrxeSpt2VYnz2UqIpVeDsZZp0SE4dVpMAy9nnyFvNhHYdef\nTodVrSzJ1DMRERHMnDmTxx57jN9//73IuODgYMC1t1Bgx44dVZ5m37592bx5c5Ef1f379zN16tRK\ntxUcHEzHjh3ZtKno5dHfeusttmzZwvr169mzZw8XXXRR4Q9sdnZ2pafzwQcfEBISwjXXXMPSpUsZ\n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\nAAAASUVORK5CYII=\n", + "image/png": "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zZo1mpGREZZm0aJF6nQ69d///reqql544YW6cOHC4PoFCxYooDfeeKOqqhYUFOgZZ5yhQ4YMCaZ57rnntF27drpt2zZVVc3JydHU1FT98ccfg2kyMjL0iCOO0LVr16qq6g033KCffvqpqqoCumDBgmDa8ePHa7169fSTTz5RVdXp06drs2bN9MEHH1RV1S1btmidOnU0Ozs7mOeuu+7Sfv366f79+1VV9c0339SGDRvq1q1bw85Hr169dPfu3aqqOmzYML3sssvCzg+ga9asCTtHF1xwQfD85OXl6ZAhQzQrKyssTeQxRFq4cKE6HA5dtGiRqqquXLlSmzVrFvZ6zJs3T88991z1er2qqjpz5kxt37695ufnh53H0Nc01nyxKOv73JTeeVO/0Daj39U2o9/Vk8dM0133NFMd30AfGzcyuDz00fmeeckuchCwWEv5vWs1mWog8Ks3MzMz+Es9VO/evbn55pu5+uqrmTp1Ks2bN+fEE08slC5Qc3A6ndx444188MEHrFixAoB7772XK664gsMO83Vk9uzZk65duzJt2rSwbZx00km0adMGgMcff5wBAwYUWe5mzZoxcOBAAPr168fvv/9O376+ZoLDDz+cTp068c033wCwf/9+HnnkEa6//vrgoIZhw4aRkpLCyy+/HLbdM888k3r1fMNFMzMzg7Wd4kyaNIkzzzwTAJfLxbBhw5g3b16J+UI98cQT9O3bl969ewNw9NFHc8opp4Sl6d+/P9OnTw9e8Dt8+HBWrFjBqlWrit12afOZyiN0IMBPegQ35N+AR4X+jtxCNzuD6nMNjfXJVAMjR45kwoQJgK+5LFpn87333stbb71FVlZWkV9MgeAAvi9IgGXLltGiRQvWrVvHzJkzef/9Qx2Te/bsKdQc1Lp165jL3aJFi+D/derUKbSsbt267NzpG9q5cuVK9u/fz0MPPRQW2Bo2bFioE79ly5bB/+vXr8+uXbtKLMvOnTu5/fbbWbduHW63m40bN8bdXLZs2TK6du0atuzII4/kl18ODVl1Op1MmTKFjz/+GIfDEQwaGzdupEOHDkVuu7T5TOUy+9q+wf6ZbG93RuXfwSJvR/KL+CoONJ1V5T4aCzLVTHp6etSRSbVr16Zz587MnTuXr7/+OliDKIqvhkzYFDu33HILV111VbH5nE5nsetLShu5LFCOwN8HH3yw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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], "source": [ "fig = pyplot.figure(figsize=(6,4))\n", + "pyplot.plot(t[:N], y[:N], 's', alpha=0.8, label='Experimental data')\n", "pyplot.plot(t[:N], num_sol[:,0], linewidth=2, linestyle='--', label='Numerical solution')\n", - "pyplot.plot(t[:N], y[:N], linewidth=2, alpha=0.8, label='Experimental data')\n", "pyplot.xlabel('Time [s]')\n", "pyplot.ylabel('$y$ [m]')\n", "pyplot.title('Free fall tennis ball (no air resistance) \\n')\n", @@ -625,7 +560,7 @@ "source": [ "## Air resistance\n", "\n", - "In [Lesson 1](http://go.gwu.edu/engcomp3lesson1) of this module, we computed the acceleration of gravity and got a value less than the theoretical $9.8 \\rm{m/s}^2$, even when using high-resolution experimental data. Did you figure out why?\n", + "In [Lesson 1](./01_Catch_Motion.ipynb) of this module, we computed the acceleration of gravity and got a value less than the theoretical $9.8 \\rm{m/s}^2$, even when using high-resolution experimental data. Did you figure out why?\n", "\n", "We were missing the effect of air resistance! When an object moves in a fluid, like air, it applies a force on the fluid, and consequently the fluid applies an equal and opposite force on the object (Newton's third law).\n", "\n", diff --git a/notebooks/03_Get_Oscillations.ipynb b/notebooks/03_Get_Oscillations.ipynb new file mode 100644 index 0000000..85e4e98 --- /dev/null +++ b/notebooks/03_Get_Oscillations.ipynb @@ -0,0 +1,1183 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get with the oscillations\n", + "\n", + "So far, in this module of our course in _Engineering Computations_ you have learned to:\n", + "\n", + "* capture time histories of a body's position from images and video;\n", + "* compute velocity and acceleration of a body, from known positions over time—i.e., take numerical derivatives;\n", + "* find the motion description (position versus time) from acceleration data, stepping in time with Euler's method;\n", + "* form the state vector and the vectorized form of a second-order dynamical system;\n", + "* improve the simple free-fall model by adding air resistance.\n", + "\n", + "You also learned that Euler's method is a _first-order_ method: a Taylor series expansion shows that stepping in time with Euler makes an error—called the _truncation error_—proportional to the time increment, $\\Delta t$.\n", + "\n", + "In this lesson, you'll work with oscillating systems. Euler's method doesn't do very well with oscillating systems, but we'll show you a clever way to fix this. (The modified method is _still_ first order, however. We will also confirm the **order of convergence** by computing the error using different values of $\\Delta t$.\n", + "\n", + "As always, we will need our best-loved numerical Python libraries, and we'll also re-use the `eulerstep()` function from the [previous lesson](http://go.gwu.edu/engcomp3lesson2). So let's get that out of the way.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "pyplot.rc('font', family='serif', size='14')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def eulerstep(state, rhs, dt):\n", + " '''Update a state to the next time increment using Euler's method.\n", + " \n", + " Arguments\n", + " ---------\n", + " state : array of dependent variables\n", + " rhs : function that computes the RHS of the DiffEq\n", + " dt : float, time increment\n", + " \n", + " Returns\n", + " -------\n", + " next_state : array, updated after one time increment'''\n", + " \n", + " next_state = state + rhs(state) * dt\n", + " return next_state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Spring-mass system\n", + "\n", + "A prototypical mechanical system is a mass $m$ attached to a spring, in the simplest case without friction. The elastic constant of the spring, $k$, determines the restoring force it will apply to the mass when displaced by a distance $x$. The system then oscillates back and forth around its position of equilibrium.\n", + "\n", + " \n", + "#### Simple spring-mass system, without friction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Newton's law applied to the friction-less spring-mass system is:\n", + "\n", + "\\begin{equation}\n", + "-k x = m \\ddot{x}\n", + "\\end{equation}\n", + "\n", + "Introducing the parameter $\\omega = \\sqrt{k/m}$, the equation of motion is rewriten as:\n", + "\n", + "\\begin{equation}\n", + "\\ddot{x} + \\omega^2 x = 0\n", + "\\end{equation}\n", + "\n", + "where a dot above a dependent variable denotes the time derivative. This is a second-order differential equation for the position $x$, having a known analytical solution that represents _simple harmonic motion_:\n", + "\n", + "$x(t) = x_0 \\cos(\\omega t)$\n", + "\n", + "The solution represents oscillations with period $P = 2 \\pi/ \\omega $ (the time between two peaks), and amplitude $x_0$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### System in vector form\n", + "\n", + "It's useful to write a second-order differential equation as a set of two first-order equations: in this case, for position and velocity, respectively:\n", + "\n", + "\\begin{eqnarray}\n", + "\\dot{x} &=& v \\nonumber\\\\\n", + "\\dot{v} &=& -\\omega^2 x\n", + "\\end{eqnarray}\n", + "\n", + "Like we did in [Lesson 2](http://go.gwu.edu/engcomp3lesson2) of this module, we write the state of the system as a two-dimensional vector,\n", + "\n", + "\\begin{equation}\n", + "\\mathbf{x} = \\begin{bmatrix}\n", + "x \\\\ v\n", + "\\end{bmatrix},\n", + "\\end{equation}\n", + "\n", + "and the differential equation in vector form:\n", + "\n", + "\\begin{equation}\n", + "\\dot{\\mathbf{x}} = \\begin{bmatrix}\n", + "v \\\\ -\\omega^2 x\n", + "\\end{bmatrix}.\n", + "\\end{equation}\n", + "\n", + "Several advantages come from writing the differential equation in vector form, both theoretical and practical. In the study of dynamical systems, for example, the state vector lives in a state space called the _phase plane_, and many things can be learned from studying solutions to differential equations graphically on a phase plane.\n", + "\n", + "Practically, writing the equation in vector form results in more general, compact code. Let's write a function to obtain the right-hand side of the spring-mass differential equation, in vector form." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def springmass(state):\n", + " '''Computes the right-hand side of the spring-mass differential \n", + " equation, without friction.\n", + " \n", + " Arguments\n", + " --------- \n", + " state : array of two dependent variables [x v]^T\n", + " \n", + " Returns \n", + " -------\n", + " derivs: array of two derivatives [v - ω*ω*x]^T\n", + " '''\n", + " \n", + " derivs = numpy.array([state[1], -ω**2*state[0]])\n", + " return derivs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This worked example follows Reference [1], section 4.3 (note that the source is open access). We set the parameters of the system, choose a time interval equal to 1-20th of the oscillation period, and decide to solve the motion for a duration equal to 3 periods." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "ω = 2\n", + "period = 2*numpy.pi/ω\n", + "dt = period/20 # we choose 20 time intervals per period \n", + "T = 3*period # solve for 3 periods\n", + "N = round(T/dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60\n", + "0.15707963267948966\n" + ] + } + ], + "source": [ + "print(N)\n", + "print(dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, set up the time array and initial conditions, initialize the solution array with zero values, and assign the initial values to the first elements of the solution array." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "t = numpy.linspace(0, T, N)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "x0 = 2 # initial position\n", + "v0 = 0 # initial velocity" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "#initialize solution array\n", + "num_sol = numpy.zeros([N,2])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "#Set intial conditions\n", + "num_sol[0,0] = x0\n", + "num_sol[0,1] = v0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're ready to solve! Step through the time increments, calling the `eulerstep()` function with the `springmass` right-hand-side derivatives and time increment as inputs." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "for i in range(N-1):\n", + " num_sol[i+1] = eulerstep(num_sol[i], springmass, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's compute the position with respect to time using the known analytical solution, so that we can compare the numerical result with it. Below, we make a plot including both numerical and analytical values in our chosen time range." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "x_an = x0*numpy.cos(ω * t)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot solution with Euler's method\n", + "fig = pyplot.figure(figsize=(6,4))\n", + "\n", + "pyplot.plot(t, num_sol[:, 0], linewidth=2, linestyle='--', label='Numerical solution')\n", + "pyplot.plot(t, x_an, linewidth=1, linestyle='-', label='Analytical solution')\n", + "pyplot.xlabel('Time [s]')\n", + "pyplot.ylabel('$x$ [m]')\n", + "pyplot.title('Spring-mass system with Euler\\'s method (dashed line).\\n');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Yikes! The numerical solution exhibits a marked growth in amplitude over time, which certainly is not what the physical system displays. _What is wrong with Euler's method?_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Exercise: \n", + "\n", + "* Try repeating the calculation above using smaller values of the time increment, `dt`, and see if the results improve. Try `dt=P/40`, `P/160` and `P/2000`.\n", + "\n", + "* Although the last case, with 2000 steps per oscillation, does look good enough, see what happens if you then increase the time of simulation, for example to 20 periods. —Run the case again: _What do you see now?_\n", + "\n", + "We consistently observe a growth in amplitude in the numerical solution, worsening over time. The solution does improve when we reduce the time increment `dt` (as it should), but the amplitude still displays unphysical growth for longer simulations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Euler-Cromer method\n", + "\n", + "The thing is, Euler's method has a fundamental problem with oscillatory systems. Look again at the approximation made by Euler's method to get the position at the next time interval:\n", + "\n", + "\\begin{equation}\n", + " x(t_i+\\Delta t) \\approx x(t_i) + v(t_i) \\Delta t\n", + "\\end{equation}\n", + "\n", + "It uses the velocity value at the _beginning_ of the time interval to step the solution to the future. \n", + "\n", + "A graphical explanation can help here. Remember that the derivative of a function corresponds to the slope of the tangent at a point. Euler's method approximates the derivative using the slope at the initial point in an interval, and advances the numerical position with that initial velocity. The sketch below illustrates two consecutive Euler steps on a function with high curvature.\n", + "\n", + " \n", + "#### Sketch of two Euler steps on a curved function.\n", + "\n", + "Since Euler's method makes a linear approximation to project the solution into the future, assuming the value of the derivative at the start of the interval, it's not very good on oscillatory functions.\n", + "\n", + "A clever idea that improves on Euler's method is to use the updated value of the derivatives for the _second_ equation.\n", + "\n", + "Pure Euler's method applies:\n", + "\n", + "\\begin{eqnarray}\n", + "x(t_0) = x_0, \\qquad x_{i+1} &=& x_i + v_i \\Delta t \\nonumber\\\\\n", + "v(t_0) = v_0, \\qquad v_{i+1} &=& v_i - {\\omega}^2 x_i \\Delta t\n", + "\\end{eqnarray}\n", + "\n", + "What if in the equation for $v$ we used the value $x_{i+1}$ that was just computed? Like this:\n", + "\n", + "\\begin{eqnarray}\n", + "x(t_0) = x_0, \\qquad x_{i+1} &=& x_i + v_i \\Delta t \\nonumber\\\\\n", + "v(t_0) = v_0, \\qquad v_{i+1} &=& v_i - {\\omega}^2 x_{i+1} \\Delta t\n", + "\\end{eqnarray}\n", + "\n", + "Notice the $x_{i+1}$ on the right-hand side of the second equation: that's the updated value, giving the acceleration at the _end_ of the time interval. This modified scheme is called Euler-Cromer method, to honor clever Mr Cromer, who came up with the idea [2]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see what it does. Study the function below carefully—it helps a lot if you write things out on a piece of paper!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def euler_cromer(state, rhs, dt):\n", + " '''Update a state to the next time increment using Euler-Cromer's method.\n", + " \n", + " Arguments\n", + " ---------\n", + " state : array of dependent variables\n", + " rhs : function that computes the RHS of the DiffEq\n", + " dt : float, time increment\n", + " \n", + " Returns\n", + " -------\n", + " next_state : array, updated after one time increment'''\n", + " \n", + " mid_state = state + rhs(state)*dt # Euler step\n", + " mid_derivs = rhs(mid_state) # updated derivatives\n", + " \n", + " next_state = numpy.array([mid_state[0], state[1] + mid_derivs[1]*dt])\n", + " \n", + " return next_state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We've copied the whole problem set-up below, to get the solution in one code cell, for easy trial with different parameter choices. Try it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The number of time steps is 160000.\n", + "The time increment is 0.015707963267948967\n" + ] + } + ], + "source": [ + "ω = 2\n", + "period = 2*numpy.pi/ω\n", + "dt = period/200 # time intervals per period \n", + "T = 800*period # simulation time, in number of periods\n", + "N = round(T/dt)\n", + "\n", + "print('The number of time steps is {}.'.format( N ))\n", + "print('The time increment is {}'.format( dt ))\n", + "\n", + "# time array\n", + "t = numpy.linspace(0, T, N)\n", + "\n", + "x0 = 2 # initial position\n", + "v0 = 0 # initial velocity\n", + "\n", + "#initialize solution array\n", + "num_sol = numpy.zeros([N,2])\n", + "\n", + "#Set intial conditions\n", + "num_sol[0,0] = x0\n", + "num_sol[0,1] = v0\n", + "\n", + "for i in range(N-1):\n", + " num_sol[i+1] = euler_cromer(num_sol[i], springmass, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Recompute the analytical solution, and plot it alongside the numerical one, when you're ready. We computed a crazy number of oscillations, so we'll need to pick carefully the range of time to plot.\n", + "\n", + "First, get the analytical solution. We chose to then plot the first few periods of the oscillatory motion: numerical and analytical." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "x_an = x0*numpy.cos(ω * t) # analytical solution" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n0zRN0yzl/wMU/309FRR0EwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "iend = 800 # in number of time steps\n", + "\n", + "fig = pyplot.figure(figsize=(6,4))\n", + "\n", + "pyplot.plot(t[:iend], num_sol[:iend, 0], linewidth=2, linestyle='--', label='Numerical solution')\n", + "pyplot.plot(t[:iend], x_an[:iend], linewidth=1, linestyle='-', label='Analytical solution')\n", + "pyplot.xlabel('Time [s]')\n", + "pyplot.ylabel('$x$ [m]')\n", + "pyplot.title('Spring-mass system, with Euler-Cromer method.\\n');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot shows that Euler-Cromer does not have the problem of growing amplitudes. We're pretty happy with it in that sense." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if we plot the end of a long period of simulation, you can see that it does start to deviate from the analytical solution." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "istart = 400\n", + "\n", + "fig = pyplot.figure(figsize=(6,4))\n", + "\n", + "pyplot.plot(t[-istart:], num_sol[-istart:, 0], linewidth=2, linestyle='--', label='Numerical solution')\n", + "pyplot.plot(t[-istart:], x_an[-istart:], linewidth=1, linestyle='-', label='Analytical solution')\n", + "pyplot.xlabel('Time [s]')\n", + "pyplot.ylabel('$x$ [m]')\n", + "pyplot.title('Spring-mass system, with Euler-Cromer method. \\n');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at the last few oscillations in a very long run shows a slight phase difference, even with a very small time increment. So although the Euler-Cromer method fixes a big problem with Euler's method, it still has some error. It's still a first-order method!\n", + "\n", + "#### The Euler-Cromer method is first-order accurate, just like Euler's method. The global error is proportional to $\\Delta t$.\n", + "\n", + "##### Note:\n", + "\n", + "You'll often find the presentation of the Euler-Cromer method with the reverse order of the equations, i.e., the velocity equation solved first, then the position equation solved with the updated value of the velocity. This makes no difference in the results: it's just a convention among physicists.\n", + "\n", + "The Euler-Cromer method is equivalent to a [_semi-implicit Euler method_](https://en.wikipedia.org/wiki/Semi-implicit_Euler_method)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convergence\n", + "\n", + "We've said that both Euler's method and the Cromer variant are _first-order accurate_: the error goes as the first power of $\\Delta t$. In [Lesson 2](http://go.gwu.edu/engcomp3lesson2) of this module, we showed this using a Taylor series. Let's now confirm it numerically.\n", + "\n", + "Because simple harmonic motion has a known analytical function that solves the differential equation, we can directly compute a measure of the error made by the numerical solution. \n", + "\n", + "Suppose we ran a numerical solution in the interval from $t_0$ to $T=N/\\Delta t$. We could then compute the error, as follows:\n", + "\n", + "\\begin{equation}\n", + "e = x_N - x_0 \\cos(\\omega T)\n", + "\\end{equation}\n", + "\n", + "where $x_N$ represents the numerical solution at the $N$-th time step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How could we confirm the order of convergence of a numerical method? In the lucky scenario of having an analytical solution to directly compute the error, all we need to do is solve numerically with different values of $\\Delta t$ and see if the error really varies linearly with this parameter.\n", + "\n", + "In the code cell below, we compute the numerical solution with different time increments. We use two nested `for`-statements: one iterates over the values of $\\Delta t$, and the other iterates over the time steps from the initial condition to the final time. We save the results in a new variable called `num_sol_time`, which is an array of arrays. Check it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([period/50, period/100, period/200, period/400])\n", + "T = 1*period\n", + "\n", + "num_sol_time = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "\n", + "for j, dt in enumerate(dt_values):\n", + "\n", + " N = int(T/dt)\n", + " t = numpy.linspace(0, T, N)\n", + " \n", + " #initialize solution array\n", + " num_sol = numpy.zeros([N,2])\n", + " \n", + " \n", + " #Set intial conditions\n", + " num_sol[0,0] = x0\n", + " num_sol[0,1] = v0\n", + " \n", + " for i in range(N-1):\n", + " num_sol[i+1] = eulerstep(num_sol[i], springmass, dt)\n", + "\n", + " num_sol_time[j] = num_sol.copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will need to compute the error with our chosen norm, so let's write a function for that. It includes a line to obtain the values of the analytical solution at the needed instant of time, and then it takes the difference with the numerical solution to compute the error." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def get_error(num_sol, T):\n", + " \n", + " x_an = x0 * numpy.cos(ω * T) # analytical solution at final time\n", + " \n", + " error = numpy.abs(num_sol[-1,0] - x_an)\n", + " \n", + " return error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All that is left to do is to call the error function with our chosen values of $\\Delta t$, and plot the results. A logarithmic scale on the plot confirms close to linear scaling between error and time increment." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for j in range(len(dt_values)):\n", + " \n", + " error_values[j] = get_error(num_sol_time[j], T)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\no2yAV00AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the solution errors with respect to the time incremetn\n", + "fig = pyplot.figure(figsize=(6,6))\n", + "\n", + "pyplot.loglog(dt_values, error_values, 'ko-') #log-log plot\n", + "pyplot.loglog(dt_values, 10*dt_values, 'k:')\n", + "pyplot.grid(True) #turn on grid lines\n", + "pyplot.axis('equal') #make axes scale equally\n", + "pyplot.xlabel('$\\Delta t$')\n", + "pyplot.ylabel('Error')\n", + "pyplot.title('Convergence of the Euler method (dotted line: slope 1)\\n');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What do you see in the plot of the error as a function of $\\Delta t$? It looks like a straight line, with a slope close to 1. On a log-log convergence plot, a slope of 1 indicates that we have a first-order method: the error scales as ${\\mathcal O}(\\Delta t)$—using the \"big-O\" notation. It means that the error is proportional to the time increment: $ e \\propto \\Delta t.$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modified Euler's method\n", + "\n", + "Another improvement on Euler's method is achieved by stepping the numerical solution to the midpoint of a time interval, computing the derivatives there, and then going back and updating the system state using the midpoint derivatives. This is called _modified Euler's method_.\n", + "\n", + "If we write the vector form of the differential equation as: \n", + "\n", + "\\begin{equation}\n", + "\\dot{\\mathbf{x}} = f(\\mathbf{x}),\n", + "\\end{equation}\n", + "\n", + "then modified Euler's method is:\n", + "\\begin{align}\n", + "\\mathbf{x}_{n+1/2} & = \\mathbf{x}_n + \\frac{\\Delta t}{2} f(\\mathbf{x}_n) \\\\\n", + "\\mathbf{x}_{n+1} & = \\mathbf{x}_n + \\Delta t \\,\\, f(\\mathbf{x}_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "We can now write a Python function to update the state using this method. It's equivalent to a so-called _Runge-Kutta second-order_ method, so we call it `rk2_step()`." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def rk2_step(state, rhs, dt):\n", + " '''Update a state to the next time increment using modified Euler's method.\n", + " \n", + " Arguments\n", + " ---------\n", + " state : array of dependent variables\n", + " rhs : function that computes the RHS of the DiffEq\n", + " dt : float, time increment\n", + " \n", + " Returns\n", + " -------\n", + " next_state : array, updated after one time increment'''\n", + " \n", + " mid_state = state + rhs(state) * dt*0.5 \n", + " next_state = state + rhs(mid_state)*dt\n", + " \n", + " return next_state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see how it performs with our spring-mass model." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([period/50, period/100, period/200,period/400])\n", + "T = 1*period\n", + "\n", + "num_sol_time = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "\n", + "for j, dt in enumerate(dt_values):\n", + "\n", + " N = int(T/dt)\n", + " t = numpy.linspace(0, T, N)\n", + " \n", + " #initialize solution array\n", + " num_sol = numpy.zeros([N,2])\n", + " \n", + " \n", + " #Set intial conditions\n", + " num_sol[0,0] = x0\n", + " num_sol[0,1] = v0\n", + " \n", + " for i in range(N-1):\n", + " num_sol[i+1] = rk2_step(num_sol[i], springmass, dt)\n", + "\n", + " num_sol_time[j] = num_sol.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for j, dt in enumerate(dt_values):\n", + " \n", + " error_values[j] = get_error(num_sol_time[j], dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot of convergence for modified Euler's\n", + "fig = pyplot.figure(figsize=(6,6))\n", + "\n", + "pyplot.loglog(dt_values, error_values, 'ko-')\n", + "pyplot.loglog(dt_values, 5*dt_values**2, 'k:')\n", + "pyplot.grid(True)\n", + "pyplot.axis('equal')\n", + "pyplot.xlabel('$\\Delta t$')\n", + "pyplot.ylabel('Error')\n", + "pyplot.title('Convergence of modified Euler\\'s method (dotted line: slope 2)\\n');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The convergence plot, in this case, does look close to a slope-2 line. Modified Euler's method is second-order accurate: \n", + "the effect of computing the derivatives (slope) at the midpoint of the time interval, instead of the starting point, is to increase the accuracy by one order!\n", + "\n", + "Using the derivatives at the midpoint of the time interval is equivalent to using the average of the derivatives at $t$ and $t+\\Delta t$: \n", + "this corresponds to a second-order _Runge-Kutta method_, or RK2, for short.\n", + "Combining derivatives evaluated at different points in the time interval is the key to Runge-Kutta methods that achieve higher orders of accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Heun's Method: An implicit integration approach\n", + "\n", + "Increase accuracy with *predictor-corrector approach*\n", + "\n", + "$y_{i+1}=y_{i}^{m}+f(t_{i},y_{i})h$\n", + "\n", + "$y_{i+1}^{j}=y_{i}^{m}+\n", + "\\frac{f(t_{i},y_{i}^{m})+f(t_{i+1},y_{i+1}^{i-1})}{2}h$\n", + "\n", + "This is analagous to the trapezoidal rule\n", + "\n", + "$\\int_{t_{i}}^{t_{i+1}}f(t,y)dt=\\frac{f(t_{i},y_{i})+f(t_{i+1},y_{i+1})}{2}h$\n", + "\n", + "therefore the error is\n", + "\n", + "$E_{t}=\\frac{-f''(\\xi)}{12}h^3$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Example with Heun's method\n", + "\n", + "Problem Statement. Use Heun’s method with iteration to integrate \n", + "\n", + "$y' = 4e^{0.8t} − 0.5y$\n", + "\n", + "from t = 0 to 4 with a step size of 1. The initial condition at t = 0 is y = 2. Employ a stopping criterion of 0.00001% to terminate the corrector iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dy =\n", + "\n", + " 3\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + "\n", + "y =\n", + "\n", + " 2\n", + " 5\n", + " 0\n", + " 0\n", + " 0\n", + "\n" + ] + } + ], + "source": [ + "yp=@(t,y) 4*exp(0.8*t)-0.5*y;\n", + "t=linspace(0,4,5)';\n", + "y=zeros(size(t));\n", + "dy=zeros(size(t));\n", + "dy_corr=zeros(size(t));\n", + "y(1)=2;\n", + "dy(1)=yp(t(1),y(1))\n", + "y(2)=y(1)+dy(1)*(t(2)-t(1))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dy_corr =\n", + "\n", + " 4.70108\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "y =\n", + "\n", + " 2.00000\n", + " 6.70108\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n" + ] + } + ], + "source": [ + "% improve estimate for y(2)\n", + "dy_corr(1)=(dy(1)+yp(t(2),y(2)))/2\n", + "y(2)=y(1)+dy_corr(1)*(t(2)-t(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### This process can be iterated until a desired tolerance is achieved" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "yp=@(t,y) 4*exp(0.8*t)-0.5*y;\n", + "t=linspace(0,4,5)';\n", + "y=zeros(size(t));\n", + "dy=zeros(size(t));\n", + "dy_corr=zeros(size(t));\n", + "y(1)=2;\n", + "for i=1:length(t)-1\n", + " dy(i)=yp(t(i),y(i));\n", + " dy_corr(i)=yp(t(i),y(i));\n", + " y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));\n", + " n=0;\n", + " e=10;\n", + " while (1)\n", + " n=n+1;\n", + " yold=y(i+1);\n", + " dy_corr(i)=(dy(i)+yp(t(i+1),y(i+1)))/2;\n", + " y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));\n", + " e=abs(y(i+1)-yold)/y(i+1)*100;\n", + " if e<= 0.00001 | n>100, break, end\n", + " end\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y_an =\n", + "\n", + "@(t) 4 / 1.3 * exp (0.8 * t) - 1.0769 * exp (-t / 2)\n", + "\n", + "dy_an =\n", + "\n", + "@(t) 0.8 * 4 / 1.3 * exp (0.8 * t) + 1.0769 / 2 * exp (-t / 2)\n", + "\n" + ] + } + ], + "source": [ + "\n", + "y_euler=zeros(size(t));\n", + "for i=1:length(t)-1\n", + " dy(i)=yp(t(i),y(i));\n", + " y_euler(i+1)=y_euler(i)+dy(i)*(t(i+1)-t(i));\n", + "end\n", + "\n", + "y_an =@(t) 4/1.3*exp(0.8*t)-1.0769*exp(-t/2)\n", + "dy_an=@(t) 0.8*4/1.3*exp(0.8*t)+1.0769/2*exp(-t/2)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## What we've learned\n", + "\n", + "* vector form of the spring-mass differential equation\n", + "* Euler's method produces unphysical amplitude growth in oscillatory systems\n", + "* the Euler-Cromer method fixes the amplitude growth (while still being first order)\n", + "* Euler-Cromer does show a phase lag after a long simulation\n", + "* a convergence plot confirms the first-order accuracy of Euler's method\n", + "* a convergence plot shows that modified Euler's method, using the derivatives evaluated at the midpoint of the time interval, is a second-order method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "1. Linge S., Langtangen H.P. (2016) Solving Ordinary Differential Equations. In: Programming for Computations - Python. Texts in Computational Science and Engineering, vol 15. Springer, Cham, https://doi.org/10.1007/978-3-319-32428-9_4, open access and reusable under [CC-BY-NC](http://creativecommons.org/licenses/by-nc/4.0/) license.\n", + "\n", + "2. Cromer, A. (1981). Stable solutions using the Euler approximation. _American Journal of Physics_, 49(5), 455-459. https://doi.org/10.1119/1.12478\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/06_roots-1.ipynb b/notebooks/06_roots-1.ipynb new file mode 100644 index 0000000..5a472ba --- /dev/null +++ b/notebooks/06_roots-1.ipynb @@ -0,0 +1,932 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "scrolled": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Roots of Nonlinear functions\n", + "## Bracketing ch. 5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## Not always possible to solve for a given variable. \n", + "\n", + "### Freefall example:\n", + "If an object, with drag coefficient of 0.25 kg/m reaches a velocity of 36 m/s after 4 seconds of freefalling, what is its mass?\n", + "\n", + "$v(t)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)$\n", + "\n", + "Cannot solve for m \n", + "\n", + "Instead, solve the problem by creating a new function f(m) where\n", + "\n", + "$f(m)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-v(t)$. \n", + "\n", + "When f(m) = 0, we have solved for m in terms of the other variables (e.g. for a given time, velocity, drag coefficient and acceleration due to gravity)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t140\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t160\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t180\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "setdefaults\n", + "g=9.81; % acceleration due to gravity\n", + "m=linspace(50, 200,100); % possible values for mass 50 to 200 kg\n", + "c_d=0.25; % drag coefficient\n", + "t=4; % at time = 4 seconds\n", + "v=36; % speed must be 36 m/s\n", + "f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m\n", + "\n", + "plot(m,f_m(m),m,zeros(length(m),1))\n", + "axis([45 200 -5 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 0.045626\n" + ] + } + ], + "source": [ + "f_m(145)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Brute force method is plot f_m vs m and with smaller and smaller steps until f_m ~ 0\n", + "\n", + "Better methods are the \n", + "1. Bracketing methods\n", + "2. Open methods\n", + "\n", + "Both need an initial guess. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Incremental method (Brute force)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "You know that for one value, m_lower, f_m is negative and for another value, m_upper, f_m is positive. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], + "source": [ + "function xb = incsearch(func,xmin,xmax,ns)\n", + "% incsearch: incremental search root locator\n", + "% xb = incsearch(func,xmin,xmax,ns):\n", + "% finds brackets of x that contain sign changes\n", + "% of a function on an interval\n", + "% input:\n", + "% func = name of function\n", + "% xmin, xmax = endpoints of interval\n", + "% ns = number of subintervals (default = 50)\n", + "% output:\n", + "% xb(k,1) is the lower bound of the kth sign change\n", + "% xb(k,2) is the upper bound of the kth sign change\n", + "% If no brackets found, xb = [].\n", + "if nargin < 3, error('at least 3 arguments required'), end\n", + "if nargin < 4, ns = 50; end %if ns blank set to 50\n", + "% Incremental search\n", + "x = linspace(xmin,xmax,ns);\n", + "f = func(x);\n", + "nb = 0; xb = []; %xb is null unless sign change detected\n", + "for k = 1:length(x)-1\n", + " if sign(f(k)) ~= sign(f(k+1)) %check for sign change\n", + " nb = nb + 1;\n", + " xb(nb,1) = x(k);\n", + " xb(nb,2) = x(k+1);\n", + " end\n", + "end\n", + "if isempty(xb) %display that no brackets were found\n", + " fprintf('no brackets found\\n')\n", + " fprintf('check interval or increase ns\\n')\n", + "else\n", + " fprintf('number of brackets: %i\\n',nb) %display number of brackets\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of brackets: 1\n", + "ans =\n", + "\n", + " 141.84 144.90\n", + "\n" + ] + } + ], + "source": [ + "incsearch(f_m,50,200)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of brackets: 1\n", + "ans =\n", + "\n", + " 142.73 142.83\n", + "\n" + ] + } + ], + "source": [ + "incsearch(f_m,140, 150,100)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Bisection method" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Divide interval in half until error is reduced to some level\n", + "\n", + "in previous example of freefall, choose x_l=50, x_u=200\n", + "\n", + "x_r = (50+200)/2 = 125\n", + "\n", + "f_m(125) = -0.408\n", + "\n", + "x_r= (125+200)/2 = 162.5\n", + "\n", + "f_m(162.5) = 0.3594\n", + "\n", + "x_r = (125+162.5)/2=143.75\n", + "\n", + "f_m(143.75)= 0.0206" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 134.38\n", + "interval left f(x_l)= -0.4,f(x_r)= -0.2\n", + "interval right f(x_r)= -0.2,f(x_u)= 0.0\n", + "ans = -0.18060\n" + ] + } + ], + "source": [ + "x_l=125; x_u=143.75;\n", + "x_r=(x_l+x_u)/2\n", + "fprintf('interval left f(x_l)= %1.1f,f(x_r)= %1.1f\\n',f_m(x_l),f_m(x_r))\n", + "fprintf('interval right f(x_r)= %1.1f,f(x_u)= %1.1f\\n',f_m(x_r),f_m(x_u))\n", + "f_m(x_r)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Bisect Function" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`bisect.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], + "source": [ + "function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin)\n", + "% bisect: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses bisection method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " xr = (xl + xu)/2;\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass_at_36ms = 142.74\n" + ] + } + ], + "source": [ + "Mass_at_36ms=bisect(f_m,50,200)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## False position (linear interpolation)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Rather than bisecting each bracket (1/2 each time) we can calculate the slope between the two points and update the xr position in this manner\n", + "\n", + "$ x_{r} = x_{u} - \\frac{f(x_{u})(x_{l}-x_{u})}{f(x_{l})-f(x_{u})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_4a\n", + "\n", + "\t\t \n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%xl=50; xu=200; \n", + "xu=xr;\n", + "xl=xl;\n", + "xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu));\n", + "plot(m,f_m(m),xl,f_m(xl),'s',xu,f_m(xu),'s',xr,0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## False Position" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`falsepos.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], + "source": [ + "function [root,fx,ea,iter]=falsepos(func,xl,xu,es,maxit,varargin)\n", + "% falsepos: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses false position method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " % xr = (xl + xu)/2; % bisect method\n", + " xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); % false position method\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "GNU Octave", + "url": "https://www.gnu.org/software/octave/support.html" + }, + { + "text": "Octave Kernel", + "url": "https://github.com/Calysto/octave_kernel" + }, + { + "text": "MetaKernel Magics", + "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "5.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/07_roots_and_optimization-2.ipynb b/notebooks/07_roots_and_optimization-2.ipynb new file mode 100644 index 0000000..9c69bfe --- /dev/null +++ b/notebooks/07_roots_and_optimization-2.ipynb @@ -0,0 +1,1589 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Roots: Open methods\n", + "## Newton-Raphson" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "First-order approximation for the location of the root (i.e. assume the slope at the given point is constant, what is the solution when f(x)=0)\n", + "\n", + "$f'(x_{i})=\\frac{f(x_{i})-0}{x_{i}-x_{i+1}}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{f'(x_{i})}$\n", + "\n", + "Use Newton-Raphson to find solution when $e^{-x}=x$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Find x when $e^{-x}=x$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.50000\n", + "error_approx = 1\n" + ] + } + ], + "source": [ + "f= @(x) exp(-x)-x;\n", + "df= @(x) -exp(-x)-1;\n", + "\n", + "x_i= 0;\n", + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 0.0014673\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 2.2106e-07\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x_r = 0.56714\n", + "error_approx = 5.0897e-15\n" + ] + } + ], + "source": [ + "x_r = x_i-f(x_i)/df(x_i)\n", + "error_approx = abs((x_r-x_i)/x_r)\n", + "x_i=x_r;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Create function `newtraph.m`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], + "source": [ + "function [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,varargin)\n", + "% newtraph: Newton-Raphson root location zeroes\n", + "% [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,p1,p2,...):\n", + "% uses Newton-Raphson method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% dfunc = name of derivative of function\n", + "% xr = initial guess\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by function\n", + "% output:\n", + "% root = real root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "if nargin<4 || isempty(es),es=0.0001;end\n", + "if nargin<5 || isempty(maxit),maxit=50;end\n", + "iter = 0;\n", + "while (1)\n", + " xrold = xr;\n", + " xr = xr - func(xr)/dfunc(xr);\n", + " iter = iter + 1;\n", + " if xr ~= 0 \n", + " ea = abs((xr - xrold)/xr) * 100;\n", + " end\n", + " if ea <= es || iter >= maxit, break, end\n", + "end\n", + "root = xr;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "In the freefall example, we created a function f(m) that when f(m)=0, then the mass had been chosen such that at t=4 s, the velocity is 36 m/s. \n", + "\n", + "$f(m)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-v(t)$.\n", + "\n", + "to use the Newton-Raphson method, we need the derivative $\\frac{df}{dm}$\n", + "\n", + "$\\frac{df}{dm}=\\frac{1}{2}\\sqrt{\\frac{g}{mc_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-\n", + "\\frac{g}{2m}\\mathrm{sech}^{2}(\\sqrt{\\frac{gc_{d}}{m}}t)$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "setdefaults\n", + "g=9.81; % acceleration due to gravity\n", + "m=linspace(50, 200,100); % possible values for mass 50 to 200 kg\n", + "c_d=0.25; % drag coefficient\n", + "t=4; % at time = 4 seconds\n", + "v=36; % speed must be 36 m/s\n", + "f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m\n", + "df_m = @(m) 1/2*sqrt(g./m/c_d).*tanh(sqrt(g*c_d./m)*t)-g/2./m*sech(sqrt(g*c_d./m)*t).^2;" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root = 142.74\n", + "ea = 1.8806e-04\n", + "iter = 50\n" + ] + } + ], + "source": [ + "[root,ea,iter]=newtraph(f_m,df_m,50,0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Secant Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Not always able to evaluate the derivative. Approximation of derivative:\n", + "\n", + "$f'(x_{i})=\\frac{f(x_{i-1})-f(x_{i})}{x_{i-1}-x_{i}}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{f'(x_{i})}$\n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})}{\\frac{f(x_{i-1})-f(x_{i})}{x_{i-1}-x_{i}}}=\n", + " x_{i}-\\frac{f(x_{i})(x_{i-1}-x_{i})}{f(x_{i-1})-f(x_{i})}$\n", + " \n", + "What values should $x_{i}$ and $x_{i-1}$ take?\n", + "\n", + "To reduce arbitrary selection of variables, use the" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Modified Secant method" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Change the x evaluations to a perturbation $\\delta$. \n", + "\n", + "$x_{i+1}=x_{i}-\\frac{f(x_{i})(\\delta x_{i})}{f(x_{i}+\\delta x_{i})-f(x_{i})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root = 142.74\n", + "ea = 3.0615e-07\n", + "iter = 7\n" + ] + } + ], + "source": [ + "[root,ea,iter]=mod_secant(f_m,1,50,0.00001)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1.1185e+04\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t25000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tprinciple amount left ($)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "car_payments(400,30000,0.05,5,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amt_numerical = 5467.0\n", + "ans = 3.9755e-04\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t300000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t400000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t500000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t600000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t700000\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t25\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tprinciple amount left ($)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (years)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Amt_numerical=mod_secant(@(A) car_payments(A,700000,0.0875,30,0),1e-6,50,0.001)\n", + "car_payments(Amt_numerical,700000,0.0875,30,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1.9681e+06\n" + ] + } + ], + "source": [ + "Amt_numerical*12*30" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Amortization\n", + "\n", + "Amortization calculation makes the same calculation for the monthly payment amount, A, paying off the principle amount, P, over n pay periods with monthly interest rate, r. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amt = 566.14\n" + ] + } + ], + "source": [ + "% Amortization calculation\n", + "A = @(P,r,n) P*(r*(1+r)^n)./((1+r)^n-1);\n", + "Amt=A(30000,0.05/12,5*12)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Matlab's function\n", + "\n", + "Matlab and Octave combine bracketing and open methods in the `fzero` function. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'fzero' is a function from the file /usr/share/octave/4.0.0/m/optimization/fzero.m\n", + "\n", + " -- Function File: fzero (FUN, X0)\n", + " -- Function File: fzero (FUN, X0, OPTIONS)\n", + " -- Function File: [X, FVAL, INFO, OUTPUT] = fzero (...)\n", + " Find a zero of a univariate function.\n", + "\n", + " FUN is a function handle, inline function, or string containing the\n", + " name of the function to evaluate.\n", + "\n", + " X0 should be a two-element vector specifying two points which\n", + " bracket a zero. In other words, there must be a change in sign of\n", + " the function between X0(1) and X0(2). More mathematically, the\n", + " following must hold\n", + "\n", + " sign (FUN(X0(1))) * sign (FUN(X0(2))) <= 0\n", + "\n", + " If X0 is a single scalar then several nearby and distant values are\n", + " probed in an attempt to obtain a valid bracketing. If this is not\n", + " successful, the function fails.\n", + "\n", + " OPTIONS is a structure specifying additional options. Currently,\n", + " 'fzero' recognizes these options: \"FunValCheck\", \"OutputFcn\",\n", + " \"TolX\", \"MaxIter\", \"MaxFunEvals\". For a description of these\n", + " options, see *note optimset: XREFoptimset.\n", + "\n", + " On exit, the function returns X, the approximate zero point and\n", + " FVAL, the function value thereof.\n", + "\n", + " INFO is an exit flag that can have these values:\n", + "\n", + " * 1 The algorithm converged to a solution.\n", + "\n", + " * 0 Maximum number of iterations or function evaluations has\n", + " been reached.\n", + "\n", + " * -1 The algorithm has been terminated from user output\n", + " function.\n", + "\n", + " * -5 The algorithm may have converged to a singular point.\n", + "\n", + " OUTPUT is a structure containing runtime information about the\n", + " 'fzero' algorithm. Fields in the structure are:\n", + "\n", + " * iterations Number of iterations through loop.\n", + "\n", + " * nfev Number of function evaluations.\n", + "\n", + " * bracketx A two-element vector with the final bracketing of the\n", + " zero along the x-axis.\n", + "\n", + " * brackety A two-element vector with the final bracketing of the\n", + " zero along the y-axis.\n", + "\n", + " See also: optimset, fsolve.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help fzero" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 563.79\n" + ] + } + ], + "source": [ + "fzero(@(A) car_payments(A,30000,0.05,5,0),500)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Comparison of Solvers\n", + "\n", + "It's helpful to compare to the convergence of different routines to see how quickly you find a solution. \n", + "\n", + "Comparing the freefall example\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: axis: omitting non-positive data in log plot\n", + "warning: called from\n", + " __line__ at line 120 column 16\n", + " line at line 56 column 8\n", + " __plt__>__plt2vv__ at line 500 column 10\n", + " __plt__>__plt2__ at line 246 column 14\n", + " __plt__ at line 133 column 15\n", + " semilogy at line 60 column 10\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-14\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-12\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t102\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t104\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t250\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t300\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t350\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t400\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tnewton-raphson\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tnewton-raphson\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmod-secant\n", + "\n", + "\t\n", + "\t\tmod-secant\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tfalse point\n", + "\n", + "\t\n", + "\t\tfalse point\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbisection\n", + "\n", + "\t\n", + "\t\tbisection\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=20;\n", + "iterations = linspace(1,400,N);\n", + "ea_nr=zeros(1,N); % appr error Newton-Raphson\n", + "ea_ms=zeros(1,N); % appr error Modified Secant\n", + "ea_fp=zeros(1,N); % appr error false point method\n", + "ea_bs=zeros(1,N); % appr error bisect method\n", + "for i=1:length(iterations)\n", + " [root_nr,ea_nr(i),iter_nr]=newtraph(f_m,df_m,300,0,iterations(i));\n", + " [root_ms,ea_ms(i),iter_ms]=mod_secant(f_m,1e-6,300,0,iterations(i));\n", + " [root_fp,ea_fp(i),iter_fp]=falsepos(f_m,1,300,0,iterations(i));\n", + " [root_bs,ea_bs(i),iter_bs]=bisect(f_m,1,300,0,iterations(i));\n", + "end\n", + "\n", + "setdefaults\n", + "semilogy(iterations,abs(ea_nr),iterations,abs(ea_ms),iterations,abs(ea_fp),iterations,abs(ea_bs))\n", + "legend('newton-raphson','mod-secant','false point','bisection')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ea_nr =\n", + "\n", + " Columns 1 through 8:\n", + "\n", + " 6.36591 0.06436 0.00052 0.00000 0.00000 0.00000 0.00000 0.00000\n", + "\n", + " Columns 9 through 16:\n", + "\n", + " 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000\n", + "\n", + " Columns 17 through 20:\n", + "\n", + " 0.00000 0.00000 0.00000 0.00000\n", + "\n" + ] + } + ], + "source": [ + "ea_nr" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: axis: omitting non-positive data in log plot\n", + "warning: called from\n", + " __line__ at line 120 column 16\n", + " line at line 56 column 8\n", + " __plt__>__plt2vv__ at line 500 column 10\n", + " __plt__>__plt2__ at line 246 column 14\n", + " __plt__ at line 133 column 15\n", + " semilogy at line 60 column 10\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n", + "warning: axis: omitting non-positive data in log plot\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-14\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-12\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t102\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t104\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tnewton-raphson\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tnewton-raphson\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmod-secant\n", + "\n", + "\t\n", + "\t\tmod-secant\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tfalse point\n", + "\n", + "\t\n", + "\t\tfalse point\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbisection\n", + "\n", + "\t\n", + "\t\tbisection\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=20;\n", + "f= @(x) x^10-1;\n", + "df=@(x) 10*x^9;\n", + "iterations = linspace(1,50,N);\n", + "ea_nr=zeros(1,N); % appr error Newton-Raphson\n", + "ea_ms=zeros(1,N); % appr error Modified Secant\n", + "ea_fp=zeros(1,N); % appr error false point method\n", + "ea_bs=zeros(1,N); % appr error bisect method\n", + "for i=1:length(iterations)\n", + " [root_nr,ea_nr(i),iter_nr]=newtraph(f,df,0.5,0,iterations(i));\n", + " [root_ms,ea_ms(i),iter_ms]=mod_secant(f,1e-6,0.5,0,iterations(i));\n", + " [root_fp,ea_fp(i),iter_fp]=falsepos(f,0,5,0,iterations(i));\n", + " [root_bs,ea_bs(i),iter_bs]=bisect(f,0,5,0,iterations(i));\n", + "end\n", + " \n", + "semilogy(iterations,abs(ea_nr),iterations,abs(ea_ms),iterations,abs(ea_fp),iterations,abs(ea_bs))\n", + "legend('newton-raphson','mod-secant','false point','bisection')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ea_nr =\n", + "\n", + " Columns 1 through 7:\n", + "\n", + " 99.03195 11.11111 11.11111 11.11111 11.11111 11.11111 11.11111\n", + "\n", + " Columns 8 through 14:\n", + "\n", + " 11.11111 11.11111 11.11111 11.11109 11.11052 11.10624 10.99684\n", + "\n", + " Columns 15 through 20:\n", + "\n", + " 8.76956 2.12993 0.00000 0.00000 0.00000 0.00000\n", + "\n", + "ans = 16.208\n" + ] + } + ], + "source": [ + "ea_nr\n", + "newtraph(f,df,0.5,0,12)" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "GNU Octave", + "url": "https://www.gnu.org/software/octave/support.html" + }, + { + "text": "Octave Kernel", + "url": "https://github.com/Calysto/octave_kernel" + }, + { + "text": "MetaKernel Magics", + "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "5.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/18_initial_value_ode.ipynb b/notebooks/18_initial_value_ode.ipynb index e67cb49..6c1eac5 100644 --- a/notebooks/18_initial_value_ode.ipynb +++ b/notebooks/18_initial_value_ode.ipynb @@ -5,6 +5,9 @@ "execution_count": 3, "metadata": { "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, "slideshow": { "slide_type": "skip" } @@ -19,6 +22,9 @@ "execution_count": 4, "metadata": { "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, "slideshow": { "slide_type": "skip" } @@ -87,6 +93,9 @@ "execution_count": 11, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "subslide" } @@ -120,6 +129,9 @@ "execution_count": 18, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "subslide" } @@ -362,6 +374,9 @@ "execution_count": 19, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "subslide" } @@ -406,6 +421,9 @@ "execution_count": 20, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -456,6 +474,9 @@ "execution_count": 21, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "fragment" } @@ -490,6 +511,9 @@ "execution_count": 22, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -527,6 +551,9 @@ "execution_count": 24, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -759,7 +786,6 @@ { "cell_type": "markdown", "metadata": { - "collapsed": true, "slideshow": { "slide_type": "slide" } @@ -779,16 +805,24 @@ "language_info": { "file_extension": ".m", "help_links": [ + { + "text": "GNU Octave", + "url": "https://www.gnu.org/software/octave/support.html" + }, + { + "text": "Octave Kernel", + "url": "https://github.com/Calysto/octave_kernel" + }, { "text": "MetaKernel Magics", - "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", - "version": "0.19.14" + "version": "5.1.0" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/notebooks/19_nonlinear_ivp.ipynb b/notebooks/19_nonlinear_ivp.ipynb index 361a7bc..bd6e255 100644 --- a/notebooks/19_nonlinear_ivp.ipynb +++ b/notebooks/19_nonlinear_ivp.ipynb @@ -5,6 +5,9 @@ "execution_count": 11, "metadata": { "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, "slideshow": { "slide_type": "skip" } @@ -19,6 +22,9 @@ "execution_count": 12, "metadata": { "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, "slideshow": { "slide_type": "skip" } @@ -33,6 +39,9 @@ "execution_count": 13, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "skip" } @@ -109,6 +118,9 @@ "execution_count": 14, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "fragment" } @@ -135,6 +147,9 @@ "execution_count": 15, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -348,6 +363,9 @@ "execution_count": 16, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -595,6 +613,9 @@ "execution_count": 17, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -778,6 +799,9 @@ "execution_count": 18, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -969,6 +993,9 @@ "execution_count": 19, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -1048,6 +1075,9 @@ "execution_count": 20, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "slideshow": { "slide_type": "slide" } @@ -3447,7 +3477,6 @@ { "cell_type": "markdown", "metadata": { - "collapsed": true, "slideshow": { "slide_type": "slide" } @@ -3467,16 +3496,24 @@ "language_info": { "file_extension": ".m", "help_links": [ + { + "text": "GNU Octave", + "url": "https://www.gnu.org/software/octave/support.html" + }, + { + "text": "Octave Kernel", + "url": "https://github.com/Calysto/octave_kernel" + }, { "text": "MetaKernel Magics", - "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", - "version": "0.19.14" + "version": "5.1.0" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/notebooks/4_Birdseye_Vibrations.ipynb b/notebooks/4_Birdseye_Vibrations.ipynb deleted file mode 100644 index 26f2761..0000000 --- a/notebooks/4_Birdseye_Vibrations.ipynb +++ /dev/null @@ -1,1093 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Bird's-eye view of mechanical vibrations\n", - "\n", - "Welcome to **Lesson 4** of the third module in _Engineering Computations_. This course module is dedicated to studying the dynamics of change with computational thinking, Python and Jupyter.\n", - "The first three lessons give you a solid footing to tackle problems involving motion, velocity, and acceleration. They are:\n", - "\n", - "1. [Lesson 1](http://go.gwu.edu/engcomp3lesson1): Catch things in motion\n", - "2. [Lesson 2](http://go.gwu.edu/engcomp3lesson2): Step to the future\n", - "3. [Lesson 3](http://go.gwu.edu/engcomp3lesson3): Get with the oscillations\n", - "\n", - "You learned to compute velocity and acceleration from position data, using numerical derivatives, and to capture position data of moving objects from images and video. For physical contexts we used free-fall of a ball, and projectile motion. Then you faced the opposite challenge: computing velocity and position from acceleration data, leading to the idea of stepping forward in time to solve a differential equation. \n", - "\n", - "Our general approach combines these key ideas: (1) turning a second-order differential equation into a system of first-order equations; (2) writing the system in vector form, and the solution in terms of a state vector; (3) designing a code to obtain the solution using separate functions to compute the derivatives of the state vector, and to step the system in time with a chosen scheme (e.g., Euler, Euler-Cromer, Runge-Kutta). It's a rock-steady approach that will serve you well!\n", - "\n", - "In this lesson, you'll get a broader view of applying your new-found skills to learn about mechanical vibrations: a classic engineering problem. You'll study general spring-mass systems with damping and a driving force, and appreciate the diversity of behaviors that arise. We'll end the lesson presenting a powerful method to study dynamical systems: visualizing direction fields and trajectories in the phase plane.\n", - "\n", - "Are you ready? Start by loading the Python libraries that we know and love." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy\n", - "from matplotlib import pyplot\n", - "%matplotlib inline\n", - "pyplot.rc('font', family='serif', size='14')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## General spring-mass system\n", - "\n", - "The simplest mechanical oscillating system is a mass $m$ attached to a spring, without friction. We discussed this system in the [previous lesson](http://go.gwu.edu/engcomp3lesson3). In general, though, these systems are subject to friction—represented by a mechanical damper—and a driving force. Also, the spring's restoring force could be a nonlinear function of position, $k(x)$.\n", - "\n", - " \n", - "#### General spring-mass system, with driving and damping." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Newton's law applied to the general (driven, damped, nonlinear) spring-mass system is:\n", - "\n", - "\\begin{equation}\n", - " m \\ddot{x} = F(t) -b(\\dot{x}) - k(x)\n", - "\\end{equation}\n", - "\n", - "where\n", - "* $F(t)$ is the driving force\n", - "* $b(\\dot{x})$ is the damping force\n", - "* $k(x)$ is the restoring force, possibly nonlinear\n", - "\n", - "Written as a system of two differential equations, we have:\n", - "\n", - "\\begin{eqnarray}\n", - "\\dot{x} &=& v, \\nonumber\\\\\n", - "\\dot{v} &=& \\frac{1}{m} \\left( F(t) - k(x) - b(v) \\right).\n", - "\\end{eqnarray}\n", - "\n", - "With the state vector,\n", - "\\begin{equation}\n", - "\\mathbf{x} = \\begin{bmatrix}\n", - "x \\\\ v\n", - "\\end{bmatrix},\n", - "\\end{equation}\n", - "\n", - "the differential equation in vector form is:\n", - "\n", - "\\begin{equation}\n", - "\\dot{\\mathbf{x}} = \\begin{bmatrix}\n", - "v \\\\ \\frac{1}{m} \\left( F(t) - k(x) - b(v) \\right)\n", - "\\end{bmatrix}.\n", - "\\end{equation}\n", - "\n", - "In this more general system, the time variable could appear explicitly on the right-hand side, via the driving function $F(t)$. We'll need to adapt the code for the time-stepping function to take the time as an additional argument. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `euler_cromer()` function we defined in the previous lesson took three arguments: `state, rhs, dt`—the state vector, the Python function computing the right-hand side of the differential equation, and the time step. Let's re-work that function now to take an additional `time` variable, which also gets used in the `rhs` function." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# new version of the function, taking time as explicit argument\n", - "def euler_cromer(state, rhs, time, dt):\n", - " '''Update a state to the next time increment using Euler-Cromer's method.\n", - " \n", - " Arguments\n", - " ---------\n", - " state : state vector of dependent variables\n", - " rhs : function that computes the RHS of the DE, taking (state, time)\n", - " time : float, time instant\n", - " dt : float, time step\n", - " \n", - " Returns\n", - " -------\n", - " next_state : state vector updated after one time increment'''\n", - " \n", - " mid_state = state + rhs(state, time)*dt # Euler step\n", - " mid_derivs = rhs(mid_state, time) # update derivatives\n", - " \n", - " next_state = numpy.array([mid_state[0], state[1] + mid_derivs[1]*dt])\n", - " \n", - " return next_state" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Case with linear damping\n", - "\n", - "Let's look at the behavior of a system with linear restoring force, linear damping, but no driving force: $k(x)= kx$, $b(v)=bv$, $F(t)=0$.\n", - "The differential system is now:\n", - "\n", - "\n", - "\\begin{equation}\n", - "\\dot{\\mathbf{x}} = \\begin{bmatrix}\n", - "v \\\\ \\frac{1}{m} \\left( - kx - bv \\right)\n", - "\\end{bmatrix}.\n", - "\\end{equation}\n", - "\n", - "Now we need to write a function to compute the right-hand side (derivatives) for this system.\n", - "Even though the system does not explicitly use the time variable in the right-hand side, we still include `time` as an argument to the function, so that it is consistent with our new design for the `euler_cromer()` step. We include `time` in the arguments list, but it is not used inside the function code. It's thus a good idea to specify a _default value_ for this argument by writing `time=0` in the arguments list: that will allow us to also call the function leaving the `time` argument blank, if we wanted to (in which case, it will automatically be assigned its default value of 0).\n", - "Another option for the default value is `time=None`. It doesn't matter because the variable is not used inside the function!" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def dampedspring(state, time=0):\n", - " '''Computes the right-hand side of the spring-mass differential \n", - " equation, with linear damping.\n", - " \n", - " Arguments\n", - " --------- \n", - " state : state vector of two dependent variables\n", - " time : float, time instant\n", - " \n", - " Returns \n", - " -------\n", - " derivs: derivatives of the state vector\n", - " '''\n", - " \n", - " derivs = numpy.array([state[1], 1/m*(-k*state[0]-b*state[1])])\n", - " return derivs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try it!\n", - "The following example is from section 4.3.9 of Ref. [1] (an open-access text!). \n", - "We set the model parameters, the initial conditions, and the time-stepping conditions.\n", - "Then we initialize the numerical solution array `num_sol`, and call the `euler_cromer()` function in the `for` statement.\n", - "Notice that we pass the time instant `t[i]` to the function's `time` argument (which will allow us to use the same calling signature when we solve for a system with driving force)." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "m = 1.0\n", - "k = 1.0\n", - "b = 0.3" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x0 = 1 # initial position\n", - "v0 = 0 # initial velocity" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "T = 12*numpy.pi\n", - "N = 5000\n", - "dt = T/N\n", - "\n", - "t = numpy.linspace(0, T, N)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "num_sol = numpy.zeros([N,2]) #initialize solution array\n", - "\n", - "#Set intial conditions\n", - "num_sol[0,0] = x0\n", - "num_sol[0,1] = v0" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "for i in range(N-1):\n", - " num_sol[i+1] = euler_cromer(num_sol[i], dampedspring, t[i], dt)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Time to plot the solution—in our plot of position versus time below, notice that we added a line with [`pyplot.figtext()`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.figtext.html?highlight=matplotlib%20pyplot%20figtext#matplotlib.pyplot.figtext) at the end. This command adds a custom text to the figure: we use it to print the values of the spring-mass model parameters corresponding to the plot. See how we print the parameter values in the text string? We used Python's string formatter, which you learned about in [Module 2 Lesson 1](http://go.gwu.edu/engcomp2lesson1).\n", - "If we were to re-run the solution with different model parameters, re-executing the code in this cell would update the plot and the text with the proper values. (We don't want to rely on manually changing the text, as that is error prone!)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nLS+iuqw46lFEdXnwf0VJwbA6pXZ1O83tnTS1dtLc1kljW/B/U1v4iP4/fN7e2c2bj5zIW1JUCyX7\nSlav9ccIg7eZNbv79+MtZ2YzgPpE79/MKgna4DfHvFQLvKmX1WYAW3zvxrfaqNcySlXPHdCS1+Ft\nd3snWxvbKMw3Jo5K3o3qjp4ymn+/vJkX1+/kPcdPTdp+7gp7cr91zuSk3Mc9P8+49sLDuOTXz/Lz\neat493FTGF+RnOFo339wBX95fj3FBXkJCeLRzps9gbnTxvB/dy/lnpc3c91dS/n3y5v57ruOZFpV\n4ppYIqXvPz+3nv8s30pXeDe5KZUjeM9xU3nnMQf0OZyvuCCf4oJ8xpQWMXvSKM6bPaHntQ3bd/PM\n6nqeWVXP06vq2LKrjXsX13Lv4uArPWZkISdMr+KoKaOZNaGcQyaUM3FUyYDOi86ubrY0tvH69t2s\n2tbMyq1NrNzWxMotjWxqaO11vTwLfoCPGVnEmNIiSovyKczPozA/j7w8o72zi5aOblrbu2hq62TH\n7nbqm4KS++7tLWzY3tLrtiOKCvKoLi2iYkQhJYXBLY+Lw7/u0O1OZ7fT3e10dHXT3N5Jc1tXT1Du\nqwakLzPHJ3ayKBmcpLeR9xbEQ78B3piE3UauNrFRro3e77hW2svy9LaOmX0U+CjA1KnJC0DxVJcl\nf5rW9WH7+JTKkUltbzy6Z6rW5M3w1tTWyUPLgov4W+ckr+Rw0oFVPcPRvnN/coaj/eaJ1fzs0VXk\n5xk/f+8xCQ3iEVVlxfz00mN48xGbufauJTy3Zjvn3vA4Hz51Oh8740AqSobenBOv9F2QZ5w/ewKX\nnjCVUw+qHnZpeUrlSKZUjuTdc6fg7qypa+a5Ndt5dnU9z66uZ8uuNu5fWsv9UdPrlhTmMb6ihHHl\nxVSUFFKQbxTk59HR2U1TW1BC3dbYRu2uVnq7g21Rfh7Tq0uZMbaUaVWl1FSNDP5Wj2R8ecmg35e7\n09TWSX1TO3VNbdQ1tbGtqZ26xrae53WR1xrbaG7vYlNDa58/KPpiBqVFBZQVF1BWUkBpcQHlxcHz\n0uICykv2/F9WUkBZcfBjauY4BfJ0SlYb+R3AKnf/vJl1E/RST6VI23vswNhioLfbVTX3sjy9rePu\nNwE3AcydOzel73HP7G7JC+SRavVkDT2LOHxyBUX5eby2tYldrR3DChK9eXBpLa0d3RxXM4YDxiT3\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = pyplot.figure(figsize=(6,4))\n", - "\n", - "pyplot.plot(t, num_sol[:, 0], linewidth=2, linestyle='-')\n", - "pyplot.xlabel('Time [s]')\n", - "pyplot.ylabel('Position, $x$ [m]')\n", - "pyplot.title('Damped spring-mass system with Euler-Cromer method.\\n')\n", - "pyplot.figtext(0.1,-0.1,'$m={:.1f}$, $k={:.1f}$, $b={:.1f}$'.format(m,k,b));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The result above shows that the oscillations die down over a few periods: the oscillations are _damped_ over time.\n", - "And our plot looks pretty close to [Fig. 4.27](https://link.springer.com/chapter/10.1007%2F978-3-319-32428-9_4#Fig27) of Ref. [1], as it should." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Case with sinusoidal driving, and damping\n", - "\n", - "Suppose now that an external force of the form $F(t) = A \\sin(\\omega t)$ drives the system. This is a typical situation in mechanical systems. Let's find out what a system like that behaves like. The example below comes from section 4.3.10 of Ref. [1].\n", - "\n", - "We're showy, so we decided to use the Unicode character for the Greek letter $\\omega$ in the code… because we can! \n", - "With a handy table of [Unicode for greek letters](https://gist.github.com/beniwohli/765262), you can pick a symbol code, type it into a code cell, and out comes the symbol. Then, it's a copy-and-paste job to reuse the symbol in the code. And using greek letters for some variable names is very chic." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'ω'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "u'\\u03C9'" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "A = 0.5 # parameter values from example in 4.3.10 of Ref. [1]\n", - "ω = 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "More than showy, we're snazzy, and so we build a one-line function using the [`lambda`](https://docs.python.org/3/reference/expressions.html#lambda) keyword.\n", - "It's just too cool.\n", - "In Python, you can create a small function in one line using the assignment operator `=`, followed by the `lambda` keyword, then a statement of the form `arguments: expression`—in our case, we have the single argument `time`, and the expression is the sinusoidal driving.\n", - "The sine mathematical function is avaible to us from the [`math` library](https://docs.python.org/3/library/math.html). Check it out." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from math import sin\n", - "F = lambda time: A*sin(ω*time)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is really a function: we can call `F()` at any point in our code, passing a value of time, and it will output the result of $F(t) = A \\sin(\\omega t)$.\n", - "\n", - "Now, let's write the right-hand side function of derivatives for the driven spring-mass system (with damping). Notice that we use the lambda function `F()` inside this new function, and the `time` variable explicitly as the argument to `F()`. Some powerful Python kung fu!" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def drivenspring(state, time):\n", - " '''Computes the right-hand side of the spring-mass differential \n", - " equation, with sinusoidal driving and linear damping.\n", - " \n", - " Arguments\n", - " --------- \n", - " state : state vector of two dependent variables\n", - " time : float, time instant\n", - " \n", - " Returns \n", - " -------\n", - " derivs: derivatives of the state vector\n", - " '''\n", - " \n", - " derivs = numpy.array([state[1], 1/m*(F(time)-k*state[0]-b*state[1])])\n", - " return derivs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is where the power of our code design becomes clear: solving the differential equation via time-stepping inside a `for` statement looks just like before, with the only difference being that we pass another right-hand-side function of derivatives.\n", - "The code cell below solves the driven spring-mass system with the same model parameters we used for the damped system without driving." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "for i in range(N-1):\n", - " num_sol[i+1] = euler_cromer(num_sol[i], drivenspring, t[i], dt)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFSCAYAAAAjPayRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4HOW1wOHfUe+ymnuRC664gAsGU0wJEIoJHQKElktC\nyA0kgRQIJT3hkkACIaRQEiCUAAaHgAkO2BQbcDfuVbZsWc2SrGJ1ffePmVmvVytpJc0Wec/7PHok\nTf12d3bOfF2MMSillFIqvGLCnQCllFJKaUBWSimlIoIGZKWUUioCaEBWSimlIoAGZKWUUioCaEBW\nSimlIoAGZKVUt4hIuoisEZEKESkId3p8ichSESkWEe3TGeVCea2KyMMisl1EjIjM7ckxOg3IXi+m\n2D7JRvv/DSKySUT+KiKzepj4f4rIpz3Z92gkIrNEpEpELgp3WlTXRKSfiDwgItPCnRa3iMhyEXnZ\nZ9lcEXnAe5kxpsYYMw1Y0ItzXWPfS5pEpNb+2/enQkRu6O6xjTEnAU/0NG29JSKniMjLIvK5/TrW\ni8jHIvJzEZktIpoRCoJgXauBMsZ8G/hqb47R6YXh9WKci/s8Y8w0Y8wk4FSgBFgqIr8VEenmuYuA\nPd1O8dGrDtgNHAx3QlRA+gH3A0dNQMb6Phb5LJuL9TpdZYx53r63FAEr7PvKET+E4CbqNhH5GfAG\n8Dww1X4txwL3AdcCy4ApYUzi0WwuQbhWQymupzsaY8qAe0RkF/AXoBL4aTf2v72n5z4aGWM2AFPD\nnQ4VvYwxl4Y7DT4eBg6EOxGBEpEbgXuA840xb3mvM8b8V0QuAVaEJXGqbzDGdPkDPAAYIL+D9euA\nQ0C2/f+HQLG9z2TgLeBz+/8HgEXOenv70cAme30RMN/r2Euxco07gdPtZenAI8AuYLP980Mgxmv9\nGqACKMB6cvovsA1YD5wb4Os+C/gIWAustF/XnV7r1gBNwN+wnsxW2On/HLjA6zjX2Nsa4CdYT8tL\ngSp72WVe6x/o6WsAJgLvYt3EVgFPA9+2j7sRuKuT1/owsN3e9hLgWfs8BcCN9jZ3Yj3h77Xf/zif\nY3wVWGK/V2uAT4HL/ZxrOvCOfd2stLe7H0jx2uab9vrV9vu/APhSAJ+Z3/2AHHu5AcqA9732eQso\nx8ohXmYvu9L+PNfYx3oXuMle9xX7/TT2Pmvsn4lex7zK/gy22e/hC8BwN99vP6/9CaAaaLDTM9le\nPt4+z2yvbdcAtVjfu7F4XWte27zC4e+x8xpf8Vr/DL34ftnHKAAW+yyb62fZE/Z77bkPYV3vznfw\nGX/3LD/n+wLWd3qnfe43nffJXn+X12f7dft9/wSrBKugk9cRC+wDNnfxeh/1Sn+n90l7mzjgXmAr\n1n1ul33tpHkd8yWv9+Y04HX7c90MXGCn7VdY1/Nu4B4/6Yq337Nt9n47gAeBZK9tukyvn+P6vp+P\nYX2f9gE/9Po+LbGXPev92rrxfXLtWgUGAH+136stwAbgm362Gwq8ivW9WQ08B1xqp2FuoN+BI44Z\n4JfmAToPyL+011/mZ5/ngXR72eNeF9oDeH1h7AuvCHjT59hxQCEwwOvCWWpfoIO9vphlwGM++z6D\nFcx/z+Fg/XusQJjZxWseiXVju8Fr2SX4fMntD7kO+J79v9jvRwtwps+2BuvmOs/+fwjQ5LP+gZ68\nBmCg/R68ix3YsKoVyjv77HzONdfe9kNgoL3sNqAN6ws92142BWj1fm/s5ZuAi7z+n2JfrBd6LUvD\nemC432vZifZ77dyovox1kx1rDt/sHsbnJu0n/V3uh/UlXO5n38+B8fbfc+zXPNdr/bc5Mljl2+/V\nDX6OdZu97nL7/0RgPtZNM8ut97uD9+DXQCP2d85edo99nge9lsVjXbsJPtdagc/xHsBPYOvt98vn\n+7PYZ9lcf581cAN+rmX7GM90lW5gnv0+Og/VghUgDgKj/Hy227w+g1m+743PsWfa+zwVyOv2TScd\n3yf/iRWonGs6D+tBcykQ7+e9mY8d0ID/w/pe/Rg4xl52AX4Chn2eUuyHSqx70zbgX91Jbwev0Xk/\n1wPj7GXn28t+C1xsLxtsfxa+98BAv0/tPvPuXqtYVVHbgPe93sdZ9r4PeW2XghWs1wK59rJJHH5A\nmdvR+9Hp9dDNiya/g/Vft9ff5WefE72WZXolvt2bB/wCK5AN9Vp2CfCanwvvGp99f4r1ZfN+anrG\n3naA17JZ9rKzunjNl9nbzfFZ/nOf/wuwnibFa1kiViBc5rOtAd7xWTbaZ73vxRjQa8C6ERvgOJ/9\nn+7ss/PZdq697Xe9luXYy97w2XY98JzPsvF+jvki8G+v/2d08Pl9l8MlLM5N0vvpfBB+nlJ9jtHl\nfvZ5DDDF5/382Ov/O+1thvh8pvd5/Z+Pn4CMVbJRDbzr+znb2//Irfe7g/dgtr3/lV7LlmPljrZ5\nLTsb+Iefa63AZ9kDdH6TM0D/7n6/fL4/tRzO1azBKjlY7GfbG/xdywQQkLGC706sB3nv72o61gP1\nX/18tn/q6LvqJ21X2Pv8IpDX7ZtO/Nwn/V0f9vov2ctv8vPeXOq1bLq97Hc++9cAP/NzHd7js93N\n9vKTA0lvJ6/ReT8f9ZOOtT7L3gQ+6uH3qdfXqtfrm+6z/yNY8WWM/f+t9nYX+2x3P70IyG619nMa\ndBk/69Y7fxhjDhpjyjs5zpNYDc1u9Fr2VaziA8c59u8PffZda+97us/yA8aYEq//nfMP6iQdYBWj\n1gKvi8iPRWSS/Rru8bPtOmN/GvY2jVg3llkikuKz7Xrvf4wxO7pIR6CvYS7QbJ/X29oAju9rs9ff\nFfbvrb5pov172CQifxGRVSKyVkTWYN34x/gcex/wJxH5jYjMFBExxvzGGOOc679ABrBcRL4hIgON\nMfuNMY91ke5A9nsW6326yWvZzVjXnmMJ1oPhUhG5S0RGGmMajTE/6eL8ACdh3USOuD7tz7kOONPP\nPj19v/35FNgPXAwgIsOxcsx/BsaIyGR7u4uxchm9dcAYU+r1f6DfL29HNOqily1VOzAWq9TrI5/v\nag1WMbC/z6Un39We8nefdO51vr1RnP/P9XOcQK6lCo78fDq7p0IX700A93V/aXPS0dV13pPvU0cC\nuVbPwbo/rPLZ91Os+HK2/f9c+/dnPtv15H7r4VZAzrd/7/JdYV/wAbHf5PeBm8QyFKs4+h2vzXLt\n3wu8u0hg1c2WYN2QvdX6/N9m/47tIi2FWLm5BcAdwHoRWSciF/rZ3F/L6Aqs9zfLZ3nA74eXQF5D\nDlDpfbOxVXn/IyIzfLuX+DlfnfOH1/HqfLYx3ucXkYFYxWj9gTOMMVPN4ZayiV7Hq8V6Mv0rcB3W\nBb3dbhDjbDMfq65vD/A7oEhEForIeD9ppTv72V/IfwPXikiC/cB0AfCy1zbLsW4En2BdVzvtbisn\ndXZ+m3N9ftXP+3wQq6jYV7ff747Y+78BnCciiVglTK/by9qAS+weEecAbwfwerrSo+9XZ4wxi40x\nc3ucIv+cz+U8P59LBv7vhe2+qyIyz2d/p/GWc+8b2JPEdXCfdNJc4bPcaeiW52cf7+sm0GvJOc8T\nPu/L01j31NQA09sVf+kING3d+T51JJBrNReo8nMf9X3Pc+zfvp9NFb3Q41bWPs7HatT1ngvH+gtW\nhf1ZWHWLfzfGtHqtd55qzjTGBLUFpjFmC3CziNyGVf/0ADBfRI41xng/7WX62T0H6wOvDGYavRwA\nhtu5Te+LqZ/3RsaYFQSnq86FWI0hfmqM6fSiNMYUAXeIyJ1YT5w/Ap4SkUJjzCJ7m0XAIhHJw+ou\nci/wHxHJN8a0dXLsQPZ7CqvY7yIgGVhoPyh4H2c5cKWIpGMVRz4ALLSP4/sl9OZcn78zxvyms/ch\niOZjVSOdiZUTvskYUyIiy7AC9LvABt/X3Ac49wHfLpa+D+H+OJ/LP40x/9vTBBhjFuC/O9YqrJKJ\nDh/aRCQWK2e13RizO4DTOWnO9lnuBIOyAI4RCOc81xljVrp0TLeE+vtUDozwcx/1fc+d2JONVeLn\nOOJ+2129ziGLyNewKrN/YYxxI/jMx3qxt2DVizzls36h/fs4n3TEicgLIjLOhTQgImeKyFcBjDEN\nxpiXsW7wsVi5dm+Tvfth2zmTacCnxphDbqQnAIuxnhaP81keqj6PCfZv32A52PsfEZksIvcAGGNa\njNU95AJ79RR7mztE5AR7mzJjzMPAz4BhdHLBd2O/t7BunjfTvrgaEfmyiMyzj1NjjHkSuB2r6Czf\n3qzZ2dzeZ4JYg4QsxcpZ+X4OiMitInJrR+l30ftYuYevARleRa3zsd7jOwm8uLoZwLm+ReQcEfEN\nEEEhIt8Tke95LSq2f+d4bTOQ9qVQ/mzFysX6+1wuFZH7e5NWO9PwfWCciPgrSgar0eE7eJUYdcEp\nGTzBZ7kzGNNC3OH3ngogIn8QkVNcOk9PdOf75Ma1+g7WffR4n+WzsO5t/7H/X2z/9v1s/N5vRSRH\nRBL8rfPW44AsIv1F5OfAH7AqvH/R02N5s+tfn8VqVLXdGFPgs8k/gI+BX4vIIDst8Vgtm/NpXyfR\nU8OAH4rIEK9lp2MVe/jW6aQD37HTIli5qUys3FmoPIz1dPdruxgWETkZOCNE538Hq0Xn9+0HEkTk\nbD/nzwG+KyLeDzWnY9XZLrb/nwb8wOt1JGC1fF7dRe40oP3sm+ezWMXbecaYpT7HGYv12WfZx4nB\narFehNWFA6yivHqsrg9gdWWbZxflfR+4QkScBw3sm9oDtL92XGeMacYqlp/Hkbk5Jwj7Lu+MUxQ7\nVEQy7WOkuZHOAKTYP47lWDfnq8HzufwQq9FPp+zczreA2XYmAvsYk7DuX73OGRpjnsX6zj8nIhd6\nBYYYEbkc6155hzEmoHuUMWYxVneeb4vIMfaxcrFaTS/DuoZ7zRizBKvr1D1OhkYs38Kqp/atTw2Z\nbn6f3LhWH8Hu8iUiafa5ZmC1a3rYGLPd3u5vWLHmfvszwb6nXe97QBEZiZWLfqPLs3fW4ovDfWGd\n/l0b7f83YFXQPwnM8rPfAo7sE/a0z/pFPuuv9Fk/0V53RQfpSsVq0r/TTstarP593k3gV2CV7zfZ\n55hM+/6jf+jktY/E+gKtt/f/HOvp6ESf7QqwWvDdgVXn6PRD9u7qcx6H+xkX23+f4LX+Mp/17/fk\nNdjv2yKsEobldvq/YW87oovP+j4O94vdjtV/8HSfdL3kdU3Ucrh1bH/7GGdh1Qnvwwquf8YKDN7p\nz8Xq37iWw32FP8YaBc5Jy6lYdbob7G02YH0BhnTxGgLeDxiHT88Ar3VT7c/Uud7XA68BE3y2u8X+\n/NdhFQPneq27zP4Mdtmf4zt4tdh34/3u4r1weglM81m+lvbdjBI43A/Z+axOsdclYd3Ydtrvxz0u\nfb9ust+7FqwHuQI/P1W073Vwnv15bMNqxDfX3rbCTkcyVq7K7/3Ffo8XY3WlXAl8wJFjBnyV9n3M\nh3X1fvuk8RT7PXOun3X29XNqd+6T9jbx9rXi9A/ehRU0vLu1effR3og17sE1Pq/jYaxr3um3XYHV\nmM45RhxW9zinv/MarO/OsO6k10/6fd9Pf+n40N72Q59raprXcTr9Prl5rWJVvT1pL99ib/e/fl6b\ndz/ktfa5r+Pwd/phe7uBWHHhya7eL7F3UD0k1oDli40xN4Q5KX6JyHeBh7CCRZ8Z9SjY7Pq8YuBY\nc2QLdqWUCgsd5PwoIVaL4Zf9rJoC7NFg3M65WH2PNRgrpSKCBuSjRwxwuYhc6SwQkdOxhoD8WdhS\nFUHsRkLX2nV738EaSEQppSKCBuQeEpGz7L5wgwGnb2J6GJPUjFWvfo9Y077twKqvucUY85cwpiuS\n1GAN1fc5Vv3ZojCnRymlPLQOWSmllIoAmkNWSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioCaEBW\nSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioC\naEBWSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioCaEBWSimlIoAGZKWUUioCaEBWSimlIoAGZKWU\nUioCxIU7AX1Jbm6uyc/PD3cylFKqT1m5cmW5MSYv3OmIdBqQuyE/P58VK1aEOxlKKdWniMjucKeh\nL9Aia6WUUioCaEBWSimlIoAGZKWUUioC9PmALCIJIvJLEWkRkfwAts8QkWdEZLmIrBKRX4uI1qUr\npZQKqz4dkO0AvAQYDMQGuNszQKwxZiYwGzgF+EkQkqeUUkoFrE8HZCANuA54OpCNReRY4GLgQQBj\nTBPwCHCHiKQFK5FKKaVUV/p0QDbGrDfGbO/GLmcBDcB6r2XLgWTgZDfT5m3l7kqWF1RgjAnWKZRS\nSvVxfTog98AooMQcGRmLvdYFxWPvbePyJ5Zx63OraGvToKyUUqq9aAvIqUCjzzLn/xR/O4jILSKy\nQkRWlJWV9eikEwZlkJoQy8INxbyxdl+PjqGUUuroFm0BuQ5I9Fnm/H/I3w7GmD8bY2YYY2bk5fVs\n5LfvnTueey+YCMBfP9ylRddKKaXaibaAvBPoLyLitWyg/XtHME/8peOGkJUSz4aiajburw7mqZRS\nSvVB0RaQ38VqwDXJa9kMoB74OJgnToqP5dxjBwHwnw0lwTyVUkqpPuioDsgi8jMRWS8iSQDGmA3A\nfOAue308cDvwiDGmNtjpOXvSAAD+s1EDslJKqSP16YBsj9K1GKsvMcCLIvKa1yZJWI21vIuob7D3\nXQ58CiwF7gt6YoGTRueQFB/Dpv3VlNf6ti1TSikVzfr0kJH2wB5zO1l/J3Cnz7Jq4Prgpsy/xLhY\nZozI5qPt5Xy6s4LzpwwKRzKUUkpFoD6dQ+6LZo/KBuCTnQfCnBKllFKRRANyiM0elQNoQFZKKXUk\nDcghNmVoPxLjYthWWsvBQ83hTo5SSqkIoQE5xBLiYpg0OAOAdfuqwpwapZRSkUIDchhMHdYPgLWF\nGpCVUkpZNCCHwdShVkBeU3gwzClRSikVKTQgh4GTQ15TWKXjWiullAI0IIdFfk4KGUlxlNc2sv9g\nQ7iTo5RSKgJoQA4DEfHkkj/fp8XWSimlNCCHzYRBVkvrzftrwpwSpZRSkUADcpiMH5gOwOZinYpR\nKaWUBuSwcXLIm3RuZKWUUmhADpvReWnExQi7Kw5R19gS7uQopZQKMw3IYZIQF8OY/mkYA1tLtB5Z\nKaWinQbkMDpcbK0BWSmlop0G5DDShl1KKaUcGpDDaLzT9alYc8hKKRXtNCCH0Zj+aQDsLKsLc0qU\nUkqFmwbkMBqUkURyfCzltY06N7JSSkU5DchhFBMjjMpLBWBHeW2YU6OUUiqcNCCH2ag8q9h6R6kG\nZKWUimYakMNstJND1npkpZSKahqQw2x0ntOwS3PISikVzTQgh5kTkHdoQFZKqaimATnMRuamIgK7\nDxyiubUt3MlRSikVJhqQwyw5IZZBGUm0tBmKqurDnRyllFJhogE5AgzLTgFgT8WhMKdEKaVUuGhA\njgDDNSArpVTU04AcAZyAXFihRdZKKRWtNCBHgOE5TkDWHLJSSkUrDcgRQOuQlVJKaUCOAMOyNCAr\npVS004AcAXLTEkiOj+VgfbPO+qSUUlFKA3IEEJHDDbsqNZeslFLRSANyhBiWrQ27lFIqmmlAjhBD\n+iUBUHSwIcwpUUopFQ4akCPEwMxkAPbr8JlKKRWVNCBHiMF2Dnl/teaQlVIqGmlAjhADM+yArDlk\npZSKShqQI8TgflaRdbHWISulVFTSgBwh+mckAlBS00hrmwlzapRSSoWaBuQIkRgXS25aIq1thrKa\nxnAnRymlVIjF9XRHETm1m7s0GGM+6+n5osGgzCTKaxspOljPwMykcCdHKaVUCPU4IAOLu7l9ATCq\nF+c76g3KTOLzfQe1HlkppaJQb4qslxhjYgL9AXa7leij1SA7V1ykLa2VUirq9CYgFwd5+6gzSFta\nK6VU1OpxQDbGXB3M7aOR0xe5WAcHUUqpqKOtrCNIXrrV9UlbWSulVPQJekAWkZeCfY6jRX8nINdq\nQFZKqWjTm1bWHiKSCXwLOA7IBMRr9TQ3ztHJuecB9wL1QCxwuzFmRSfbb6Z9ffZ8Y8zvgpfKwGgO\nWSmlopcrARl4CUgDlgJ1PuvyXTpHOyIyHfgHMMsYs1FELgDeEZFJxpiOGpEVG2PmBitNvZGZHE98\nrFDT0EJDcytJ8bHhTpJSSqkQcSsg5xljpvtbISLVLp3Dnx8C7xhjNgIYY94UkRLgNqxcc58iIuSl\nJVJ0sIGymkaGZaeEO0lKKaVCxK065NUi0tHQUvtdOoc/ZwG+xdPLgS8E8ZxBlaf1yEopFZXcyiF/\nB3hQRIqxAnCr17ofAC+6dB4PEcnGqq/2DfjFwBc72TVVRJ4CxgBtwCLgIWNMRPQ10npkpZSKTm4F\n5G9iFROXA4d81g1w6Ry+Uu3fvpGrEeisrHcL8EdjzHIRyQUWALOBC/xtLCK3ALcADB8+vFcJDoQG\nZKWUik5uBeSbgfHGmG2+K0TkHZfO4ctpPJboszyR9g8FHsaYa73+LheRe4FFIjLNGLPGz/Z/Bv4M\nMGPGjKDPi5iXZr2cUg3ISikVVdyqQ97gLxjbrnTpHEcwxlQAVcBAn1UDgR3dOJSz7Rg30tVbefZo\nXZpDVkqp6OJWQP6TiNwhIoNFRHzWvebSOfxZBMzwWTbDXt6OiEwWka/6LB5i/97jctp6xMkha0BW\nSqno4lZA/hfwW6AQaBGRVucHOM2lc/jzK+AcEZkAICLnAYOAP9j//0xE1nu1AM8BviciOfb6RKyu\nU58BK4OYzoBpK2ullIpObtUhrwXu8LNcgIddOkc7xpiVInIN8HcRcUbqOsdrUJAkrAZeTq59HfAK\n8Ja9fRqwBrjJGNNKBPAMn6kTTCilVFRxKyD/0hizxN8KEbnHpXP4ZYxZgNVS2t+6O4E7vf6vAO4O\nZnp6Kzs1AYADdU0YY2hfA6CUUupo1OMiaxE52/nbGPNyR9sZY97y3V51LCUhlsS4GBpb2qhvjohM\nu1JKqRDoTR3yD4K8fVQSEXKcXHJtU5hTo5RSKlR6U2Q9UkTu68b2/XpxrqiSnZZA0cEGKuqadDxr\npZSKEr0JyLuB07ux/ZZenCuqZKVYOeSKOs0hK6VUtOhxQI7UKQyPBk6RtQZkpZSKHm71Q1Yuyk61\nuj5pQFZKqejhVrcn5aKctMNdnyLFx9vLeeGzPYwdkM7XThtFYlxsuJOklFJHFQ3IEehwHXJkjNa1\nak8lX3nqM1rbDLCf1XsqefL6mcTEaB9ppZRyixZZR6BsTx1yc5hTYvnlW5tobTOcNWEAWSnxvL+l\njKc+3hXuZCml1FFFA3IEcoqsIyGHvGl/NcsLKklPjOORq6bxf5dNBeCRRdt0AgyllHKRqwFZRPJF\nZICbx4xG2RHUynrRxhIAzp8yiLTEOM6aOIDTx+VR29jCb9/VnmxKKeUWt3PIDwMPAYhIhoj8r4jk\nuXyOo15OauQ06npvSykAZ4zv71n2owsmEhcjvLi8kPX7DoYraUopdVRxOyAvNMZcB2CMqTbGPApc\n4vI5jnoZSfHExgg1DS00t7aFLR11jS2sLawiLkaYMybXs3x0Xho3nJSPMfDAgg0YY8KWRqWUOlq4\nHZCLRWSZiHxPRKaLSCyQ6vI5jnoxMUJWSjwAlWHMJa/fd5A2A+MHpZOaeGSD/G+ddQy5aQms2F3J\n/NX7wpRCpZQ6ergdkM8Bfg6kA38EaoNwjqiQHQHF1mv3VgEwZWj7YcgzkuL53rnjAbjvjQ1sL60N\nadqUUupo43awXGmMedMYc68xZhYwHqh3+RxRwQnI4cwhry206oen+QnIAJdPH8r5UwZR29jCNX/9\nhM/3an2yUkr1lNsBeaOI3CAiTvnmxcA4l88RFSIhh7y+yAqwk4dm+l0vIjx46RRmjcympLqRLz3+\nMQ8u3Exji87jrJRS3eVqQDbGLANeBZxxFTcDq9w8R7RwRuuqOhSegNzQ3EphxSFiBEblddwMIDUx\njr/fNIsb5+TTZgyPL97BRY99TPHBhhCmViml+j7X63eNMTXGmEb774XGmGfcPkc06Gc36qo6FJ7R\nugoO1NFmYEROapfjVifFx3L/hZN45esnMjI3lc3FNVz/1Gc0NGtOWSmlAqUNriJUv2S7DjlMAdlp\npDW6k9yxr+kjsnnt1pMYlZvKlpIaHn9/e7CSp5RSRx0NyBHKk0OuD0+R9Y7SOgBG90/r1n5ZqQn8\n+rIpADz1cQEH6yNjPG6llIp0GpAjVD+7DvlguHLIZVYOeUxe9wIywMz8bE4anUNtYwuvrNzrdtKU\nUuqoFNSALCL+m+eqLjk55MowNeraaQfkUT0IyADXzh4BwIK1Ra6lSSmljmbBziFXishWEbk0yOc5\n6mR5iqzDk0MurDgEwIiclB7tf/q4/qQmxLK2sMpzLKWUUh0LdkA+G3gU+LWIXBHkcx1VMpOdbk+h\nD8gH65upbmghOT7WM9FFdyUnxHLKMda8Ih9tL3czeUopdVQKakA2xiyyJ5iYidUnWQUoM9np9tRE\nW1toJ2/YV2kNrjY0KxkR6fFx5hxjTUihAVkppboW9EZdIvI9Y0ylMWZdsM91NEmIiyEtMY42A7VN\nLSE9d2GlVcQ8NCu5V8eZMzoHgGU7DoT8oUIppfqauK43CYyInAZMAzIA72zVDcCDbp0nmmQmx1Pb\n2EJVXTMZSfEhO+9eTw65Z/XHjpG5qfRPT6S0ppGCA3U9biCmlFLRwJUcsoj8HlgIfAU4Ezjd68f/\nzASqS1mp4emLvNfOIQ/L7l0OWUQ8M0Wt04knlFKqU24VWZ8LDDfGTDfGzDXGnO78AK+7dI6o0y9M\nDbsKK9zJIQNMG2b1fHOmclRKKeWfWwF5kzGmrIN133HpHFEnM0x9kfe6VIcMh+dSXluoAVkppTrj\nVkD+s4jcKSJDpH2z3NdcOkfUcfoih3L4SWOMp5X1MBdyyFPsqRs37q+mVRt2KaVUh9wKyP/Cari1\nB2gRkVaNAhVJAAAgAElEQVTnBzjNpXNEHc8EE3WhC8g1jS3UNFp9kJ3RwnqjX0oCAzOSaGhui4gB\nQnaV1+nUkEqpiORWK+u1wB1+lgvwsEvniDrhmGCixA5WAzOTetUH2dvYgekUVzewtaSG/NzAZ49y\nkzGGu+d/zgufFSICd50zjm/MHROWtCillD9uBeRfGmOW+FshIve4dI6oE44JJoqrrYA8ICPRtWOO\n7Z/GB1vL2FpSw9mTBrp23O6Yv3qfJxgbAw8u3MKo3DTOPTY86VFKKV+uFFkbY17uZN1bbpwjGvVL\nDn2jrpLqRgAGZiS5dsyxA9MB2FpS69oxu6OtzfDoe9bczL++dAo/On8CAD/+1wYOhXjQFaWU6oib\nA4PkALcBkwEDfA48bow54NY5ok2/MEwwUeLJIbsYkAc4AbnGtWN2xyc7D7CrvI5BmUlcctwQRITX\n1+xj/b5qnvtkN7ecOrrDfctrG/nJvzayurCSU4/J494LJpIUHxvC1CulooVbA4PMALYDXwMGAoOA\nrwPbROR4N84RjZwi61D2Qw5GQD6mvzVC146yWppb21w7bqDeXl8MwKXHDyUuNobYGOG7XxgHwJ8/\n2El9U6vf/Zpb2/ifv69gwdoiCivqef7TPfzwtc9Dlm6lVHRxq5X1Q8DtxpghxphT7J8hwO3Ab106\nR9Tx5JBDWGRd7NWoyy2piXEMzkyiufVwl6pQMcbw/pZSAM6aOMCzfO64PKYMzaS8tonnP93td9/f\nLdrG6j1VDMpM4olrjyc5Ppb5q/exak9lSNKulIoubgXkZGPM330XGmOeBXo/ukSUcmZ8OljfHLLJ\nGUqC0KgL8LSu3lVe5+pxu7K9tJa9lfXkpCYwZUimZ7mIcPuZxwDwx8U7qGk4shRi6Y5y/rB4OzEC\nj1w5jXOPHcRNJ+cD8KclO0KWfqVU9HArIKeISLtRJEQkFej96BJRKj42hnR7xqeahtA0PnIadblZ\nZA3hC8ifFVQAMGdMLjExR3bjOmN8f2aMyOJAXRNPeAXZiromvv3SGoyBb55xDCeMsmatuv7EfGIE\n3ttcSmVdaEdPU0od/dwKyG8CH4vIV0XkdPvnf4APgQUunSMqZYawL3Jrm6Gs1grI/dPdDcgjc6yA\nXHAgtAF5Q1E1cHjEMG8iwt12i+u/fLiL9fsO0tzaxu0vrqakupEZI7L41hmH+yr3z0ji5GPyaG41\nLNxQHJoX4MfOslp+858tvLJyb49GPzvU1MK+qnqM0ZHTlIokbrWy/hFWy+rfA86dvAFrUJD7XDpH\nVMpKSWBvZT1Vh5oZkRPcc5XXNtLaZshJTSAhzt2pssOVQ3YC8sTBGX7XHz88i6tnDeeFz/ZwzV8/\nZWhWMhuKqslJTeDRLx9HXOyR78O5kwbywdYy3t9cytWzhgc9/b62FNdw2R+XUtNolZgs23GAhy6f\nEvAgLv/ZUMx3Xl5LbWMLc8fl8cS107XVuFIRwq1+yK3GmLuBbGAKMBXINsbcA4xw4xzRql8IJ5gI\nRgtrx8hcq+YilDnkltY2Nu+3AvKkQe1zyI77L5zI6ePyOFjf7AnGT90wk0GZ7Zs/zB2XB8DH28tp\naglti3FjDN9/dR01jS3MGJFFcnwsr67ay5vr9ge0//bSGr75wmpq7WC+eEsZP//3pmAmWSnVDa5m\ng4wxDcaY9caYz40xzoDBf3XzHNHGu2FXsDktrN1u0AUwLDuFGIF9lfUhC2Q7y+tobGljaFayp+jf\nn6T4WJ68fibP3XwCj159HO/fNZepw/xP4z24XzJjB6RR19TKyt2hbW39yc4K1hRWkZuWwNM3zuTe\nCyYC8Ku3NwfUneze1zfQ1NLGpccP5d/fOpnYGOH5T3ezoyw8A7bsKKvltn+s4uvPrmT9vu7Pl11Y\ncYgrnljG+Hvf5rsvr6Wh2X/3tb6ipbUtpBPJqMjT44AsIvNF5CH77zbvCSV0cgn3ZKU4E0yEIIdc\nY4/S5WKXJ0diXCxDspJpM7AnRJNMbCiybvKTOiiu9hYTI5x8TC4XTh1MRlLnk2rMGZMLwGe7Knqf\nyG74+7ICAK45YQTpSfFcOXMYo/NS2VdVz1ufd55LXlFQwbKdB0hPiuO+CycyaXAmlx0/lDYDzy7z\n3+0rmEqrG7jiiWX8e91+Fm4o5so/LWN7aeAPBg3Nrdz4zHI+K6igobmNV1ft5YEFG4KY4o41t7bx\n4MLNnPXbJXz/lXWeEojuWLq9nNm/fI+pP/4P//vCahpbwvNw0dzaxrPLCvj1ws3d+jyUO3qTQ14C\nLLf/Xguc4efnTGBdbxIY7UI5WlfJweAVWQPkOw27QlSPvGGfXVw9uOPi6p6YlZ8NwIrdoQvIDc2t\nvLfZ6k/t1F3Hxgj/c8oowBrgpLNGWo8vtlqR33BSvqfU5SsnWbVJr67cG/Lc5c/f2sSBuiZm5mdx\nxvj+1DW1cvdrnwfc0Oypj3exvbSW0XmpPHfzCSTExvDi8sKwzLv9i7c28fjiHWwvreWlFYV84/lV\n3Wowt7fyEF97diXldoPKf60t4pdvbe52OkprGvjuy2u54ollvLFmX7f3b2sz3PrcKu59YwN/XLyD\neY995HmoVaHR44BsjHnEGPOS/e9vjDFL/PwsBn7jSkqjlHPzDMVoXcVBrEMGGJkb2pbWToOuQHLI\n3TE9PwuAVbsraQnRyGPLCypobGlj4qCMI0owvnTcEHLTEthQVM2nHeTYt5fW8N7mUpLiY7jhpHzP\n8kmDMzl2SAY1jS18uK082C/Bo6C8jn+tLSIuRnj4ymk8ctU0+qXE81lBBR8EkI66xhb+aD9g/Hje\nsZx8TC43zskH4E8fdK+PeFub4cmPdnH9U5/xxJId3W61vrGomqc/LiA+VvjZl44lKyWeD7aW8caa\nooCP8dA7W6hpbOELEwfw+m1ziIsR/rasgO2lgQ81e6ipha88+RmvrtrLZwUV3P7iGuav3tut1/LS\nikIWbSohMzmeE0flcKiplW+/tEbnMQ8ht+qQP/RdICIJInIr8G+XzhGVsjzDZ4auUZebE0t4yw9h\n1ydjjFeRtbs55P7pSeTnpFDX1Mqm/aEZn9sJmKeOzTtieVJ8LNecYOV0n/xol999n/64AIBLjh9K\nTtqR7QO+eOwgAN7uosjbTS8s30ObsR4mhmalkJEUzy2nWjn9pzp4Dd7+tbaImoYWpo/I4uRjrOqD\nm04eSXyssHB9sec6DsQv3trET9/cyJKtZfzq7c3c+8b6br2W3/13KwDXzc7n2tkj+MEXxwPw+/e2\nBRTICsrreH1NEQmxMdx/4USmDevHlTOHYQz8cfHOgNPxpyU72Vxcw6jcVG6da43Nft8bGwK+bzS2\ntPLof7cB8JOLJvH0jTMZlp3M1pJa5q/ufm5b9YxbAflpP8sMkAn806VzRKWQFlkHOYec77S0Lg9+\nHfLeynqqG1rISU0ISiO1mXax9fKC0BRbf7C1DIBT7QDk7drZI0iIjWHRppJ21QEHDzXz2irrhnqj\nV+7Y8UV7+sl3N5Z0u7FdT/oxG2N4+3OrD/dl04d6ll89cziJcTEs2VrG7i4e2P7x2R4AvuzV7WxA\nRhJnjO9PmyHg4trVeyr560e7iIuxRm1LiIvhH5/u4ePtgZUWlNU0smhTKXExwtfnWg8Ulxw/lKFZ\nyewsq/N8Zp3558pCAC6cOpihWdb345ZTRyFiPXgEMvVqZV0Tf/3QCt6/unQK3ztnHHPG5FDT0BLQ\nAw7AW5/vp+hgA+MGpHPhlMEkxcfyrTOskeye+miX9lkPEXc7m3oxxjQbY34FuH839CEi80RkuYh8\nICIf25NddLZ9hog8Y++zSkR+LSKuzXzlpsPjWfftVtYQ2hyyd//jQPvodsfMENYjl1Y3sLm4huT4\nWE9xube89EQumjYYY+CZpQVHrHth+R7qm1s55ZhcjrFn3fI2Ki+NcQPSqWls4ZOdgU3MZozh/97Z\nzKT73+GUB9/jo24Ud28oqmZPxSFy0xI87yFAVmoCF0wZDMDzn+7pcP/1+w6ybu9BMpPjOX/KoCPW\nXXycFeCdB5Cu/N87WwD46imj+PYXxnoGgfnNf7YEFIDeXFdEa5th7rg8z0A68bExfPkE60HBeXDo\nSEtrG6+stIqVr5w5zLN8RE4qJ4/Jpam1jQXrui76nr96H3VN1mc8a2S2PSzsWACe/WR3QA3EnPfs\nKyeN8IxoN2/aYLJTE9i4v5pVe0JfNx+NetPK+noReU9E3gOmOX/7/KzpzTkCTMd04B/A9caYU4Ff\nAu+ISGczzz8DxBpjZgKzgVOAnwQznT3VL0RF1vVNrVQ3tJAQG0N2akJQzjE0y+r6VFRVH/RWpBuD\nVFztOH6EFRhXFFQGPffg1KvOHpVNYpz/QTxunDMSgH+uKPR0nalrbOEvH1g5p5tOHtnh8c+eZE26\n8Z+NgY0+9vjiHfzh/R0camqlsKKem/+2nC3FgRXdv73eKho/Z9JAYn2GMr12thXIXlm5t8PrwwnW\nlxw/pN2AJqePzyMzOZ7NxTVdpmdbSQ1LdxwgNSHWU8R7w5yRZKXEs2pPFasDaBz2ul1PfNG0IUcs\nv2z6UOJihPc2l3ZafP7htnJKqhsZmZvKTJ8HLaf04JUVhZ2mwRjDy/Y23gPVzMzPYsKgDCoPNfOf\nDSWdHqP4YAMfbS8nITaGCyYP9ixPjIvlihnWg8KLXTxcKHf0JlgWYLW0XgIc9Prb+Xkf+CMwr3dJ\n7NIPgXeMMRsBjDFvAiVYczO3IyLHAhcDD9rbNwGPAHeISFqQ09pt/ZJDU2Tt3Dj6ZyQGJUcJkBAX\nw9CsFNoMFFYEd9anYDXocozOSyUrJZ7Smkb2BnkGqw+32cXVPvXH3iYOzmDOmBzqmlp5+F2rXvOx\n97dzoK6J44b3Y24n+37BngVr0cbSLh8uCisO8btFVl3jE9dO55LjhtDY0sa9b6zvcl9jDG/ZxdXn\nTx7Ubv20Yf2YOCiDiromFq5v/3BQ19jCArs4+st+RklLjIvlPPu4C9Z2nkt+cbkVxOZNG+JpOJmW\nGMcVdk71H53k0sEacW5tYRVpiXGcNWHAEev6pydx5oT+tLYZTw7Yn5fsNFw+Y2i779w5kwaSnhjH\n2r0HO23ctX5fNZuLa8hOTTgiHSLCVfZreXF5569l/up9GANnTezfrr/+5TOsB4O31xd3OE2pck9v\nWlkvMcb82BjzY+APzt9ePz81xvwJqx45mM4CVvgsWw58oZPtGwDv1hvLsWalOtn11PVSqGZ8Cnb9\nsWNEjlVP1lU9YW8FOyCLCNPtXHIwBwhpazOeIuFTjuk4qALcfd4EYmOEZ5YWcOtzK/nTkh2IwI/O\nn9DpQ9bkIZkMzEiiuLqBz7sYoOP3/91GU2sbFx83hHOPHcgDF02yWkjvquCjLupeNxfXsKu8juzU\nBGaNzG63XkQ8xb3+iq3fXFdEXVMrM0Zk+S1+B5g31crhLVhb1OEDQmNLK6+tsgLl1bOGHbHu6pnD\nPefqbJCO1+2GTudMGkhyQvtSi6vs47y8otBvOg7UNrJoUwkxYs3T7Ssp/vDDRWdF8C+tsN6nL00b\n0m642y8dN4TEuBg+3n6Awg76/htjPO+Fv3SMzktj6rB+1Da28O6mznPaqvfcGjrzoU5WB22kLhHJ\nxgr4vk1Ei4FRHew2CigxR35Lir3W+Z7jFhFZISIrysq6bqThtrjYGNKT4jAGqhuCl0suDtK0i76c\neuRgjml9oLaR4uoGUhNiPecLBk+xdRDrkTfur+ZAXRODM5MYndf5a5k0OJMf2ZNlvL2+mDYDd50z\njukj2gc/byLiySV3VrxZWdfEgrVWMa0zdWVGUrynL3RXDYicltznTBrQboxwx0XTBpOSEMtnuyra\n5Qxf+MzKUV7VyRjis0ZmMyAjkcKK+g6Lnd/ZUELloWYmDspg8pAj8wv5uanMGZNDQ3ObJzfuyxjj\naTj2peMG+93m1LF5DMxIYveBQ3yys/31MX/1PlraDHPH9e/wIfiS462i8NdX7/P7MN7Q3OrpXnXF\nzPbBNDM5nnPtRnv/7CCnvn5fNdtKa8lJTeiwBOaS46x0zF/VvW5Uqvv6+khdzh2q0Wd5Ix1P+5ja\nwfb428cY82djzAxjzIy8vM5zKMESioZdpUGadtGXM8nE7gPBa2nt5I4nDMpoN+Wim2bYgW5FQfBy\nyB94FVcHUpVw45yRvPA/s/nWGWN49uZZfGPumC73gcPF1u9u7Dggv7yikMaWNk4bm+f5HMGqu0yI\ni2Hx1rJOB315yy6Gdrpa+ZOeFO+pk/XOJa/cXcmawirSk+L8Fnc7YmOEC+3GYQs66Avs1IdePWuY\n3/f0Sjt3+8Jn/nO3awqrKDhwiLz0RE4a3b7Vu5OOK+zi3pd96oGNMbxgp8G7MZevmfnZDOmXTNHB\nBj7Z1b7B3cL1xdQ0tDB1aCbjB/ovCbrSrgN+ZUWh325Yr9pB9sKpg4nv4CHpwqmD+cqJI7j9rLEd\nplW5o6+P1OV8+32zdYlAR3f8ug62p5N9wsrTFzmI9cihKrLOzwn+JBPBLq52TBmaSXyssKWkJmil\nF07Xma6Kq72dODqH75w9rlv7zB6VQ3piHFtKavxWJ7S2GZ79xBpi8/qTjpwvJjs1gXlTrVbez33i\nfxjOrSU1bC+tpV9KPCeO7nzasmvsYusXPyuk+GADxhh+b/eRvf7EfL9FxN7mTbMC8pvr9rcbuKWg\nvI6lOw6QFB/DPJ/GWI5zJg2gX0o8G/dXs94e7c2b0y933tTB7RqmebvcDoZvfb7/iOLv5QWV7Cir\nIy89kTPG9+9w/5gY8eSS5/sptnbqhp3z+DN7VA5Ds6ygvnTHkVUKTS1tnpy+dxc0X9mpCfzkomOZ\n1sH47so9fXqkLmNMBVAF+LaoHgh0NGTPTqC/HPlo7OzfvWF+QsSpRw7mjE/OONZBL7IOwWhdwRoQ\nxFdSfCzHDsnEGFgTQLeQFQUVnPXbJYz70dt8/5V1XQ5XWdfYwsrdlcQIzBkT3Lk3E+JimGsHB3+5\n5CVbS9lbWc+w7GROG9s+iHzlRCtIv7yi0G/jH2dGqrMnDugwJ+Y4dkgm504aSH1zK99/dR1//XAX\nS7aWkZYY12lrccfkIZmMzE2lvLaRZT5duZzGXBdMGez5XvlKjIvlErsL1Qs+DaIaW1o9xfb+6ly9\nDctO4eQxuTS2tB3RuOvJj6yW75dPH9rle3GxXVzs26hqV3kdn+ysIDk+loum+S82ByuoXz7dCtgv\nrziyyPn9LaVUHmpm3ID0oD+8qsC4VYf8XE/WuWQR4NvveIa93J93sRpwTfLZvh742PXUucDp+hTI\nIAE95ckhpwc3hzwsK/izPm3c3/kcyG6aPtypR+682Hp7aQ3XPfkZ20traWxp46UVhXz7pTWdtkz+\nZOcBmlsNU4b281wDwXS2U4/sJyA7E1Bcc8IIv7nCKUP7MXVYP6obWtq1cDbG8KYdxOZN9Z8r9XXP\n+RPITI5nydYyfv6WNUXkvRdMCKhLnohw4dT2xdZNXoHRtzGXr6vs9QvWFHGo6fBkEe9vLqXqUDPj\nB6YHdH1dbw/G8vj726lpaGbd3ire2VBCYlwMN9jDfXZmlFejqoUbDjeVcUoizp8yiPQuJkO5dPoQ\nROCdDcVHdJ90jmGtD17VjgpcUPoI2wNvXCwik4NxfB+/As4RkQn2uc8DBgF/sP//mYisF5EkAGPM\nBmA+cJe9Ph64HXjEGBOR05tkeeqQg5dDLvV0ewpuQE6Ii/HM+lRY6X4NQV1jC7vK64iPFcZ20BLX\nTTPynZbWHTfsMsbwvVfWUd/cyvlTBvHGbXNIT4zj7fXFntyWP+9vsSaT6Ky7k5vmjssjPlZYUVBB\nhdfsYoUVh1i8tYyEuBhPv1R/vjLbyiX/fdnuIx40NhRVs7O8jty0BGaP6ryBmWNYdgrP3XwC00dk\nMSInhZ9eNMlTtxsIp7X1wvXFnuLiV1ftpby2kfED0zl+ePsBVryNHZDO8cOtQPjm2sOB0BmGtLMi\nXm9nTejPjBFZHKhr4ua/reB/X1gNWIG6f4APv0498B/et8baLqtp5PlPrWB6g5/R13wNzbJy6k0t\nbZ6BYzYUHeTDbeUkx8d2+pmq0HIlIIvIz0WkTERmikgKVt3ys8AyEfmKG+foiDFmJXAN8HcR+QC4\nBzjHGOO0nE7Caqzl/Qh4g53u5cCnwFLgvmCmszf6eYqsg5NDNsZQUh2aIms43NI6GF2fNhdXYwwc\n0z+9XTeQYHBaWq/eU9XhRBPvbS5l1Z4qctMS+cXFk5k6rB8/usBqDf3gwi1+i66NMby/2ao/7qye\n0U3pSfGcODqXNgOLvHLJz36yG2OsvsOd5VDPn2Kt31B05MhOTgOm8ycP6rB1tT+Th2by6q0nseSu\n07nuxPxuvZYx/dM4cVQONfZEFDUNzZ6xmr9x+piAcoTOGOGPvr+NhuZWPt15gE93VZCeGNdpYyxv\nIsKDl00hM9nqGrb7wCEmDMrg291oIHXZdGs4zu2ltTz4zmZ+8Oo6GprbOGvCAI4dEli1zG2nW437\n/vzBTraW1HD/G9ZUlVfPGh6S0hcVGLfuWKcDE4wxy7GCYxaQD4yhgwE63GSMWWCMmWmMOdUYM8dO\nh7PuTmPMKGNMvdeyamPM9fY+xxtjvmeM6f4kpiGS6RRZB6lRV01jC/XNraQkxJKWGPwRRJ2+yLuC\nMKZ1qBp0OfqnJzE8O4VDTa1s9jM6lDGGx97fDsDXTxvlqbe8bPowxg9MZ19Vvd+GUNtLa9lXVU9O\nagJTArzpuuE8u5vM00sLaGszlNc2eoqrb+yiiDXJK7f1x8XWa66oa/L0o7129ogO9w2Gu84dB1gz\nQF346EcUHWxg8pDMTltpe7to2mDGDUinsKKeb/5jNXe9YrVPvenkkV0WE3sblZfGgm/O4eaTR/Lt\ns8by4i2zu2yY5i0hLoafXGTVsP1pyU7+u7mUtMQ47r9wYsDHmD0qh/MnD+JQUytnP/wBK3ZXkpuW\n6Om+piKDWwG53hjjNOG7CnjaGFNu51IjsuVyXxLsIutSrxbWoahLCmYO+fO9VoOuQHMObnCKrZft\naN81ZdnOA6zeU0VWSrxn0AuwusV8zw4Yjy/e0W5Se6ce97SxeUHtuuXrS8cNYUBGIpv2V/P3ZQXc\n+/p66ptbOXN8f6YM7bqV7U0n55OWGMeiTaX8e91+fv7vTdQ3tzJ3XF6Hg3kEy/HDs7jrnHEYAwUH\nDpGblsgjV03rtGW0t7jYGB68bApJ8dbEHXsqDnHskAzPUJvdMSInlXsvmMjtZx3TYWOyzpwxfgC/\nu2oao/NSOW54P57/6gkMy+6oZ6d/D142hbnjrOqPIf2SefqGme1G5lLh5VZ2KF1ERmANrHEa8E0A\nEYml4/7AKkBOP+RgFVk7xdX904NfXA3BHRzEGWkqlAF57rj+vLZqH+9uKuF/Tj1ybBln3t4b54wk\nJeHIr9vp46z6xRW7K3nyw13cfpaVWzHGeLrW+E6gEGxJ8bF8/9zxfOfltTzwr40ApCTEcl+AubH+\n6Ul8+wtj+embG7ntH6sAK4d3z3kTgpbmztx2+hhmj8phV3kdZ4zv3+1x2qcO68c/v3YSf1tWQG5a\nIreeNrrdGNqhctG0Ie3Gze6O1MQ4nrlxFgcPNZOWFBfwg4kKHbdyyI8A27FaNj9vjNkkIrOB9zhy\niErVA/2C3A85VH2QHcEaHKShuZVtpbXECEwcFLpuHB01htpYVM2H28pJSYj1dAvyJiLcdY6VS/7L\nhzs9+64urGJ7aS3ZnYyeFEyXHD+UH3xxPOlJceTnpPDUDTMZ0Y0Rz26ak89tp48mITaGnNQEHv/y\n8SHPHXubPiKLy6YP7fGkKZOHZvLQ5VP5wRfHHxU5ysyUeA3GEcqVHLIx5h8i8j4wwBizxl68B6uh\n1GY3zhHNPBNMBKnIOpQNugCGZScTI7C38hBNLW2uNb7auL+a1jbDuAHp3aqj662MpHhmj8rhw23l\nvPX5fk9d6Z8/sHLHV84c1mHDmRNG5XDa2DyWbC3j9//dxv0XTuSx97Z79uuqn2qwfP200Xz9tO4X\nzYLzoDGe288cS2yM6M1fqQC5+W1vAuaJyD9F5GXgq8B6Y4yOSN5Lh6dgPDpyyIlxsQzuZ3V92uti\n1yen/njy0NAVVzucbjB/X1aAMYaNRdW8sbaIuBjhpjmdD2Zx1znjiBFrLuPrn17Oe5tLSU2I7XK/\nSJcQF6PBWKlucKvb0wysIuuvYY16Ncj+e5uIHO/GOaKZ0wikuqHZ73i0vVVaE5o+yN4ON+xyLyCv\n3Wt1tfGdMCAUvnjsIPqnJ7K1pJbH3tvO919dhzFw3Ykjumx8c+yQTO67wKqj/WBrGSLws4uPJS9E\ndfpKqcjgVqOuh4DbjTF/914oItcBvwXmunSeqBQbI2QkxVHd0EJ1fTNZPawL64inyDqEAWBETgof\nbbcadp3u0jGXF1iDczjTIoZSQlwMd583gTteWsNv7PmIh2Unc0eA/U1vmDOSCYMyWLrjACcfk8vM\n/MAG0FBKHT3cCsjJvsEYwBjzrIh806VzRLV+KQlUN7RQFZSAHNoia4CRLo9pXVRVT2FFPemJcUwI\nYYMubxdNG8yBuiaeWbqLYVkp/PKSyd3q4nLCqBxOGBXcMauVUpHLrYCcIiIpxpgjyh9FJBXt9uSK\nrJR49lQ4Dbvcm+PXGOOZerF/iBp1AYzunwbAFj+DafSEkzuekZ8VtnpLEeHmk0dycwATICillC+3\nAvKbwMci8gcOz5g0BrgVWODSOaJaZpAadlUdaqaptY30pLh2/WSDyemWtGl/NcaYXg9I8sFWa1ya\nWSM1h6mU6pvcugP/CDDA77HGjgZoAB4mgseI7ks8XZ/q3e36VFIT+uJqsAYhyU5NoKKuif0HGxjc\nL7nHx2ppbeO9zVZj/rMmhGbcZ6WUcptb0y+2GmPuBrKBKcBUINsYc48xpvNJX1VADg+f6W4OOdR9\nkGSkFg8AABbySURBVB0iwviB1mARm/a3nwS+O5YXVFJ5qJn8nBTG2EXhSinV1/Q4IItIkog8KiLF\nIrJHRO4DGo0x640xnxtjGlxMZ9RziqzdHj6z+KA150aw50H2Z4JXsXVnjDEs3VHOXz7YyZKtZe26\nfr1oTyJ//pRBOq+rUqrP6k2R9Y+Br2ANjxkP3A2UAH9yIV3Kh5NDPujyaF1FVdZzU2+KjHvKCcgb\nOwnIrW2G7768hte9JpqfOjSTBy+byriB6ewsq+Xf6/YTI9ZUckop1Vf1JiDPA6YbY7YDiMjJwE/R\ngBwUzgQTbo9nXVRl5ZDDEZCn2CNqrdpd1WHDrl+8tYnX1xSRlhjHBVMG8f6WUtbuPcj5v/+Qq2YN\n45OdFbS0Ga6cMYyhWdqgXynVd/UmIFc5wRjAGPORiLSriBSRdGOMO31boli/5OAUWe8/aOWQB/UL\nfZH1mLw0+qXEU1zdwN7K+nYjWq3cXcmTH+0iLkZ46oaZzBqZTU1DM796ezPPf7qH5z6xiqpH56Xy\nw/PGhzz9Sinlpt4E5Ho/y/zVG78BnNGL8ygO55DdL7K2PsYhYcghx8QIM0Zks2hTCZ/tqjgiILe2\nGX70ujVR2C2njmLWSGvkqvSkeH5+8WSumDGMhRuK6Zccz9UnDCejGxPGK6VUJOpNQB5pN+Tylu9v\nWS/OoWzBmILRGEOR3ahrUGboc8gAs0ZmsWhTCUt3HOBSe4IGgFdX7WXT/mqG9Evmf884pt1+U4f1\nY+qwfqFMqlJKBVVvAvJA4EY/y32XDejFOZTN6YdcWedeDrnyUDMNzdagIOlhymGePq4/v3hrM//d\nXEJzaxvxsTHUN7Xy2/9Y40Hfdc64kE6lqJRS4dKbgPyJMabLeQHseZJVL2UkxyMC1Q0ttLYZV4aH\nDGdxteOYAemM6Z/G9tJaPtxWxhnjB/CXD3dSXN3AsUMymDd1cNjSppRSodSbgUH85Y57s53qhDXj\nkz0No0vF1k5ADldxtePS462i6kff2866vVU89p7VVvDu8yYQo/PpKqWiRI8DsjGmwM3tVNechl2V\nLjXsCmeXJ2/XnTiC7NQEVu+pYt5jH9PU2sbVs4Zz0ujcsKZLKaVCyZWhM1VouN2wy+nyFO6AnJYY\nx+PXHO8Z/OTCqYN5YN7EsKZJKaVCLXTT+6he80ww4VIOeV+EFFkDzB6Vwyd3n0lNQwu5aaEdV1sp\npSKBBuQ+xO0JJgorrOmrfQfkCJfEuFgS07RFtVIqOmmRdR/Sz+UJJvbYAXlEhARkpZSKZhqQ+5As\nJyC70Be5uqGZykPNJMfHkpeuRcRKKRVuGpD7kJw0KyAfqGvs9bH2HLByx8OzU3TKQqWUigAakPuQ\nXDsgl9f2Poe8+0Bk1R8rpVS004Dchzitjw/U9j6HvLuiDoARORqQlVIqEmhA7kNy7IDsRg7ZaWGt\nAVkppSKDBuQ+xFOH7EYO2asOWSmlVPhpQO5D0hPjSIiNoa6plfqm1l4da3tpLQCj89LcSJpSSqle\n0oDch4iIJ5dc3otc8sFDzZTWNJIUHxPWmZ6UUkodpgG5j/E07OpFX+TtZTUAjOmfprMpKaVUhNCA\n3Me4UY+8rcQqrj6mf7oraVJKKdV7GpD7mJxUp+tTz3PIW+2APKa/1h8rpVSk0IDcxziDg5T1Jodc\nahVZH6MBWSmlIoYG5D7m8OAgPcshG2PYtL8agPEDM1xLl1JKqd7RgNzH9HY86/0HGyivbSIzOZ5h\n2drCWimlIoUG5D7m8GhdPQvIn+87CMCUoZk6qYRSSkUQDch9jKcOuaaHAXmvFZAnD8l0LU1KKaV6\nTwNyHzMwIwmAkuqeBeS1e6sAK4eslFIqcmhA7mOyUxNIiI3hYH0zh5paurVvc2sbq3ZXAnDc8Kxg\nJE8ppVQPaUDuY0SEAZlWPXLxwYZu7fv5voPUNbUyKjeVAXZOWymlVGTQgNwHDcqwWkd3NyB/svMA\nACeMynE9TUoppXpHA3IfNCDTyt0WV3cvIC/bYQXkE0drQFZKqUijAbkPGmQH5P3dyCFXNzTzyc4D\nxAjM0YCslFIRRwNyH+S0tO5OkfWSLWU0txpmjMj29GVWSikVOeLCnYDeEJG7gcuAJmAfcKsxprST\n7fOBT4DNPqvuN8YsCVIyXdeTHPK7G0sAOHvSgKCkSSmlVO/02YAsIt8CrgNmGmNqReQhYD4wp4td\nFxpjbgh2+oLJqUMuCbAOubaxhUWbrID8hYkakJVSKhL1ySJrEYkB7gYeN8bU2ov/DzhJRM4MX8pC\nw8khF1XVB7T9v9cVcaiplVn52YzISQ1m0pRSSvVQnwzIwBRgALDCWWCMKQH2AF8IV6JCZUB6Eglx\nMRyoa6K2sevBQV5aXgjAFTOHBTtpSimleqivBuRR9u/9PsuLvdZ1ZLyILBCRD0VkoYh8ubONReQW\nEVkhIivKysp6ml5XxcQII7JTANh9oK7TbbeV1LBqTxXpiXGcN3lgKJKnlFKqB/pqQHbKXX0HdG4E\nUjrZrwEoAG4xxpwC/AD4nYjc1dEOxpg/G2NmGGNm5OXl9SLJ7nKKnncfONTpdk7u+MJpg0lJ6LNN\nBpRS6qgXUQFZRH4mIqaLn7mAky307b+TCHQYoYwxxcaYq4wxxfb/a4AngHuC8HKCKj/Heu4o6CSH\n3NTSxmur9wFw5QwtrlZKqUgWaVmmB7ECZGfKgAn23wOxcrx4/f9eN8+5A8gUkVxjTHk39w2bEbl2\nDrm84xzyok0lVNQ1MX5gus7upJRSES6iArIxphqo7mo7EVkHlAAzsPoVIyL9geHAok72+zKwwxjz\nqdfiIVi56gM9T3noOTnkXZ3kkJ3i6itnDkNEQpIupZRSPRNRRdaBMsa0Ab8AviEiTn3yncBSvHLI\nIrJERJ7x2nUs8B0RibPXDwZuAf5ojDGhSLtbRuWlAbC9tBZ/Sd9XVc8H28pIiI3hS9OGhDp5Siml\nuimicsjdYYz5vYikA//f3r0HS1GeeRz//pSrgIAugmCUoEYRb7uCUcsoiyDEMtnopmKMC6sbLU2i\n0XW1VrNa8S5bpYlxzaaisWLCenct3fKyEk1QCTEcyFISWWMkgFE4rAG8cifP/tHvMcMEONNnbj2H\n36dq6nS/3dP9vO/pnmfet3tmZkvaACwHTitLrLsBfUvmHwIuT8/ZSHZz2J1kn2FuKcMH9mFg356s\n/nAj7e+tZ++Bfbda/lDb74mAyYcOY3C/Xk2K0szMKtWyCRkgIm4EbtzB8nFl84uAc+odVyNIYszw\n3ZmzeBWLlr+3VULetOWPPND2BgBn+rPHZmYtoSWHrC1zyN67A/DK8q0vuz+7aCUr39vA/kP6+acW\nzcxahBNyCzss3Tk9f9marcpnvLQMgKnH7OebuczMWoQTcgvr6P3OXbKaDZu3APBq+3vMWbyKvj13\n5fSj9mlmeGZmloMTcgvba0AfDho6gHWbtjB3yWoA7vjp6wB8Yew+7N6nZzPDMzOzHJyQW9yUQ7Pv\np36g7ff86o01PLlwBT13FeefuH+TIzMzszyckFvcGeM+Ro9dxJMvr+Csu35JBHz5+FEMH9S38yeb\nmVlhOCG3uOGD+nLpyZ8AYN2m7DePL5l4YJOjMjOzvFr6c8iW+er4A/irfQfzztqNTDh4KL16+H2W\nmVmrcULuJo4Z5c8bm5m1MnelzMzMCsAJ2czMrACckM3MzArACdnMzKwAnJDNzMwKwAnZzMysAJyQ\nzczMCkAR0ewYWoakt4FlXXz6XwB/qGE4OyO3YfXchtVx+3XNfhExpNlBFJ0TcoNImhcRY5sdRytz\nG1bPbVgdt5/Vk4eszczMCsAJ2czMrACckBvnzmYH0A24DavnNqyO28/qxteQzczMCsA9ZDMzswJw\nQjYzMysAJ+QGkPRZSW2SXpD0c0n+2MQOSOol6WZJmyWN3MbycyXNlzRb0k8k7d/4KItJ0qmSnpL0\nnKSXJD0t6fBtrOc23A5JJ0h6VNLP0jm7UNLFZev4nLaa69HsALo7SUcB9wFHR8QiSacCz0gaExHt\nTQ6vcFICvh94Ddh1G8v/BrgJODwi2iVdCMxM7bm+kbEW1D3A1yPiPgBJ04HnJB0aEStTmdtwx74E\nLIiI6wAkHQnMl7Q4Ip7wOW314h5y/V0JPBMRiwAi4glgJfC1pkZVXP2BqcAPt7P8amBGyQvf98m+\nPemsBsTWCl7oSMbJrWTtc3JJmdtwx24Hvt0xExELgHeAA1KRz2mrCyfk+psIzCsrawMmNSGWwouI\nX0fE69taJmkwcBQl7RkRm4AFuD0BiIjTy4rWpb+9wW1YiYhYFBHvA0jaRdJ5wAbg4bSKz2mrCyfk\nOpK0BzAQWFG2qB0Y1fiIWt7H01+3Z+WOBdYD/5Xm3YYVknQVsBz4R+CUiHjL57TVkxNyffVLfzeU\nlW8AdmtwLN2B2zMHSSIbnr4qIv4vFbsNKxQRNwB7AzcCz0s6Dref1ZETcn19mP72LivvDaxtcCzd\ngdszn5uAZRFxa0mZ2zCHyNwLvABMx+1ndeSEXEcRsZrsZpBhZYuGAYsbH1HLW5L+uj07IekSYDRw\nTtkit2EnJPXaRvEiYIzPaasnJ+T6exYo/4zi2FRuOUTEGrKbaT5qT0k9gSNwe35E0rnAKcAZEbFZ\n0ihJE8FtWKH5abi/1HDgrTTtc9rqwgm5/qYDkyWNBpB0Ctl1qe82NarWdQMwVdLQNH8esAq4t3kh\nFYekLwL/Qnbd87D0hRWTgONLVnMb7tgA4KKOmfS5488Dd6cin9NWF/5ikDqLiPmSzgJ+LGkd2Zdd\nTPYXCGxbGi6cCQxKRQ9IWt7xcZ6IeFzSEOBpSWvJ7iCe7C+0+MgMsvN6Vln5tR0TbsNOfQM4V9KZ\nwBagL/BPwPfA57TVj3/tyczMrAA8ZG1mZlYATshmZmYF4IRsZmZWAE7IZmZmBeCEbGZmVgBOyGZm\nZgXghGxmZlYATshmNSZpqaRZJY+Q9GrJfLuk8ZJGSFopaUQTYpxVEueUCtY/Mq37qqSlDQjRbKfj\nb+oyq4OIGN8xLSmA6RFxT5q/Jy1aD/wGWNfg8DrcExHXVLJiRCwAxks6G6joOWaWjxOyWe3d1sny\nx4ClEbEKOKEB8ZhZC/CQtVmNRcQOE3JEPAZ8mIaA16deJ5Iu7hgSlnS2pGck/U7SOZI+JuleSa9I\nul/SVr/HK+lSSQskPS/pBUkT8sYtaU9Jj0iak2J7UtIn827HzLrGPWSzJoiIt8mGgJeWlH1H0rvA\nvwObImKypEnAE2S/MDSN7Jz9DfBF4EcAkr4MfAU4OiLWpF94mi3p8Ih4LUdY1wNrI+K4tN3rgE8D\nv6yutmZWCfeQzYpnF+DBNP1zoBfw24jYEhEbgDbgL0vWvxq4O/3WMRExD1gIXJBzvyOAYZL6pPnv\nAP/RtSqYWV7uIZsVz9sRsRkgItZKAlhRsvxDYCCApAHAfsC0srul+6dHHtPJrm8vk/QQ8MOI+FXX\nqmBmeTkhmxXPlgrKVDb/7Yi4q5qdRsQvJI0ETgf+AZgv6aKIuKOa7ZpZZTxkbdbCIuJ9YBlwUGm5\npNMknZVnW5JOAzZGxL0RcRJwC3B+zYI1sx1yQjZrfdcDU1PvFkl7pLKFObdzMTCxZL4nkOemMDOr\ngoeszepE0rHAzWn2CkkHRMRVadkQ4GFgWFrWn+wLQi4nu7FqJtmd1I+m598m6VJgSnog6d8i4qKI\nuDtdS35K0mqy4e1/joiXc4Z8F/BNSVeS3Ui2AriwS5U3s9wUEc2OwcwaTNIsYFal39RV8ryzgWsi\nYmTtozLbuXnI2mzn1A58Lu93WZP1mN+sd3BmOyP3kM3MzArAPWQzM7MCcEI2MzMrACdkMzOzAnBC\nNjMzKwAnZDMzswJwQjYzMysAJ2QzM7MCcEI2MzMrACdkMzOzAnBCNjMzKwAnZDMzswJwQjYzMysA\nJ2QzM7MCcEI2MzMrACdkMzOzAnBC7uYkDZN0k6R/bXYsVjySjpY0Qplhkj7Z7JjMdlZOyE0kaYCk\n/5S07w7WGSvpdknTJH1f0gF59hER7cBc4JBq491OfJ3WIa1XVT0knSOpXdKnqou463FJOlHSmZLO\nlXSvpIk12H8vSQskDa52WyXbzNPWXwXeBDYDD6bpwsjT5tUeY2ZNFxF+NOEBnAtcCwQwcjvr9AaW\nAcPT/DigrQv7uga4uBl1qFU9gH7AH4BeNYw/V1xp/2en6c8DHwB9qozha6n9Dm1Sna4B9gaG1fr4\nqFF9KmrzWp0rfvjRzId7yE0SET+IiG92stoJwAcRsTzNzwNGSxqVc3cTgGfzxtiZCusAtanHeODF\niNiYM8xaxjUeeDhNiywJ9OzqziUdAbQBHwLDu7qdMrnbOiJWRDaSUkTjqazNa3WumDVNj2YHUASS\n9gDOITupbwKOAPYEhgIPAAcBhwLtEXFr2fMuJ3uh2J7NwLURsakLoY0EVnXMRERIWgOMAX5XyQYk\n7QbsGxGvSDoVmAicD/SPiC2tUg9gErBZ0llk/6fvRsTLHQu7WIdccUXEr0tm/xa4PiLerzD+rUjq\nRTaq8Likt4AR21in7nUC+kn6e2AjWRvfEhGLctTjAuCujmOppHwG8JOI+HEVdcnT5iOp/hgzayon\n5MxpwO3AecD+EXFnSmRrgAcj4keSDgEeAT5KyBGxGriyjnENAdaWla0HBuTYxvHAa5L+DvgZ8N/A\nbaUvoC1Sj0nAeRExR9K7wA3AZzsWdrEOueOSdDRwcnreLTn3V+oE4Ik0/SbbSMgNqtOjEfELAElv\nA49JOjgi/tjZjiR9HFhS8saub0SsS4ufAvbqWLeaY6zCNq/FMWbWVB6yzjxC1iPuFxH3pbIjgHkd\nL1bAWKDinkONvMOf9yj6k11Xq9QEshem44AjImJzRCytTXgVq6oekkaQXTuek4qGkr0ANzyuiJgb\nETeQ3Sj3oqT+eXcq6WCykYrLJV0BDKJ2Q9Z569RWMv06cCBweIX7mgTMBEjt8HDJssVkbVS1Ctu8\nFueKWVO5hwxExLuSPgP8tKR4IvBcyfyXgB9IGhwRawAk7Qlcxo6H4bYA13RxqPdVsuFl0v56AHuQ\n3bxSqQnAtBTHXGCwpMMiYmHJdotej6OBF0vmTybr6X+ki3WoOC5JxwCPA8dExBJgFvA9YArZG7qK\nSOoJjI6IK0rKBgGjt7FuI+o0U9JeEVHam6z0Ov2QiIg0PY5sBKbDFLJRjC7XJWeb1+JcMWuuZt9V\nVpQHcA8wrWT+eeDEND2Y7B14b+CyGu/3z+5QBk4CjiR7w7Qc2K+k/H9K1puUnj94O9seCKxI00OB\nRWn6kkbVIU1XW49JwLfS9IHA/5JdA6827s7iKq3DOGA20DvNn0KWuA6spA4l2/w6sFtZ2aVkozG1\n+F/kqdM+wNUlyy4A5uT4v9yfjtPRZD3tm9NxNh04tQZ16azNKz7G/PCjFR7uIf/JgaRrXJJENiTa\nMVy9HngJmMqfrvtVJd2cdHyanS5pdkTckeYvJHsxWSBpKvANSXOAvwbOKNnMwcDiSD32bRgDPA0Q\nESslzZb0FeDJRtUBWBARm6usx3PAFElnk/WWT4qID6qNv4K4SuvQJulbwEWStqR6nxoRv62kDpKO\nJTu+PkV2k9ETqfwLZDcrHSTpOuDGiNjQoDq9mY6Jy4BdgU8AnytZt7P/ywyyXvEbZOfG/WQ3R14V\nEVWfJxW0eZ5jzKzwFBGdr2WFk+5abQOujIiHmh1PV3WHenSHOpTrjnUyKzon5BaVPsM6OiIeaHYs\n1egO9egOdSjXHetkVnROyGZmZgXgjz2ZmZkVgBOymZlZATghm5mZFYATspmZWQE4IZuZmRWAE7KZ\nmVkBOCGbmZkVwP8DfnHjnKgxMKwAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = pyplot.figure(figsize=(6,4))\n", - "\n", - "pyplot.plot(t, num_sol[:, 0], linewidth=2, linestyle='-')\n", - "pyplot.xlabel('Time [s]')\n", - "pyplot.ylabel('Position, $x$ [m]')\n", - "pyplot.title('Driven spring-mass system with Euler-Cromer method.\\n')\n", - "pyplot.figtext(0.1,-0.1,'$m={:.1f}$, $k={:.1f}$, $b={:.1f}$, $A={:.1f}$, $\\omega={:.1f}$'.format(m,k,b,A,ω));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And our result looks just like [Fig. 4.28](https://link.springer.com/chapter/10.1007%2F978-3-319-32428-9_4#Fig28) of Ref. [1], as it should. You can see that the system starts out dominated by the spring-mass oscillations, which get damped over time and the effect of the external driving becomes visible, and the sinusoidal driving is all that is left in the end.\n", - "\n", - "##### Exercise:\n", - "\n", - "* Experiment with different values of the driving-force amplitude, $A$, and frequency, $\\omega$.\n", - "* Swap the sine driving for a cosine, and see what happens." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "An interesting behavior occurs when the damping is low enough and the frequency of the driving force coincides with the natural frequency of the mass-spring system, $\\sqrt{k/m}$: **resonance**.\n", - "\n", - "Try these parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "ω = 1\n", - "b = 0.1" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "for i in range(N-1):\n", - " num_sol[i+1] = euler_cromer(num_sol[i], drivenspring, t[i], dt)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = pyplot.figure(figsize=(6,4))\n", - "\n", - "pyplot.plot(t, num_sol[:, 0], linewidth=2, linestyle='-')\n", - "pyplot.xlabel('Time [s]')\n", - "pyplot.ylabel('Position, $x$ [m]')\n", - "pyplot.title('Driven spring-mass system with Euler-Cromer method.\\n')\n", - "pyplot.figtext(0.1,-0.1,'$m={:.1f}$, $k={:.1f}$, $b={:.1f}$, $A={:.1f}$, $\\omega={:.1f}$'.format(m,k,b,A,ω));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, the amplitude of the oscillations grow over time! (Compare the vertical axis of this plot with the previous one.) Our result matches with [Fig. 4.29](https://link.springer.com/chapter/10.1007%2F978-3-319-32428-9_4#Fig29) of Ref. [1]." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Solutions on the phase plane\n", - "\n", - "The spring-mass system, as you see, can behave in various ways. If the spring is linear, and there is no damping or driving (like in the previous lesson), the motion is periodic. If we add damping, the oscillatory motion decays over time. With driving, the motion can be rather more complicated, and sometimes can exhibit resonance.\n", - "\n", - "Each of these types of motion is represented by corresponding solutions to the differential system, dictated by the model parameters and the initial conditions.\n", - "\n", - "How could we get a sense for all the types of solutions to a differential system?\n", - "A powerful method to do this is to use the _phase plane_.\n", - "\n", - "A system of two first-order differential equations:\n", - "\n", - "\\begin{eqnarray}\n", - "\\dot{x}(t) &=& f(x, y) \\\\\n", - "\\dot{y}(t) &=& g(x, y)\n", - "\\end{eqnarray}\n", - "\n", - "\n", - "with state vector\n", - "\n", - "\\begin{equation}\n", - "\\mathbf{x} = \\begin{bmatrix}\n", - "x \\\\ y\n", - "\\end{bmatrix},\n", - "\\end{equation}\n", - "\n", - "is called a _planar autonomous system_: planar, because the state vector has two components; and autonomous (self-generating), because the time variable does not explicitly appear on the right-hand side\n", - "(which wouldn't apply to the driven spring-mass system).\n", - "\n", - "\n", - "For initial conditions $\\mathbf{x}_0=(x_0, y_0)$, the system has a unique solution $\\mathbf{x}(t)=\\left(x(t), y(t)\\right)$. This solution can be represented by a planar curve on the $xy$-plane—the **phase plane**—and is called a _trajectory_ of the system." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "On the phase plane, we can plot a **direction (slope) field** by generating a uniform grid of points $(x_i, y_j)$ in some chosen range $(x_\\text{min}, x_\\text{max})\\times(y_\\text{min}, y_\\text{max})$, and drawing small line segments representing the direction of the vector field $(f(x,y), g(x,y)$ on each point.\n", - "\n", - "Let's draw a direction field for the damped spring-mass system, and include a solution trajectory. We copied the whole problem set-up below, to get a solution all in one code cell, for easy trial with different parameter choices." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "m = 1\n", - "k = 1\n", - "b = 0.3\n", - "\n", - "x0 = 3 # initial position\n", - "v0 = 3 # initial velocity\n", - "\n", - "T = 12*numpy.pi\n", - "N = 5000\n", - "dt = T/N\n", - "\n", - "t = numpy.linspace(0, T, N)\n", - "num_sol = numpy.zeros([N,2]) #initialize solution array\n", - "\n", - "#Set intial conditions\n", - "num_sol[0,0] = x0\n", - "num_sol[0,1] = v0\n", - "\n", - "for i in range(N-1):\n", - " num_sol[i+1] = euler_cromer(num_sol[i], dampedspring, t[i], dt)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To choose a range for the plotting area of the direction field, let's look at the maximum values of the solution array." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.0948277569088525" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numpy.max(num_sol[:,0])" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.0" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numpy.max(num_sol[:,1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With that information, we choose the plotting area as $(-4,4)\\times(-4,4)$. Below, we'll create an array named `coords` to hold the positions of mesh lines on each coordinate direction. Here, we pick 11 mesh points in each direction.\n", - "\n", - "Then, we'll call the very handy [`meshgrid()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.meshgrid.html) function of NumPy—you should definitely study the documentation and use pen and paper to diligently figure out what it does!\n", - "\n", - "The outputs of `meshgrid()` are two matrices holding the $x$ and $y$ coordinates, respectively, of points on the grid. Combined, these two matrices give the coordinate pairs of every grid point where we'll compute the direction field." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "coords = numpy.linspace(-4,4,11)\n", - "X, Y = numpy.meshgrid(coords, coords)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Look at the vector form of the differential system again… with our two matrices of coordinate values for the grid points, we could compute the vector field on all these points in one go using array operations:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "F = Y\n", - "G = 1/m * (-k*X -b*Y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Matplotlib has a type of plot called [`quiver`](https://matplotlib.org/examples/pylab_examples/quiver_demo.html) that draws a vector field on a plane. Let's try it out using the vector field we computed above." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = pyplot.figure(figsize=(7,7))\n", - "\n", - "pyplot.quiver(X,Y, F,G);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "OK, that's not bad. The arrows on each grid point represent vectors $(f(x,y), g(x,y))$, computed from the right-hand side of the differential equation. \n", - "\n", - "_What are the axes on this plot?_ Well, they are the components of the state vector—which for the spring-mass system are _position_ and _velocity_. The vector field looks like a \"flow\" going around the origin, the values of position and velocity oscillating around. If you imagine an initial condition represented by a coordinate pair $(x_0,y_0)$, the solution trajectory would follow along the arrows, spiraling around the origin, while slowly approaching it." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'd like to visualize a trajectory on the vector-field plot, and also improve it in a few ways. But before that, Python will astonish you with a splendid fact: you can also compute the vector field on the grid points by calling the function `dampedspring()`, passing as argument a list made of the matrices `X` and `Y`.\n", - "\n", - "_Why does this work?_ Study the function and think!" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "F, G = dampedspring([X,Y])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The default behavior of `quiver` is to scale the vectors (arrows) with the magnitude, but direction fields are usually drawn using line segments of equal length. Also by default, the vectors are drawn _starting at_ the grid points, while direction fields ususally _center_ the line segments. We can improve our plot using by _scaling_ the vectors by their magnitude, and using the `pivot='mid'` option on the plot. A little transparency is also nice.\n", - "\n", - "To plot the improved direction field below, we drew ideas from a tutorial available online, see Ref. [2]. To compute the magnitude of the vectors, we use the [`numpy.hypot()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.hypot.html) function, which returns the triangle hypotenuse of two right-angled sides.\n", - "\n", - "We should also add axis labels and a title!" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nCo4fP857773H5cuXvS1H8R0lOTmZV199lcOHD2M2m70th8DAQABOnjzJ+vXrqaqq8poWHx8fFi5c\nSN++fWkTsnNGAAAgAElEQVRoaODDDz/k6tWrXtMDMGLECBISEgDYtm2b19dLH3jgASIjI6mrq2PH\njh331HSyuJcupjlGjRolXTEtUVRUxMGDB/n2229tlWDp0qXExcXd8blvh/LyclJSUkhJSeH69esA\njB071tZb9RZms5mysjJKS0spLS2lY8eODBw40Kua7lVMJhPZ2dnExMTg4+PjbTls3LjRNmILCwvj\nwQcfZOjQoRgM3uvXJycn89lnn2E2mwkLC2PRokX07NnTa3pMJhObNm3i2rVrBAQEsGzZMrp37+41\nPWazmTVr1pCfn090dDQrV67E19fXa3qys7NZs2YNUkoWLlzI/fff77a8hBCnpZSj3JaBfV7K2LZO\ncXExBw8eJDk5uVFPa8CAASxevNgVEttMWVmZzcA6OlrExMSwbNkyjzx0pZRcv36dkpKSRoa1tLSU\nyspKW7whQ4Ywb948tzfe2tpazp49S0hISKNPYGAgQgi35u2M3Nxcrl+/zuDBgwkODnZbPikpKWze\nvJkOHTrQr18/BgwYQL9+/WwjOiupqal069aNTp06uU0LQENDA2fOnOHAgQNUV1cDEBUVxYwZM+jb\nt68t3rVr14iJiXGrFnvy8vL48MMPKSsrw8fHhzlz5jB8+HAAqqqqCAoK8miHwGg0smHDBnJycggM\nDGTFihV069YN0NaZPW3siouLWb16NXV1dYwYMYK5c+cCWjv3Rvv58ssvSUxMJCgoiBdeeIGgoCC3\n5KOMrYu5XWMrpeT48ePs2bOnibeej48PP/rRj+jSpYurZLaKdY24qKioybHQ0FB+8IMfEBIS4jE9\nly5dYuvWrZhMJqfHJ0+ezLRp0zzWWPfs2cPRo0cbhfn4+BAcHExISAihoaGEhoYyZswY24PtdjAa\njfj6+uLj49PstTU0NPDKK69QXV1N3759GTJkCAMHDsTf3/+283XGN998w759+xrdA4PBQExMDPHx\n8cTHxxMREUFSUhI7d+5k+vTpjB492u33pK6ujqNHj5KYmGibTu7bty8PP/wwkZGR/PWvf2Xq1KkM\nGTLErTrsqamp4eOPPyYzMxOA0aNH88gjj3DmzBmMRiOTJk3ymBarnnXr1lFQUEBISAgrVqwgNDSU\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "M = numpy.hypot(F,G)\n", - "M[ M == 0] = 1 # to avoid zero-division\n", - "F = F/M\n", - "G = G/M\n", - "\n", - "fig = pyplot.figure(figsize=(7,7))\n", - "\n", - "pyplot.quiver(X,Y, F,G, pivot='mid', alpha=0.5)\n", - "pyplot.plot(num_sol[:,0], num_sol[:,1], color= '#0096d6', linewidth=2)\n", - "pyplot.xlabel('Position, $x$, [m]')\n", - "pyplot.ylabel('Velocity, $v$, [m/s]')\n", - "pyplot.title('Direction field for the damped spring-mass system\\n')\n", - "pyplot.figtext(0.1,0,'$m={:.1f}$, $k={:.1f}$, $b={:.1f}$'.format(m,k,b));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And just for kicks, let's re-do everything with zero damping:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n79ixg8rKShYsWNDiZ+AIxcXFrF+/nps3bwJav/SYMWP4y1/+wqJFi+jWrZvLbQD7In39+nVu377N\nT3/6U5enrwTaiQghQtFc2xOBQLxMoEHLcKtWrSI3N9ccNnLkSLdkNhNGo5H9+/dz6NAhq/AXXniB\nwYMHu8UGkzfh+++/p6Tk3iIcPj4+zJkzh+joaJfbUFNTw4ULF0hKSuL69Xst4zIRyJ87T2vw2BEd\ng0h6oW+z0zYajdy+fZvs7GyysrLIysoiNzeXmpoau/FjY2N56qmn6NKlS7PTXLp0KXl5jY+Yru99\n9/PzIyoqitjYWKKjo2nbtm2TbSgrKyMtLc18zTk5OVRVVdWJJ4SwssPf35/Ro0czduxYgoKCmpzu\ngK+ucamousE4O4YUcy35pFWrOjAw0GxfZGQkL7zwgsv7rO25vf38/KisrCQmJobZs2e7pRuitraW\n7777jtOnTwPQsWNH8vPz6dSpE4sXL7ZywbsSW5EODQ2lsLCQt956y+WNGiXQTkQI8S5wVUr5sRAi\nkkYEWgjxBvAGQO/evUdmZma61D7bjGY0GpFS8vOf/7xZhV1zqKio4JtvvuHqVW2Fp+DgYCoqKhg6\ndCgzZsxwiw23b99mx44dpKenA1rBb2q9TJ8+nWHDhrk8/aSkJJKTk80tFYD/7NJwF8Pc6LasmdCj\nyekZjUby8/PNopSdnU1OTk69YmxJ7969mTBhAr17925yurYsXbrUqmLYHDp27EhMTAyxsbH07t27\nxe5vKSV37twxV1Sys7PJzs62K9qg5dexY8fyyCOPNLslOX3XzUZXZvumS6pVq9pEu3btmD17tlv6\nQ23d3iaGDx/O1KlT3TKY1LZf2sSYMWOYOHGiy9M3YVl2mnBHt6ASaCchhPgR8BEwTkppdESgLXF1\nC9qeq+bYsWO0a9eO8ePHuyxdS/Ly8vj6668pKCjA19eXZ599FqPRyOHDh1myZInL+7eqqqpISEjg\n2LFj5sE3Y8aMoV+/fqxevZqJEycyZswYl6RdU1NDamoqiYmJVq3lm20j+Tx4dL3HjeoUxMmZzW8p\ng9bP/eGHH9YJ9/X1pXPnznTv3t3s3l2/fj1FRUV06dKFCRMm0L9/f6cVxHfv3sVgaHyk+ebNm80u\nbh8fH/r06WN2c3fo4PrBblJKNm7cSEpKSr1x2rRpQ1xcHMOHD29Ra/JHG9I4k2+/MgAwt/Ag0dXZ\n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\niHQhRDrwMDBUX7N6xr7FcfbtsPfyb3KkQqFQeD6OCwJVL0/Rz5DbgF4h0EKIu7EmhM0Gchxez+pp\nlyuYMiDQ6f2fvq/WyRKFQqHoGXO3lji9D/f30smS24NeIdBSyn1SSnGDV5be9vUUs8O0q3/YX6Wj\nJQqFQnHrfH2+dRlZVZSk5/QKgfZUXLUSmEEIohx6miphTKFQ6InFYun2883xubU0pefTqk6cOEFL\ni3ZL83oiSqB7yP79+10i1FVtxmrOXunaF7O+vt5lHQWFQuEZNDQ0dH6QG/nmm2/YsGEDzc3NXTr+\nu3LndQVWzurZtKqioiI2bNjAm2++SVNTU4+u1ZtRAt0DhBCUlJSwdetWLBZLj6939MF4+3bSx2e7\ndE5zczOrV6/W7QdtsViorKzUpW2F4naktLSU//qv/2L//v2dH+wGcnNz2b9/Pz/++CMFBV0r1Dht\nY+u6AuVP9KximNlsZtu2bQDExcXh7+/fo+v1ZpRA95Bhw4Zx5MgR1q1bh8lk6tG1xkU5fxH9HOYS\n3ojIyEgaGxtZsWIFRUVFPWr/VjAYDOTk5LB+/XouX76sefvguqEGhQKgsrKStWvX6hJeLS0tZdWq\nVTQ1NXH8+PEeP1O6S21tLRs3bgRg3LhxpKWldXpO2yG5AYE9q7l98OBBLl68iJ+fH7Nnz+7RtXo7\nSqB7SHy81evNzc3lo48+6nE4xjGxosUiqenC3OgxY8ZQX1/PypUr2b17t0u8+e4wffp08vLyeOON\nN9i2bZvm3vyhQ4fYtm0bhYWFmM1qLrni1jCbzezdu5e33nqL06dPs2vXLk3bdxTngQMHsmzZMry9\ntVtgwmw2s379epqamoiOjmbBggWdnlPWYHR639PEsPr6erKysgCYMWMGwcHBNz/hNkcJdA+Jioqi\nX79+ABQXF/PBBx9QX1/fo2uudhi/Ce/C3OiRI0fi5eWFlJI9e/bw4YcfUldX1yMbukNwcDCTJ0/G\nYrFw6NAhXnvtNbKysro8ftVTJk6cyOXLl1m5ciV/+MMfWL9+PSdOnKCxUZVQ7W2YzWbOnDnDwYMH\nNW23srKSd955h127dmE2m4mPj2fy5Mmatd+ROAcEBGjWPsCOHTu4cOECPj4+PPTQQ/j4+HR6zuCV\nrSHwb+7teUmKr7/+mpaWFqKjo5k0aVKPr9fbEX0hPJieni4PHz7stut/+umnnDx50v6+f//+LF26\n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\ntdzqSktL+fvf/85jjz3GV199RdU5eypJQ9PuS69du5bc3Fxmz57NihUryMuzz8p1s2cAACAASURB\nVDs7evRo0tPTffLIxL59+3jvvfe4+eab6dy5M1988QX5+fmAbxJ1ZWWls1nXYrEwZ84cKisrnc26\nVfcbq4uPj2fChAkMHTq0RWWXlZW51KZLS0sBexP3o48+2qRkFBMT49KJqqmsVitffvklW7durbe5\nPykpiblz5/rk4tVisbBs2bI6n+UdOXIkt99+u88uoo8fP87ixYtdWg/Cw8MZN26cW7dg/rD7PL/e\nke+yzp3+Ijk5Obz++usu6zp06MDAgQMZNWoUsbGxTT5WS9TV2hUXF8egQYOYNGlSs/7+3BEMCTr0\n6aef9ncMXvfSSy89/fjjj3u1jI4dO5KYmEh8fDyxsbEcOnSI06dPExsb2+Te1C0VHh5OQkIC3bt3\np2/fvly5coUzZ86QlZVF27Zt6d69e+MHqebpkZ2JDBU2ni5xrntm13meHtm5wf1SUlKoqKigX79+\nDB06lNLSUs6cOcPp06fJysoiJSXFI82nDUlISKBr166UlZUxYsQIRowYQefOncnPz6eoqIhTp06x\nc+dOysrK6Nq1q8drUCEhISQnJzN06FCKioqIiIjghhtu4Prrr2fUqFGkpaWRlJREu3btsFgslJSU\nUFpaysCBA0lISGhR2WFhYXTp0oUBAwZw4403kpKSQrt27SguLqZNmzb07duXyMjIBv81pzZrjCEj\nI4PLly87e9HHx8fToUMHoqOjadu2LW3atKGkpISSkhJ69+7dovNsTFlZGW+99VadI/6JCGVlZVRW\nVtKjRw+vd+YsLi5m8eLFtR4HFBEiIyPp0KFDk24DyYJDfFbt8wjuJWdjDKtWrXLed68SGRnJoEGD\nSE5O9knHVmMM7733Xq1bMampqUyePNknTxo888wzuU8//fRLXi+oBbQG7SVVvZrDwsJ45JFHfP6w\nP9g/BB9++GGLa9I5ly30qtGcdvTe3vTpUH9SM8a4fND379/P+++/7/Mm74qKCpcau81m4+DBg7Vq\n1NOnT29xzbUhJSUltGvXrt7Xi4uLycnJoVevXl5tfr9y5YpXjx8orly5wpIlS8jNzSUmJoYuXbq4\nPILXuXNnnz1uZoxhyZIlLrX47t27M3ToUAYNGtTki9WaLVqPD4hl4YRu9Wxdt0OHDrFs2TLnctu2\n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\nyE5AXgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "m = 1\n", - "k = 1\n", - "b = 0\n", - "\n", - "x0 = 3 # initial position\n", - "v0 = 3 # initial velocity\n", - "\n", - "T = 12*numpy.pi\n", - "N = 5000\n", - "dt = T/N\n", - "\n", - "t = numpy.linspace(0, T, N)\n", - "num_sol = numpy.zeros([N,2]) #initialize solution array\n", - "\n", - "#Set intial conditions\n", - "num_sol[0,0] = x0\n", - "num_sol[0,1] = v0\n", - "\n", - "for i in range(N-1):\n", - " num_sol[i+1] = euler_cromer(num_sol[i], dampedspring, t[i], dt)\n", - " \n", - "F, G = dampedspring([X,Y])\n", - "\n", - "M = numpy.hypot(F,G)\n", - "M[ M == 0] = 1 # to avoid zero-division\n", - "F = F/M\n", - "G = G/M\n", - "\n", - "fig = pyplot.figure(figsize=(7,7))\n", - "\n", - "pyplot.quiver(X,Y, F,G, pivot='mid', alpha=0.5)\n", - "pyplot.plot(num_sol[:,0], num_sol[:,1], color= '#0096d6', linewidth=2)\n", - "pyplot.xlabel('Position, $x$, [m]')\n", - "pyplot.ylabel('Velocity, $v$, [m/s]')\n", - "pyplot.title('Direction field for the un-damped spring-mass system\\n')\n", - "pyplot.figtext(0.1,0,'$m={:.1f}$, $k={:.1f}$, $b={:.1f}$'.format(m,k,b));\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "##### Challenge task\n", - "\n", - "* Write a function to draw direction fields as above, taking as arguments the right-hand-side derivatives function, and lists containing the plot limits and the number of grid lines in each coordinate direction.\n", - "\n", - "* Write some code to capture mouse clicks on the direction field, following what you learned in [Lesson 1](http://go.gwu.edu/engcomp3lesson1) of this module.\n", - "\n", - "* Use the captured mouse clicks as initial conditions and obtain the corresponding trajectories by solving the differential system, then make a new plot showing the trajectories with different colors." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## What we've learned\n", - "\n", - "* General spring-mass systems have several behaviors: periodic in the undamped case, decaying oscillations when damped, complex oscillations when driven.\n", - "* Resonance appears when the driving frequency matches the natural frequency of the system.\n", - "* We can add formatted strings in figure titles, labels and added text.\n", - "* The `lambda` keyword builds one-line Python functions.\n", - "* The `meshgrid()` function of NumPy is handy for building a grid of points on a plane.\n", - "* State vectors of a differential system live on the _phase plane_.\n", - "* Solutions of the differential system (given initial conditions) are _trajectories_ on the phase plane.\n", - "* Trajectories for the undamped spring-mass system are circles; in the damped case, they are spirals toward the origin." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "1. Linge S., Langtangen H.P. (2016) Solving Ordinary Differential Equations. In: Programming for Computations - Python. Texts in Computational Science and Engineering, vol 15. Springer, Cham, https://doi.org/10.1007/978-3-319-32428-9_4, open access and reusable under [CC-BY-NC](http://creativecommons.org/licenses/by-nc/4.0/) license.\n", - "V\n", - "2. [Plotting direction fields and trajectories in the phase plane](http://scipy-cookbook.readthedocs.io/items/LoktaVolterraTutorial.html?highlight=direction%20fields#Plotting-direction-fields-and-trajectories-in-the-phase-plane), as part of the Lotka-Volterra tutorial by Pauli Virtanen and Bhupendra, in the _SciPy Cookbook_. " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Execute this cell to load the notebook's style sheet, then ignore it\n", - "from IPython.core.display import HTML\n", - "css_file = '../style/custom.css'\n", - "HTML(open(css_file, \"r\").read())" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/eulode.m b/notebooks/eulode.m new file mode 100644 index 0000000..ceed97b --- /dev/null +++ b/notebooks/eulode.m @@ -0,0 +1,29 @@ +function [t,y] = eulode(dydt,tspan,y0,h,varargin) +% eulode: Euler ODE solver +% [t,y] = eulode(dydt,tspan,y0,h,p1,p2,...): +% uses Euler's method to integrate an ODE +% input: +% dydt = name of the M-file that evaluates the ODE +% tspan = [ti, tf] where ti and tf = initial and +% final values of independent variable +% y0 = initial value of dependent variable +% h = step size +% p1,p2,... = additional parameters used by dydt +% output: +% t = vector of independent variable +% y = vector of solution for dependent variable +if nargin<4,error('at least 4 input arguments required'),end +ti = tspan(1);tf = tspan(2); +if ~(tf>ti),error('upper limit must be greater than lower'),end +t = (ti:h:tf)'; n = length(t); +% if necessary, add an additional value of t +% so that range goes from t = ti to tf +if t(n)h,hh = h;end + while(1) + if tt+hh>tend,hh = tend-tt;end + k1 = dydt(tt,y(i,:),varargin{:})'; + ymid = y(i,:) + k1.*hh./2; + k2 = dydt(tt+hh/2,ymid,varargin{:})'; + ymid = y(i,:) + k2*hh/2; + k3 = dydt(tt+hh/2,ymid,varargin{:})'; + yend = y(i,:) + k3*hh; + k4 = dydt(tt+hh,yend,varargin{:})'; + phi = (k1+2*(k2+k3)+k4)/6; + y(i+1,:) = y(i,:) + phi*hh; + tt = tt+hh; + i=i+1; + if tt>=tend,break,end + end + np = np+1; tp(np) = tt; yp(np,:) = y(i,:); + if tt>=tf,break,end +end \ No newline at end of file