From 7a4d88b31a35185ecbe6268b611aaff8414fae80 Mon Sep 17 00:00:00 2001 From: "Ryan C. Cooper" Date: Thu, 13 Apr 2017 09:00:39 -0400 Subject: [PATCH] added lecture 22 --- 01_phugoid/.gitignore | 1 + .../01_01_Phugoid_Theory-checkpoint.ipynb | 764 +++++++++++ ...01_02_Phugoid_Oscillation-checkpoint.ipynb | 949 +++++++++++++ .../01_03_PhugoidFullModel-checkpoint.ipynb | 929 +++++++++++++ ...1_04_Second_Order_Methods-checkpoint.ipynb | 1187 +++++++++++++++++ 01_phugoid/01_01_Phugoid_Theory.ipynb | 764 +++++++++++ 01_phugoid/01_02_Phugoid_Oscillation.ipynb | 949 +++++++++++++ 01_phugoid/01_03_PhugoidFullModel.ipynb | 943 +++++++++++++ 01_phugoid/01_04_Second_Order_Methods.ipynb | 1187 +++++++++++++++++ 01_phugoid/README.md | 43 + 01_phugoid/Rocket_Assignment.ipynb | 335 +++++ 01_phugoid/burn.rate.png | Bin 0 -> 11761 bytes 01_phugoid/figures/glider_forces-lesson3.png | Bin 0 -> 29182 bytes 01_phugoid/figures/glider_forces.png | Bin 0 -> 33331 bytes 01_phugoid/figures/glider_forces_fbd.svg | 465 +++++++ 01_phugoid/figures/glider_forces_nodrag.png | Bin 0 -> 16886 bytes 01_phugoid/figures/glider_forces_nodrag.svg | 368 +++++ 01_phugoid/figures/oscillatory_trajectory.png | Bin 0 -> 43076 bytes 01_phugoid/figures/rocket_CV.png | Bin 0 -> 42127 bytes 01_phugoid/figures/vonKarman-phugoids.png | Bin 0 -> 38199 bytes 01_phugoid/phugoid.py | 112 ++ .../lecture_22-checkpoint.ipynb | 821 ++++++++++++ .../lecture_22_python-checkpoint.ipynb | 6 + lecture_22/01_phugoid/.gitignore | 1 + .../01_01_Phugoid_Theory-checkpoint.ipynb | 764 +++++++++++ ...01_02_Phugoid_Oscillation-checkpoint.ipynb | 949 +++++++++++++ .../01_03_PhugoidFullModel-checkpoint.ipynb | 929 +++++++++++++ ...1_04_Second_Order_Methods-checkpoint.ipynb | 1187 +++++++++++++++++ .../01_phugoid/01_01_Phugoid_Theory.ipynb | 764 +++++++++++ .../01_02_Phugoid_Oscillation.ipynb | 949 +++++++++++++ .../01_phugoid/01_03_PhugoidFullModel.ipynb | 943 +++++++++++++ .../01_04_Second_Order_Methods.ipynb | 1187 +++++++++++++++++ lecture_22/01_phugoid/README.md | 43 + lecture_22/01_phugoid/Rocket_Assignment.ipynb | 335 +++++ lecture_22/01_phugoid/burn.rate.png | Bin 0 -> 11761 bytes .../figures/glider_forces-lesson3.png | Bin 0 -> 29182 bytes .../01_phugoid/figures/glider_forces.png | Bin 0 -> 33331 bytes .../01_phugoid/figures/glider_forces_fbd.svg | 465 +++++++ .../figures/glider_forces_nodrag.png | Bin 0 -> 16886 bytes .../figures/glider_forces_nodrag.svg | 368 +++++ .../figures/oscillatory_trajectory.png | Bin 0 -> 43076 bytes lecture_22/01_phugoid/figures/rocket_CV.png | Bin 0 -> 42127 bytes .../01_phugoid/figures/vonKarman-phugoids.png | Bin 0 -> 38199 bytes lecture_22/01_phugoid/phugoid.py | 112 ++ lecture_22/figures/glider_forces-lesson3.png | Bin 0 -> 29182 bytes lecture_22/figures/glider_forces.png | Bin 0 -> 33331 bytes lecture_22/figures/glider_forces_fbd.svg | 465 +++++++ lecture_22/figures/glider_forces_nodrag.png | Bin 0 -> 16886 bytes lecture_22/figures/glider_forces_nodrag.svg | 368 +++++ lecture_22/figures/oscillatory_trajectory.png | Bin 0 -> 43076 bytes lecture_22/figures/rocket_CV.png | Bin 0 -> 42127 bytes lecture_22/figures/vonKarman-phugoids.png | Bin 0 -> 38199 bytes lecture_22/lecture_22.ipynb | 882 ++++++++++++ lecture_22/lecture_22_python.ipynb | 771 +++++++++++ 54 files changed, 21305 insertions(+) create mode 100644 01_phugoid/.gitignore create mode 100644 01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb create mode 100644 01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb create mode 100644 01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb create mode 100644 01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb create mode 100644 01_phugoid/01_01_Phugoid_Theory.ipynb create mode 100644 01_phugoid/01_02_Phugoid_Oscillation.ipynb create mode 100644 01_phugoid/01_03_PhugoidFullModel.ipynb create mode 100644 01_phugoid/01_04_Second_Order_Methods.ipynb create mode 100644 01_phugoid/README.md create mode 100644 01_phugoid/Rocket_Assignment.ipynb create mode 100644 01_phugoid/burn.rate.png create mode 100644 01_phugoid/figures/glider_forces-lesson3.png create mode 100644 01_phugoid/figures/glider_forces.png create mode 100644 01_phugoid/figures/glider_forces_fbd.svg create mode 100644 01_phugoid/figures/glider_forces_nodrag.png create mode 100644 01_phugoid/figures/glider_forces_nodrag.svg create mode 100644 01_phugoid/figures/oscillatory_trajectory.png create mode 100644 01_phugoid/figures/rocket_CV.png create mode 100644 01_phugoid/figures/vonKarman-phugoids.png create mode 100755 01_phugoid/phugoid.py create mode 100644 lecture_22/.ipynb_checkpoints/lecture_22-checkpoint.ipynb create mode 100644 lecture_22/.ipynb_checkpoints/lecture_22_python-checkpoint.ipynb create mode 100644 lecture_22/01_phugoid/.gitignore create mode 100644 lecture_22/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb create mode 100644 lecture_22/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb create mode 100644 lecture_22/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb create mode 100644 lecture_22/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb create mode 100644 lecture_22/01_phugoid/01_01_Phugoid_Theory.ipynb create mode 100644 lecture_22/01_phugoid/01_02_Phugoid_Oscillation.ipynb create mode 100644 lecture_22/01_phugoid/01_03_PhugoidFullModel.ipynb create mode 100644 lecture_22/01_phugoid/01_04_Second_Order_Methods.ipynb create mode 100644 lecture_22/01_phugoid/README.md create mode 100644 lecture_22/01_phugoid/Rocket_Assignment.ipynb create mode 100644 lecture_22/01_phugoid/burn.rate.png create mode 100644 lecture_22/01_phugoid/figures/glider_forces-lesson3.png create mode 100644 lecture_22/01_phugoid/figures/glider_forces.png create mode 100644 lecture_22/01_phugoid/figures/glider_forces_fbd.svg create mode 100644 lecture_22/01_phugoid/figures/glider_forces_nodrag.png create mode 100644 lecture_22/01_phugoid/figures/glider_forces_nodrag.svg create mode 100644 lecture_22/01_phugoid/figures/oscillatory_trajectory.png create mode 100644 lecture_22/01_phugoid/figures/rocket_CV.png create mode 100644 lecture_22/01_phugoid/figures/vonKarman-phugoids.png create mode 100755 lecture_22/01_phugoid/phugoid.py create mode 100644 lecture_22/figures/glider_forces-lesson3.png create mode 100644 lecture_22/figures/glider_forces.png create mode 100644 lecture_22/figures/glider_forces_fbd.svg create mode 100644 lecture_22/figures/glider_forces_nodrag.png create mode 100644 lecture_22/figures/glider_forces_nodrag.svg create mode 100644 lecture_22/figures/oscillatory_trajectory.png create mode 100644 lecture_22/figures/rocket_CV.png create mode 100644 lecture_22/figures/vonKarman-phugoids.png create mode 100644 lecture_22/lecture_22.ipynb create mode 100644 lecture_22/lecture_22_python.ipynb diff --git a/01_phugoid/.gitignore b/01_phugoid/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/01_phugoid/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb b/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb new file mode 100644 index 0000000..902854f --- /dev/null +++ b/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, C. Cooper, G.F. Forsyth, A. Krishnan." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Motion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to [**\"Practical Numerical Methods with Python!\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) This course is a collaborative, online, open education project, where we aim to give a foundation in scientific computing. The focus is on numerical solution of problems modeled by ordinary and partial differential equations.\n", + "\n", + "This IPython Notebook introduces the problem we'll be studying in the **first module** of the course: the _phugoid model of glider flight_. We'll start with some background, explaining the physics, and working out the mathematical model. \n", + "\n", + "First, we'll look at an idealized motion where there is no drag, resulting in a simple harmonic motion. We can plot some interesting trajectories that will pique your imagination. In the next notebook, you'll learn to numerically integrate the differential equation using Euler's method. But hang on ... first things first. \n", + "\n", + "The term \"phugoid\" is used in aeronautics to refer to a motion pattern where an aircraft oscillates up and down —nose-up and climb, then nose-down and descend— around an equilibrium trajectory. The aircraft oscillates in altitude, speed and pitch, with only small (neglected) variations in the angle of attack, as it repeatedly exchanges kinetic and potential energy.\n", + "\n", + "A low-amplitude phugoid motion can be just a nuisance, as the aircraft does not exceed the stall angle of attack and nothing bad happens. But the mode can also be unstable leading to a stall or even a loop!\n", + "\n", + "Look at this video showing a Cessna single-engine airplane in phugoid motion:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQED\nEQH/xAAaAAACAwEBAAAAAAAAAAAAAAACAwABBAUG/8QAQBAAAgIBAwEDCAgFBAIDAQEBAQIAAxEE\nEiExE0FRBRQiMmFxgZEjQlJTcpKhsRUzYsHRBkOC4SRjovDxNMIW/8QAGQEBAQEBAQEAAAAAAAAA\nAAAAAAECAwQF/8QAKBEBAAIBBAICAQQDAQAAAAAAAAERAgMSMVETIUFhBCJSgaEyYnEU/9oADAMB\nAAIRAxEAPwBlFdfYp9GnqjuEcKqvu0/KJKax2Nf4R+0PYRPpxEU8coKaj/tp8oa01/dp8oPIlhyI\nqCzeyr+6r/KJfY0/cp+UQFsEMWCZ2ra+yp+7T8oliuof7SflkyDB57o2wWaqUfdp+UQxXQf9tPyi\nZt57xJvPuk2ltfYUn/bT8ok7Cn7pPyiZO1Yd8IXtG0to7CodKk/KJDVWf9tPyiKF5MMOTJtLEtVQ\n/wBqv8olGmvORUn5RJuMm4xULYjXSRg1Jn8IgCmjPNSflEvcZecxUFgfT6furT8ok7Cnb/Lr/KIR\nJlFj4RSWUdPVn+Un5RJ2FQ/20/KIRfxEE2CWi1dnV91X+USdjT92n5RL3r3S+090UWX2NP3SflEr\nsqvu0/KI4FD1/SUwTuYy1BZRqq+6T8ogNp6T/tp+URpU9xEEhx3RUJZLaav7tPyiLOnr+7X5TTk+\nEHM0WzHTp92v5RKFNf3a/lmk+6TEIQKqe+tPkIxaqs/yk+Qh9lmEtWIqF9qFFP3afljFop+7T8ol\npXHKoHSZmlL83p7qk/KJR09XdUn5RNG2Q5EgStNXfWn5RD83p+6T8olk5lB8SUWIU1D/AGk/KIa1\n1fdJ+USltHfGKymSltBVV90n5RC7Kr7pPyiECJczRYOwp+6T8ok83q+6T8ohyRRYOwq+6T8ok7Cn\n7pPyiMzKigs0VfdJ+USjRT90n5RG5lEiKCeyo+6T8oldjV90n5RGnEA++WiwGqr7qv8AKJR09P3a\n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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('ysdU4mnRYdM')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That doesn't look too good! What's happening? \n", + "\n", + "It can get a lot worse when an aircraft enters one of these modes that is unstable. For example, one of [NASA's Helios Solar Powered Aircraft](http://www.nasa.gov/centers/dryden/history/pastprojects/Helios/) prototype broke up in mid air due to extreme phugoid oscillations!\n", + "\n", + "Helios was a proof-of-concept solar electric-powered flying wing that broke the world altitude record for a non-rocket-powered aircraft in August 2001. But in June 26, 2003, it broke something else. The aircraft entered phugoid motion after encountering turbulence near the Hawaiian Island of Kauai. The high speed in the oscillatory movement exceeded the design limits, and it ended up wrecked in the Pacific Ocean. Luckily, the Helios was remotely operated, and nobody got hurt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The physics of phugoids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The phugoid oscillation has the aircraft pitching up and down, as it decelerates and accelerates. The trajectory might look like a sinusoid, as in the figure below. The assumption is that the forward velocity of the aircraft, $v$, varies in such a way that the angle of attack remains (nearly) constant, which means that we can assume a constant lift coefficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/oscillatory_trajectory.png)\n", + "#### Figure 1. Trajectory of an aircraft in phugoid motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the descending portion of the trajectory, the aircraft's velocity increases as it proceeds from a peak to the minimum height—gaining kinetic energy at the expense of potential energy. The contrary happens in the upward segment, as its velocity decreases there.\n", + "\n", + "We measure the pitch angle (between the aircraft's longitudinal axis and the horizontal) as positive when the aircraft's nose is pointing up. In the portion of the trajectory below the center-line, where it curves upwards, the pitch angle $\\theta$ is increasing: $\\dot{\\theta}>0$. And where the trajectory curves down, the pitch angle is decreasing: $\\dot{\\theta}<0$, as shown in the figure.\n", + "\n", + "Let's remind ourselves of the forces affecting an aircraft in a downward glide. Look at the figure below: we show the flight path, the forces on the glider (no thrust), and the _glide angle_ or flight path angle, $\\gamma$, between the flight path and the horizontal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces.png)\n", + "#### Figure 2. Forces on a glider." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The force of lift, $L$ —created by the airflow around the wings— is perpendicular to the trajectory, and the force of drag, $D$, is parallel to the trajectory. Both forces are expressed in terms of coefficients of lift and drag, $C_L$ and $C_D$, respectively, that depend on the wing design and _angle of attack_—the angle between the wing chord and the flight path.\n", + "\n", + "If you are not familiar with airplane aerodynamics, you might be getting confused with some terms here ... and all those angles! But be patient and look things up, if you need to. We're giving you a quick summary here.\n", + "\n", + "Lift and drag are proportional to a surface area, $S$, and the dynamic pressure: $1/2 \\rho v^2$, where $\\rho$ is the density of air, and $v$ the forward velocity of the aircraft. The equations for lift and drag are:\n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "If the glider were in equilibrium, the forces would balance each other. We can equate the forces in the directions perpendicular and parallel to the trajectory, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "L = W \\cos \\gamma \\quad \\text{and} \\quad D = W \\sin \\gamma\n", + "\\end{equation}$$\n", + "\n", + "where $W$ repesents the weight of the glider.\n", + "\n", + "In the figure, we've drawn the angle $\\gamma$ as the _glide angle_, formed between the direction of motion and the horizontal. We are not bothered with the _sign_ of the angle, because we draw a free-body diagram and take the direction of the forces into account in writing our balance equations. But later on, we will need to be careful with the sign of the angles. It can cause you a real headache to keep this straight, so be patient!\n", + "\n", + "It looks like we've set this up to do a little bit of mathematics. Are you ready?\n", + "\n", + "But before, a short glimpse of the history." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanchester's Aerodonetics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Phugoid theory\" was first described by the British engineer Frederick W. Lanchester in _\"Aerodonetics\"_ (1909). This book is so old that it is now in the public domain, so you can actually download [from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&dq=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&pg=PA37#v=onepage&q=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&f=false) a PDF file of a scan, or read it online. \n", + "\n", + "Lanchester defines phugoid theory as the study of longitudinal stability of a flying machine (aerodone). He first considered the simplification where drag and moment of inertia are neglected. Then he included these effects, obtaining an equation of stability. In addition to describing many experiments by himself and others, Lanchester also reports on _\"numerical work ... done by the aid of an ordinary 25-cm slide rule.\"_ Go figure!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ideal case of zero drag" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we follow the derivation given by Milne-Thompson (1966), which we find a little bit easier than that of the original in \"Aerodonetics\"!\n", + "\n", + "An aircraft flying in a steady, straight horizontal flight has a lift equal to its weight. The velocity in this condition is sometimes called _trim velocity_ (\"trim\" is what pilots do to set the controls to just stay in a steady flight). Let's use $v_t$ for the trim velocity, and from $L=W$ deduce that:\n", + "\n", + "$$\\begin{equation}\n", + "W = C_L S \\times\\frac{1}{2} \\rho v_t^2\n", + "\\end{equation}$$\n", + "\n", + "The weight $W$ is constant for the aircraft, but the lift at any other flight condition depends on the flight speed, $v$. We can use the expression for the weight in terms of $v_t$ to obtain the ratio $L/W$ at any other flight velocity, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}= \\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "Imagine that the aircraft experienced a little upset, a wind gust, and it finds itself off the \"trim\" level, in a curved path with an instantaneous angle $\\theta$. In the sketch below, we exaggerate the curved trajectory of flight to help you visualize what we'll do next. The angle $\\theta$ (using the same name as Milne-Thompson) is between the _trajectory_ and the horizontal, positive up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "#### Figure 3. Curved trajectory of the aircraft going up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can form a free body diagram to determine the balance of forces. \n", + "\n", + "\n", + "\n", + "#### Figure 4. Free body diagram of the aircraft trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the free body diagram, we can see that\n", + "\n", + "\\begin{equation}\n", + "\\vec{L} + \\vec{W} = m\\vec{a} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "where $\\frac{v^2}{R}$ is the centripetal acceleration and $R$ is the radius of curvature of the trajectory.\n", + "If we decompose the lift and weight into their normal and tangential components we get\n", + "\n", + "\\begin{equation}\n", + "L\\hat{n} + W_n\\hat{n} + W_t\\hat{t} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "The component of the weight in the normal direction ($W_n$) is\n", + "\n", + "\\begin{equation}\n", + "W_n = -W \\cos \\theta\n", + "\\end{equation}\n", + "\n", + "If we then consider that all of the components in $\\hat{n}$ must balance out, we arrive at\n", + "\n", + "\\begin{equation}\n", + "L - W \\cos \\theta = \\frac{mv^2}{R}\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can rewrite this as\n", + "\n", + "$$\\begin{equation}\n", + "L- W \\cos \\theta = \\frac{W}{g} \\frac{v^2}{R}\n", + "\\end{equation}$$\n", + "\n", + "where $g$ is the acceleration due to gravity. Rearrange this by dividing the equation by the weight, and use the expression we found for $L/W$, above. The following equation results:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{v^2}{v_t^2}-\\cos \\theta = \\frac{v^2}{g R}\n", + "\\end{equation}$$\n", + "\n", + "Recall that we simplified the problem assuming that there is no friction, which means that the total energy is constant (the lift does no work). If $z$ represents the depth below a reference horizontal line, the energy per unit mass is (kinetic plus potential energy):\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{2}v^2-g z = \\text{constant}\n", + "\\end{equation}$$\n", + "\n", + "To get rid of that pesky constant, we can choose the reference horizontal line at the level that makes the constant energy equal to zero, so $v^2 = 2 g z$. That helps us re-write the phugoid equation in terms of $z$ as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z}{z_t}-\\cos \\theta = \\frac{2z}{R}\n", + "\\end{equation}$$\n", + "\n", + "Let $ds$ represent a small arc-length of the trajectory. We can write \n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} \\quad \\text{and}\\quad \\sin\\theta = -\\frac{dz}{ds}\n", + "\\end{equation}$$\n", + "\n", + "Employing the chain rule of calculus,\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} = \\frac{dz}{ds}\\frac{d\\theta}{dz} = -\\sin \\theta\\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "Multiply the phugoid equation by $\\frac{1}{2\\sqrt{z}}$ to get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} - \\frac{\\cos\\theta}{2\\sqrt{z}} = \\frac{\\sqrt{z}}{R}\n", + "\\end{equation}$$\n", + "\n", + "Substituting for $1/R$ on the right hand side and bringing the cosine term over to the right, we get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} = \\frac{\\cos \\theta}{2 \\sqrt{z}} - \\sqrt{z} \\sin \\theta \\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "The right-hand-side is an exact derivative! We can rewrite it as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d}{dz} \\left(\\sqrt{z}\\cos\\theta \\right) = \\frac{\\sqrt{z}}{2z_t}\n", + "\\end{equation}$$\n", + "\n", + "Integrating this equation, we add an arbitrary constant, chosen as $C\\sqrt{z_t}$ which (after dividing through by $\\sqrt{z}$) gives:\n", + "\n", + "$$\\begin{equation}\n", + "\\cos \\theta = \\frac{1}{3}\\frac{z}{z_t} + C\\sqrt{\\frac{z_t}{z}}\n", + "\\end{equation}$$\n", + "\n", + "Taking the derivative of both sides of equation (15) and applying the relations from equation (10) yields:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z_t}{R} = \\frac{1}{3} - \\frac{C}{2}\\sqrt{\\frac{z_t^3}{z^3}}\n", + "\\end{equation}$$\n", + "\n", + "Make sure you have followed the derivation, and perhaps write it out on paper!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Phugoid Curves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equation (15) is non-linear, which usually means we are hard-pressed to write a clean expression for the variable of interest, $z$. In fact, Lanchester himself said that he was unable to _\"reduce this expression to a form suitable for co-ordinate plotting.\"_ If the great polymath couldn't do it, we can't either!\n", + "\n", + "But Lanchester _was_ able to plot a suitable approximation of the phugoid flight path using what he called the \"trammel\" method. If you're interested in seeing how he did it, his explanation begins on page [48 of Aerodonetics](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PA49&lpg=PA48&dq=aerodonetics+the+use+of+the+trammel&source=bl&ots=lB6EVKYQuT&sig=aVE2kiDWZoWftaWczMIrcYftMOs&hl=en&sa=X&ei=gTD_U82fGYjzgwT3moGwCQ&ved=0CCAQ6AEwAA#v=onepage&q=aerodonetics%20the%20use%20of%20the%20trammel&f=false). It's a trip.\n", + "\n", + "Lanchester used Equations (15) and (16) to solve for the constant $C$ and the radius of curvature $R$ and then iteratively plotted small arcs of the phugoid path. By hand.\n", + "\n", + "We wrote a neat little code that duplicates the manual trammel method, but it might be a bit much for you to absorb in the first lesson. If you want to look it over, you are more than welcome to. If you are just starting with Python, skip it for the moment and we'll return to it at the end of this module. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting the flight path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we mentioned, we wrote a Python code to reproduce programmatically what Lanchester did graphically. Here's a neat feature of IPython Notebooks: you can run external programs with the magical keyword ... wait for it ... `run`. And the jargon of IPython _is_ to call this \"magic.\" In fact, there are a bunch of [magic functions](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) that you will learn about. They will make you a happy camper.\n", + "\n", + "Let's do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%run phugoid.py\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code cell loaded our simulated-trammel code, `phugoid.py`. The code defined a function for you in the background, called `plot_flight_path`, taking three inputs: $z_t$, $z$ and $\\theta$. \n", + "\n", + "Look again at Equation (15), where we take the positive square root. There are several possibilities, depending on the value that the constant $C$ takes. \n", + "\n", + "* There are no physical solutions for $C>2/3$, because it would result in $\\cos\\theta>1$. \n", + "\n", + "* If $C=2/3$, then the solution is a horizontal straight line, because $\\cos\\theta=1$, $\\theta=0$ and $R=\\infty$.\n", + "\n", + "* Any value of $C$ for which $0 < C < \\frac{2}{3}$ will produce \"trochoidal\"-like paths. What does this look like? Let's use our custom function `plot_flight_path` to find out!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n5MgRihQpQt++fQE4fPgw+fLlo1SpUpw8eTLV19+1axfFihULPC5WrBixsbFZ10G/zPQzNefrf0oy\n2tfBgwczdOhQALZu3UpERESq22amn+mtL7XtixcvniM/0wtR4BMRkWxlluFzxf7JuT/a6bV69WqG\nDx9OxYoVyZcvH506daJHjx5/2q5atWqMGDEiQ6+xf/9+Nm7cyJQpUwBo27Ytbdq0oXr16syYMYP7\n77+fCRMmnHcfR44c4aKLLgo8joyM5Pfff0/T66e1j5C5fqbmfP1PSUb6unfvXr799lu+++471qxZ\nw6RJk3j++edT3T4z/UxvfefbPqM/06ykKV0REfG8Zs2a8dVXX9GoUSMKFChAjx49eP3119m/f3+W\nvUaRIkVo0KBB4HHlypWJjo7m22+/5aqrrkrzPoJD7R9//EGJEiXS9L3J+xgVFcXIkSMZP3483333\nXfo6kwGp9f9826e3r4sWLaJr16488MAD3HXXXezZs4cOHTpkSz/TW19q22fmZ5qVNMInIiLZKqOj\nclnt5ZdfZv/+/bz99tuAbzqwbNmySbYJngIMlpYpwHr16rFs2bLA43z58pGQkMC3337LqVOnmDt3\nLsuXL+f06dPMnj07xf1cccUVrFmzJvD48OHDNGnSJEN9fP3112nfvj1NmjShT58+fPrpp1nSz9Sk\n1v/UZKSvO3fupE6dOoBv5Wvnzp355JNPsqWf6a0vte2LFSuWqZ9plsnMio/cfEMrykREsky4/059\n+eWX3bPPPuucc27jxo1u6dKl7oYbbnArVqzIstc4ffq0a9GiReBxq1at3LZt25JsM3z48CSrdH/6\n6SeXmJgYeHzy5EnXoEGDwOOGDRu6/fv3O+eci42NTbJtcsn7+PDDD7tff/3VOefcDTfckImepWz8\n+PGub9++gcfn63/yfjqXsb6OHTvWjR071jnnXOfOnd2OHTvcI488ki39PF996enP+faTktT+L5HJ\nVbrmwuSTV04zM5dX+y4iktVSu+B7OPjPf/7Db7/9RtGiRRk2bBjXXHMNd911F59//jmDBg3K0tea\nP38+y5cvxzlH7dq1ueOOOwLPTZs2jREjRmBmDB06lJtvvpkmTZowbtw4GjduHNhu0qRJbN++Hecc\n1apVC+yjTp06vPXWW1x//fVp6uO+fft45plnqFChAp07d2bOnDlZ1s933nmHqVOnsnPnTvr27cuT\nTz5JkSJFUu1/Sv3MSF+PHz/O888/T4MGDahfvz4tWrTg4Ycf5tlnn82WfqZWX3r7k1p7SlL7v+Rv\nz/ABsQp8IiKSaeEc+FIyefJkqlSpQuXKlbnssstCXU6aJCYm8s0331zw1C7nvP3227Rt25Y6derQ\nt29fPvvss2yuMOukp6+5uZ8pUeDLYgp8IiJZJ7cFvlmzZhEXF0ezZs3Oe664cDJ16lS6devGxRdf\nnKbtDx8+zMcff0yxYsWoX78+LVu2zOYKs056+pqb+5kSBb4spsAnIpJ1clvgy41OnjzJJZdcEuoy\nckRe6mtyCnxZTIFPRCTrKPCJZI3sCnw6D5+IiIiIxynwiYiIiHicAp+IiIiIxynwiYiIiHicAp+I\niIiIx+lauiIikmlVqlT50/VKRST9suu8kDoti4iIiEiY02lZREREROS8FPhEREREPE6BT0RERMTj\nFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RE\nRMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6B\nT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjwj7wmdk4\nM9tvZhuC2oqbWbSZbTGz+WZWNOi5oWYWa2abzKxDaKoWERERCR9hH/iAfwIdk7UNARY652oBi4Ch\nAGZWF+gF1AFuAN4zM8vBWkVERETCTtgHPufcMuBIsubuwAT//QlAD//9G4Epzrl459x2IBZonhN1\nioiIiISrsA98qSjjnNsP4JzbB5Txt1cEdgZtt9vfJiIiIpJn5dbAl5wLdQEiIiIi4Sp/qAvIoP1m\nVtY5t9/MygEH/O27gcuCtqvkb0vR8OHDA/ejoqKIiorK+kpFRERE0ikmJoaYmJgs2585F/6DY2ZW\nFfjSOdfA/3gk8JtzbqSZDQaKO+eG+BdtfApchW8qdwFQw6XQSTNLqVlEREQk7JgZzrkML0QN+xE+\nM5sMRAElzexXYBjwCjDNzO4FduBbmYtz7kczmwr8CMQBDynViYiISF6XK0b4soNG+ERERCS3yOwI\nn1cWbYiIiIhIKhT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9E\nRETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxO\ngU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERE\nRDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4zwZ+Mysk5ltNrOtZjY41PWIiIiIhJI550JdQ5Yys3zAVuBaYA+wGrjVObc52XbOa30XERERbzIz\nnHOW0e/34ghfcyDWObfDORcHTAG6h7gmERERkZDxYuCrCOwMerzL3yYiIiKSJ3kx8ImIiIhIkPyh\nLiAb7AYqBz2u5G/7k+HDhwfuR0VFERUVlZ11iYiIiKRJTEwMMTExWbY/Ly7aiAC24Fu0sRf4FrjN\nObcp2XZatCEiIiK5QmYXbXhuhM85l2BmjwDR+KasxyUPeyIiIiJ5iedG+NJKI3wiIiKSW+i0LCIi\nIiJyXgp8IiIiIh6nwCciIiLicQp8IiIiIh7nuVW66ZGYmEi+fMq8IuI9Z86c4ddff2Xnzp3s27eP\ns2fPEh8fT6FChShdujTly5enZs2aREZGhrpUEckBeTrwRUREUKJECa644gqqV69O06ZNadWqFU2b\nNtUvQRHJVU6dOsXXX3/N/PnzWbVqFevXrycuLu6835M/f37q1KlDy5Yt6dixI9dccw3FihXLoYpF\nJCfl6dOypPZc4cKF6dy5Mz179qR79+5cfPHFOVmaiEiaJCQksGDBAsaOHctXX33F6dOnA8+ZGZUr\nV6Zy5cpUqFCBiy66iIiICE6ePMmBAwfYtWsX27ZtI/hvQIECBejSpQt33nknN954IwUKFAhFt0Qk\nBZk9LUueDnzx8fEcOnSIn376ic2bN7Ny5UqWLVvGpk3/O09z8eLFufvuu3nwwQepU6dOCCsWEfE5\nfvw477//Pu+++y47d+4MtDdr1oyuXbvStm1bmjZtyqWXXnre/Zw8eZINGzawePFi5s+fz7Jly0hM\nTASgUqVKDBgwgPvvv5+iRYtma39E5MIU+DLofCde/uWXX5g1axaffvopa9asCbR3796d559/nqZN\nm+ZUmSIiAceOHeP111/nzTff5OjRowBUq1aNfv360adPHypWrJip/e/du5fPPvuMsWPHBj74FilS\nhIEDB/LEE09QuHDhTPdBRDJGgS+D0nqljbVr1/LBBx8wceLEwHRJ165defXVVzXiJyI5Ij4+nrFj\nx/K3v/2NgwcPAtC2bVueeeYZOnTokOWLzxITE5k3bx6vvfZa4OLtZcuW5cUXX6Rfv35ERERk6euJ\nyIUp8GVQei+ttm/fPkaPHs17773HqVOniIiI4OGHH2bYsGGUKFEiGysVkbxs8eLFPProo2zcuBHw\nBb2///3vtG3bNkdePyYmhkGDBrF69WoAmjdvzgcffECjRo1y5PVFxEeBL4Myei3dAwcO8PzzzzN2\n7FgSExMpUaIE//jHP7j77rsxy/DPQUQkiaNHjzJo0CA++ugjAC6//HJee+01brrpphz/XeOcY+rU\nqTz55JPs2bOHiIgInnjiCV588UUtahPJIQp8GZTRwHfO+vXreeKJJ1i8eDEAHTt25IMPPqBKlSpZ\nVaKI5FGzZ8+mf//+7Nmzh8jISJ577jkGDhzIRRddFNK6jh8/zvPPP88777xDYmIidevWZdKkSTRu\n3DikdYnkBQp8GZTZwAe+T70TJ07kiSee4MiRIxQuXJhXX32Vv/71rxrtE5F0+/3333n00UcZP348\nAC1atGDcuHHUrVs3tIUls3r1au6++242b95MgQIFePHFFxk4cKCO7RPJRgp8GZQVge+cffv28cgj\njzB9+nQAunXrxscff0ypUqWyZP8i4n1r1qzh9ttvJzY2losuuogRI0bw6KOPhm2IOnXqFIMHD+ad\nd94BICoqis8++4xy5cqFuDIRb1Lgy6CsDHznTJ06lQcffJCjR49Svnx5Jk6cyHXXXZelryEi3pKY\nmMjo0aN59tlniYuLo379+nz22WfUr18/1KWlybx58+jbty/79++nfPnyfP755zm2oEQkL8ls4NOF\nZLNQr169WL9+PW3btmXv3r1cf/31DB48mPj4+FCXJiJh6Pjx49x0000MGjSIuLg4Hn30Ub799ttc\n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\n9dVXqf4eVOBT4Atrq1atcj179nRmluSP++zZs11CQkKoy5MckpiY6ObOnZvkQ4CZuW7durmlS5eG\nujyRTImPj3eTJ092derUCby/K1eu7N566y134sSJUJcnYeTIkSPu73//uytdunTgvVK/fn03c+bM\nC37gVeBT4MsVfvrpJzdgwABXuHDhJFfuGDVqlM5m72GHDx92r7/+epIrYxQqVMg99NBDujqGeE58\nfLybMmWKq1u3buD9Xrx4cffMM8+4PXv2hLo8CaHdu3e7gQMHBhZjAK5p06Zu2rRpaR78UOBT4MtV\njh496kaNGuUqV66cZLr31ltv1ZSeRyQmJrqlS5e6O++8M8m0bYUKFdyIESO0kEc8LyEhwU2fPt21\natUqye+5e+65x/3www+hLk9y0MqVK92dd97pIiMjA++Fa6+91i1YsCDdf+8yG/jC/jx82cXMXF7t\neziIj49nzpw5fPjhh8yZM+dcCKdGjRr069eP22+/ncsuuyzEVUp67NmzhylTpjBu3Dh+/PFHAMyM\nDh068MADD9CtWzcKFCgQ4ipFctZ//vMfRo8ezcyZMwO/59q1a0f//v3p2bMnkZGRIa5QstqZM2f4\n/PPPeeedd1i92ne113z58tGzZ0+GDBnClVdemaH9mhkuE+fhU+CTkPv1118ZN24c48aNC1yqzcxo\n164dd9xxBzfffDPFihULcZWSkuPHjzNjxgw+/fRTvv7668AftHLlynHvvfdy3333cfnll4e4SpHQ\n27ZtG2+88Qbjx4/n5MmTAJQpU4Z+/frxwAMPULVq1dAWKJkWGxvLP//5T8aOHcvBgwcBKFGiBPfd\ndx/9+/fP9M9YgS+DFPjCT3x8PHPnzuWTTz5h9uzZnDlzBoDIyEi6du1K7969ueGGGyhSpEiIK83b\nTp48ybx585g6dSqzZ88OXPYnMjKSLl26cOedd2o0TyQVx48f59NPP+X999/nhx9+AP43Et6nTx+6\nd+9OoUKFQlylpNXvv//OtGnT+Pjjj1m2bFmgvVGjRjz66KPcdtttXHzxxVnyWgp8GaTAF96OHTsW\nGDlatGhRYOQoMjKS6667jp49e9KtWzfKli0b4krzhkOHDvHll1/yxRdfEB0dneTajldffTV33nkn\nN998M8WLFw9hlSK5h3OO//znP4wZM4apU6dy9uxZAIoUKcLNN9/MXXfdRbt27ciXL6SXvJcUJCQk\n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\nKVasGMWKFaNo0aIUK1aMMmXKUL58eSpUqEDx4sU9H+guRIEvgxT4REREJLfIbODTsj0RERERj1Pg\nExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERER\nj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4R\nERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4\nBT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExER\nEfE4BT4RERERjwvbwGdmr5rZJjP73symm9mlQc8NNbNY//MdgtqbmNkGM9tqZm+EpnIRERGR8BK2\ngQ+IBuo55xoBscBQADOrC/QC6gA3AO+Zmfm/532gn3OuJlDTzDrmfNkiIiIi4SVsA59zbqFzLtH/\ncCVQyX//RmCKcy7eObcdXxhsbmblgCLOudX+7SYCPXKyZhEREZFwFLaBL5l7gTn++xWBnUHP7fa3\nVQR2BbXv8reJiIiI5Gn5Q/niZrYAKBvcBDjgWefcl/5tngXinHOfhaBEERERkVwvpIHPOXf9+Z43\ns75AZ+CaoObdwGVBjyv521JrT9Xw4cMD96OiooiKirpw0SIiIiLZLCYmhpiYmCzbnznnsmxnWcnM\nOgGjgaudc4eD2usCnwJX4ZuyXQDUcM45M1sJPAasBr4C3nLOzUtl/y5c+y4iIiISzMxwztmFt0xZ\nSEf4LuBtIBJY4F+Eu9I595Bz7kczmwr8CMQBDwUlt4eB8cBFwJzUwp6IiIhIXhK2I3zZTSN8IiIi\nkltkdoQvt6zSFREREZEMUuATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER\n8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+AT\nERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGP\nU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPC9vAZ2Yvmtl6M1tnZvPMrFzQc0PNLNbMNplZh6D2Jma2wcy2mtkboalcREREJLyYcy7U\nNaTIzAo75373338UqOuc629mdYFPgWZAJWAhUMM558xsFfCIc261mc0B3nTOzU9l/y5c+y4iIiIS\nzMxwzllGvz9sR/jOhT2/S4BE//0bgSnOuXjn3HYgFmjuHwEs4pxb7d9uItAjp+oVERERCVf5Q13A\n+ZjZS8DdwFGgvb+5IrAiaLPd/rZ4YFdQ+y5/u4iIiEieFtIRPjNb4D/m7tztB//XbgDOueecc5Xx\nTeE+GspaRURERHKrkI7wOeeuT+Omk4GvgOH4RvQuC3qukr8ttfZUDR8+PHA/KiqKqKioNJYjIiIi\nkn1iYmKIiYnJsv2F86KN6s65bf77jwJtnXO9ghZtXIVvynYB/1u0sRJ4DFiNLyC+5Zybl8r+tWhD\nREREcoXMLtoI52P4XjGzmvgWa+wA/grgnPvRzKYCPwJxwENBye1hYDxwETAntbAnIiIikpeE7Qhf\ndtMIn4iIiOQWnj0ti4iIiIhkDQU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T\n4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+ERER\nEY9T4BMRERHxOAU+EREREY9T4BMRERHxOAW+PCYmJibUJYSE+p23qN95i/qdt+TVfmeWAl8ek1f/\no6jfeYv6nbeo33lLXu13ZinwiYiIiHicAp+IiIiIx5lzLtQ1hISZ5c2Oi4iISK7knLOMfm+eDXwi\nIiIieYWmdEVEREQ8ToFPRERExOPyXOAzs05mttnMtprZ4FDXk5XMbJyZ7TezDUFtxc0s2sy2mNl8\nMysa9NxQM4s1s01m1iE0VWeemVUys0VmttHMfjCzx/ztnu67mRU0s1Vmts7f72H+dk/3+xwzy2dm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#zt = 64, z = 16, theta=0\n", + "plot_flight_path(64, 16, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cool! Note that the plot title tells us what the calculated value of $C$ was for our input conditions. We have a value of $C$ between $0$ and $\\frac{2}{3}$ and our path is trochoidal, like we announced it would be.\n", + "\n", + "* For negative values of $C$, the resultant flight path consists of a series of loops. Let's try it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAGXCAYAAAA3T705AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VFXixvHvSZMWQEQUEZAWehWkCIq6ghQVlXUFpCiK\nKKwFK4qKrgooq/5EwBVUehERFFZWUaQIShcQUJCu9E4gBJKc3x8zE2NMSGGSMzd5P88zT8idO3fe\nmwR4c84txlqLiIiIiHhPmOsAIiIiIpI9KnIiIiIiHqUiJyIiIuJRKnIiIiIiHqUiJyIiIuJRKnIi\nIiIiHqUiJyIiIuJRKnIiIiIiHqUiJ+IxxphrjTFJxphu51qWxW1297/+muAldS9Y+2WMucIYM9MY\ns9+/vQ+DlVFE5HyoyImEiBRlLK1HojHmqhSrp3VLlvO9TUumX2+MqWuMedEYU+483/O8ZSJLMG5f\nMxZoAQwC7gb+E4RtBp0xJtJ1BgDj85gxZqMxJs4Ys9MYM9QYUyiL20nv78PxDF5X0Biz1b/uO2k8\nX8UY87Ix5nt/OT9ujFltjHk2qxlFXItwHUBE/mIS8EUay39N8WeT8glr7QJjTEHgbE4GS6Ee8CLw\nLbAzl97TSRZjTBTQHHjHWvtWsLefxSyVgF5AXeCY/3EUX8Gsjy/ny84C/uFt4J/AdGAoUB14GN/3\n6m9Z3NZC4P1UyzL6Of8XcBHpl/h7gYeAz4EJ/u1dB7wC/N0Y08RaG5/FnCJOqMiJhJ5V1tpJWX2R\ntfZMToRJhyE4I13BkNNZLvW/x5FgbtQYEwZcYK2Ny8S6EfjKWkegH/CM9d8o2xhTEhgJtAFuDWbG\n7DDG1AD6Ap9Ya+9MsXw78I4x5i5r7ZQsbHJrVv4+GGMaAI8ATwJvprPaNOA1a+2JFMveN8b8CjwL\n9ARGZCGjiDOaWhXJA9I7Rs4YU94YM90Yc8z/mOFftt0YMy+NTYUZY54wxvxqjDltjPkljW2+CASO\nEZufYror3ePGUhyrdoMxZqD//U8bY9YYY/6RxvpFjDGvGGN+MMYc8K+72RgzyD/ymNUsGe5XOrk/\nArbjK4oDU0xzX+N//iJjzHD/1GG8/+O7xpgS59j/5/2FIQ74eyYyXAB8BbQHGllrZwRKHIC19iC+\nka8wYHFG28sFnf0f3061fBRwCt/UdJYYYyKNMYUzsV6Y/32+AGakt561dlWqEhcwFV9pr5XVjCKu\naEROJPQUMsZclGpZvLU2NoPX/WlUyl8mvgMuxjdi8zO+47zmAwVTvxjff2CDgALAe0A88CDwkTFm\ns7X2e/9604HSwP34pqJ+9i/fkuGewRCgEDDc//k9wGRjzAXW2nEp1iuDb/prOjARSACuBZ7CNz3X\nJgtZMrtfaXkPWI2vlHzqfwBsNMYUBb4HKgIf+Ner79/2dcaYq6y1J1Ntbyi+f3ffB44Dv5zjvQPG\nAlcBdf2lLS1rgIXW2jSnHI0xBiiR1nPpOJyyLGZRQyAJWJ5yobU23hjzI9Aoi9vrCHQFwo0xB/CV\nrQHW2rSOk+sHxAAdyN5ARVn/x33ZeK2IG9ZaPfTQIwQe+IpKEpDo/5jyMSmN9bplsOx1/7buSvU+\nQ/zrzkuxrLt/2UogPMXyy4DTwMRU2+ju3/Y1mdy3wPa3AUVSLC+Kb8TrIL5pxsDyiJQ5Uix/2f++\nDTOTJav7lU728v5tvJBq+av+930g1fKH/Ou/lEaOjSn3MxPv3d7/upczWK8s0DkT+5CZRyJQ7jx+\njtcCe9J5bqp/+xGZ3Nb3wGPALfhG8ib5M/4IFEq1bgUgFngi1T6/k8n3CgOW4Cv6VbK7/3rokdsP\njciJhJ738R3Dk9LebGynPb7/UFMfjzQU3/FDaRlurU0MfGKt3W2M2QRUycb7p2WETTGyaK09box5\nD18pagl86V+eEFjHGBMORAPhwDfAAKAxsCIL75sT+9UBOIBvKi+l/+A7+eI2/8eURtisHUT/GL4y\nMvxcK1lrd+ErOenZS9ZOMsjOz1tAIXxlKC2nU6xzzjNPAay1TVMtmmCMWYfv5+URfCOtAe/hOyEo\nuyek/B++n6v+1trN2dyGSK5TkRMJPZuttWkdv5ZVFYClqRdaaw8YY46msb7FN2KW2iEgGJcZsfwx\n9ZnSBnzTnxVTLjTGPAQ8ANTkz9NkFrgwi++bE/tVAVhurU3605tZm+gvifXTyJHpguAvsNcA66y1\n5zXV5y+PwfiZApKPRbs41eI465vuPJXGcwEF/B9Pncfbv4GvILfDX+SMMXcDNwAtUhb2zDLG/Avo\nA7xnrX39PLKJ5DoVORFJKb3/BE06y3OEMaYfvpHD/+EbKdkNnMF37NxYsn78U0jsF1krMCXxjUKe\ns/z5j3+77lzlP53idS4HUhfUVMriK8eWP76GY/Ad17gbqG6MibR/PWavDHAw5YhrVllrE4wxu/F9\nfQKXh/k3vhMc9vsv0QJwuf9jMf+yg9baY6m3Z4wZCDwHfGCtfSi7uURcUZETybu2A5VTLzTGXAwU\nP89tZ+dAeIPvemKzUi2v6d/e1hTL7ga2WWvb/mkDxrQOUpZg2ApUNcaEpSw9/pG0GP68P9lxkPSn\nKFMKTPGeS6B4ZYbFN9p4rmvypTVVu9v/cTlwI74TNJLPovWffVsP38k22ebfzuX4jp8D34k7F+Mb\noWufanWL70SJu0njciT+EvcC8JG19v7zySXiioqcSN41C3jcGNPJWjs5xfL0jo/Lilh8xSwrZ0IC\nPGiMec8/BYcxphjQG99FbRekWC8RsMYYY60NXC8tAujPX4tbdrOcr5n+PPfx5wvW9uKPM4WzzT9F\nOw24wRgTkdYolvHdzaK+tfaFDDYX1GPkMpiqnYrvWmyP8ufLofTCV7omplzZ/32tBJzyH+sXWF7C\nWns4je2/gm+k8nP/5yfxndmaWuB7MAcYDaxL9b4v4CtxY621PdPZF5GQpyInkncNwXdNr4+MMY35\n4/IjzfCN4KQuRFmZZlyO7yD85/yXOTmJbwRtWQavOwgs9V+fzeC7/MjlQE9r7ekU630CvAb8zxjz\nKVAM6IRvejV1zoyy5NT06ev4rgM33BhzJb7LjzTAN724Ed+xXCllJ8dj+MrQB8aYB1J+jYwxbYEm\nwMCMNhLsY+QyeK+fjDHDgT7GmOn4pjxr4LvTw/xUv1SAb7p1I76RuutTLB9gjGnCH3fsKAK0xXcH\nhu+Bd/3vl8Afl4VJZowp7//jFmvtjFTP9cH3ddsBzDPGdEn18n3W2q+zsNsizqjIiYQWS+amCjO8\n16q19pAx5mp8xw/d439+Pr7/LJfhuyBtRttMb9u7jDH3AE/juwJ+JL5j185V5Kx//Rb4LtFxCbAJ\n32UzpqZaN3DAeU9813DbC0zBdxzWhpR5MpEl0/uVwXqpvwbHjTHNgJfwXR6jB77rj40ABtq/XkMu\ny1PA/u/hlfj2ba4xZhdwGN/Zn19mYiTOlUfwTeX2wle+DuI71jH1WbwBaf3cz8c3Fd8N3+22EvEd\nL9gfeMtm7k4m6f19auhfXg7fz1RqCwAVOfEE45+1yFOMMTfh+8c/DN8BrEMcRxIJGf5Rq4P4ztDL\nlYO7jTHd8d2B4Tpr7cLceE8Rkfwgz92iy3921rtAa3wHUXcyxlRzm0rEDWNMgTQWB44z+yqX44iI\nSJDlxanVq/Bdh2sHgDFmCr4bSad1/SqRvO4LY8wOYBW+X9z+hu/svu+Az3I5S25f6kNEJM/Li0Wu\nDLArxee/4St3IvnRLHzHGHXAd8bgb/gOwn/Z5v5xFXnvOA4REcfyYpETET9r7Vtk/5ZFwcwxFt8J\nCCIiEkR5scj9zp9vu3O5f9mfGGM0OiAiIiKeYa39yyEqebHILQcq+68htAe4C9/1p/4iL56xm9MG\nDhzIwIEDXceQEKOfC0mLfi4kLfq5yB7f3fj+Ks8VOf/V0PviOyMvcPmRjY5jiYiIiARdnityANba\n/wFVXecQERERyUl57jpykrNatmzpOoKEIP1cSFr0cyFp0c9FcOXJOztkRop7cYuIiIiENGNMvjnZ\nQUREctkVV1zBjh07XMcQ8bzy5cuzffv2TK+vETkRETlv/tEC1zFEPC+9v0vpjcjpGDkRERERj1KR\nExEREfEoFTkRERERj1KRExEREfEonbUqIiISJCdPnmTIkCGUK1eOY8eO8fjjj//p+dWrV/Pll1/y\nzDPPpLuNzz77jPXr1xMeHs5ll11G165dczp2tqxZs4bx48czdOjQ5GUZ7X9qob6vs2bN4vjx42zZ\nsoWSJUvy0EMPZfiatL4uAZn5/meVipyIiEiQPPzww7z44ouUK1eOWrVq0bFjR8qXLw/47u/9/PPP\nc9VVV6X7+uPHj/Pyyy+zcuVKAJo2bUrbtm256KKLciV/Zr355pt89913FC9e/E/Lz7X/qZ3Pvi5Z\nsoSff/6ZI0eO0LNnz7/kCIZjx45x5513cvToUaKioihZsiTt2rVLd38g/a8LZO77nx2aWhUREQmC\nbdu2sXv3bsqVKwfAV1999af/9KdPn8511113zm0sXLiQmjVrJn9et25dvv3225wJfB769evHrbfe\n+qdlGe1/atnd1y1btjBmzBjuvfdeypUrxyeffJLNvTi3YsWKsWLFCi644AKMMSQmJmZ4iZ20vi4B\nmfn+Z4dG5ERERPy2bt3KqFGj/nQtr8CfjTE0adKEW265Jc3Xzps3j2LFijFhwgSOHDlCdHQ0PXr0\nAODQoUOEhYVRsmRJTp48me77//bbb38azSlevDibN28O3g76nc9+pudc+5+W7O7r008/Tf/+/QHY\ntGkT4eHh6a57vvsZKJqLFi3immuu4YorrsgwX1oy+/3PDhU5ERHJUcb85Rqm2Zbdiw4vX76cgQMH\nUqZMGcLCwrjpppvo0KHDX9arWLEigwYNytZ77Nu3j/Xr1zNlyhQAWrRoQfPmzalcuTKffvop999/\nP2PHjj3nNo4cOUKBAgWSP4+KiiI2NjZT75/ZfYTz28/0nGv/05Kdfd2zZw/Lli1j5cqVrFixggkT\nJvD888+nu34w9nPy5MnMmDGDN998M9vbyOz3Pzs0tSoiInleo0aN+O9//0u9evWIjIykQ4cOvPXW\nW+zbty9o7xEdHU3t2rWTPy9XrhxfffUVy5Yto3HjxpneRsqyGhcXR4kSJTL12tT72LJlS4YMGcKY\nMWOSj0PLSent/7nWz+q+zps3j/bt29OrVy+6du3K7t27adWqVY7uZ6dOnfjggw+46aabsnUbuqx8\n/7NDI3IiIpKjQuXWXa+99hr79u1j2LBhgG9a7pJLLvnTOimn4lLKzFRczZo1+e6775I/DwsLIzEx\nkWXLlnHq1CnmzJnD4sWLOX36NJ9//nma26lUqRIrVqxI/vzQoUM0aNAgW/v41ltvcd1119GgQQO6\nd+/OxIkTg7Kf6Ulv/9OTnX3dtWsX1atXB3xnvLZt25bx48fnyH5+8cUXvPrqqyxevJjo6GguueQS\nPvnkkwzPxE1t6dKlxMXFZer7ny3W2nz58O26iIgEQ6j/m/raa6/Z5557zlpr7fr16+2iRYtsmzZt\n7Pfffx+09zh9+rRt0qRJ8ufNmjWzv/7665/WGThwoH3ppZeSP9+yZYtNSkpK/vzkyZO2du3ayZ/X\nrVvX7tu3z1pr7ebNm/+0bmqp97FPnz52586d1lpr27Rpcx57lrYxY8bYHj16JH9+rv1PvZ/WZm9f\nR48ebUePHm2ttbZt27Z2x44dtm/fvjmyn3PmzEn+eiYlJdmyZcvar776Kt39CUj9dUkp9fc/Len9\nXfIv/0ufMTZEflPKbcYYm1/3PSNnz55l8+bN7Nixg507d7J3715OnDjBmTNnKF26dPJBpiIiAend\n6DsULFmyhMOHD1OsWDFefPFFrr/+erp27crUqVN56qmngvpeX375JYsXL8ZaS7Vq1ejSpUvyc9Om\nTWPQoEEYY+jfvz8dO3akQYMGfPDBB9SvXz95vQkTJrB9+3astVSsWDF5G9WrV+edd97hxhtvzNQ+\n7t27l2effZbLLruMtm3b8sUXXwRtP999910+/vhjdu3aRY8ePejXrx/R0dHp7n9a+5mdfT1+/DjP\nP/88tWvXplatWjRp0oQ+ffrw3HPP5ch+jhw5koSEBHbs2EGVKlV44IEHzrk/6X1dIO3vf1rS+7vk\nX/6XA05V5ITjx4/z7bffMnfuXJYtW8batWuJj49Pc93atWuzdu3aXE4oIqEulItcWiZNmkT58uUp\nV64cZcuWdR0nU5KSkliwYEGmL2ExbNgwWrRoQfXq1enRoweTJ0/O4YTBk5V99fJ+pkVFLpPye5E7\nfvw4M2bMYNKkScybN4+EhIQ/PV+hQgUqVapEuXLlKF26NEWLFuWCCy6gVKlSdOrUyVFqEQlVXity\nn332GWfPnqVRo0bnvNZZKPn444+5+eabKViwYKbWP3ToEB9++CHFixenVq1aNG3aNIcTBk9W9tXL\n+5kWFblMyq9FbsOGDbzzzjuMGzeOuLg4AMLDw2nSpAmtWrWiRYsW1K9fP0euki0ieZfXipwXnTx5\nksKFC7uOkSvy076mpiKXSfmtyK1evZoXXniB2bNnJy9r0aIFXbp0oWPHjiF3+xcR8RYVOZHgyGqR\n0+VH8rjt27fz5JNPJt/CpFChQnTv3p2+fftSo0YNx+lERETkfKjI5VHx8fEMHjyYwYMHc/r0aQoU\nKECfPn146qmnKFWqlOt4IiIiEgQqcnnQmjVr6Nq1K+vWrQOgc+fOvP7665QpU8ZxMhEREQkm3aIr\nD0lMTGTIkCE0atSIdevWUblyZRYsWMDEiRNV4kRERPIgjcjlEYcOHeKuu+7i66+/BuDBBx/kjTfe\nyLdn/YiIiOQHKnJ5wPr167nlllvYunUrpUqVYuzYsdx0002uY4lIPlK+fPm/3M9SRLIuq9c11NSq\nx82ePZsmTZqwdetWGjRowIoVK1TiRCTXBW6z5IXH8OHDk0vnI488wtmzZ51nyu7j+PHjtG/fHoCI\niAjGjx/vPJMe5/fYvn17lv7uqch52Pjx4+nQoQOxsbF06tSJRYsWeeZWMyIiLgwaNIg+ffpgreX1\n11/n7bffJiLCu5NT0dHRzJw5k8cff5yEhAS6devG6NGjXceSXKQi51EjRoygW7duJCYmMmDAACZO\nnEihQoVcxxIRCVmvvfYazz77LMYY/vOf//Dkk0+6jhQU4eHhDB06lNdeew1rLffffz/Dhw93HUty\nie7s4EFDhw5N/gfojTfe4IknnnCcSEQktI0cOZKHHnoIYwwTJkygc+fOriPliLfffpvHHnsM8O1z\n7969HSeSYNEtulLxapH7z3/+Q+/evTHG8N5779GrVy/XkUREQtqkSZO4++67sdby/vvvc//997uO\nlKNSltaPP/6Yjh07uo4kQaAil4oXi9yUKVPo3Lkz1lpGjBjBgw8+6DqSiEhIW7BgAX/7299ISEhg\nyJAhPPXUU64j5YpXX32VAQMGEBUVxZw5c7j++utdR5LzpCKXiteK3Ny5c2nbti0JCQm8+uqrPPvs\ns64jiYiEtG3bttGoUSMOHTrEY489xptvvuk6Uq6x1vLII48wbNgwoqOjWbp0KdWrV3cdS86Dilwq\nXipyv/zyC40bN+bYsWM8/vjjvPHGG7pek4jIOcTGxtKsWTPWrVvHTTfdxOzZswkPD3cdK1clJSVx\n1113MW3aNKpUqcLSpUu58MILXceSbFKRS8UrRe7IkSM0adKETZs2cdttt/HJJ58QFqaTjUVE0mOt\n5a677uLjjz+matWq/PDDDxQvXtx1LCdOnjxJ8+bN+fHHH2ndujX//e9/812hzSvSK3JqBCEsMTGR\nTp06sWnTJurUqcO4ceNU4kREMjB69Gg+/vhjihQpwueff55vSxxA4cKFmTlzJiVLluTLL7/k+eef\ndx1JgkytIIQNGjSIL7/8kosvvpjPP/+cIkWKuI4kIhLSNmzYwCOPPALAe++9R0xMjONE7pUvXz55\nNmfw4MF88803riNJEKnIhahFixbx4osvAjBhwoQs33tNRCS/iY+P56677iIuLo7u3bvTpUsX15FC\nxrXXXssLL7yAtZauXbty4MAB15EkSFTkQtChQ4fo3LkzSUlJPPPMM7Rq1cp1JBGRkPfqq6+ybt06\nKleuzLBhw1zHCTnPPfccLVq0YM+ePdx777144ThxyZhOdghBnTp1YsqUKTRt2pQFCxYQGRnpOpKI\nSEhbs2YNDRs2JCEhgYULF9KiRQvXkULSzp07qVu3LkePHmXcuHF07drVdSTJJJ3s4BGffvopU6ZM\noXDhwkyYMEElTkQkAwkJCdx7770kJCTQp08flbhzKFeuHG+99RYAjzzyCHv37nWcSM6XilwIOXTo\nUPLdGoYMGULFihUdJxIRCX0jRoxg1apVlC9fnkGDBrmOE/K6d+9O69atOXLkCH379nUdR86TplZD\nSPfu3Rk3bhzXXnst8+bN06VGREQycODAAapUqcKxY8f47LPPuOWWW1xH8oQdO3ZQq1YtYmNjmT17\n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\nli5dyh133MG0adNCqiilnFIdNWoU9913n+tIkgs0tZoPXHnllTzxxBNYa+nevbtu3yUikg0RERFM\nmjSJ6Ohopk+fzujRo11HSpZ6SrVnz56uI4ljGpHLY06fPs2VV17Jhg0bPHGwrohIqJo4cSJ33303\nBQsWZOXKlVSvXt11JCZNmkSXLl2Ijo7mp59+oly5cq4jSS5Jb0RORS4PWr16NY0bN+bs2bPMmTOH\nm266yXUkERFP6tatG+PHj6du3br88MMPFChQwFmWnTt3UrduXY4ePaop1XxIU6v5SP369Xn55ZcB\nuPfeezl06JDjRCIi3jR8+HAqVarEmjVreOqpp5zlSExMpFu3bhw9epT27dtrSlWSqcjlUU8++STN\nmzdnz5499O7dW/diFRHJhujoaCZPnkxkZCTDhg3j448/dpLj9ddfZ8GCBVxyySV88MEHIXXyhbil\nqdU8bNu2bdSpU4fY2FjGjBlD9+7dXUcSEfGkYcOG8fDDD1OkSBGWL19OtWrVcu29ly9fTrNmzUhI\nSNDhMvmYplbzoQoVKjBs2DAAHnroIX7++WfHiUREvKlv377cddddxMbG0rFjx1y78HpsbCxdunQh\nISGBRx55RCVO/kIjcnmctZZu3boxYcIEateuzdKlSylYsKDrWCIinhMbG0ujRo34+eef6dKlC+PH\nj8/xKc577rmHMWPGULt2bZYtW+b0ZAtxSyNy+ZQxhhEjRhATE8O6det47LHHXEcSEfGkIkWKMH36\ndAoXLszEiRMZOXJkjr7fRx99xJgxYyhQoACTJk1SiZM0aUQun/jxxx9p0qQJ8fHxTJkyhX/84x+u\nI4mIeNLkyZPp3LkzERERfPPNN1xzzTVBf4+1a9fSuHFjTp8+zYcffsg999wT9PcQb9GIXD5Xr149\n3nrrLQDuv/9+fv31V8eJRES8qVOnTvTr14+EhATuuOMOduzYEdTtHz9+nL///e+cPn2ae+65RyVO\nzkkjcvmItZY777yTTz75hNq1a/P9999TuHBh17FERDwnISGB9u3b8+WXX1KnTh0WL15MkSJFznu7\n1lo6derE1KlTqV27Nj/88AOFChUKQmLxOo3ICcYYPvjgg+Tj5e6//35dX05EJBsiIiKYMmUKMTEx\nrF27lh49epCUlHTe2x0xYgRTp06lSJEiTJs2TSVOMqQil88ULVqUmTNnUqRIESZPnszbb7/tOpKI\niCcVL16czz//nGLFijF9+vTkO+pk18KFC3n00UcBGD16NFWrVg1GTMnjNLWaT3366afccccdhIeH\n8yGE+i0AACAASURBVPXXX9OyZUvXkUREPGnOnDm0a9cOay0TJ06kc+fOWd7Gzp07adiwIQcOHODx\nxx9n6NChOZBUvExTq/Int99+O8888wyJiYnceeed7Nq1y3UkERFPatOmDW+++Sbgu+7bggULsvT6\nU6dO0aFDBw4cOMCNN97I4MGDcyKm5FEakcvHEhMTadOmDXPnzqV+/fosWrRIJz+IiGTTI488wjvv\nvEPx4sVZsmQJ1atXz/A11lq6dOnC5MmTqVixIsuXL6dEiRK5kFa8RiNy8hfh4eFMnjyZypUrs3r1\narp16xaUg3VFRPKjN998kw4dOnD06FHatGnD3r17M3zN0KFDmTx5MkWKFOHzzz9XiZMsU5HL5y66\n6CJmzZpFsWLF+PTTTxkwYIDrSCIinhQeHs7EiRNp3LgxO3bsoF27dsTGxqa7/syZM3n66acBGD9+\nPDVr1sytqJKHqMgJ1apV45NPPiE8PJxBgwYxduxY15FERDypUKFCfP7551SsWJFVq1Zxxx13cObM\nmb+st3z5cjp37oy1lldeeYUOHTo4SCt5gY6Rk2TvvfceDz74IJGRkXzzzTe0aNHCdSQREU/atGkT\nzZs358CBA9x5551MmjSJ8PBwAHbs2EHjxo3Zt28f99xzDx988AHG/OXQJ5E/Se8YORU5+ZPAwbol\nSpRg8eLFVKtWzXUkERFPWrVqFddddx3Hjx+nV69evPfeexw/fpyrr76a9evXc/311zNnzhyioqJc\nRxUPUJFLRUUubQkJCdx2223Mnj2b8uXLs2TJEi677DLXsUREPGnhwoW0bt2a06dP8/jjj7NmzRq+\n/vprqlevzpIlSyhevLjriOIRKnKpqMil7+TJk9xwww0sXbqUunXrsmDBAooVK+Y6loiIJ82ePZtb\nb701+aoApUqVYunSpVxxxRVug4mn6PIjkmmFCxdm9uzZxMTEsGbNGm6//Xbi4+NdxxIR8aR27dpx\n0UUXJX9+0003qcRJ0KjISZpKlizJ//73Py699FLmzZsXtBtCi4jkN4MHD+bAgQPJn48bN46RI0c6\nTCR5iYqcpKtChQrMmTOH6OhopkyZwsMPP4ymo0VEMm/UqFE8++yzGGOYOnUqw4YNA+Chhx7i/fff\n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\nnfuBvr+KXDIqcpLRXL9+nY0bN7J69Wo2btzIkSNH7nm8YMGCNGrUiKeffhofHx9q1qypk9zTIZfL\nxaFDh9zF7bvvvuPcuXP3PKdYsWL4+vri6+tL8+bNdUhdJB2LiooiIiKCyMhI+vbt+8DfR0UuGRU5\nyehOnz7Nt99+y8aNG9m4cSMnT5685/Hs2bNTu3ZtfHx88PHxoW7duhQvXlwzYtPYxYsXCQ8Pd99+\n+OEH9yXd7nrooYdo2LAhDRs2pEmTJjzxxBP6dxLJZFTkklGRk8zEWsvx48cJDQ1l27ZthIWF3XMt\nwruKFClCzZo177mVKVNGpSEFWGs5e/Yse/bsYe/evezdu5ft27ffc57jXcWLF6dBgwY0atSIRo0a\nUalSJf0biGRyKnLJqMhJZnf58mXCw8MJCwsjLCyMnTt3Eh0d/ZvneXt7U6VKFapUqULlypXdH4sV\nK6ZycR9RUVEcPnyYQ4cOsX//fndxu3Tp0m+emydPHmrXrk29evWoV68edevWpWTJkg6kFpH0TEUu\nGRU5kXtZa4mMjGTXrl3u286dO7l48eLvPt/b25uKFSvy2GOP8eijj/LYY4+5b0WLFs3QJc9aS1RU\nFJGRkURGRnL8+HGOHDnCoUOHOHTo0O8WNoACBQpQrVo1qlevTrVq1ahZsyaVK1fW7GIR+UMqcsmo\nyIn8MWst58+fZ//+/Rw4cOCej5cvX77v1+XKlYtSpUpRokQJSpYsSYkSJdz3ixcvTuHChSlcuDD5\n8uVLd4UvNjaW8+fPc+7cud98PH36tLu8xcTE3Pd75M2bl4oVK7pvTz75JNWrV6dkyZLp7r9XRDyD\nilwyKnIiD+5uwTt69Cg///wzP//8M8eOHXPfv98eqeSyZcvmLnWFCxfG29ubvHnzki9fvns+5s2b\nlxw5cpAtWzb3LXv27GTLlo2sWbPicrlwuVzcuXPHfd/lchEbG0tMTAwxMTHcvHnTfT8mJobo6Ggu\nX77M5cuX+fXXX933r1+//qeye3t7U6ZMGcqUKUPp0qUpX748FStWpEKFCpo0IiIpTkUuGRU5kdRz\n9epVTp8+zenTpzlz5gxnzpxx3z979iyXLl0iKiqKGzduOB31N7y8vHj44YcpVqwYxYoVo2jRou77\nxYsXp2zZspQuXRpvb2+no4pIJqIil4yKnIjzbt68yaVLl7h06RIXL17kypUrXL9+nWvXrnHt2jX3\n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\n8zlOaAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,numpy.pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can play around with the input values and see what kind of behavior results. Just note that any value of $C > \\frac{2}{3}$ will result in $\\cos \\theta > 1$, which doesn't exist. Python will probably throw a few errors if you hit that condition, but just try again!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The last case is $C = 0$. Take another look at Equation (16) and plug in $C = 0$, what should happen? It looks like it will just reduce to \n", + "\n", + "$$R = 3z_t$$\n", + "\n", + "It's a constant radius of curvature! In fact, this solution is a series of semi-circles, with a cusp between them. One way to force $C = 0$ that we can figure out from Equation (15), is to make:\n", + "\n", + "\n", + "$$z = 3z_t\\ \\ \\ ,\\ \\ \\ \\theta = 0$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAGXCAYAAAAOKAxiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XecVNX9//HXoYh0BBUFpSgqikLEWNBIMagRBcGCEiv6\njb23WGIkiYVYY0v5RaNGRCQSC0qkaEABE8EGIihKFQIICkRAyu75/TEDWddd2IXdvXd2X8/H4z52\n5syZO5/rZeXNOfeeCTFGJEmSlF7Vki5AkiRJm2dgkyRJSjkDmyRJUsoZ2CRJklLOwCZJkpRyBjZJ\nkqSUM7BJkiSlnIFNkiQp5QxsUg4IIXQJIeSHEM7eXFsp93lO9v2dy67S5JXVcYUQWoUQXgwhLMnu\n7y9lVaMklZaBTUpQgdBV1JYXQjikQPeivpZkW7+qpMTvDyF0CCHcFkJosY2fuc1KUEtZfIXLU8CR\nwF3AmcCfymCfZS6EULOCPy+EEK4OIUwPIawJIcwLIdwbQqhTXvsoTf+yqE9KoxpJFyAJgMHAiCLa\nPyvwOBR8IcY4LoRQG1hfnoUV8APgNuCfwLwK+sxEagkhbAf8CHgoxvhAWe+/lLXsCVwAdABWZLfl\nZILkgWTq/HUFlvQ74HJgGHAvsC9wBZlz0r2c9lGa/mVRn5Q6BjYpHd6LMQ4u7ZtijOvKo5hiBMpm\n5KoslHctu2Q/4+uy3GkIoRpQK8a4pgR9a5AJZacA1wA3xuyXP4cQdgT+ABwHnFiWNW6hpv2Ay4Dn\nY4x9C7TPAR4KIZweYxxSlvsoTf+yqE9KK6dEpRxV3DVsIYSWIYRhIYQV2e2FbNucEMIbReyqWgjh\nuhDCZyGEb0MInxSxz9uAjddwjS0wbVvsdV0FriX7cQhhQPbzvw0hfBhCOK2I/vVCCLeHEP4VQvgy\n23dmCOGu7EhiaWvZ4nEVU/cTwBwygXBAgenpztnXm4QQHs1Ota3N/nwkhNB4M8d/awjhM2ANcGoJ\naqgFjAJOAA6OMb6wMawBxBiXkhlBqgZM2NL+ytBPsz9/V6j9z8BqMlPHZb2P0vQvi/qkVHKETUqH\nOiGEJoXa1sYYv9nC+74zypQNDeOBnciMwMwgcx3WWKB24TeTGUW6C9ge+COwFrgYeCKEMDPG+Ha2\n3zBgV+BnwO3Z/QJ8vsUjg98CdYBHs8/7A8+GEGrFGP9aoF9z4LzsZz0DbAC6ADeQmc46rhS1lPS4\nivJH4H0yf+n/PbsBTA8hNADeBvYAHs/2OzC7724hhENijKsK7e9eMv+v/X/ASuCTzXz2Rk8BhwAd\nsuGsKB8Cb8YYi5wSDyEEoHFRrxXjq4KhsBg/BPKBSQUbY4xrQwgfAAeX4HNKu4/S9C+L+qR0ijG6\nubkltJEJJPlAXvZnwW1wEf3O3kLb3dl9nV7oc36b7ftGgbZzsm3vAtULtDcDvgWeKbSPc7L77lzC\nY9u4/9lAvQLtDciMYC0lMz24sb1GwToKtP86+7k/LEktpT2uYmpvmd3HLwu135H93AsLtV+S7f+r\nIuqYXvA4S/DZJ2Tf9+st9Nsd+GkJjqEkWx7QogS1TQH+U8xrz2X3U6Ms91Ga/mVRn5tbWjdH2KR0\n+H/A3wq1LdqK/ZxA5i+swtfp3AtcX8x7Ho0x5m18EmNcGEL4FNhrKz6/KL+PBUYKY4wrQwh/JBN+\nugIjs+0bNvYJIVQH6gPVgdeBXwCHApNL8bnlcVy9gS/JTLEV9CcyN0H0yf4s6PcxxrWl+IyryYSo\nRzfXKcY4n8zNKsVZROkusi/Jn7c6ZEYri/JtgT4ry3AfpelfFvVJqWRgk9JhZoyxqOvLSqs18O/C\njTHGL0MIy4voH8mMgBW2DCiL5Tsi/5uyLOhjMtOWexRsDCFcAlwItOO719hGYIdSfm55HFdrYFKM\nMf87HxZjXjYMHlhEHTNLuvNsUO0MTI0xLt6GOsmGxLL4M1XQajLT7UXZvkCfstxHafqXRX1SKhnY\nJOUV0x6KaS8XIYRryIwEvgY8CCwE1pG5tu0pSn+TVCqOi9IFhB3JjCpuNuRlr0/rtrmQn70jtbjw\nUpQvCwfRIiwE9g0h1Izfv3auObC04EhpGe2jNP3Loj4plbxLVKpc5gBtCjeGEHYCGm3jvrdmGY1A\nZh2swtpl9zerQNuZwOwYY48Y419ijK9lA8mSMqqlLMwC9smGoU2yI2N7893j2RpLKX5Kr6DeZMLs\n5uwO/KeE20JgtxJ87iQyf28UXNB5412tP6DQxf5ltI8t9Z9cir4lqU9KJQObVLkMB3YNIfQr1F7c\n9Wul8Q2ZAFaaOw8BLs7eXQlACKEhcBGZxV/HFeiXB8Ts6NHGvjWAm/h+QNvaWrbVi2RGrf6vUPsF\n2fa/f+8dpZC95u5vwBHZY/+ekPl2hwNjjOO3sLuN17CVZDuakl3D9lz251WF2i8gcxfyMwXqrBFC\n2CeEsPvW7qOE/Qdtw76lnOGUqFS5/JbMWlRPhBAO5X/LehxO5mL5wsGnNNODk8hcDH9LdvmQVWRG\nxN7ZwvuWAv/Orm8WyCzrsRtwfozx2wL9ngfuBF4LIfwdaAj0IzOSVLjOLdVSXtOed5NZR+3REMJB\nZJb16EhmOZLpwD2F+m9NHVeTWVvt8RDChQX/G4UQegCHAQO2tJPyuIYtxvhRCOFR4NIQwjAy386x\nH5lvFhgbY3y2QPfmZP6bjAWO2sp9lKp/afct5RIDm5S8SMmm+Lb4XaIxxmUhhCOA+8gEo8j//sJ8\nh8zCrVvaZ3H7nh9C6A/8HPg9UJPMtWWbC2wx2/9IMktfNAU+JbMcxXOF+t6d/Xk+mTXQFgFDgCfJ\n3KRQcOHYLdVS4uPaQr/C/w1WhhAOB34F9ALOBRZnaxgQv78GW6mnbrPn8CAyxzY6hDAf+IrMXY4j\nY4y/LO0+y9iVZG7ouADoQSaQP8j3746F4v9sl2Yfpe1f2n1LOSHEmJZvmilaCOFxMksVLI4xts+2\n7UBm6LslmWt2+sYYVyRWpJRy2VGopcAfY4yXVNBnnkPmGwm6xRjfrIjPlKTKKheuYXsCOLZQ243A\nmBjjPmSG/G+q8KqklAohbF9E88brwEZVcDmSpDKQ+inRGOP4EELLQs0nklnlHTLTIGPJhDhJMCKE\nMBd4j8w/yroDx5P5yqqXKriWil5CQ5IqpdQHtmLsvHFRyRjjohDCzkkXJKXIcOBsMks/1Aa+IHMx\n/K9jxV8Dke5rLiQpR6T+GjaA7Ajb8ALXsH0VY2xc4PVlMcbCX5wtSZJUKeTqCNviEELTGOPiEMIu\nFL2wJiGE9KdRSZKkrBhjkZeS5MJNB5C5DqbgAbxM5nZ6gHPYzHU5xX3rfXlst912W4V+npvnz81z\nVxk2z19ub56/sts2J/WBLYQwGJgI7B1CmJdde2kgcHQI4RPgx9nnkiRJlVLqp0RjjD8t5qXuFVqI\nJElSQlI/wpZLunbtmnQJ2gaev9zlucttnr/c5vmrGDlxl+jWCiHEynx8kiSp8gghEIu56SD1U6KS\npHRo1aoVc+fOTboMKee1bNmSOXPmlOo9jrBJkkok+6//pMuQcl5xv0ubG2HzGjZJkqSUM7BJkiSl\nnIFNkiQp5QxskiRJKeddopIkbYUPP/yQp59+mnvvvXdT26pVq/jtb39LixYtWLFiBddee22x73/p\npZeYNm0a1atXp1mzZpx11lkVUfZWef/99xk5ciQ33ngjAMOHD+eLL75g7dq1tGjRgpNOOmmz70/7\nsZa2vuL6l+txJv29WeX8nVxRklQ2/H/q/9x3332xT58+sX///t9pP++88+LcuXNjjDG2a9cuzpkz\np8j3r1ixInbs2HHT88MOOywuXbq0/AreBvn5+fH444+Pv/rVr2KMMc6fPz/ec889m14///zz4zff\nfFPs+7flWCdMmBAff/zxeO+998avv/56K49g80pbX3H9S7Of4n6Xsu1FZhqnRCVJKqVrrrmGE088\n8Ttts2fPZuHChbRo0QKAUaNG0bJlyyLf/+abb9KuXbtNzzt06MA///nP8it4GwwbNoxu3bptev7l\nl18yZswY1q9fD0C9evXYbrvtin3/1h7r559/zpNPPsl5551HixYteP7557fhKIpX2vqK61/e59Qp\nUUlSlTNr1iz+/Oc/f2c9rI2PQwgcdthh9OrVq1T7fOONN2jYsCGDBg3i66+/pn79+px77rlF9v3i\niy9o1KjRpueNGjVi5syZW308xdnW41y2bBnVqlVjxx13ZNWqVQAceOCB5Ofn88Mf/pALLriAY445\nhpo1axa7j6091p///OfcdNNNAHz66adUr169XI6ztPUV13+HHXYo13NqYJMklYkQilzvs9Q2/oW7\nNSZNmsSAAQNo3rw51apV4yc/+Qm9e/f+Xr899tiDu+66a1vK/J7Fixczbdo0hgwZAsCRRx7Jj370\nI9q0afO9vl9//TXbb7/9pufbbbcd33zzTYk+p6THCNt+nH//+9/52c9+xlNPPfWd9htvvJGBAwdy\n/fXX87vf/W6z+9iaY/3Pf/7DO++8w7vvvsvkyZMZNGgQt956a7H9t+U4S1vf5vpv7TktCadEJUmV\nxsEHH8yrr77KD37wA2rWrEnv3r154IEHWLx4cbl/dv369TnggAM2PW/RogWjRo0qtm/BYLpmzRoa\nN25cos8pfIxdu3blt7/9LU8++STvvvvuth1EAe+88w6HHnro99pnzpzJuHHjGDVqFC+//DK33347\nb7/9drH72ZpjfeONNzjhhBO44IILOOuss1i4cCHHHHNMuRxnaesrrv+2nNOScIRNklQmtmVkrCzd\neeedLF68mIcffhjITKc1bdr0O30KTqEVtC1Tou3atWP8+PGbnlerVo28vLwi++65555Mnjx50/Nl\n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\nSZISMm/ePPr160d+fj633norJ5xwQtIlSZVKoiNsIYTRIYQpBbap2Z89AWKMv4gxtiAzBXp5krVK\nkor27bffcsopp7B06VKOPfZYbrvttqRLkiqdREfYYoxHl7DrYOBVYACZEbXdC7y2W7atSAMGDNj0\nuGvXrnTt2rWUVUqSihNj5IILLmDSpEm0atWKwYMHU7169aTLknLC2LFjGTt2bIn6pvmmgzYxxs+y\njy8Hjowx9i1w08GhZKZCR+NNB5KUiPvuu4/rrruOunXrMnHiRNq3b590SVLO2txNB2m+hm1gCGFv\nMjcbzAUuAogxfhxCGAp8DKwHLjGVSVLFe+2117jhhhsA+Otf/2pYk8pRakfYyoIjbJJUPj755BMO\nPfRQVqxYwW233fady08kbZ3NjbAZ2CRJpbJs2TIOO+wwPvvsM/r06cPzzz9PtWqpXSVKyhkGNklS\nmVi7di1HH300b731FgceeCBvvvkm9erVS7osqVLIyYVzJUnpEmPkZz/7GW+99RbNmjVj+PDhhjWp\nghjYJEklcscdd/D0009Tt25dXnnlFZo3d81yqaI4JSpJ2qJBgwZx1llnEULgpZdeomfPnkmXJFU6\nTolKkrba6NGj6d+/PwAPPPCAYU1KgCNskqRivf/++3Tu3JlvvvmG6667jnvuuSfpkqRKy7tEJUml\nNmfOHDp16sSiRYvo168fgwYNcvkOqRwZ2CRJpfLll19y5JFH8sknn3DUUUcxYsQIatWqlXRZUqVm\nYJMkldjKlSvp1q0b7733Hu3bt+fNN9+kYcOGSZclVXredCBJKpE1a9bQq1cv3nvvPfbcc09Gjhxp\nWJNSwMAmSQJgw4YNnH766YwbN45mzZoxevRodtlll6TLkoSBTZIE5OXl0b9/f15++WUaN27MqFGj\naN26ddJlScoysElSFZefn89FF13EoEGDqFu3LiNGjKBdu3ZJlyWpAAObJFVhMUauvPJKHnvsMWrX\nrs2rr77KoYcemnRZkgoxsElSFRVj5Prrr+eRRx5hu+2248UXX6RLly5JlyWpCAY2SaqCYozccsst\n3HfffdSoUYNhw4ZxzDHHJF2WpGLUSLoASVLFijFy8803M3DgQKpXr86QIUM44YQTki5L0mYY2CSp\nCokxcuONN3L33XdvCmsnn3xy0mVJ2gIDmyRVETFGbrjhBu69915q1KhhWJNyiIFNkqqAGCNXX301\nDz74IDVq1GDo0KH06dMn6bIklZCBTZIquby8PC688EIef/xxatasydChQ+ndu3fSZUkqBQObJFVi\n69ev5+yzz2bIkCFsv/32vPDCC/zkJz9JuixJpWRgk6RK6ttvv+W0007j5Zdfpn79+rzyyit07tw5\n6bIkbQUDmyRVQitXrqRPnz688cYb7LDDDowcOZKDDz446bIkbSUDmyRVMosXL6ZHjx6899577LLL\nLowcOZL27dsnXZakbWBgk6RKZPbs2RxzzDF89tlntGnThpEjR7LHHnskXZakbeRXU0lSJfHhhx9y\n+OGH89lnn3HggQcyfvx4w5pUSRjYJKkSGD16NEceeSSLFi2iW7dujB07lqZNmyZdlqQyYmCTpBz3\n5JNP0qNHD/773//St29fRowYQYMGDZIuS1IZMrBJUo6KMfKrX/2K/v37s2HDBm644QaeffZZtt9+\n+6RLk1TGvOlAknLQunXruOCCC3jqqaeoVq0aDz/8MJdccknSZUkqJwY2ScoxS5cu5aSTTuKtt96i\nTp06DBkyhJ49eyZdlqRyZGCTpBzy8ccf07NnT2bNmkWzZs0YPnw4HTt2TLosSeXMa9gkKUeMHDmS\nTp06MWvWLA466CAmTZpkWJOqCAObJKVcjJH777+fHj16sHLlSk455RTefPNNmjVrlnRpkiqIgU2S\nUmz16tWcddZZXHvtteTn5/OLX/yC5557jjp16iRdmqQK5DVskpRSc+fOpU+fPrz//vvUrVuXp556\nipNPPjnpsiQlwMAmSSn0z3/+k759+7J06VL23HNPXnzxRfbff/+ky5KUEKdEJSlF8vPzueuuu+je\nvTtLly7l2GOPZdKkSYY1qYozsElSSnz99deceOKJ3HzzzZuuV3v11VfZYYcdki5NUsKcEpWkFHjv\nvfc45ZRTmD17NjvssANPP/00xx9/fNJlSUoJR9gkKUExRh5++GE6derE7NmzOeigg3jvvfcMa5K+\nw8AmSQn56quvOOmkk7jiiitYt24dF110EePHj6dVq1ZJlyYpZZwSlaQETJw4kX79+jFv3jwaNmzI\nn//8Z0499dSky5KUUo6wSVIF2rBhA7fffjudO3dm3rx5HHroobz//vuGNUmb5QibJFWQ2bNnc9ZZ\nZzFhwgQArr/+eu644w5q1qyZcGWS0i71I2whhGtDCPkhhMYF2m4KIcwMIUwPIRyTZH2StCUxRp56\n6ik6dOjAhAkTaNasGaNHj+buu+82rEkqkVSPsIUQdgOOBuYWaNsX6AvsC+wGjAkh7BVjjMlUKUnF\nW7p0KRdffDHPP/88ACeffDJ/+tOfaNKkScKVScolaR9hewC4vlDbicCQGOOGGOMcYCZwSEUXJklb\n8uKLL9KuXTuef/556tWrxxNPPMHf/vY3w5qkUkttYAsh9ALmxxinFnqpOTC/wPMF2TZJSoWvv/6a\ns846iz59+rBkyRK6dOnChx9+yLnnnksIIenyJOWgRKdEQwijgaYFm4AI/AK4mcx0qCTljFdeeYUL\nL7yQhQsXUrt2bQYOHMhll11GtWqp/fexpByQaGCLMRYZyEII+wOtgA9D5p+juwHvhRAOITOi1qJA\n992ybUUaMGDApsddu3ala9eu21q2JH3PkiVLuPLKKxkyZAgAnTp14sknn2TvvfdOuDJJaTV27FjG\njh1bor4hF67VDyHMBjrGGL8OIewHPAMcSmYqdDRQ5E0HIQTvRZBUrmKMPPPMM1x11VUsW7aM2rVr\nc/vtt3PllVdSvXr1pMuTlENCCMQYi7xuItV3iRYQyUyXEmP8OIQwFPgYWA9cYiqTlITZs2dz6aWX\n8o9//AOA7t2786c//Yk99tgj4cokVTY5McK2tRxhk1Qe1q1bx3333cdvfvMb1qxZQ6NGjbj//vu9\nqUDSNqkMI2ySlArjxo3j4osvZvr06QD069eP+++/n1122SXhyiRVZt62JEklsGjRIs455xy6du3K\n9OnT2WuvvRg9ejSDBw82rEkqdwY2SdqMjdOfe++9N3/961+pVasWAwYMYMqUKXTv3j3p8iRVEU6J\nSlIxRo0axZVXXsmMGTMAOOGEE3jggQdo06ZNwpVJqmocYZOkQj799FN69+7Nsccey4wZM9hrr714\n9dVXGT58uGFNUiIMbJKUtWzZMq644gratWvHSy+9RN26dRk4cCBTp06lR48eSZcnqQpzSlRSlbd2\n7VoeeeQRbr/9dpYvX04IgfPPP5/f/OY37LrrrkmXJ0kGNklVV15eHoMHD+aXv/wlc+bMATKL3953\n3320b98+2eIkqQADm6QqJ8bIq6++ys0338zUqVMB2G+//bjnnns47rjjXPxWUup4DZukKuWtt96i\nc+fO9OzZk6lTp7L77rvzxBNPMGXKFHr06GFYk5RKjrBJqhImTpzIbbfdxpgxYwBo0qQJv/jFL7jo\noovYfvvtE65OkjbPwCapUvv3v//NbbfdxsiRIwFo0KABV199Nddccw0NGjRIuDpJKhkDm6RKafz4\n8dxxxx289tprANSvX58rr7ySa665hh122CHh6iSpdAxskiqNGCOjRo3ijjvu4K233gKgbt26XHHF\nFVx77bU0adIk4QolaesY2CTlvLy8PF588UUGDhzI5MmTAWjUqBFXXHEFV1xxhUFNUs4zsEnKWatX\nr+bJJ5/k/vvv5/PPPwdgp5124pprruGSSy7xGjVJlYaBTVLOWbJkCY8++iiPPvooy5YtA6B169Zc\nc801nHfeedSpUyfhCiWpbBnYJOWM9957j4ceeohnn32WdevWAXDwwQdz/fXXc9JJJ1G9evWEK5Sk\n8mFgk5Rq69ev54UXXuChhx5iwoQJAIQQ6NmzJ9dddx1HHnmki91KqvQMbJJSaf78+Tz22GM89thj\nLFy4EMisoXb++edz2WWXscceeyRcoSRVHAObpNTIy8tj1KhR/PGPf+SVV14hPz8fgLZt23L55Zdz\n9tlnU69evYSrlKSKZ2CTlLg5c+bw5JNP8uSTTzJ37lwAatasyamnnspFF11Ely5dnPaUVKUZ2CQl\nYvXq1bzwwgv85S9/4Y033tjU3rp1ay688EL69+/PzjvvnGCFkpQeBjZJFSY/P59x48YxaNAgnn/+\neVauXAnA9ttvz8knn8x5551H165dqVatWsKVSlK6GNgklasYI1OnTmXQoEEMHjyYBQsWbHrt4IMP\n5vzzz+e0006jUaNGCVYpSelmYJNULqZNm8bQoUMZOnQoM2bM2NTeqlUrzjzzTM444wzatm2bYIWS\nlDsMbJLKRIyRjz76iGHDhjF06FCmT5++6bXGjRtz2mmnceaZZ9KpUydvIJCkUjKwSdpqeXl5TJw4\nkRdffJEXX3yRWbNmbXqtcePG9OnTh759+9KtWzdq1qyZYKWSlNsMbJJKZcWKFYwePZoRI0YwfPhw\nli5duum1nXbaiZ49e9K3b1+OOuooQ5oklREDm6TNijEybdo0RowYwYgRI5gwYQIbNmzY9Pqee+5J\n79696d27N506dfL7PCWpHBjYJH3PggULeP311xkzZgxjxozhP//5z6bXqlevTufOnenRowfHH388\n7dq185o0SSpnBjZJLF68mDfffJM333yTN954g48//vg7rzdt2pTjjjuOHj16cPTRR7sEhyRVMAOb\nVMXEGJkzZw4TJ07kzTffZNy4cXzyySff6VO3bl26du1K9+7d6d69u6NokpQwA5tUya1atYp3332X\nt99+m7fffpt//etfLF68+Dt96tSpw+GHH06XLl3o0qULhx56KNttt11CFUuSCjOwSZXI6tWr+eCD\nD3j33XeZPHky7777LtOnTyc/P/87/Zo0aUKnTp340Y9+RJcuXTjooIO8o1OSUszAJuWg/Px85syZ\nw5QpU5gyZQpTp05lypQpzJw5kxjjd/pWr16dDh060KlTp01bmzZtnOKUpBxiYJNS7JtvvuHzzz/n\nk08+YcaMGUyfPp0ZM2bwySefsGbNmu/1r169Ou3ateOggw7ihz/8IQcddBDt27endu3aCVQvSSor\nBjYpQWvWrOGLL75g3rx5zJ8/nzlz5vD5559v2pYsWVLse3fddVcOOOAA2rdvv2lr27YttWrVqsAj\nkCRVBAObVMa+/fZbli1bxldffcWyZcv48ssvWbRo0Xe2//znP3zxxRd8+eWXm91XrVq1aN26Nfvs\nsw9t27albdu27Lvvvuyzzz4urSFJVYiBTVXe119/zauvvkp+fj55eXmbtvz8fDZs2MDatWv59ttv\nv7OtWrWKlStX8t///nfTzxUrVvDVV18VOVVZnBo1arDbbrvRokULdt99d1q0aMGee+65aWvevDnV\nqlUrx6OXJOWCUPgC5cokhBAr8/GpbEyZMoUOHTqU2f5q1qxJkyZNaNKkCY0bN2bHHXdk1113ZZdd\ndtm0NW3alN13352mTZsayCRJAIQQiDEWeUeYI2yq8ho3bswZZ5xB9erVqVat2nd+Vq9ene233/57\nW506dWjQoAH169f/zs/GjRtTt25d78CUJJUpR9gkSZJSYHMjbM7FSJIkpZyBTZIkKeUMbJIkSSln\nYJMkSUq51Aa2EMJtIYQvQgjvZbefFHjtphDCzBDC9BDCMUnWKUmSVN5SG9iy7o8xdsxurwGEEPYF\n+gL7AscBvw8pWUNh7NixSZegbeD5y12eu9zm+cttnr+KkfbAVlQQOxEYEmPcEGOcA8wEDqnQqorh\nH9rc5vnLXZ673Ob5y22ev4qR9sB2WQjhgxDCYyGEhtm25sD8An0WZNskSZIqpUQDWwhhdAhhSoFt\navZnT+D3wB4xxh8Ai4D7kqxVkiQpKTnxTQchhJbA8Bhj+xDCjUCMMf42+9prwG0xxn8X8b70H5wk\nSVJWzn2XaAhhlxjjouzTk4CPso9fBp4JITxAZiq0DfBOUfso7qAlSZJySWoDG3B3COEHQD4wB7gQ\nIMb4cQhhKPAxsB64xC8MlSRJlVlOTIlKkiRVZWm/SzQnhBDuzi7i+0EIYVgIoUGB11zkN+VCCD8J\nIcwIIXwaQvh50vVo80IIu4UQ3gghTMveqHRFtn2HEMKoEMInIYSRBe4sV8qEEKplF0R/Ofvcc5cj\nQggNQwh/y/6dNi2EcKjnr2IY2MrGKKBd9o7WmcBNACGE/UjpIr/KCCFUAx4BjgXaAf1CCG2TrUpb\nsAG4JsbYDugEXJo9ZzcCY2KM+wBvkP09VCpdSeaylo08d7njQWBEjHFfoAMwA89fhTCwlYEY45gY\nY3726b+A3bKPe5HSRX61ySHAzBjj3BjjemAImcWZlVIxxkUxxg+yj78BppP5nTsReCrb7SmgdzIV\nanNCCLsBPYDHCjR77nJAdvboyBjjEwDZv9tW4PmrEAa2snceMCL72EV+06/wOfoCz1HOCCG0An5A\n5h9KTWOMiyET6oCdk6tMm/EAcD1Q8AJqz11uaA0sDSE8kZ3S/n8hhDp4/iqEga2EtrDI78Y+twDr\nY4zPJliqVCWEEOoBzwNXZkfaCt9B5R1VKRNCOB5YnB0h3dzlIZ67dKoBdAQejTF2BFaRmQ71d68C\npHlZj1SJMR69uddDCOeSGeY/qkDzAmD3As93y7YpPRYALQo89xzlgBBCDTJh7ekY40vZ5sUhhKYx\nxsUhhF2AJclVqGIcAfQKIfQAagP1QwhPA4s8dznhC2B+jHFy9vkwMoHN370K4AhbGQgh/ITMEH+v\nGOPaAi+9DJweQtguhNCazSzyq8RMAtqEEFqGELYDTidz3pRufwE+jjE+WKDtZeDc7ONzgJcKv0nJ\nijHeHGNsEWPcg8zv2hsxxrOA4XjuUi877Tk/hLB3tunHwDT83asQrsNWBkIIM4HtgGXZpn/FGC/J\nvnYTcD6ZRX6vjDGOSqZKFScbuB8k8w+Yx2OMAxMuSZsRQjgCeBOYSmbqJQI3k/nH0FAyo9pzgb4x\nxuVJ1anNCyF0Aa6NMfYKITTGc5cTQggdyNwwUhOYBfQHquP5K3cGNkmSpJRzSlSSJCnlDGySJEkp\nZ2CTJElKOQObJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElK\nOQObJElSytVIugBJyhUhhAuAHYF9gKeBlsDOwP7ADTHGBQmWJ6kSCzHGpGuQpNQLIfwMmBJj/HcI\n4WBgNHAusAp4DegRYxyZYImSKjFH2CSpZJrEGP+dfdwCyIsxvhhCqA10jTG+lWBtkio5R9gkqZRC\nCA8Bu8cY+yRdi6SqwZsOJKn0ugFjky5CUtVhYJOkLQghVAshdA8ZOwPtKBDYQgg3JFacpCrBwCZJ\nW3YhMArYC+gLrAa+AAgh9AI+Sq40SVWB17BJ0haEEDoA1wMzgA+BBsBRwBxgdoxxUHLVSaoKDGyS\nJEkp55SoJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElKOQOb\nJElSyhnYJEmSUu7/A9i2e0jPCtaoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(16,48,0.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks an awful lot like a quarter circle. And what's the radius of the arc? It's $$r = 48 = 3z_t.$$\n", + "\n", + "We can also get a semi-circle out of our simulated trammel by changing to another configuration where $C$ is (near) zero. Here's one example:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nvS8Z0/tyPr0nGdP7kjG9LznDb4/STXNNdhERERGvZozBXsZBG357lK6IiJyvQoUKxMTEOB1DxG+V\nL1+e/fv3e3y9GuETEZFU7lEEp2OI+K3M/g1e7gif9uETERER8XEqfCIiIiI+ToVPRERExMep8ImI\niIj4OBU+ERERkcu0du1aEhISOHv2LOvWrXM6znl0WhYREZF0Tp06xbhx4wgLC+PPP//k2Wef/dfj\nW7duJTIyksGDB2e6jsWLF7Nz504CAwO56qqr6Ny5c07HzpZt27Yxc+ZMJkyYkLrsYtufXl7Z1uzI\n6P3JSEREBDExMZQuXZp33nkHAGstxYsXJyAgIPXI22bNmjF37twcz52eCp+IiEg6Tz75JCNHjiQs\nLIyqVavywAMPUL58ecD1S3z48OHUrl07068/efIkL730Eps3bwagbt263HvvvZQoUSJX8mfV//3f\n/7F+/XqKFSv2r+UX2v70LmdbN2zYwI8//siJEyfo2rXreTmcltn7k5GhQ4fSokULypYtS2BgIAD7\n9+/nrbfe4o477iAgIIBFixZx991353TsDGlKV0REJI1ffvmFw4cPExYWBsDKlSv/VXYWLFhA48aN\nL7iOtWvXUqVKldT7t956K6tXr86ZwJfhmWeeoXXr1v9adrHtTy+727pv3z7ef/99nnjiCcLCwpg/\nf342tyLnZPT+ZCY4OJirr746tewB5M+fn7Zt21KhQgWKFi1KcHAwlStXzqm4F6QRPhER8Tk///wz\n77777r9OYpvyuTGG22+/nVatWmX4tV9++SWhoaF8+OGHnDhxgiJFitClSxcA4uLiCAgIoGTJkpw6\ndSrT1//111//NSpUrFgx9uzZ47kNdLuc7czMhbY/I9nd1ueff54XXngBgN27d/+rKKWXE9vpadHR\n0VhriYuL44YbbqBVq1aULVs29fHJkyfz9NNPO5ZPhU9ERLLEmGyf5P882b2ax8aNGxk1ahTlypUj\nICCAFi1a0KZNm/OeV7FiRcaMGZOt14iNjWXnzp3MmTMHgPr163PnnXdy/fXXs3DhQrp3784HH3xw\nwXWcOHGC/Pnzp97Ply8f8fHxWXr9rG4jXN52ZuZC25+R7Gzrb7/9RnR0NJs3b2bTpk18+OGHDB8+\nPNPn58R2elq3bt2oUaMGANWrV6dhw4aEhoYCrvcoLi6OkJAQx/Kp8ImISJ5x2223sWzZMt566y12\n7dpFmzZteO211+jUqRNXXnmlR16jSJEiVKtWLfV+WFgYK1eu5Pjx49SpUyfL6zh+/Hjq/TNnzlCm\nTJksfW36bWzUqBHjxo3jyiuvpFq1atSsWfPSNugSZbb9mRW+7Gzrl19+yf3330+PHj04ffo0gwYN\nolmzZjm+na+++ioJCQn/WpYyShgREXHBqeuLufXWW1M/L168OFFRUanTwXPnznVsKjeFCp+IiGSJ\nt1xjd/To0cTGxvLGG28ArunA9GUv7RRgWlmZAqxSpQrr169PvR8QEEBSUhLR0dGcPn2a5cuX89VX\nX5GQkMCnn36a4Xquu+46Nm3alHo/Li6O8PDwbG3ja6+9RuPGjQkPDyciIoJZs2Z5ZDszk9n2ZyY7\n23rw4MHUArR48WLuvfdeZs6cmePbOWjQoIs+JztmzZrFZ599lpo5Pj7+X1PUX375JY899liOvHaW\nWWv98ubadBERScvb/28cPXq0HTp0qLXW2p07d9p169bZe+65x3799dcee42EhAR7++23p96/4447\n7N69e//1nFGjRtkXX3wx9f6+fftscnJy6v1Tp07ZatWqpd6/9dZbbWxsrLXW2j179vzrueml38a+\nffvaAwcOWGutveeeey5jyzL2/vvv2y5duqTev9D2p99Oa7O3rVOnTrVTp0611lp777332piYGNuv\nX78c3c7sSv/+WHv++7B+/Xq7Zs0aa6218fHxtkKFCvbUqVOpj1evXt2uWrUqS6+X2b9B9/Js9x4d\npSsiInnChg0bqFatGs2bN6dJkyYsXLiQa665hkaNGnH77bd77HVCQkIYNWoUI0aMYPjw4fTp04fr\nrrsu9fGPP/6YxYsXs3jx4tQjSx944AG+++671OcULFiQQYMG8Z///IeXX36ZgQMHUrp0aQBatmzJ\nqlWrsryNwAUPaLgcb775JtOmTSMqKooXX3yRv/7664Lbn347s7utDz74INu3b2fq1KkMHz6csLAw\nkpOTc2w7syuj9wfOfx/q1avHwYMHmThxIkOHDmXOnDkULFgw9fESJUpQrly5XM+flrFeMkSf24wx\n1l+3XUQkM2mPgswLZs+eTfny5QkLC+Oaa65xOk6WJCcns2bNmoue2iXFG2+8Qf369alcuTJdunTh\no48+yuGEnnMp25qXt9OTMvs36F6e7SOnVPhERCRVXit8ixcvJjExkdtuu+2ydrjPTfPmzaNly5YU\n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\npozTkbyGRvjysB49elC9enUOHDjA2LFjnY4jIiLimISEhNRrz7/44osqex6mET6HffXVV9x5552E\nhITwww8/ULFiRacjiYiI5LqXX36ZESNGULVqVbZu3UpQkKNnjvM6GuHL4+rVq0fnzp05e/Ys/fv3\nxxtKqIiISG7av38/o0ePBuDNN99U2csBKnxe4NVXXyU0NJTPPvuM+fPnOx1HREQk11hr6d27NwkJ\nCXTs2JGGDRs6HcknaUrXS7zzzjv06tWLMmXKsGvXLooVK+Z0JBERkRw3Z84cOnbsSLFixdi1a5f2\n3cuEpnR9RPfu3alXrx6///47gwcPdjqOiIhIjjtx4kTqgRrjx49X2ctBGuHzIjt37qRGjRokJiay\nfv166tWr53QkERGRHNO9e3emTp1KgwYNWL16NQEBGofKjEb4fEiVKlUYNGgQ4Dply99//+1wIhER\nkZyxZs0apk6dSr58+XjnnXdU9nKY3l0vM3ToUK6//np++OEHxowZ43QcERERj0tISKBnz54ADBky\nhJtuusnhRL5PU7peaM2aNTRq1IigoCA2btxI9erVnY4kIiLiMYMGDWL8+PHcdNNNfPfdd4SEhDgd\nyetpStcHNWzYkH79+nHu3Dm6dOlCYmKi05FEREQ8YsOGDUyYMIGAgADef/99lb1cosLnpcaMGcO1\n117Ltm3bUk9GKSIikpedPn2aLl26YK1l0KBB1KlTx+lIfkNTul4sKiqKxo0ba2pXRER8wjPPPMNr\nr71GlSpV2Lx5s0b3LoGmdH1Yo0aN/jW1q6N2RUQkr1q/fj0TJ04kMDBQU7kOUOHzcmPGjKFixYps\n27aNUaNGOR1HRETkksXHx6dO5b7wwgvUqlXL6Uh+R1O6ecD69etp2LAh1lqioqJo0KCB05FERESy\nrFu3bkybNo1bbrmFjRs3ki9fPqcj5Tma0vUDd955Jy+88ALWWjp37swff/zhdCQREZEsWbBgAdOm\nTSN//vzMnj1bZc8hKnx5xMiRI7nttts4cOAAffv2dTqOiIjIRR06dIju3bsDrmvlVqlSxeFE/ktT\nunnI7t27qVGjBqdPn2bWrFl06tTJ6UgiIiIZSk5OplmzZnzxxRfce++9LF26FGOyPSPp9zSl60cq\nVarE66+/DkDv3r3Zv3+/s4FEREQy8dprr/HFF19QqlQppk+frrLnMI3w5THWWtq3b88nn3xC7dq1\nWbdunfaHEBERr7Jx40bq1atHYmIiS5Ys4f7773c6Up6nET4/Y4xh6tSphIWFER0dzeDBg52OJCIi\nkuqPP/6gQ4cOJCYm0q9fP5U9L6ERvjzqm2++oX79+pw7d47FixfTqlUrpyOJiIifSzsLVbNmTb76\n6iudYNlDNMLnp26//XbGjh0LQJcuXYiJiXE4kYiI+LtJkybxySefULRoUebNm6ey50U0wpeHWWtp\n1aoVS5cu5fbbb2ft2rUEBwc7HUtERPxQdHQ0d955J4mJicyfP5/27ds7HcmnaITPjxljeP/997nm\nmmv45ptvGDhwoNORRETEDx0/fpyHHnqIxMREnnzySZU9L6QRPh/w9ddf07BhQxITE3V+PhERyVVJ\nSUncd999REZGUqtWLdavX6+p3BygET6hbt26qefn69atG9u3b3c4kYiI+IsRI0YQGRlJyZIlmT9/\nvsqel9IIn4+w1vLEE0/w/vvvU7FiRTZt2kTx4sWdjiUiIj7sk08+oV27dgQEBPD555/TpEkTpyP5\nLI3wCeD6QXjrrbcIDw/n559/5pFHHiEpKcnpWCIi4qN27drFY489BsCrr76qsuflVPh8SIECBVi4\ncCElSpRg+fLljBw50ulIIiLig/7880/atm1LfHw8Dz/8MM8884zTkeQiNKXrg1atWkXz5s1JTk7m\no48+4uGHH3Y6koiI+IikpCRat27NsmXLuOWWW9iwYQOFChVyOpbP05SunKdp06a89tprADz++ONE\nR0c7nEhERHzFoEGDWLZsGSVKlOCTTz5R2csjNMLno6y19OrViylTplCmTBk2btzI1Vdf7XQsERHJ\nw6ZOnUr37t0JDg5m1apVNGjQwOlIfuNyR/hU+HxYYmIizZo1IyoqivDwcNauXau/xEREJFtWr15N\ns2bNOHfuHNOmTeOJJ55wOpJf0ZSuZCo4OJj58+dz3XXXsWXLFiIiIkhOTnY6loiI5DF79uyhffv2\nnDt3jueee05lLw9S4fNxJUqUYOnSpYSGhrJgwQIGDx7sdCQREclD4uLiuP/++zlx4gQtW7Zk7Nix\nTkeSbFDh8wM33XQT8+fPJygoiPHjx/Pmm286HUlERPKAM2fO0KpVK3bv3s0tt9zCrFmzCAwMdDqW\nZIMKn59o2rQpU6dOBeDJJ59k0aJFDicSERFvlpSUxKOPPsqGDRu4+uqr+eyzzyhSpIjTsSSbVPj8\nSEREBC+99BLWWjp27MjXX3/tdCQREfFC1lqefvppFi5cSGhoKCtWrKBcuXJOx5LLoKN0/Yy1lh49\nejB16lRKlCjB119/zQ033OB0LBER8SITJkxg4MCB5MuXj8jISBo1auR0JL+n07Jkk78WPoBz587R\nqlUrli9fzrXXXsv69eu56qqrnI4lIiJeYPbs2TzyyCMAulqTF9FpWeSSBQUFMW/ePGrVqsUvv/xC\n8+bNOX78uNOxRETEYcuWLSMiIgKA8ePHq+z5EBU+P1W4cGGWL1/OTTfdxI4dO7jvvvs4deqU07FE\nRMQh69at44EHHuDcuXMMHDiQZ5991ulI4kGa0vVzv/76K/Xq1ePAgQM0a9aMTz/9lJCQEKdjiYhI\nLtqyZQuNGzfm5MmTdO/enXfeeQdjsj17KDlAU7pyWa6++mo+//xzSpUqxcqVK+ncuTNJSUlOxxIR\nkVzy008/0aJFC06ePEmHDh14++23VfZ8kAqfUKlSJSIjIylatCgff/wx3bt31yXYRET8QExMDHff\nfTdHjx6lRYsWzJw5UydW9lEqfAJAjRo1WLp0KQUKFOC9996jV69eKn0iIj7swIEDNG7cmIMHD1Kv\nXj0WLFhAvnz5nI4lOUSFT1LVr1+fpUuXkj9/ft5991369euH9nMUEfE9v/76K40bN+aXX36hdu3a\nLFu2jIIFCzodS3KQCp/8S5MmTVIP3Hj77bcZMGCASp+IiA85dOgQjRs35ueff6ZWrVpERkYSGhrq\ndCzJYSp8cp67776bRYsWkS9fPt544w2eeeYZlT4RER9w+PBhmjRpwt69ewkPD2flypUUK1bM6ViS\nC1T4JEMtWrRg4cKFBAcHM3HiRAYNGqTSJyKSh/322280adKE3bt3U716dT7//HOKFy/udCzJJSp8\nkqn77ruP+fPnExQUxIQJE3juuedU+kRE8qDffvuNu+66i59++olbbrmFVatWccUVVzgdS3KRCp9c\nUKtWrZg3bx7BwcH83//9H3369NHRuyIieUhMTAwNGjRg165dVKtWjS+++IISJUo4HUtyma60IVny\n2Wef0b59exISEujcuTPTp08nKCjI6VgiInIBu3fvpmnTphw8eJDw8HAiIyMpWbKk07EkGy73Shsq\nfJJlq1evpmXLlpw6dYr27dsze/ZsnbNJRMRLbd++nWbNmhEbG0u9evVYtmyZjsbNw3RpNck1jRs3\n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\nvMsjiwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,-numpy.pi/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is so nice. We have reproduced the trajectories that Lanchester found more than a hundred years ago, painstakingly drawing them by hand with a contraption called a \"trammel.\" It must have taken him days!\n", + "\n", + "Here is how the different phugoid curves are drawn in von Kármán's book, _Aerodynamics_ (1957). He never says _how_ he drew them, but we're guessing by hand, also. We did pretty good!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/vonKarman-phugoids.png)\n", + "\n", + "#### Figure 4. Phugoid curves in von Kármán (1957)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next notebook of this series, we'll look at the differential equation that arises when you consider small perturbations on the horizontal phugoid, and we'll learn to numerically integrate that to get the flight paths." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Lanchester, F. W. _Aerodonetics_, D. van Nostrand Company: New York, 1909. On the public domain. [Get it from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PP1#v=onepage&q&f=false).\n", + "\n", + "2. Milne-Thompson, L. M. _Theoretical Aerodynamics_, Dover 2012 reprint of the revised 1966 edition. [Read on Google Books](http://books.google.com/books?id=EMfCAgAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see section 18.5)\n", + "\n", + "3. Sinha, N. K. and Ananthkrishnan, N. _Elementary Flight Dynamics with an introduction to Bifurcation and Continuation Methods_, CRC Press, 2013. [Read on Google Books](http://books.google.com/books?id=yXL6AQAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see chapter 5)\n", + "\n", + "4. von Kármán, T. _Aerodynamics_, Dover 2004 reprint of the 1957 2nd edition. (see pages 149–151)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "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 = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb b/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb new file mode 100644 index 0000000..eb6283b --- /dev/null +++ b/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb @@ -0,0 +1,949 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth. Partly based on David Ketcheson's pendulum lesson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Oscillation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome back! This is the second IPython Notebook of the series _\"The phugoid model of glider flight\"_, the first learning module of the course [**\"Practical Numerical Methods with Python.\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about)\n", + "\n", + "In the first notebook, _\"Phugoid Motion\"_, we described the physics of an aircraft's oscillatory trajectory, seen as an exchange of kinetic and potential energy. This analysis goes back to Frederick Lanchester, who published his book _\"Aerodonetics\"_ on aircraft stability in 1909. We concluded that first exposure to our problem of interest by plotting the flight paths predicted by Lanchester's analysis, known as _phugoids_.\n", + "\n", + "Here, we will look at the situation when an aircraft is initially moving on the straight-line phugoid (obtained with the parameters $C=2/3$, $\\cos\\theta=1$, and $z=z_t$ in the previous analysis), and experiences a small upset, a wind gust that slightly perturbs its path. It will then enter into a gentle oscillation around the previous straight-line path: a _phugoid oscillation_.\n", + "\n", + "If the aircraft experiences an upward acceleration of $-d^2z/dt^2$, and we assume that the perturbation is small, then $\\cos\\theta=1$ is a good approximation and Newton's second law in the vertical direction is:\n", + "\n", + "$$\\begin{equation}\n", + "L - W = - \\frac{W}{g}\\frac{d^2 z}{dt^2}\n", + "\\end{equation}$$\n", + "\n", + "In the previous notebook, we saw that the following relation holds for the ratio of lift to weight, in terms of the trim velocity $v_t$:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}=\\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "This will be useful: we can divide Equation (1) by the weight and use Equation (2) to replace $L/W$. Another useful relation from the previous notebook expressed the conservation of energy (per unit mass) as $v^2 = 2 gz$. With this, Equation (1) is rearranged as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d^2z}{dt^2} + \\frac{gz}{z_t} = g\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Look at Equation (3) for a moment. Does it ring a bell? Do you recognize it?\n", + "\n", + "If you remember from your physics courses the equation for _simple harmonic motion_, you should see the similarity! \n", + "\n", + "Take the case of a simple spring. Hooke's law is $F=-kx$, where $F$ is a restoring force, $x$ the displacement from a position of equilibrium and $k$ the spring constant. This results in the following ordinary differential equation for the displacement:\n", + "\n", + "$$\\begin{equation}\n", + " \\frac{d^2 x}{dt^2}= -\\frac{k}{m}x\n", + "\\end{equation}$$\n", + "\n", + "which has the solution $x(t) = A \\cos(\\omega t- \\phi)$, representing simple harmonic motion with an angular frequency $\\omega=\\sqrt{k/m}=2\\pi f$ and phase angle $\\phi$.\n", + "\n", + "Now look back at Equation (3): it has nearly the same form and it represents simple harmonic motion with angular frequency $\\omega=\\sqrt{g/z_t}$ around mean height $z_t$. \n", + "\n", + "Think about this for a moment ... we can immediately say what the period of the oscillation is: exactly $2 \\pi \\sqrt{z_t/g}$ — or, in terms of the trim velocity, $\\pi \\sqrt{2} v_t/g$.\n", + "\n", + "_This is a remarkable result!_ Think about it: we know nothing about the aircraft, or the flight altitude, yet we can obtain the period of the phugoid oscillation simply as a function of the trim velocity. For example, if trim velocity is 200 knots, we get a phugoid period of about 47 seconds—over that time, you really would not notice anything if you were flying in that aircraft.\n", + "\n", + "Next, we want to be able to compute the trajectory of the aircraft for a given initial perturbance. We will do this by numerically integrating the equation of motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare to integrate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to integrate the differential equation and plot the trajectory of the aircraft. Are you ready?\n", + "\n", + "The equation for the phugoid oscillation is a second-order, ordinary differential equation (ODE). Let's represent the time derivative with a prime, and write it like this:\n", + "\n", + "$$\\begin{equation}\n", + "z(t)'' + \\frac{g \\,z(t)}{z_t}=g\n", + "\\end{equation}$$\n", + "\n", + "There's a convenient trick when we work with ODEs: we can turn this 2nd-order equation into a system of two 1st-order equations. Like this:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z'(t) &=& b(t)\\\\\n", + "b'(t) &=& g\\left(1-\\frac{z(t)}{z_t}\\right)\n", + "\\end{eqnarray}$$\n", + "\n", + "Are you following? Make sure you are following the derivations, even if it means writing the equations down in your own notes! (Yes, the old-fashioned paper way.)\n", + "\n", + "Another way to look at a system of two 1st-order ODEs is by using vectors. You can make a vector with your two independent variables, \n", + "\n", + "$$\\begin{equation}\n", + "\\vec{u} = \\begin{pmatrix} z \\\\ b \\end{pmatrix}\n", + "\\end{equation}$$\n", + "\n", + "and write the differential system as a single vector equation:\n", + "\n", + "\\begin{equation}\n", + "\\vec{u}'(t) = \\begin{pmatrix} b\\\\ g-g\\frac{z(t)}{z_t} \\end{pmatrix}\n", + "\\end{equation}\n", + "\n", + "If you call the right-hand-side $\\vec{f}(\\vec{u})$, then the equation is very short: $\\vec{u}'(t) = \\vec{f}(\\vec{u})$—but let's drop those arrows to denote vectors from now on, as they are a bit cumbersome: just remember that $u$ and $f$ are vectors in the phugoid equation of motion.\n", + "\n", + "Next, we'll prepare to solve this problem numerically." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initial value problems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's step back for a moment. Suppose we have a first-order ODE $u'=f(u)$. You know that if we were to integrate this, there would be an arbitrary constant of integration. To find its value, we do need to know one point on the curve $(t, u)$. When the derivative in the ODE is with respect to time, we call that point the _initial value_ and write something like this:\n", + "\n", + "$$u(t=0)=u_0$$\n", + "\n", + "In the case of a second-order ODE, we already saw how to write it as a system of first-order ODEs, and we would need an initial value for each equation: two conditions are needed to determine our constants of integration. The same applies for higher-order ODEs: if it is of order $n$, we can write it as $n$ first-order equations, and we need $n$ known values. If we have that data, we call the problem an _initial value problem_.\n", + "\n", + "Remember the definition of a derivative? The derivative represents the slope of the tangent at a point of the curve $u=u(t)$, and the definition of the derivative $u'$ for a function is:\n", + "\n", + "$$u'(t) = \\lim_{\\Delta t\\rightarrow 0} \\frac{u(t+\\Delta t)-u(t)}{\\Delta t}$$\n", + "\n", + "If the step $\\Delta t$ is already very small, we can _approximate_ the derivative by dropping the limit. We can write:\n", + "\n", + "$$\\begin{equation}\n", + "u(t+\\Delta t) \\approx u(t) + u'(t) \\Delta t\n", + "\\end{equation}$$\n", + "\n", + "With this equation, and because we know $u'(t)=f(u)$, if we have an initial value, we can step by $\\Delta t$ and find the value of $u(t+\\Delta t)$, then we can take this value, and find $u(t+2\\Delta t)$, and so on: we say that we _step in time_, numerically finding the solution $u(t)$ for a range of values: $t_1, t_2, t_3 \\cdots$, each separated by $\\Delta t$. The numerical solution of the ODE is simply the table of values $t_i, u_i$ that results from this process." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discretization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to execute the process described above and find the numerical solution of the ODE, we start by choosing the values $t_1,t_2,t_3 \\cdots t_n$—we call these values our *grid* in time. The first point of the grid is given by our _initial value_, and the small difference between two consecutive times is called the _time step_, denoted by $\\Delta t$. The solution value at time $t_n$ is denoted by $u_n$.\n", + "\n", + "Let's build a time grid for our problem. We first choose a final time $T$ and the time step $\\Delta t$. In code, we'll use readily identifiable variable names: `T` and `dt`, respectively. With those values set, we can calculate the number of time steps that will be needed to reach the final time; we call that variable `N`. \n", + "\n", + "Let's write some code. The first thing we do in Python is load our favorite libraries: NumPy for array operations, and the Pyplot module in Matplotlib, to later on be able to plot the numerical solution. The line `%matplotlib inline` tells IPython Notebook to show the plots inline." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy \n", + "from matplotlib import pyplot\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, initialize `T` and `dt`, calculate `N` and build a NumPy array with all the values of time that make up the grid." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100.0\n", + "dt = 0.02\n", + "N = int(T/dt)+1\n", + "t = numpy.linspace(0.0, T, N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have our grid! Now it's time to apply the numerical time stepping represented by Equation (10)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Write the code above using the NumPy function `arange()` instead of `linspace()`. If you need to, read the documentation for these functions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enter a question mark followed by any function, e.g., `?numpy.linspace`, into a code cell and execute it, to get a help pane on the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The approximate solution at time $t_n$ is $u_n$, and the numerical solution of the differential equation consists of computing a sequence of approximate solutions by the following formula, based on Equation (10):\n", + "\n", + "$$u_{n+1} = u_n + \\Delta t \\,f(u_n).$$\n", + "\n", + "This formula is called **Euler's method**.\n", + "\n", + "For the equations of the phugoid oscillation, Euler's method gives the following algorithm that we need to implement in code:\n", + "\n", + "\\begin{align}\n", + "z_{n+1} & = z_n + \\Delta t \\, b_n \\\\\n", + "b_{n+1} & = b_n + \\Delta t \\left(g - \\frac{g}{z_t} \\, z_n \\right).\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To apply the numerical solution method, we need to set things up in code: define the parameter values needed in the model, initialize a NumPy array to hold the discrete solution values, and initialize another array for the elevation values." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# initial conditions\n", + "z0 = 100. #altitude\n", + "b0 = 10. #upward velocity resulting from gust\n", + "zt = 100.\n", + "g = 9.81\n", + "\n", + "u = numpy.array([z0, b0])\n", + "\n", + "# initialize an array to hold the changing elevation values\n", + "z = numpy.zeros(N)\n", + "z[0] = z0 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should pay attention to a couple of things: (1) See how there is a dot after the numbers used to define our parameters? We just want to be explicit (as a good habit) that these variables are real numbers, called \"floats.\" (2) We both _created_ and _initialized_ with zeros everywhere the solution vector `z`. Look up the documentation for the handy NumPy function `zeros()`, if you need to. (3) In the last line above, we assign the _initial value_ to the first element of the solution vector: `z[0]`.\n", + "\n", + "Now we can step in time using Euler's method. Notice how we are time stepping the two independent variables at once in the time iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-loop using Euler's method\n", + "for n in range(1,N):\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make sure you understand what this code is doing. This is a basic pattern in numerical methods: iterations in a time variable that apply a numerical scheme at each step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the code is correct, we have stored in the array `z` the position of the glider at each time. Let's use Matplotlib to examine the flight path of the aircraft.\n", + "\n", + "You should explore the [Matplotlib tutorial](http://matplotlib.org/users/pyplot_tutorial.html) (if you need to) and familiarize yourself with the command-style functions that control the size, labels, line style, and so on. Creating good plots is a useful skill: it is about communicating your results effectively. \n", + "\n", + "Here, we set the figure size, the limits of the vertical axis, the format of tick-marks, and axis labels. The final line actually produces the plot, with our chosen line style (continuous black line)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4)) #set plot size\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z, 'k-');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Explore and think" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try changing the value of `v` in the initial conditions. \n", + "\n", + "* What happens when you have a larger gust? \n", + "* What about a smaller gust? \n", + "* What happens if there isn't a gust (`v = 0`)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equation for phugoid oscillations is a 2nd-order, linear ODE and it has an exact solution of the following form:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "z(t) = A \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + B \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $A$ and $B$ are constants that we solve for using initial conditions. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our numerical solution used the initial conditions:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z(0) = z_0 \\\\\n", + "b(0) = b_0\n", + "\\end{eqnarray}$$\n", + "\n", + "Applying these to the exact solution and solving for $A$ and $B$, we get:\n", + "\n", + "$$\\begin{equation}\n", + "z(t) = b_0 \\sqrt{\\frac{z_t}{g}} \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + (z_0-z_t) \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already defined all of these variables for our numerical solution, so we can immediately compute the exact solution. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The expression is a bit long —if you don't feel like scrolling left and right, you can insert a line break in the code using a backslash '\\' _(without any trailing spaces)_ and Python will treat the next line as a continuation of the first." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot our exact solution! Even better, we can plot _both_ the numerical solution *and* the exact solution to see how well Euler's method approximated the phugoid oscillations.\n", + "\n", + "To add another curve to a plot, simply type a second `pyplot.plot()` statement. We also added a legend using the format\n", + "\n", + "```Python\n", + "pyplot.legend([\"line 1\",\"line 2\"])\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nXZ3JngAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4))\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z)\n", + "pyplot.plot(t, z_exact)\n", + "pyplot.legend(['Numerical Solution','Analytical Solution']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks like pretty good agreement, but what's happening towards the end? We'll come back to this. For now, re-run the previous steps with a different timestep, say $dt=0.01$ and pay attention to the difference.\n", + "\n", + "Euler's method, like all numerical methods, introduces some errors. If the method is *convergent*, the approximation will get closer and closer to the exact solution as we reduce the size of the step, $\\Delta t$. The error in the numerical method should tend to zero, in fact, when $\\Delta t\\rightarrow 0$—when this happens, we call the method _consistent_. We'll define these terms more carefully in the theory components of this course. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compare the two solutions, we need to use a **norm** of the difference, like the $L_1$ norm, for example.\n", + "\n", + "$$ E = \\Delta t \\sum_{n=0}^N \\left|z(t_n) - z_n\\right|$$\n", + "\n", + "The $L_1$ norm is the sum of the individual differences between the exact and the numerical solutions, at each mesh point. In other words, $E$ is the discrete representation of the integral over the interval $T$ of the (absolute) difference between the computed $z$ and $z_{\\rm exact}$:\n", + "\n", + "$$ E = \\int \\vert z-z_\\rm{exact}\\vert dt $$\n", + "\n", + "We check for convergence by calculating the numerical solution using progressively smaller values of `dt`. We already have most of the code that we need. We just need to add an extra loop and an array of different $\\Delta t$ values to iterate through. \n", + "\n", + "You should read the documentation for the function [enumerate](https://docs.python.org/2/library/functions.html#enumerate) and make sure you understand how we're using it below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Warning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cell below can take a little while to finish (the last $\\Delta t$ value alone requires 1 million iterations!). If the cell is still running, the input label will say `In [*]`. When it finishes, the `*` will be replaced by a number." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-increment array\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001, 0.0001])\n", + "\n", + "# array that will contain solution of each grid\n", + "z_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " N = int(T/dt)+1 # number of time-steps\n", + " ### discretize the time using numpy.linspace() ###\n", + " t = numpy.linspace(0.0, T, N)\n", + "\n", + " # initial conditions\n", + " u = numpy.array([z0, b0])\n", + " z = numpy.empty_like(t)\n", + " z[0] = z0\n", + " \n", + " # time loop - Euler method\n", + " for n in range(1,N):\n", + " ### compute next solution using Euler method ###\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0] # store the elevation at time-step n+1\n", + " \n", + " z_values[i] = z.copy() # store the total elevation calculation grid i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculate the error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical solutions for each $\\Delta t$ in the array `z_values`. To calculate the error corresponding to each $\\Delta t$, we can write a function! " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_error(z, dt):\n", + " \"\"\"Returns the error relative to analytical solution using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array of float\n", + " numerical solution.\n", + " dt : float\n", + " time increment.\n", + " \n", + " Returns\n", + " -------\n", + " err : float\n", + " L_{1} norm of the error with respect to the exact solution.\n", + " \"\"\"\n", + " N = len(z)\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt\n", + " \n", + " return dt * numpy.sum(numpy.abs(z-z_exact))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: in the last line of the function, we perform an 'array operation': \n", + "\n", + "`z - z_exact`\n", + "\n", + "We are *not* subtracting one value from another. Instead, we are taking the difference between elements at each corresponding index in both arrays. Here is a quick example:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 2, 1])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = numpy.array([1, 2, 3])\n", + "b = numpy.array([4, 4, 4])\n", + "\n", + "b - a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we iterate through each $\\Delta t$ value and calculate the corresponding error. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " ### call the function get_error() ###\n", + " error_values[i] = get_error(z_values[i], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember, *if* the method is convergent then the error should get smaller as $\\Delta t$ gets smaller. To visualize this, let's plot $\\Delta t$ vs. error. If you use `pyplot.plot` you won't get a very useful result. Instead, use `pyplot.loglog` to create the same plot with a log-log scale. This is what we do almost always to assess the errors of a numerical scheme graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nWtIESavUofkys59KukjSFElDJT0gaaGZbStJ7n6pu+/s7ru4e3Pbl4Yssi9f7eb72p626+75rp7r\nuL6z7aL42rq3P7OQ14XOM591Scqy0Nf2Ns9C1pdLnqX4Xe9sHXnm91xf1hVbnP/uZN/s3XaF5tmV\nSJo4d1/o7pPd/XZJ6zvZ5AxJ17n7Ne7+vLuPl/S6pJO7ek8zu1vSrZJGm9krZrZnX+uMw//ZpWri\nVqxY0W0dIcT5L6KunuvNX0RxzrLQ18bhL/a05BmXJo48wzVxpciyqzpCv47f9XCvLWUTF/klRsxs\npaRT3X1mbrm/pI8lHZlr8lq3u1jSTu6e6ePP45ArAABIjK4uMdKv1IXkYUtJG0t6s8P6tyRt3dc3\n7yoIAACAJOHsVAAAgASKYxP3jqR1kgZ3WD9YLXNxAAAAZS92TZy7r5H0uKQDOjy1v1rOUgUAACh7\nkczEmdlASTvkFjeS9BUzGyrpXXd/RdL/SLrezB5RS+N2klrm4S6Pol4AAIC4ieTsVDPLSGrKLbr+\ndX236e7+s9w2J0s6U9IQSX+SdLq731fiUgEAAGIp8kuMIBnMbIWkD9RyXb/33H2/aCtKPjPbRNKz\nkm51919GXU9SmdkgSYvVcmShv6TL3P3iaKtKptwF1a+X9AVJn0j6jbvfFm1VyWZmsyUNl9To7kdE\nXU8SmdlBki5Uy5G789z9mohLig2aOOTFzF6S9C13/39R15IWZvZbSZWSXnb3M6OuJ6nMbCNJ/d29\nOdcYPyNpD3d/O+LSEsfMtpa0lbs/bWaD1TKfvIO7r4q4tMQys+GSNpV0HE1c4cysn1p+pzOSVkp6\nQtL33P29KOuKi9id2IBY4xp7gZjZDpK+LmmhyLVP3H19m9vvfVbSaknN3bwEXXD3N9z96dyf31TL\n1QK2iLaqZHP3pZI+irqOBNtD0jPu/rq7fyRpgTY88bFs0cQhXy7pXjN7xMyOirqYFLhA0llRF5EW\nZraZmT0l6WVJU919ZdQ1JZ2Z7SppI3d/LepaUNa2kdR2H3xV0hcjqiV24njHBsTTD9z99dzhlrvN\n7E/u/qeoi0oiMztE0gvu/lcz2zvqetLA3T+Q9F0z20rSEjNrcPe/Rl1XUpnZFpJmSBoXdS0oe8x8\ndYNv4lLIzIaZ2Vwze9XM1pvZcZ1sc4qZvWRmq8zssbbNRO65ZWb2hJlVSJK7v5773zfU8nX2LqX6\nPFErQp57SjoyN2d4gaQTzGxy6T5RtIqxf7Zy97ckZSUNLfoHiYFiZGlmAyTNlnSuuz9Uuk8TvSLu\nm2XbiPQ1U0n/UPtv3r6k9t/MlTWauHQaKOlpSRMkrVKHv0DM7KeSLpI0RS3/sXtA0sLcmWly90vd\nfWd336V1WNzMNs299nOSfijpzyX7NNELmqe7n+3uX3b3r0r6v5KucvcpJfw8UQu9f27VZv/cTNI+\nufcvB6GzNEnTJTW5+42l+xixETTPti8tRfEx1adMJT0qaScz2yb3358DJd1Votrjz915pPihlrN5\nju2w7mFJV3RY94Kk33XxHl+V9GTu8SdJ1VF/riTn2WG74ySdH/XnSnKeknaXtCy3fy7r+H7l8giU\n5d5que3hE7ksl6nlrPTIP18S88w9f7ektyR9LOkVSXtG/dmSlqmkgyU9L+lFSeOi/hxxejATV2bM\nrL9aDoWe3+GpBkl7dfYad39JZXJ4qlC9ybMtd59RjLqSqpf756OSdi5yaYnTyyzvk7RxkUtLpN7+\nrrv7iGLWlWT5Zuru8yTNK2FpicHh1PKzpVr+kn6zw/q31HJrMxSGPMMiz3DIMizyDI9M+4gmDgAA\nIIFo4srPO2qZeRncYf1gSa+XvpzEI8+wyDMcsgyLPMMj0z6iiSsz7r5GLbfS6XjF6/3VclYQCkCe\nYZFnOGQZFnmGR6Z9x4kNKWRmAyXtkFvcSNJXzGyopHfd/RVJ/yPpejN7RC2/KCepZf7g8ijqjTvy\nDIs8wyHLsMgzPDItsqhPj+UR/qGWGwWvzz3WtfnztW22OVnSS2q5x+SjkvaOuu64PsiTPOP6IEvy\njPuDTIv7sFyAAAAASBBm4gAAABKIJg4AACCBaOIAAAASiCYOAAAggWjiAAAAEogmDgAAIIFo4gAA\nABKIJg4AACCBaOIAAAASiCYOAApkZgPM7AUz+0HUtQAoXzRxAFC4EyVtLmlKdxuZ2cZm9pyZbVOa\nsgCUE5o4ACiAmW0i6euSzpY03MxGdLP5rpK2cPd/lKQ4AGWFJg4ACnOKpEskXStpuaTfdLPtvpKa\nSlEUgPJDEwcAeTKz/yPpi+7+rLuvk1QnaU8zO6jDdj82s/+VdLqkz5nZ/5rZ1yMoGUCKmbtHXQMA\nJIKZ/UrSLe7+t9yySfqTpDXuvkuHbftLek/SLu7+QsmLBZB6fBMHAHkwsy0kbd7awEmSt/wr+BxJ\nQ81sTIeX/EDShzRwAIqFJg4A8lMt6Q8dV7r7HZKekFSX+2au1f6SsqUpDUA5ookDgB6Y2WBJ/d39\ntS42+S9J35R0VJt1I5Rr4sxsbzMbUNQiAZQdZuIAoAe5kxQelPRWN5tNl7RG0o7uvs7MPpa0l6Tn\nJE109/OKXiiAskITBwDdMLOtJb0kKZ9v0lzSz9x9hpldKGmtpLclXeHuHxexTABliCYOAAAggZiJ\nAwAASCCaOAAAgASiiQMAAEggmjgAAIAEookDAABIIJo4AACABKKJAwAASCCaOAAAgAT6/wsNBajn\noDeVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10, 6))\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase tick font size\n", + "pyplot.grid(True) #turn on grid lines\n", + "pyplot.xlabel('$\\Delta t$', fontsize=16) #x label\n", + "pyplot.ylabel('Error', fontsize=16) #y label\n", + "pyplot.loglog(dt_values, error_values, 'ko-') #log-log plot\n", + "pyplot.axis('equal') #make axes scale equally;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the kind of result we like to see! As $\\Delta t$ shrinks (towards the left), the error gets smaller and smaller, like it should." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We calculated the error for several different timestep sizes using two nested `for` loops. That worked, but whenever possible, we like to re-use code (and not just copy and paste it!). \n", + "\n", + "Create a function that implements Euler's method and re-write the error analysis cell to use your function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb b/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb new file mode 100644 index 0000000..742302d --- /dev/null +++ b/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb @@ -0,0 +1,929 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, I. Hawke. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Full phugoid model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the third IPython Notebook of the series on the _phugoid model of glider flight_, our first learning module of the course [\"Practical Numerical Methods with Python\"](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about). In the first notebook, we described the physics of the trajectories known as phugoids obtained from an exchange of potential and kinetic energy in an idealized motion with no drag. We gave you a neat little code to play with and plot various phugoid curves.\n", + "\n", + "In the second notebook, we looked at the equation representing small perturbations on the straight-line phugoid, resulting in simple harmonic motion. This is a second-order ordinary differential equation, and we solved it numerically using **Euler's method**: the simplest numerical method of all. We learned about convergence and calculated the error of the numerical solution, comparing with an analytical solution. That is a good foundation!\n", + "\n", + "Now, let's go back to the dynamical model, and take away the idealization of no-drag. Let's remind ourselves of the forces affecting an aircraft, considering now that it may be accelerating, with an instantaneous upward trajectory. We use the designation $\\theta$ for the angle, and consider it positive upwards." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "In lesson 1, we wrote the force balance in the directions perpendicular and parallel to the trajectory for a glider in _equilibrium_. What if the forces are _not_ in balance? Well, there will be acceleration terms in the equations of motion, and we would have in that case:\n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Recall, from our first lesson, that the ratio of lift to weight is known from the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynam-ically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The initial value problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to visualize the flight trajectories predicted by this model, we are going to need to integrate the spatial coordinates, which depend on both the forward velocity (tangential to the trajectory) and the trajectory angle. The position of the glider on a vertical plane will be designated by coordinates $(x, y)$ with respect to an inertial frame of reference, and are obtained from:\n", + "\n", + "\\begin{align}\n", + "x'(t) & = v \\cos(\\theta) \\\\\n", + "y'(t) & = v \\sin(\\theta).\n", + "\\end{align}\n", + "\n", + "Augmenting our original two differential equations by the two equations above, we have a system of four first-order differential equations to solve. We will use a time-stepping approach, like in the previous lesson. To do so, we do need *initial values* for every unknown:\n", + "\n", + "$$\n", + "v(0) = v_0 \\quad \\text{and} \\quad \\theta(0) = \\theta_0\\\\\n", + "x(0) = x_0 \\quad \\text{and} \\quad y(0) = y_0\n", + "$$\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve with Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know how to apply Euler's method from the previous lesson. We replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "Alright, we know where this is going. At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we've learned before, the system of differential equations can also be written as a vector equation:\n", + "\n", + "$$u'(t) = f(u)$$\n", + "\n", + "where\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix}.\n", + "\\end{align}\n", + "\n", + "It's a bit tricky to code the solution using a NumPy array holding all your independent variables. But if you do, a function for the Euler step can be written that takes any number of simultaneous equations. It simply steps in time using the same line of code:\n", + "\n", + "```Python\n", + "def euler_step(u, f, dt):\n", + " return u + dt * f(u)\n", + "```\n", + "\n", + "This function can take a NumPy array `u` with any number of components. All we need to do is create an appropriate function `f(u)` describing our system of differential equations. Notice how we are passing a _function_ as part of the arguments list to `euler_step()`. Neat!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we start by loading the modules and libraries that we need for this problem. We'll need a few transcendental functions, including the $\\log$ for a convergence study later on. And remember: the line `%matplotlib inline` is a magic function that tells Matplotlib to give us the plots in the notebook (the default behavior of Matplotlib is to open a pop-up window). In addition, we are importing the module `rcParams` to define notebook-wide plotting parameters: font family and size. Here we go!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log, ceil\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set things up to start our numerical solution: the parameter \n", + "values and the _initial values_. You know what the acceleration of gravity is: 9.8 m/s$^2$, but what are good values for $C_D/C_L$, the inverse of the aerodynamic efficiency? Some possible values are given on a table in the Wikipedia entry for [lift-to-drag ratio](http://en.wikipedia.org/wiki/Lift-to-drag_ratio): a modern sailplane can have $L/D$ of 40 to 60, depending on span (and, in case you're interested, a flying squirrel has $L/D$ close to 2).\n", + "\n", + "For the _trim velocity_, the speed range for typical sailplanes is between 65 and 280 km/hr, according to Wikipedia (it must be right!). Let's convert that to meters per second: 18 to 78 m/s. We'll pick a value somewhere in the middle of this range.\n", + "\n", + "Here's a possible set of parameters for the simulation, but be sure to come back and change some of these, and see what happens!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 30.0 # trim velocity in m s^{-1} \n", + "C_D = 1/40 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = v_t # start at the trim velocity (or add a delta)\n", + "theta0 = 0 # initial angle of trajectory\n", + "x0 = 0 # horizotal position is arbitrary\n", + "y0 = 1000 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll define a function `f()` to match the right-hand side of Equation (15), the full differential system in vector form. This function assumes that we have available the parameters defined above. If you re-execute the cell above with different parameter values, you can just run the solution without re-executing the function definition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the code defining function `f(u)` with the differential equations, and convince yourself that it's right!\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix} \\nonumber\n", + "\\end{align}\n", + "\n", + "Now, Euler's method is implemented in a simple function `euler_step()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equations.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After defining a final time for the solution, and the time step $\\Delta t$, we can construct the grid in time using the NumPy function [`linspace()`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html). Make sure you study the decisions we made here to build the time grid: why do we add 1 to the definition of `N`, for example?\n", + "\n", + "Look at the code below, and make sure you understand the following aspects of it.\n", + "\n", + "* The NumPy array `u` contains the solution at every time-step, consisting of the velocity, angle and location of the glider. \n", + "* The first element of the array `u` is set to contain the initial conditions. \n", + "* In the `for`-loop, the function `euler_step()` is called to get the solution at time-step $n+1$. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100 # final time\n", + "dt = 0.1 # time increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u = numpy.empty((N, 4))\n", + "u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values\n", + "\n", + "# time loop - Euler method\n", + "for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to plot the path of the glider, we need the location (`x`, `y`) with respect to time. That information is already contained in our NumPy array containing the solution; we just need to pluck it out. \n", + "\n", + "Make sure you understand the indices to `u`, below, and the use of the colon notation. If any of it is confusing, read the Python documentation on [Indexing](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider's position with respect to the time\n", + "x = u[:,2]\n", + "y = u[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to plot the path of the glider and get the distance travelled!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nnMGDB7Np0ybGjx9PcXExr7zyStwh5h0dAamBjoCIiNRPs2fPZvTo0VRUVNCgQQPGjh3LuHHjaNAg\nv3831xRMQqgAERGpv7Zu3cq4ceO4+eabcXeGDBnC5MmT83pKRlMwUqfo/PpolKfolKtolKfoMuVq\nr7324i9/+QszZ86kRYsWPPHEE/Ts2ZOPP/449wHmGRUgIiKS9372s59RXl5Ohw4dWLBgAb1792bd\nunVxh1WvaQqmBpqCERHJHx999BF9+vRhyZIldOzYkbKysrw7VVdTMCIiIjl24IEHUlpaSnFxMcuX\nL2fAgAF8+eWXcYdVL6kAkazQPHQ0ylN0ylU0ylN0UXPVunVrXnzxRTp27MjixYs588wz2bJlS+0G\nl4dUgIiIiKRp1aoVM2fOpE2bNpSVlTFixIgab3Ynu0drQGqgNSAiIvmroqKCnj178uWXXzJ27Fiu\nu+66uEOqdboOSEKoABERyW+zZs1iwIABVFZW8thjj3H22WfHHVKt0iJUqVM0Dx2N8hSdchWN8hTd\nnuaqX79+3HzzzQCMHDmSRYsWZTGq/KUCREREpAa//e1vufDCC9m8eTNnnnkmn376adwh1XmagqmB\npmBERARgy5Yt9OrVi1dffZX+/fszY8aMennfGE3BiIiIJMjee+/N1KlT2X///Xnuuee44YYb4g6p\nTlMBIlmheeholKfolKtolKfospGrdu3a8eCDD2JmjB8/nhdeeOGHB5anVICIiIjshv79+zN27Fjc\nnfPPP58PPvgg7pDqJK0BqYHWgIiISLrt27czYMAAnn/+eXr06EFZWRkFBQVxh5UVWgMiIiKSUA0b\nNmTKlCkccsghzJ8/nyuvvDLukOocFSCSFZqHjkZ5ik65ikZ5ii7buWrdujWPPfYYjRo1YsKECUyf\nPj2r+6/vVICIiIjsoR49enzvImXLly+POaK6Q2tAaqA1ICIisivuzjnnnMPjjz9Oly5dKC8vp1mz\nZnGHtce0BkRERKQOMDMmTZpE586dWbp0KSNHjkS/uNZMBYhkheaho1GeolOuolGeoqvNXDVr1own\nn3ySFi1aMH36dP785z/X2mfVFypAREREsqBjx45MmTIFM+MPf/gDzz77bNwhJZrWgNRAa0BERGR3\nXH/99YwbN47mzZszb948jjrqqLhD2i25WgOiAqQGKkBERGR3VFZWcs455zBt2jTatm1LeXk5Bx98\ncNxhRaZFqCEz62lmpWb2jpmtMrMZZtY5rc8BZnadmZWb2etm9paZvWZmF2bYX4GZXR/2edPM5pnZ\nSbn7RvWT5qGjUZ6iU66iUZ6iy1WuGjRowOTJk+nRowdr1qzh9NNPZ+PGjTn57Lok0QWImfUCXgRm\nuPsR7t4eWAXMMbNDU7oeD/wn8Gt37+bunYF7gfvN7IK03U4EzgZOdvejgUnALDM7pna/jYiI5Ism\nTZrwz3/+kyOOOIJFixYxePBgNm/eHHdYiZLoKRgzmwO0d/d2KW3NgI+AB9z9V2Fbd+Cn7n5j2vvX\nAy+6+7Bw+0hgKTDK3e9P6fcvYJW7D8wQg6ZgRERkj7z33nucfPLJrFu3jr59+/LUU0/RpEmTuMPa\nJU3BBLoBb6c2uPtGYDVwRkpbeYbiowBoAnyS0jwEMKA07XNKgX5m1jR7oYuISL7r0KEDpaWlHHjg\ngbzwwgsMHjyYr7/+Ou6wEiHpBchXZI6xEjjIzPbJ9CYz2w+4A1gD3JDyUjGwHXg/7S0rgUZAlx8a\ncL7SPHQ0ylN0ylU0ylN0ceWqU6dOvPTSSxxwwAE8//zz9OnTh08++aTmN9ZzSS9AFgJHmVmjqgYz\nawEUhZvNUzubWRMzewv4mKCYGOzuH6R0aQVszjCnsiF83j+bwYuIiAB06dKF0tJS2rVrxyuvvEKP\nHj1YtmxZ3GHFKulrQI4D5gO3AtcQHKW4DRgGFAKt3H19hvc1JliUei0wwt2nh+2zgBPcvUVa/0uA\nu4EB7j4z7TWtARERkaxYu3YtAwcOZMGCBRQWFnLHHXcwYsSIuMP6nlytAWlUc5f4uPtrZtYXuApY\nAnwBPARsAYZnKj7C930D3GxmfYC/m9mT7l4JfAoU2s5VRdWRlM8y7W/kyJG0b98egJYtW9K1a1dO\nPfVU4LtDetrWtra1rW1tR9mePXs2l156KY888ggXXnghJSUlTJgwYccRkVzHU/XnVatWkVPuXuce\nQAkwK2W7MdAgQ7+/EqwX6RBuXxlut0vrNxHYCjTNsA+XmpWWlsYdQp2gPEWnXEWjPEWXpFxVVlb6\nvffe602bNnXAmzVr5n/961/9q6++ijs0D//fq/X/yxO9BsTM2plZcVpbC+Bk4O8pzXcD52TYRXuC\nguPzcHs64EDvtH69CQoanaQtIiK1zsy4+OKLefPNNxk0aBAbN25kzJgxtGvXjvHjx+f+aEQMkr4G\nZCQwBjjJ3debWSFwH9DQ3c9K6Xcf0BUY5OGiUzMbCjwKTHH3kSl97yAoOE5y98/M7CLgb8CJ7l6R\nIQZPco5ERKTue/bZZ7nuuusoLy/f0da9e3dOO+00TjnlFI477jgKCwtzEovuBQOY2bHATcARwHqC\nU2inAre4+/aUfkcB/w70JDjisRewieAqp3en9W0EjCe4Guo2gjNgxrj7vGpiUAEiIiK1zt2ZO3cu\nt99+O0899dROV05t164dnTt3pkOHDhQVFXH44YdTVFREUVERLVu2zFocKkASQgVINGVlZTsWNkn1\nlKfolKtolKfo6lKuNm3axMyZM5k9ezZz5sxhyZIlbNu2rdr+++67745ipKioiOLiYvr27UubNm12\n+7N1FoyIiEieKiwsZOjQoQwdOhSAb7/9lhUrVvD222+zYsUKVq5cueN55cqVrF+/nvXr17NgwYLv\n7adr165ceOGFDB8+nNatW8fxVaqlIyA10BEQERFJMnfnk08++V5hMn/+fMrKynZM4xQUFDBq1Ciu\nueYaDj300F3uT1MwCaECRERE6qKtW7dSUlLCvffeS0lJCe5O48aNueKKKxg7dix77713xvfpZnRS\np6Re0EaqpzxFp1xFozxFl2+52muvvRgyZAjPPPMMS5Ys4bzzzmPbtm3ceOONdO3alVdeeSXW+FSA\niIiI1HOdO3fm4YcfZu7cuXTq1Illy5bRs2dPJk6cSFxH+TUFUwNNwYiISH2yZcsWrr76am699VYA\nRowYwT333EPjxo0BrQFJDBUgIiJSHz366KOMGjWKTZs28fOf/5xp06ZRWFioNSBSt+Tb3OqeUp6i\nU66iUZ6iU66+79xzz2XOnDm0bt2amTNn0rdvX7788sucfb4KEBERkTz1k5/8hLlz53LYYYdRXl5O\n//79c/bZmoKpgaZgRESkvlu9ejW9evVi9erVAJqCERERkdp32GGHUVpayoknnpizz1QBIlmhudVo\nlKfolKtolKfolKtdKyoqYt68jPdlrRUqQERERAQITsHN2WdpfcOuaQ2IiIjkE52GKyIiIvWWChDJ\nCs2tRqM8RadcRaM8RadcJYsKEBEREck5rQGpgdaAiIhIPtEaEBEREam3VIBIVmhuNRrlKTrlKhrl\nKTrlKllUgIiIiEjOaQ1IDbQGRERE8onWgIiIiEi9pQJEskJzq9EoT9EpV9EoT9EpV8miAkRERERy\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualization of the path\n", + "pyplot.figure(figsize=(8,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'x', fontsize=18)\n", + "pyplot.ylabel(r'y', fontsize=18)\n", + "pyplot.title('Glider trajectory, flight time = %.2f' % T, fontsize=18)\n", + "pyplot.plot(x,y, 'k-', lw=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grid convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's study the convergence of Euler's method for the phugoid model. In the previous lesson, when we studied the straight-line phugoid under a small perturbation, we looked at convergence by comparing the numerical solution with the exact solution. Unfortunately, most problems don't have an exact solution (that's why we compute in the first place!). But here's a neat thing: we can use numerical solutions computed on different grids to study the convergence of the method, even without an analytical solution.\n", + "\n", + "We need to be careful, though, and make sure that the fine-grid solution is resolving all of the features in the mathematical model. How can we know this? We'll have a look at that in a bit. Let's see how this works first.\n", + "\n", + "You need a sequence of numerical solutions of the same problem, each with a different number of time grid points.\n", + "\n", + "Let's create a NumPy array called `dt_values` that contains the time-increment of each grid to be solved on. For each element `dt_values[i]`, we will compute the solution `u_values[i]` of the glider model using Euler's method. If we want to use five different values of $\\Delta t$, we'll have five solutions: we put them in an array ... but each one is also an array! We'll have an array of arrays. How meta is that?\n", + "\n", + "We have one more trick up our sleeve: `enumerate()`. To get all the numerical solutions—each with its value of $\\Delta t$—done in one fell swoop, we will loop over the elements of the array `dt_values`. Within the loop, we need to access both `dt_values[i]` and the index `i`. It turns out, `enumerate()` is a built-in Python function that will give us consecutive `index, value` pairs just like we need. \n", + "\n", + "Read the code below carefully, and remember: you can get a help pane on any function by entering a question mark followed by the function name. For example, add a new code cell below and type: `?numpy.empty_like`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), we compared our numerical result to an analytical solution, but now we will instead compare numerical results from different grids. \n", + "\n", + "For each solution, we'll compute the difference relative to the finest grid. You will be tempted to call this an _\"error\"_, but be careful: the solution at the finest grid is _not the exact_ solution, it is just a reference value that we can use to estimate grid convergence.\n", + "\n", + "To calculate the difference between one solution `u_current` and the solution at the finest grid, `u_finest`, we'll use the $L_1$-norm, but any norm will do.\n", + "\n", + "There is a small problem with this, though. The coarsest grid, where $\\Delta t = 0.1$, has 1001 grid points, while the finest grid, with $\\Delta t = 0.001$ has 100001 grid points. How do we know which grid points correspond to the same location in two numerical solutions, in order to compare them? \n", + "\n", + "If we had time grids of 10 and 100 steps, respectively, this would be relatively simple to calculate. Each element in our 10-step grid would span ten elements in our 100-step grid. \n", + "\n", + "Calculating the _ratio_ of the two grid sizes will tell us how many elements in our fine-grid will span over one element in our coarser grid.\n", + "\n", + "Recall that we can _slice_ a NumPy array and grab a subset of values from it. The syntax for that is\n", + "\n", + "```Python\n", + "my_array[3:8]\n", + "```\n", + "\n", + "An additional slicing trick that we can take advantage of is the \"slice step size.\" We add an additional `:` to the slice range and then specify how many steps to take between elements. For example, this code\n", + "\n", + "```Python\n", + "my_array[3:8:2]\n", + "```\n", + "\n", + "will return the values of `my_array[3]`, `my_array[5]` and `my_array[7]`\n", + "\n", + "With that, we can write a function to obtain the differences between coarser and finest grids. Here we go ..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = ceil(N_fine/N_current)\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that the function has been defined, let's compute the grid differences for each solution, relative to the fine-grid solution. Call the function `get_diffgrid()` with two solutions, one of which is always the one at the finest grid. Here's a neat Python trick: you can use negative indexing in Python! If you have an array called `my_array` you access the _first_ element with\n", + "\n", + "`my_array[0]`\n", + "\n", + "But you can also access the _last_ element with \n", + "\n", + "`my_array[-1]`\n", + "\n", + "and the next to last element with\n", + "\n", + "`my_array[-2]`\n", + "\n", + "and so on. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dt = 0.1\n", + "dt = 0.05\n", + "dt = 0.01\n", + "dt = 0.005\n", + "dt = 0.001\n" + ] + } + ], + "source": [ + "# compute difference between one grid solution and the finest one\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " print('dt = {}'.format(dt))\n", + "\n", + " ### call the function get_diffgrid() ###\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to create a plot of the results! We'll create a *log-log* plot with the Matplotlib function [`loglog()`](http://matplotlib.org/api/pyplot_api.html?highlight=loglog#matplotlib.pyplot.loglog). Remember to skip the difference of the finest-grid solution with itself, which is zero." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIh\nZGatzGyLmZ1Sibanm9nPkhGXSLIpSYmE0/1AE+APlWj7Z6BHYsMRCYaSlEjImNmPgM3ANKCnmZ1X\nTtss4GLgv5IUnkhSaasOkZAxs/HAEOAYIhsdvu3u/1ZG27bAB8Cx7r41eVGKJId6UiIhYmYXA/90\n9x3uvgp4DuhoZpeXaJdjZi8CfwO2AE+Y2ejkRyySWOpJiYSImU0C/t3d90RfHwusAv7H3Q8b9jOz\nmcB6dx+U3EhFkkM9KZGQMLNuwJv7ExSAu39FZHvuc8zsmhLtawA/BRYkNVCRJFJPSiQEohMgXnT3\n60s51xBYDWwHznD3oujxC4D3gObuvjmZ8Yoki3pSIuFwAzCptBPu/i2RqehtgJsOOtWRyDCgEpSk\nLSUpkYCZWW2go7u/UU6zMcAaYLiZ1Y0e60h0qM/MapvZgwkNVCQANYMOQES4DXAzu7OCdp8CXYhM\nTx8BNAdmRc/dCbyYsAhFAqKalEiAor2itUCzSr7Fga+BVkA3oDewFHjL3RcmJEiRAClJiYhIaKkm\nJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIi\nofX/ARE7ZqFnKYAXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# log-log plot of the grid differences\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel('$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='-', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Order of convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The order of convergence is the rate at which the numerical solution approaches the exact one as the mesh is refined. Considering that we're not comparing with an exact solution, we use 3 grid resolutions that are refined at a constant ratio $r$ to find the *observed order of convergence* ($p$), which is given by:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "p = \\frac{\\log \\left(\\frac{f_3-f_2}{f_2-f_1} \\right) }{\\log(r)}\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $f_1$ is the finest mesh solution, and $f_3$ the coarsest. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is p = 1.014\n" + ] + } + ], + "source": [ + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values2 = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values2 = numpy.empty_like(dt_values2, dtype=numpy.ndarray)\n", + "\n", + "diffgrid2 = numpy.empty(2)\n", + "\n", + "for i, dt in enumerate(dt_values2):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + "\n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values2[i] = u\n", + " \n", + "\n", + "#calculate f2 - f1\n", + "diffgrid2[0] = get_diffgrid(u_values2[1], u_values2[0], dt_values2[1])\n", + "\n", + "#calculate f3 - f2\n", + "diffgrid2[1] = get_diffgrid(u_values2[2], u_values2[1], dt_values2[2])\n", + "\n", + "# calculate the order of convergence\n", + "p = (log(diffgrid2[1]) - log(diffgrid2[0])) / log(r)\n", + "\n", + "print('The order of convergence is p = {:.3f}'.format(p));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See how the observed order of convergence is close to 1? This means that the rate at which the grid differences decrease match the mesh-refinement ratio. We say that Euler's method is of *first order*, and this result is a consequence of that." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paper airplane challenge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose you wanted to participate in a paper-airplane competition, and you want to use what you know about the phugoid model to improve your chances. For a given value of $L/D$ that you can obtain in your design, you want to know what is the best initial velocity and launch angle to fly the longest distance from a given height.\n", + "\n", + "Using the phugoid model, write a new code to analyze the flight of a paper airplane, with the following conditions:\n", + "\n", + "* Assume $L/D$ of 5.0 (a value close to measurements in Feng et al. 2009)\n", + "* For the trim velocity, let's take an average value of 4.9 m/s.\n", + "* Find a combination of launch angle and velocity that gives the best distance.\n", + "* Think about how you will know when the flight needs to stop ... this will influence how you organize the code.\n", + "* How can you check if your answer is realistic?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Feng, N. B. et al. _\"On the aerodynamics of paper airplanes\"_, AIAA paper 2009-3958, 27th AIAA Applied Aerodynamics Conference, San Antonio, TX. [PDF](http://arc.aiaa.org/doi/abs/10.2514/6.2009-3958)\n", + "\n", + "* Simanca, S. R. and Sutherland, S. _\"Mathematical problem-solving with computers,\"_ 2002 course notes, Stony Brook University, chapter 3: [The Art of Phugoid](https://www.math.sunysb.edu/~scott/Book331/Art_Phugoid.html). (Note that there is an error in the figure: sine and cosine are switched.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb b/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb new file mode 100644 index 0000000..dfe6da7 --- /dev/null +++ b/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb @@ -0,0 +1,1187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, C.D. Cooper. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid model: bonus!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_The phugoid model of glider flight_ has been such a fun problem to showcase the power of numerical solution of differential equations, we thought you'd enjoy a bonus notebook. The previous lessons were:\n", + "\n", + "* [Phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) —Lays the groundwork for our fun problem, with some context, a little history and a description of the physics of phugoids: curves representing the trajectory of a glider exchanging potential and kinetic energy, with no drag.\n", + "* [Phugoid oscillation](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) —Develops the simple harmonic motion of an aircraft experiencing a small perturbation from the horizontal trajectory: our opportunity to introduce Euler's method, and study its convergence via an exact solution.\n", + "* [Full phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) —The full model takes into account the force of drag and results in a system of two nonlinear equations. We obtain the trajectories using Euler's method in vectorized form, introduce grid-convergence analysis and finish with the paper-airplane challenge!\n", + "\n", + "That is a fantastic foundation for numerical methods. It's a good time to complement it with some theory: the first screencast of the course uses Taylor series to show that _Euler's method is a first-order method_, and we also show you graphical interpretations. Many problems require a more accurate method, though: second order or higher. Among the most popular higher-order methods that we can mention are the _Runge-Kutta methods_, developed around 1900: more than 100 years after Euler published his book containing the method now named after him!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Euler's method is a first-order method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this screencast, we use a Taylor series expansion to analyze Euler's method and show that it incurs a truncation error of first order. We also use a graphical interpretation to motivate the _modified_ Euler method, which achieves second order." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('6i6qhqDCViA')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Second-order methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notebook on phugoid oscillation (lesson 2) included a study of the accuracy obtained with Euler's method, using the exact solution for the simple harmonic motion. We made a _convergence plot_ and saw that as $\\Delta t$ gets smaller, the error also gets smaller. \n", + "\n", + "We could have drawn a line with a slope equal to 1 on that log-log plot, and you would have seen that it was parallel to the convergence line. A slope equal to 1 on a log-log convergence plot is an indication that we have a first-order method: the error scales as ${\\mathcal O}(\\Delta t)$. \n", + "\n", + "In lesson 3, using the full phugoid model (which is nonlinear and does not have an exact solution), we did a _grid-convergence study_ with three different grids, and obtained the _observed_ order of convergence—it was very close to 1, indicating a slope of 1 on a log-log plot.\n", + "\n", + "Another way to look at an ${\\mathcal O}(\\Delta t)$ method is to say that the error scales _linearly_ with the step size, or that they are proportional:\n", + "\n", + "$$ e \\propto \\Delta t.$$\n", + "\n", + "where $e$ stands for the error. To get more accuracy, we could use a _second-order_ method, in which the error is ${\\mathcal O}(\\Delta t^2)$. In general, we say that a method is of order $p$ when the error is proportional to $(\\Delta t)^p$.\n", + "\n", + "In the screencast titled \"Euler's method is a first-order method,\" we used a graphical interpretation to get an idea for improving it: by estimating an intermediate point, like the **midpoint**, we can get a better approximation of the area under the curve of $u^\\prime$. The scheme has two steps and is written as:\n", + "\n", + "\\begin{align}\n", + "u_{n+1/2} & = u_n + \\frac{\\Delta t}{2} f(u_n) \\\\\n", + "u_{n+1} & = u_n + \\Delta t \\,\\, f(u_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "This method is known as the *explicit midpoint method* or the *modified Euler method*, and it is a second-order method. Notice that we had to apply the right-hand side, $~f(u)$, twice. This idea can be extended: we could imagine estimating additional points between $u_{n}$ and $u_{n+1}$ and evaulating $~f(u)$ at the intermediate points to get higher accuracy—that's the idea behind Runge-Kutta methods." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Runge-Kutta methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the modified Euler method, we improve the accuracy over Euler's method by evaluating the right-hand side of the differential equation at an intermediate point: the midpoint. The same idea can be applied again, and the function $f(u)$ can be evaluated at more intermediate points, improving the accuracy even more. This is the basis of the famous *Runge-Kutta (RK) methods*, going back to Carl Runge and Martin Kutta. The modified Euler method corresponds to _second-order_ Runge-Kutta.\n", + "\n", + "Here's a bit of historical coincidence that will blow your mind: Carl Runge's daughter Iris—an accomplished applied mathematician in her own right—worked assiduously over the summer of 1909 to translate Lanchester's _\"Aerodonetics.\"_ She also reproduced his graphical method to draw the phugoid curves (Tobies, 2012)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phugoid model with 2nd-order RK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compute the motion of a glider under the full phugoid model using the second-order Runge-Kutta method. We'll build on the _paper airplane challenge_ of lesson 3 now, and look for the horizontal distance that the plane travels until the moment it touches the ground. \n", + "\n", + "As usual, let's start by importing the libraries and modules that we need, and setting up the model parameters. We also set some default plotting formats using the [`rcParams`](http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rcParams) module. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the paper-airplane challenge of lesson 3, we suggested an $L/D=5.0$ as a realistic value for paper airplanes, according to experiments, and a trim velocity of 4.9 m/s. Let's start with those values, but you could experiment changing these a bit. _What do you think will happen if you make $L/D$ higher?_" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among the initial parameters that we suggest for your first experiment, we are starting with a velocity a little higher than the trim velocity, launch the paper airplane with a negative initial angle, and take the initial height to be 2 meters—all sound like reasonable choices.\n", + "\n", + "Now, we can define a few functions to carry out the computation:\n", + "* The right-hand side of the phugoid model from [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb),\n", + "* One step of the Euler's method that we learned in [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), and\n", + "* Differences with respect to a fine grid, as in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])\n", + "\n", + "\n", + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)\n", + "\n", + "\n", + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = int(numpy.ceil(N_fine/N_current))\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we also need to define the function `rk2_step()` that computes the next time step using the *modified Euler* method of equations $(1)$ and $(2)$, above, otherwise known as 2nd-order Runge-Kutta or RK2. This function will be called over and over again within the time loop." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def rk2_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using 2nd-order Runge-Kutta.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at the next time step.\n", + " \"\"\"\n", + " u_star = u + 0.5*dt*f(u)\n", + " return u + dt*f(u_star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we first need to set up the time discretization, then initialize arrays to save the solution and we are set to go! The only difference this time is that we are using _both_ Euler's method and 2nd-order Runge-Kutta to get a solution, to compare the two. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "\n", + "# set initial conditions\n", + "u_euler = numpy.empty((N, 4))\n", + "u_rk2 = numpy.empty((N, 4))\n", + "\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_euler[0] = numpy.array([v0, theta0, x0, y0])\n", + "u_rk2[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "\n", + "# use a for loop to call the function rk2_step()\n", + "for n in range(N-1):\n", + " \n", + " u_euler[n+1] = euler_step(u_euler[n], f, dt)\n", + " u_rk2[n+1] = rk2_step(u_rk2[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can get the position of the glider in time, according to both Euler's method and the 2nd-order Runge-Kutta method, by extracting the appropriate portions of the solution arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x_euler = u_euler[:,2]\n", + "y_euler = u_euler[:,3]\n", + "x_rk2 = u_rk2[:,2]\n", + "y_rk2 = u_rk2[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### How far will it fly before touching the ground?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the $y$-axis measures the vertical coordinate with respect to the ground, negative values of $y$ don't have any physical meaning: the glider would have hit the ground by then! To find out if there are any negative $y$ values we can use the handy function [`numpy.where`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html). This function returns the **indices** of the elements in an array that match a given condition. For example, `numpy.where(y_euler<0)[0]` gives an array of the indices `i` where `y_euler[i]<0` (the `[0]` is necessary as `numpy.where` returns an array, which in this case contains a single line). If no elements of the array match the condition, the array of indices comes out empty. \n", + "\n", + "From the physical problem, we know that once there is one negative value, the glider has hit the ground and all the remaining time-steps are unphysical. Therefore, we are interested in finding the _first_ index where the condition applies, given by `numpy.where(y_euler<0)[0][0]`—do read the documentation of the function if you need to! " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_euler = numpy.where(y_euler<0.0)[0]\n", + "if len(idx_negative_euler)==0:\n", + " idx_ground_euler = N-1\n", + " print ('Euler integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_euler = idx_negative_euler[0]\n", + " \n", + "idx_negative_rk2 = numpy.where(y_rk2<0.0)[0]\n", + "if len(idx_negative_rk2)==0:\n", + " idx_ground_rk2 = N-1\n", + " print ('Runge-Kutta integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_rk2 = idx_negative_rk2[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Do Euler and RK2 produce the same solution?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An easy way to compare the numerical results obtained with the Euler and 2nd-order Runge-Kutta methods is using [`numpy.allclose`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html). This function compares each element of two arrays and returns `True` if each comparison is within some relative tolerance. Here, we use the default tolerance: $10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the x-values close? False\n", + "Are the y-values close? False\n" + ] + } + ], + "source": [ + "# check to see if the paths match\n", + "print('Are the x-values close? {}'.format(numpy.allclose(x_euler, x_rk2)))\n", + "print('Are the y-values close? {}'.format(numpy.allclose(y_euler, y_rk2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hmmm, they do differ. Maybe $10^{-5}$ is too tight a tolerance, considering we're using a somewhat coarse grid with first- and second-order methods. Perhaps we can assess this visually, by plotting the glider's path? Study the code below, where we are plotting the path twice, taking a closer look in the second plot by \"zooming in\" to the beginning of the flight." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+eWXL1nerVu3i92pp06dMq1atTKNGzc2x9PpOsjI4cOHjYiY0qVLZysHb3mznwlAdyrQBfgFKOFF\n2RbAH8BB3IdmAAAgAElEQVT6VK/tWN2pu+z3T6Szbo6+L6WC3d69e02FChXMlClT/lm4caMxVata\nP4PF6tXGtGqVbpfuuHHjzI033mhOnTqV46q8PYdpd6qfrVixgh07djB69GhmzJgR8KcbBGIOoHr1\n6rF79252797tSP0qYxcuXCA+Ph4R4ZZbbvFY5tChQzRu3JiCBQuyaNEiChYsmOV6VtkDgDt06JCj\neEOBiNwLDAXijDGH7GWtRaRXqjIlxZ57xxiz0BhT1hhzY8oLSLml7Ul72bOBziPQ3HI+cEse4Hwu\nf/31Fy1atOC+++7jgQce+OeDqlXh55+tn17yey5168KXX6bbpTtkyBCqVatG79690x2q4mvaiPOz\npC1bWNysGU888USOHswbzHLlykXr5s2Z/9lnToei0ti/fz99+vRh7969DBo0iFq1anks16NHDzZs\n2MDIkSMvn0jTC8YYXnzxRWJiYhgxYkROww5qItIZmAG8CTQXkXvtRl0boLRdpgGwD5ia0abS/FQq\nrJw5c4a2bdvSpEkThg8ffnmBXKE14ktEeO2119iwYQMzZswITKXeXK4L9RdOdUecPGmOFi9uRleu\n7Mpu1NT233CDeaJ2bUdjyPZ+HjXKGOtm8ktfo0b5tnx6n/tASndqVFSUKVWqlClVqpTJly+fERFT\nu3Zt88MPP3hcL6U7tU6dOkZETJkyZcz27duzXP/kyZNNdHS0+fbbb3OaSqa82c/4sTsVOAokYXWF\npn4lASPtMjWAI3joIgVKATuB/fY6h+33ddKpL+dfmlJBJikpydx1112mY8eOrvv9uHnzZlOsWDGz\nfv36bG/D23OY4w2sQLycOgkeu+su80FUlNmxY4cj9QfS6aefNq/nzm3+/vtvx2II5192nsbEnT59\n2owYMcKIiGnVqpXHaWBSGnErVqwwvXv3NiJirr76avPbb795XffHH39soqOjzWeffeaTXDLjdCMu\n0K9wPq6Vew0fPtw0aNDAnDlzxhprtnix0yFlz4ULxniY2uTtt982VapUMadPn87WZr09h2l3qp8k\nfvghJz//nB969qRixYqOxRGo8Q55O3TgvyIsWbTIkfrV5fLmzcuzzz5LXFwcCxYs4PXXX0+3rIgw\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(10,6))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler[:idx_ground_euler], y_euler[:idx_ground_euler], 'k-', label='Euler')\n", + "pyplot.plot(x_rk2[:idx_ground_rk2], y_rk2[:idx_ground_rk2], 'r--', label='RK2')\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_rk2[idx_ground_rk2-1]))\n", + "pyplot.legend();\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler, y_euler, 'k-', label='Euler')\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From far away, the Euler and RK2 methods seem to be producing similar answers. However, if we take a closer look, small differences become evident. Keep in mind that we are solving the same equation and both methods will converge to the same solution as we refine the grid. However, they converge to that solution at different rates: RK2 gets more accurate faster, as you make $\\Delta t$ smaller." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid-convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we want to do a grid-convergence study with RK2, to see if we indeed observe the expected rate of convergence. It is always an important step in a numerical solution to investigate whether the method is behaving the way we expect it to: this needs to be confirmed experimentally for every new problem we solve and for every new method we apply!\n", + "\n", + "In the code below, a `for`-loop computes the solution on different time grids, with the coarsest and finest grid differing by 100x. We can use the difference between solutions to investigate convergence, as before." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for-loop to compute the solution on different grids\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once those runs are done, we compute the difference between each numerical solution and the fine-grid solution." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# compute diffgrid\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "for i, dt in enumerate(dt_values):\n", + "\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we plot!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nicaKFSu44YYbWLVqFR9//HHU4UgBmUymza7Dqqy9lhRJb+kkfdpm0qUpfxdffDGTJk3iuOOO449/\n/GPU4VQs6bkLe/aaiEjNNDc3M2XKFMyMa665JupwpEJq6RSR9JaOSByMGDGCX/3qV5x++un86le/\nijocKYFaOiISW4cffji9e/fm6quvjjoUCYGKToql+VmBJEhL/i666CKam5vp27dv1KGEJi25y6cq\nRcfMZlfjviKSTttsU9FEW6kjpeynE2QTt0nu3rWSwOqBmfn48eM1ZVpEpAQtU6YnTJgQfMFPbeKm\niQQiIuWodCLB+8BRwODcayjwMnAHMILspm1H5/77DmAx2U3fpM6luV85CZKav08++YR7772XjRsT\ntcDJpyQ1d6UopaP0L+7+RMsbM5tEdhO3+/NcO93MTia7idvvQopRRFLkrrvu4vzzz+f444/noYce\nijocCZk2cStC3WsitbVmzRoGDhzIkiVLuOeee/j2t78ddUgSQNjP6ewCFJsk0BXYKcB9RSTlbrnl\nFpYsWcLBBx/Mt771rajDkSrQJm4pluZ+5SRIWv7ef/99Jk6cCMA111xDu3axn4tUUNJyV44gk98v\nAR4nu4nbUmAp2WnSPYCewCqgIawARSQdpk6dygcffMBRRx3FMcccE3U4UiWB1l4zs32AnwDHAZ1z\nh1cDTcA4d58bWoQR0piOSO1s2rSJe+65h/32249DDjkk6nCkAsXGdLSJWxF6OFREpHShPBwahJmd\n4e6xXw426S2dpO/pkXTKX3wlPXdRrDJ9Q5XuKyIiMVbKMjiNwM7uPir3vpnia7EZ0NvdO4QVZFSS\n3tIREamGisZ0zOxtYEdgF3dfa2brgafb+MzD3b1ToGjriIqOSPW4O8OHD+dLX/oSF154IZ06xf5X\nhuRUWnR6AB3d/c3c+6Xu3rONr2nzmjhIetFJer9y0sU9fzNnzuS4445jp512YuHChXTtGvuF6UsW\n99y1paIxHXdf1lJwcjqa2VQz+1qRL/t+uUGKSHps2rSJyy+/HIAxY8akquCkXZC11zYB04Hr3P2V\nqkRVJ5Le0hGJyvTp0znjjDPo3bs38+bNU9dawoT6nI6ZLXP3HqFEVudUdETCt379evbdd1+am5u5\n4447OPfcc6MOSUIW9pTpV8ysVxsfeFeA+0qNpXn9pySIa/5WrFhB79692X///TnzzDOjDicScc1d\n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\nzP8H50NbGbioopAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot using the matplotlib function loglog()\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel(r'$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.xlim(1e-4,1)\n", + "pyplot.ylim(1e-4,1)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='--', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is looking good! The difference relative to our fine-grid solution is decreasing with the mesh size at a faster rate than in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), but *how much faster?* When we computed the observed order of convergence with Euler's method, we got a value close to 1—it's a first-order method. Can you guess what we'll get now with RK2?\n", + "\n", + "To compute the observed order of convergence, we use three grid resolutions that are refined at a constant rate, in this case $r=2$. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 1.983\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " ### call rk2_step() ###\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Probably you're not too surprised to see that the observed order of convergence is close to $2$. Because we used a second-order method! This means that the numerical solution is converging with the grid resolution twice as fast compared with Euler's method in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), or in other words, the error scales as ${\\mathcal O}(\\Delta t^2)$. That is a lot faster! However, we are paying a price here: second-order Runge-Kutta requires more computations per iteration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge task" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How much longer does it take to get the solution with RK2, compared to Euler's method? Run the same solution (same time grid, same parameters), but find a way to *time* the calculation with Python, and compare the runtimes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multi-step methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The screencast *\"Euler's method is a first-order method\"* motivated graphically an idea to get increased accuracy: using intermediate points between $u_{n}$ and $u_{n+1}$ and evaluating the right-hand side of the differential equation at those intermediate points. The idea is to somehow get a better approximation using more data from the function $f(u)$.\n", + "\n", + "Another way to bring more information about $f(u)$ into the numerical solution is to look at time data $t\\lt t_{n}$. For example, we can involve in the calculation of the solution $u_{n+1}$ the known solution at $u_{n-1}$, in addition to $u_{n}$. Schemes that use this idea are called _multi-step methods_.\n", + "\n", + "\n", + "A classical multi-step method achieves second order by applying a _centered difference_ approximation of the derivative $u'$:\n", + "\n", + "$$ u'(t) \\approx \\frac{u_{n+1} - u_{n-1}}{2\\Delta t}.$$\n", + "\n", + "Isolate the future value of the solution $u_{n+1}$ and apply the differential equation $u'=f(u)$, to get the following formula for this method:\n", + "\n", + "$$ u_{n+1} = u_{n-1} + 2\\Delta t \\, f(u_n),$$\n", + "\n", + "This scheme is known as the **leapfrog method**. Notice that it is using the right-hand side of the differential equation, $f(u)$, evaluated at the _midpoint_ between $u_{n-1}$ and $u_{n+1}$, where the time interval between these two solutions is $2\\Delta t$. Why is it called \"leapfrog\"? If you imagine for a moment all of the _even_ indices $n$ of the numerical solution, you notice that these solution values are computed using the slope estimated from _odd_ values $n$, and vice-versa.\n", + "\n", + "Let's define a function that computes the numerical solution using the leapfrog method:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def leapfrog_step(unm1, u, f, dt):\n", + " \"\"\"Returns the solution time-step n+1) using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " unm1 : array of float\n", + " solution at time-step n-1.\n", + " u : array of float\n", + " solution at time-step n.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at time-step n+1.\n", + " \"\"\"\n", + " return unm1 + 2.0*dt*f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But wait ... what will we do at the _initial_ time step, when we don't have information for $u_{n-1}$? This is an issue with all multi-step methods: we say that they are _not self-starting_. In the first time step, we need to use another method to get the first \"kick\"—either Euler's method or 2nd-order Runge Kutta could do: let's use RK2, since it's also second order.\n", + "\n", + "For this calculation, we are going to re-enter the model parameters in the code cell below, so that later on we can experiment here using the leapfrog method and different starting values. At the end of this notebook, we'll give you some other model parameters to try that will create a very interesting situation!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude\n", + "\n", + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# set initial conditions\n", + "u_leapfrog = numpy.empty((N, 4))\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_leapfrog[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "# first step using RK2\n", + "u_leapfrog[1] = rk2_step(u_leapfrog[0], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have all the required information to loop in time using the leapfrog method. The code cell below calls the leapfrog function for each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for loop to call the function leapfrog_step()\n", + "for n in range(1,N-1):\n", + " \n", + " u_leapfrog[n+1] = leapfrog_step(u_leapfrog[n-1], u_leapfrog[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like before, we extract from the solution array the information about the glider's position in time and find where it reaches the ground." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider position in time\n", + "x_leapfrog = u_leapfrog[:,2]\n", + "y_leapfrog = u_leapfrog[:,3]\n", + "\n", + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_leapfrog = numpy.where(y_leapfrog<0.0)[0]\n", + "\n", + "if len(idx_negative_leapfrog)==0:\n", + " idx_ground_leapfrog = N-1\n", + " print ('The glider has not reached the ground yet!')\n", + "else:\n", + " idx_ground_leapfrog = idx_negative_leapfrog[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the glider's trajectory with both the leapfrog and RK2 methods, we find that the solutions are very close to each other now: we don't see the differences that were apparent when we compared Euler's method and RK2." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqkAAAIKCAYAAAAArtaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8FHX+x/HXJwEpUoKCYA8IooIUUUFBREFOEI8TLNzJ\niVg478SKooiKiHDYPdvPLncqCFasWMBQBBQQkKIgTURAinQEUr6/P3aDMWxCNtndmZ19Px+PfSS7\nO+X93R2Gb2Y+8x1zziEiIiIi4idpXgcQERERESlMnVQRERER8R11UkVERETEd9RJFRERERHfUSdV\nRERERHxHnVQRERER8R11UuPEzMaa2UYzyzOzXoXeu9fMfjazQ7zKJ7FlZh3MbI2Z7Taz5TFcbmZ4\nuTvNLC+Gy73MzDab2ctRzPNIeHseFOW6csNtKPz4sph5jjWz6cW12cxGhNsQadk7zGxHNDlFRMRf\n1EmNE+dcV6Bb/tNCb9cAqgEVol2umd0T7igcVcaIvmRm7SJ17P3OOfe5c+5QYCr7ft9lWe6K8HJH\nx2K5ZlbLzN4GBhHaBku0TDM7Gbg+P1aUq13pnDs0wqN1Eeu6DpgM1N3PuhxwfaRlA7OBt6LMKSIi\nPqJOanxZpBedc9cBtZxzPyU4TzJJ1rtMRPzOY7TcWCx7BLAA+FOJV2xWDngBeDMG69/fuv4GXAi0\nAr7bz+TzgJ8jLKMBcDrwUswDiohIwpTzOkCqcs7tKuMi4tUZ8ougt88rVzrn1ppZZhTz3AJsBZ4B\nLo5HqAI+d86NBDArfhNwzj1SxFuXA8ucc1kxTSYiIgmlI6kxYmYtzGyimW01s2Vm9h+gUoTpJhdT\nq3qBmU0zs1XhmtWpZnabmVUPv78A6BeefEaB+rt64ffbmtlIM1tqZuvMbLWZvWBmNQutZ1yBDL3N\nbJCZ/WBmm8LvZUbIfYCZ3Wlm35vZWjNbaWafm9m/zOyAAtOZmV1nZvPC61hnZm+bWeMSfIbP8/sp\n2v8UaF9PM2tfsObTzE4Ir39tuB0vh5fxZzN7NzzNBjNbYWYPmVnlgusJ1yzmhfM9Gn49Pby8nWa2\nxcxuLjDP38xsZrhNG83sEzNrs782FZj/UDN7MdyGjeHPe5iZRdpGbgxvQxvMbI6ZXVTS9eyPc25t\nNNObWX3gNqBPrDIUxzm3rizzm1ka8HdCR4xFRCSZOef0KOMDaEjoSNPnhOpNjdApyzlAHnBZoenP\nLPw6cBaQDXQOPzfg6vB0bQtMNyj82lERcrwJTCBUSgBQH5gbfqQXkWE2cEn4tSOApcCcQtOmAR8C\n64BTw69VAV4OL6NJgWmfAbYBncLPMwh1PLcBjUvwWe7z2RR6/wtgPTAWOCz82ivAS+HfZwKjgCrh\n5y2AlcCHhZZzRXg9l0RYxwKgVYHntwM5hDo/RuiPjyeAPcA5hebNInQUr+BrhwA/EqqzPDT8WktC\np6onAFZg2jvCua4r8DmPABYBuRGyVsz/vqPcZjPD63lpP9NNAO4O/94uPM/dUa5rXfjz+g74hdC/\ni3uAyvuZLytSm/czzznh7+qIsv671kMPPfTQw9uHjqTGxn2EOhM3Oec2uZA3gRlFTB/pPOafgS3O\nuY8Awst4Hngf2LmfefMtAW5xzq0PL2MJ0B84ETi3iAzLnXOjw9OvAl4DmpjZ0QWm/RvQCRjknPs6\nPO124B+EOp+hBYaOLPYBHnPOfRyebjOhznY6MLSY7CVpX/77BwNDnHOrw6/dD4wM/74AuDmcD+fc\nrPB6O5lZowLLGUPoc+39h4WbtSTUoZ8efp5J6Psd5Zx7Jfy9/AbcRKjD9VAJ2jQMOBLo7ZxbE871\nVXi57YC/hNd1MHA3MNs590R4uu3Av4DaRSx7FrDazFqVIEdUzOzK8HqHlXFR1YH5QDPgKOBeQhdh\nTSp4hDtGLidUMrAqxssVEZEEUye1jMwsnVAHbo1zbl6ht7OiWNQvwEEWGuZn79BUzrmuzrmZJVmA\nc+5259w3hV7+IfzzhCJmm1roef5/7ocVeO2S8M9xhda3h9CRq2WFpvus0HS/AsuBDuHTsWX1W8HP\nxDk33zn3efj3XvkdwQL2+QzCnb83w5kOLzBtb/54wU13Qv9OCrcpB/gWONHMDi0qaLi9FxL6Y2BJ\nobfz25D/B0QH4AD2/Zx3UvQfPMuBjcDmojKUhpnVJtT57xNua1kc6px71jm3O/x4m1Bn/CRCnf2Y\nMLNqhDr8umBKRCQA1Ektu1pAZaBwxwggmvq/JwgdNb0R+NnMxpvZFWZWsaQLMLM64U7u3HBt5Rpg\nevjtfWofwzYUer4n/LN8gdfqE7rafnWhaXHOfZ1/1DI8HcCbVmjcSuBwIBc4qKTtKcb6ot4ws/rh\nmtMFBT6DN8JvF/4MXib0b6BXeN5KhDqU/yswTX6bHo3QptOA7fyxQ19YLUJDPR0RYf73w/Pn1wzX\nDf8salva5yizc66Lc66Oc+77YjKUxuPAG865SGOZRnVRW/iPlMLeC/88L9pgxbgE+A14J4bLFBER\nj+jq/tgp09XozrkdQFczO5HQ6fWehIb9udXMznT7uaDEzKrwe4f0wvwjjeHT9sUNLh/NAPEHALtL\nMF0H59y3USw3WhEzm9kRhI5OLgW653fczOxMQrWsf+Ccm2ihgfd7ETql3Q34ykW+uKi3c+69CK+X\n1ALn3EklnNYPIxt0AnaZ2V8KvJZ/gdwtZnYNoaqU4jroxcnfnmN5Q4vLgZHOuewYLlNERDyiI6ll\nt55QbWOdCO9Fei0is9B4O865ec65AcDRhE6JNgT6lmARHQjV+z1ZqDwgFh2eH8LL2adDYma1wx1k\nCF3cA6ELsCJN1y4GWYpzIaGjlv8udGSxuM/gv0ADM2tN6FR/4TswFdem6ha601R6MctfD2whdCR5\nH2bW3ELjesLvZRNFbUsJGzvWOVfNOXeI++MA+fk3p3gw/Np+O6hm9hcL3QigsPwa28JH8ksl/Bme\nhk71i4gEhjqpZeScyyV05fuhZtak0NvtoljUy2Z2S4Hl5gGPhZ9WLzBd/q0eywGY2eXhIYqKGnc1\nFnemGh3+2aXgi2ZWFVhB6Er1gtN1Y1+DKFn9YeH2tTazO0qYs6ijvMV9Bv8l1Pm7G2hCaNSAgt4m\ndLV4pDb9A3gkvA1EFP4exwC1Cg9ZFS4v+BzIH57rM0LfY6dC0x0IROroYWYVzaxWUeuPsWL/4DGz\nGgX+YMn3F0KjIhSWf5p/XIT3SuNyQqNSzInR8kRExGOedFLNrFm4bnChmX0brh/8jxUaz7OIeVeY\n2ewIj7MTkb0IdxGqLXzEzA4yszQz60booiIo+j/3gq874FozOwH23uWnL6E6zjEFplsY/tnIzCoA\ntxI6yjaVUM1o3wLLOBx4IIoMRb0+EviIUOnByeFlZwAvAtOcc+MBnHPTgKeAv5vZJeHPId3MehMq\nYbi7iHUVtJRQXWz+lfhXEBpGqiSZPyLUyR1gZkeGcx5H6PuJOJ9z7kdCpQDnAK8XPlXsnFsJDADO\nNrMbzKy8hZxHaLio/hFyFF7PQEKd+SfM7JhwrpqEhs76lnB9pnNuEzAEaGahsWbTwp2+pwh1XiO1\nexahGubSXt1fmiPt+8wTHgXhZ+AH++PYrw7oY2YXhreFdDPrTOgK/++Ah8uaz34fGzXwR1EDuO8U\nESlaosa6KvgAvid0MUul8PPDCP2HtQiouJ95l3uRuQRtOonQ1fxbCY2J+QKho0h5hK68nheebjKh\nq7Fzw6/PCb/eFHg6/DmsJvQf/mfAWYXWY8D/EbqQZjWhMUErht87AfiA0CnUZcAk4J/hDNuA78LT\nvVIow0fh1z8MP88Nv/9igfWWJ9TZWhRe93JCR3qrRfgs/kFoLMwNhDpnY4HmUXyWV4c/w7Xhz6tB\n+PNZQ6izlh3+/b8R5j09/D1sBhYDnxAajD7/e/g0wjyXhtt8UjGZLgSmhdu0ktAR0LMKvN8hQr6e\nBd4/JPy9rQp/b4uBfwNVI6zrekKd9Q2EhtS6mt/HpF0D3Flg2o/Dn9NxJfxsLyd0cdGucJtzws+X\nFTPPX8PT7A7Pkx1+/lSBaWqFt4kZQLkCrx8J3Al8RWib3kyofOSBIrad9HC238Lryg3//hvQvoh8\nHcLv1/B6PxDvBwHcd+qhhx56FPUw5xJ/i3QzWwh0cc4tK/DaFYQ6dhe60BA1Rc273DlXt6j3RUSC\nSvtOEUklXl3d38TtO/Zi/rA7GYkOIyKSJLTvFJGU4UlNaoSdLMCxhOrXJu1vfjO738y+NLNFFrqH\n+vkxDyki4jPad4pIKvHF1f3hIXyuBF5w+96Vp7B1wCznXGtCF9eMBcaa2bVxjiki4ivad4pIkHlS\nk7pPCLN7CA1J09aF7ose7fwfAGcAhzjn9hmGyMy8b6SIBJJzzrObL8Rz36n9pojES0n3m54fSQ0P\nT3Qh0Kk0O9mwr4GqFH1/es+vUHPOMWjQIM8zKIuyKEvsHl5KxL7T6883VbYjtU/tS6X2RcPTTqqZ\n/R24GTjbObffO8+EBy4/MMJb+YOpF3fnH8+tWLHC6wh7KUtkyhKZsvhLqu074yHo25Hal9yC3r6S\n8qyTamY9CQ2E3t6F70tvZl3M7OoC09Q2s4KHhHsQefDvFoTGVlwY4T0RkcDQvlNEUoVXd5y6FHge\nGAF0NLOe4R3v+YTvD2+he6mvJnS3nYL+agXuBW5mlwBdgQecczsTEL/ULr/8cq8j7KUskSlLZMri\nD6m674yHoG9Hal9yC3r7Ssqrwfw3EhrTr3DhrAMGO+fuNbOmwHjgMefcfeH5DgH6AH8mdAekDOBX\n4P+ccy8Usz7nRTtFJNjMDJfAC6cSue/UflNE4iGa/aZX46Qe7JxLd86lFXqkO+fuDU8z1zlXM38n\nG35tnXPuPufcqc655s65us65FsV1UP0kKyvL6wh7KUtkyhKZsvhDqu474yHo25Hal9yC3r6S8vzq\nfhERERGRwnwxTmq86bSViMRDok/3J5L2myISD74/3S8iIiIiUhx1UhPITzUmyhKZskSmLBI0Qd+O\n1L7kFvT2lZQ6qSIiIiLiO6pJFREpJdWkiohERzWpIiIiIpLU1ElNID/VmORn2bFjB3v27PFFFj9Q\nlsiURYIm6NuR2pfcgt6+klInNcXk5OQwatQo7rzzTmrUqEGVKlWoUKECRx55JFdddRWzZs3yOqKI\niIiIalJTySeffELfvn1ZsmTJ3tcqVKhAdnY2eXl5e1+76KKLePrpp6lZs6YXMUWShmpSRUSio5pU\n+YPs7Gz69u3Lueeey5IlS6hfvz5PPvkkK1eu5LfffiM7O5u5c+dyyy23ULlyZd544w2aNGnC7Nmz\nvY4uIiIiKUqd1ATyosZk69atdOzYkaeeeooDDjiA4cOH891339GoUSOOPPJIzIy0tDSaNGnCgw8+\nyIIFC2jTpg1r1qzhzDPPZMqUKXHP6KfaG2WJTFkkaIK+Hal9yS3o7SspdVIDbPPmzXTs2JGsrCwO\nPfRQJk2axG233Ua5cuWKnCczM5Px48fTo0cPtm3bxvnnn8/8+fMTmFpERERENamBtXv3bs4991yy\nsrLIzMzkiy++IDMzs8Tz5+bmctFFF/HOO++QmZnJN998Q40aNeIXWCQJqSZVRCQ6qklNcc45rr76\n6r1HUPM7qtFIT09n5MiRtGjRghUrVtC7d2/0H5aIiIgkijqpCZSoGpNhw4bxyiuvcOCBB/LBBx9w\n9NFHlypLxYoVeeONN8jIyGDs2LH897//jUNaf9XeKEtkyiJBE/TtSO1LbkFvX0mpkxowEydO5O67\n78bMeP311znppJPKtLy6devy+OOPA3DTTTexZs2aWMQUERERKZZqUgNk/fr1NGvWjNWrV3PHHXcw\ndOjQmCzXOUeXLl346KOP6NWrFyNGjIjJckWSnWpSRUSiE81+U53UgHDO0bVrV95//31at25NVlZW\nsVfxR2vp0qUcf/zx5OTkMGvWLJo3bx6zZYskK3VSRUSiowunfCqeNSavvfYa77//PhkZGYwaNWq/\nHdRosxxzzDFcd911OOfo169fTC+i8lPtjbJEpiwSNEHfjtS+5Bb09pWUOqkBsHbtWq6//noAHnnk\nEY488si4rOfOO+/koIMO4osvvuCjjz6KyzpEREREQKf7A+HCCy/krbfeomPHjowbNw6z+J19fPjh\nh7nlllto1aoVU6dOjeu6RPxOp/tFRKKjmtRCgryz/eijjzjvvPOoUqUK8+fPjzjcVCxt376dzMxM\nNm7cyIQJEzjrrLPiuj4RP1MnVUQkOqpJ9alY15js3r2bG264AYB77rknqg5qabNUqVJl7zqHDRtW\nqmXEKks8KEtkyiJBE/TtSO1LbkFvX0mpk5rEHn30UZYsWcLxxx+/tyY1Efr27UuVKlX4/PPPmTFj\nRsLWKyIiIqlDp/uT1KpVq2jYsCE7d+7ks88+o0OHDgld/6233spDDz1Ez549eeWVVxK6bhG/0Ol+\nEZHoqCa1kCDubHv06MHo0aPp3r07b775ZsLXv3z5co455hjKly/PTz/9xCGHHJLwDCJeUydVRCQ6\nqkn1qVjVmHz11VeMHj2aihUr8vDDD3uSpW7dunTu3Jk9e/bw4osvlmlZfqq9UZbIlEWCJujbkdqX\n3ILevpJSJzUJDRw4EICbbrop7lfzF6dv374APPPMM+Tm5nqWQ0RERIJHp/uTzIQJE2jfvj3Vq1dn\n+fLl1KhRw7MseXl5NGzYkCVLlvD+++/TpUsXz7KIeEGn+0VEoqPT/QHlnNt7FPXWW2/1tIMKkJaW\nxtVXXw3AiBEjPM0iIiIiwaJOagKVtcbkww8/ZPr06dSqVWvvWKVeZcnXs2dP0tLSeO+999i4caOn\nWWJBWSJTFgmaoG9Hal9yC3r7Skqd1CSRl5e39yjqHXfcQZUqVTxOFHLYYYfRsWNHsrOzGTVqlNdx\nREREJCBUk5okRo8eTY8ePTjiiCP44YcfqFixoteR9srP1qJFC2bOnOl1HJGEUU2qiEh0NE5qIcm+\ns83JyaFRo0YsXryY5557bm8dqF/s2rWLOnXqsGXLFubNm0fjxo29jiSSEOqkiohERxdO+VRpa0z+\n97//sXjxYo455hguv/xyT7NEUrFiRS655BIAXn/9dU+zlJWyRKYsEjRB347UvuQW9PaVlDqpPrd7\n924GDx4MwL333kv58uU9ThRZfid19OjR6OiLiIiIlJVO9/vcE088wfXXX0/jxo2ZO3cuaWn+/Lsi\nNzeXww8/nF9++YVZs2Zx0kkneR1JJO50ul9EJDo63R8QO3bsYOjQoQDcd999vu2gAqSnp3PhhRcC\noaOpIiIiImXh315PAEVbY/LEE0/wyy+/cOqpp/LnP//Z0ywlkX/Kf8yYMVGd8vdT7Y2yRKYsEjRB\n347UvuQW9PaVlDqpPrV582YeeOABAIYOHYqZ/88otm7dmsMPP5wVK1YwY8YMr+OIiIhIElNNqk/d\ndddd3HfffbRr144JEyYkRScV4Prrr+eJJ55gwIABDBs2zOs4InGlmlQRkehonNRCkm1nu27dOurV\nq8eOHTv48ssvOf30072OVGLjx4+nQ4cOnHDCCSxYsMDrOCJxpU6qiEh0dOGUT5W0xmT48OHs2LGD\n8847L24d1HjVu7Rt25aMjAwWLlzIDz/84GmW0lCWyJRFgibo25Hal9yC3r6SUifVZ1atWsXTTz8N\nhK7oTzbly5enc+fOAIwdO9bjNCIiIpKsdLrfZ/7xj3/w3HPPcfHFFyftUE5jxozhkksuoU2bNkye\nPNnrOCJxo9P9IiLRUU1qIcmys12yZAnHH388eXl5LFy4kIYNG3odqVS2bt1KzZo1yc3NZe3atdSq\nVcvrSCJxoU6qiEh0VJPqU/urMbnnnnvIycmhV69ece+gxrPepVq1apx99tnk5eXxwQcfeJolWsoS\nmbJI0AR9O1L7ktv+2rdhwwb27NmTmDAeUifVJ+bPn8/IkSMpX748gwYN8jpOmXXt2hVQXaqIiEi0\nnHN/uClO+/btWb58+d7no04+mfWXXQaPPQYffcToxx/nu+++8yJqXOl0v09ccMEFvPvuu/Tt25cn\nnnjC6zhl9vPPP3PEEUdQuXJlNm7cSMWKFb2OJBJzyXq638zuA+4Aejvn/lvENL7fb4oEUk4Od7Ro\nwU1HH02tAQPgtNPo3Lkz11xzzd67Tw5p2pSr2rfn0OxsWLSILePHU6FePSp++inUrcuMGTNo3rw5\n5cqV87gx+1JNaiF+39nOmDGDU089lUqVKrFs2TLq1KnjdaSYaNasGXPnzuWzzz6jQ4cOXscRiblE\nd1LNrBlwLdAayAHSgc+BIc65DSVcxhHAYqACoU7q/4qYztf7TZEgWb58OWmbNnH02LHw/POsNOP7\nk06i4/PPQ506rFmzhoMOOogKFSrsM29ubi7/98QTXHv66djJJ7N9506OOOIIZs2axTHHHONBa4qn\nmlSfKqrG5M477wRCd2tKVAc1EfU85557LgDjxo3zPEtJKUtkyuIbrwMZQAvnXBPgHKAj8KWZlfR0\nxTBgPJB0R4BjKejbkdqXXKbffz8Hn3Ya/PwzfPYZ859/nrPfeQfCfYJDDz00YgcVID09nb433oid\neiqkpfHzzz9z7bXX7u2gbtu6lWnTpiWsLbGkTqrHvvjiCz799FOqVatG//79vY4TU506dQLg448/\n9jiJSGDkAbc5534DcM6tBh4EGgCd9zezmbUATgeSv6ZIJMnNmzdv7+/n33MPwy+5hLznnoNGjahc\nuXKpT9U3bNiQoUOH7n3+5Xnnkf33v8PmzWXOnGg63e8h5xytWrXi66+/5r777mPgwIFeR4qpPXv2\nULNmTbZt28aPP/7IUUcd5XUkkZjy4HR/OedcTqHXOgEfAlc5517az/xZwNPAOmACcLlO94sk3pYt\nWzjuuON466234n7r84fuvpt/rVxJ5awsePVVslu2pHz58nFdZ3F0uj9JvP3223z99dfUqVOHG2+8\n0es4MXfAAQfQvn17AD755BOP04gkv8Id1LBjAQdMKm5eM/sLUME5NyYe2URk/5xzsGUL1atX55ln\nnmHVqlVxX+ct995L5REj4MknybngAh48/HA2b9oU9/XGgjqpCVSwhiYnJ2fvkdO7776bAw880LMs\n8VSSulQ/1RYpS2TK4k9mlg5cCbzgnFtSzHTlgeFAv0Rl87ugb0dqn/98OXEi7zZsiOvcGZyja9eu\nXHzxxRGnjUv7unTh4Ysuos8BB5DxyiuxX34cqJPqkZdffplFixZxzDHHcNVVV3kdJ27yO6mff/45\n2dnZHqcRCZy7gN3A/k7F/BOY75ybGv9IIrKPrVs5behQDl+/ngnXXw/mzXWL/Z96iprffw+XXQbA\n119/jZ/LelST6oGdO3fSoEEDVq9ezahRo+jRo4fXkeLqhBNO4LvvvmPixIm0bdvW6zgiMePlOKlm\n1pvQkdF2xQ0/ZWYZwEKgbf7RVjNrR6gmtdhxUnv16kVmZiYAGRkZNGvWjHbt2gG/H+nRcz3X86Kf\nt2rVijUzZvBjr17QuDGtRo6kYpUqvsj34YcfMmbMGObMmcPcuXPjtr6srCxGjBgBQGZmJoMHD9Y4\nqQX5rZN6//33c/vtt9O8eXNmzpxJWlqwD2jffPPNPProowwYMIBhw4Z5HUckZrzqpJrZ34H+QHvn\n3Lr9THsu8BywscDLVYBjgJ+AX4G3nHP3FZrPV/tNkWT06TvvcNxFF1Ht9tvJGDLEsyOokbz99ts0\nbtyYY489NqHr1YVTPpWVlcWmTZsYPnw4AMOHD/esg5r/V04idOzYEQid8vc6y/4oS2TK4h9m1pNC\nHVQz62JmVxeYprZZ6H9D59w459xRzrnm+Q8gv8borvBr9xVeT9AFfTtS+/yh4wUXMGPQIFb16BFV\nBzUR7evWrdveDuru7dv56N13477OaKmTmmBDhw5l8+bNnH322Zxzzjlex0mIM844g3LlyjFr1iw2\nJ+E4bSJ+YWaXAs8DI4COZtYz3Gk9HzgsPE1rYDXwVHGLKvRTRGJk586df7hYuPtdd9G4cWMPExUv\nLy+PkSedRKXrriMvN9frOH+g0/0JtHjxYho3bkxOTg4zZsygRYsWXkdKmDPOOIMpU6bw7rvv0rVr\nV6/jiMSEB+OkbiR0x6nC63TAYOfcvWbWlNAdpR6LcAq/DjANqAgcQuhU/3bgEufc14Wm9cV+UyTZ\nLFmyhDPPPJP777+fnj17eh2nRL748EPaDRqEXXABxHnM9mj2m6W7nYGUSr9+/cjOzuaKK65IqQ4q\nQPv27ZkyZQrjx49XJ1WklJxzB5dgmrlAzSLeWwvUjXUuEQlzjvr165OVlUWuz45KFues886D5s2h\nVSvWH3QQed26Ubt2ba9j6XR/oowbN44PPviAqlWr/uF2ZV5JdD1P/qD+EyZM8DxLcZQlMmWRoAn6\ndqT2JZZzjjdfeIG8s86C1atp0KABxx13XKmX50n7DjuMuYMHk3bttXzz2muJX38E6qQmQHZ2Njfd\ndBMAd911F3Xq1PE4UeK1bNmSypUrs2DBAtauXet1HBERkZjJ2bGDhrfdxgcrV+KS+P/4Q849l423\n3kqnxYu9jgKoJjUhHn/8cW644Qbq16/P/PnzqVChgmdZvHTuuefyySef8Nprr/G3v/3N6zgiZebl\nOKnx5vV+UyRpOAe9epG3fTszbrmFlqef7nWissvLg7Q0tm7dSrVq1WK6aA1B5SPr169n0KBBADzy\nyCMp20EFOPvss4HIp/xFRESSzcKFC/l1wABYsIC0V18NRgcVyM7NpX///px99tme3pFKndQ4u/nm\nm9m8eTN/+tOfqFKlitdx9vKi3iW/LnX8+PGeZymKskSmLBI0Qd+O1L7EWPjxx/z24IMsuv9+qFw5\nZsv1un1paWlUrFiRjz/+GPPwBgTqpMbRp59+yquvvkrFihV56qmnPP2i/aBZs2bUqFGDFStWsGzZ\nMq/jiIiIlMmF/frx48cfc1Tr1l5Hian09HTuvfdeatWq5WkO1aTGyc6dO2ncuDHLly9n+PDh3Hbb\nbQldv19Xw4PyAAAgAElEQVR169aNd955h+eff56rrrpq/zOI+JhqUkVS0w8//ECDBg28jpEQK6dO\n5dVbb+WKt96KyYXfqkn1gcGDB7N8+XKaNGnCzTff7HUc3yjqlL+IiEgy2L59O+eccw533nmn11ES\n4qnhw7lxzhxq7tiR8HWrkxoH06dP5+GHH8bMeP755ylfvjzgfY1JQV5lKTheav5RGn0ukSlLZH7K\nIskr6NuR2hc/VapUYcaMGTRq1Chu6/DT9zd87FgqDxxIuX/9KzSSQQKpkxpj27dvp2fPnuTm5tKv\nXz9OPfVUryP5SsOGDalTpw7r1q1j0aJFXscREREpkby8PHIWLIBPPqFWrVr89a9/9TpSQpgZ3Hor\nrFnDwsGD2bZtW+LWnQo1R4msrbr66qt54YUXaNq0KV999VVKDzlVlEsuuYQxY8bw7LPP0qdPH6/j\niJSaalJFUseol1/m5Ouu4+CBAzlowACv4yTcf6++mo4vv8yGSZM4sQxDbakm1SPvvvsuL7zwAhUq\nVODVV19VB7UIbdu2BWDixIkeJxERESmZHvPmkZeZyVdNm3odxRNt77iDmpddxolbtiRsneqkxsiP\nP/7IlVdeCcDw4cNp3LjxPtP4qcbEyywFO6nOOX0uRVCWyPyURZJX0LcjtS/GJkzARo+m4cSJdOrc\nOe6r8+P3V7duXcq/+CJ06oRzLiGD/HvSSTWzZmb2vJktNLNvzWyBmf3HzGqWYN7yZjbEzL4zs3lm\n9qWZeTpA2a5du+jevTu//vornTp14vrrr/cyju81atSIgw46iJ9//pkVK1Z4HUdERKRID9xxB7/1\n6AEvvggHH+x1HG+ZMWvWLNq2bZuQUXo8qUk1s++BecBlzrnfzOwwYDyhTnNT59yuYuZ9BmgHtHbO\nbTSzK4HHgdOdc3OLmCdutVXOOa688kpefvll6taty8yZMznooIPisq4g+ctf/sLYsWMZMWIEvXr1\n8jqOSKmoJlUk+Ga8+CJT+/fngtmzOeqoo7yO47mXXnoJ5xyXX3456enpUc8fzX7Tq07qQqCLc25Z\ngdeuAF4ALnTOvV3EfA2BhcCVzrkRBV6fD6xwznUpYr647WyHDRvGwIEDqVixItOmTaNZs2ZxWU/Q\nPPLII/Tr14/evXvz0ksveR1HpFTUSRVJDTk5OZQrV87rGIGQDBdONSnYQQ1bE/6ZUcx8FwAGfFHo\n9S+AjmYWuxvnlsBrr73GwIEDMTNGjhy53w6qn2pMvM5y5plnAjBp0iTPsxSkLJEpiwRN0Lcjta/s\nPvvsM3JycgAS3kFNhu/POcf4UaPiOiSVJ51U51xOhJePBRwwqZhZmwC5wMpCry8HygEnxCRgCbz5\n5pt7T1M/8sgjXHDBBYladSA0bdqUqlWrsnTpUtavX+91HBERkb1ycnJ4+OGHadOmzd6OqvzR/Zdd\nxgmXXcZPixfHbR2+GCfVzNKB2cA059w/ipnuU6Clc656odevAp4DOjnnPokwX0xPW7355pv06NGD\n3NxcBgwYwLBhw2K27FTSqVMnxo0bx6hRo+jRo4fXcUSiptP9IsHlnOObb76hRYsWXkfxpTVr1lD7\nn/8k7YwzoF+/Es+XDKf7C7sL2A3cGK8V7Ny5s8zLcM7x6KOPcvHFF5Obm8vtt9/O0KFDY5AuNeUP\nRTVpUnEHz0VERBIne8sWGD4cc04d1GIceuihpA0dCvffD3EaO9XzKmAz6w1cCLRzzv22n8k3AAfa\nvn/iVwv/3FjUjEcffTS9evWiSpUqZGRk0KxZM9q1awf8XvtR3PNdu3bxzjvv8NxzzwFwxRVXMGzY\nMMysRPPna9euXYmnj+fzOXPmcOONN3q2fvi9LvXtt9/m4osv9vTzyH9e+LvyMk/hTKm+veQ/f+yx\nx6L+9xur51lZWYwYMQKAzMxMJHllZWXt/Y6DSO0rnfXr1/Nm/fp0btSIo2+/PebLL6mk+f4aNeKn\nE0/kkxNPpMvXX1OnTp3YLj9/QFYvHsDfCQ1FdUgJp78NyAOOKvT6E4SOxFYuYj4HuNq1a7uxY8e6\naH311VeuYcOGDnAVKlRwI0eOjHoZzjn3xRdflGq+ePBDlt27d7uKFSs6wK1bt87rOM45f3wu+ZQl\nMj9lCe1CvduHxvMRbltg+Wk7ige1r5TmznV7atRwjw0YEJ/ll1AyfX8P9OnjdlWr5nI3bizR9NHs\nNz2rSTWznoQ6ne2dc+vCr3UBDnXOPR9+XhtYF24UZnYs8B1whXPuvwWWNR9Y7pw7v4h1uTPPPHPv\nbTgvueQSBg4cyIknnlhsxu+//55BgwYxZswYAE444QReffVVmjdvXpamSwFnn302X3zxBW+99Rbd\nunXzOo5IVFSTKhIgeXlwxhnQqxf06eN1muTywQdw1llw4IH7ndT3NalmdinwPDCC0NBRPcOd1vOB\nw8LTtAZWA0/lz+ecW0zoAqkBZnZweLreQF1gYHHrnDBhAo899hgVK1Zk9OjRNGnShA4dOvDAAw8w\nefJkFixYwKJFixg3bhwPPPAALVu25Pjjj2fMmDFUqFCB/v37M2vWLHVQY+yMM84A4Msvv/Q4iYiI\npKpff/2VDy68kLzsbLjqKq/jJJ8uXcirVIm5cyPeU6n0SnrINZYPQrWjuYRO3Rd85AJ3h6dpSqgG\n9c5C85YDhgD5d636ktDdp0p02mr58uWub9++rlKlSo5wGUBRjwMPPND16dPHrVy5skSHsPfHT4fv\n/ZLlk08+cYBr2bKl11Gcc/75XJxTlqL4KQs63Z+0/LQdxYPaF521a9e6T+rVcwM7d47pcksr2b6/\nnTt3uiZNmrg2bdq43NzcYqeNZr/pyYVTzrn93vzWhW5xWjPC6zmERgO4qzTrzszM5IknnuCee+5h\n3LhxTJo0idmzZ7N9+3b27NnDUUcdxXHHHUe7du3o0qULlSsn9P4AKadVq1ZY+F7AO3fu1OctIiIJ\nV7t2bTouXUqbGIwElIoqVarEyy+/TPPmzTGLXQWUL8ZJjTfVVvlb8+bNmTNnDllZWXuv+BdJBqpJ\nFUlueXl5bNy4kVq1ankdJWX4viZVpKDWrVsDqksVEZHEmj17NieccAIvvvii11ECISc7m4k33cQr\nMfo81UlNoILjX3rNT1lq1KgB+KOT6qfPRVki81MWSV5B347UvpJp0aIFkydP5uijj47J8mIlWb+/\nSZMnc+CIEZy8aFFMlqdOqniucePGAEydOpW8vDyP04iISErYtg0WLeK4446jQ4cOXqcJhLPOOouT\nR4/m+I8/hhiUC6kmVXzhyCOPZNWqVcyfP59GjRp5HUekRFSTKpKcli1bxrIePTijfn0qjBzpdZxg\ncQ6aNiV3+HDSOnXa50Iq1aRK0lFdqoiIJEr1TZto9e23DDngAK+jBI8ZU087jWkXXsiUKVPKtCh1\nUhPITzUmfsvil06q3z4Xv1AWCZqgb0dqX/EOfuABqgwYwL0vvRSbQDGW7N/f+g4dOOXAA2lTrVqZ\nluPJOKkihfmlkyoiIsGVl5fHhrFjOWTqVHj5ZdLSdKwuHrpedBE0agQNGpRpOapJFV/IyckhIyOD\nHTt2sHbtWmrXru11JJH9Uk2qSHL59ttv2dKiBdu6d6fz6697HSfwdu/ezezZs2nVqtXe11STKkmn\nXLlyezdiHU0VEZF4aNKkCQ2++opq//qX11ECb8uWLWRmZnL//fdT2j941UlNID/VmPgxS/4p/7IW\nWsciix8oS2R+yiLJK+jbkdpXtDonnUSbtm1jFyYOgvD9Va9ena+++op33nmn1LdKVSdVfKNNmzaA\njqSKiEhsbdiwgWuuuYZVq1Z5HSWlHHXUUWWaXzWp4hvbtm0jIyODtLQ0tmzZQuXKlb2OJFIs1aSK\nJIetW7cyfPhwli9fzqhRo7yOk1I2rV3LlDvuoOpll9GuXTvVpEpyqlq1Kk2aNCEnJ4cZM2Z4HUdE\nRAKiWrVqDBs2jJEauD/hXhs5kjajRlFn06ao51UnNYH8VGPi1yxeD0Xl18/Fa8oiQRP07Ujt+926\nOXPgwgvBuVLXRiZakL6/vjffTI1+/TiuFG1SJ1V8Jb+TOnXqVI+TiIhIstuyZQsfn346ny1ZgopX\nPHT11fDqq7jt26OaTTWp4isrVqygbt26HHzwwaxfvz5p/uqV1KSaVBGfW7yYvNNO49PHH+fcSy/1\nOk3K2r17N8saN+b1Xbu4d9Uq1aRKcjr66KOpU6cOGzduZMmSJV7HERGRZDZoEGk33aQOqscOOOAA\n5rduze01akQ1nzqpCeSnGhO/ZjGzvYP6T5s2zdMsXlOWyPyURZJX0LejVG+fc47/u+Yacj77DG68\nMTGhYiho35+ZcdGLL1Lp8cejmk+dVPGd0047DfCmkyoiIskvLy+POjt3ck+5cuwuX97rOAKQng7t\n2kU1i2pSxXcmT55M27Ztadq0KXPmzPE6jkiRVJMq4m+5ubmkp6d7HUPCnnvuOf7xj3+UeL+pTqr4\nzs6dO6levTp5eXls2bKFKlWqeB1JJCJ1UkX8Z+fOnboZjE/lXxytC6d8yE81Jn7OUrlyZZo2bUpe\nXl7CB/X38+fiJWWRoAn6dpTK7evWrRvdunXjl19+SVygGAvq95eZmRnV9Oqkii+pLlVERErjnXfe\noX379lSvXt3rKFJGOt0vvjRy5EguvfRSunTpwvvvv+91HJGIdLpfxGfWrYOaNSFNx+D8Kpr9pr5F\n8aX8I6nTp09H/1GKhJhZMzN73swWmtm3ZrbAzP5jZjX3M9+BZna7mU02s5nh+eaZ2U2Jyi4Sb+M/\n/5ztZ50FH3/sdRSJEXVSE8hPNSZ+z5KZmckhhxzChg0bWLp0qadZvKIskfkpiwdeBzKAFs65JsA5\nQEfgSzOrWMx8dYEhwL+dcyc75xoBtwEPmtnAeIf2o6BvR6nYvvKffspPP/zAJwE4ihr076+kkv+b\nlEAyM9WliuwrD7jNOfcbgHNuNfAg0ADoXMx824H/c859lP9C+Pd5QLf4xRVJEOdoO2EC9f/3P9qf\nc47XaSRGVJMqvnX//fdz++23889//pOnn37a6zgi+0h0TaqZlXPO5RR6rRPwIXCVc+6lKJe3DFjk\nnOsU4T3tNyUpOOewDz6AO++E2bNVj+pzqkmVQNCRVJE/KtxBDTsWcMCkki4nXKN6H1AJGBCjeCKe\nGP366yy+9FJ++Nvf1EENGH2bCeSnGpNkyNKiRQvS09P59ttv2bFjh6dZvKAskfkpi9fMLB24EnjB\nObekhPNMAX4FLgC6O+dS8rZuQd+OUql93S+4gJ//+lcWNGjgXaAYC/r3V1LqpIpvHXjggZ4N6i+S\nJO4CdgM3lnQG51wboDIwHBhvZn3jlE0kIcpXrMhZzz7LX7qpvDpoVJMqvta3b1+eeuophg0bxoAB\nOisp/uLlOKlm1hvoB7Rzzm0o5TKeAS4HjnbO/VLoPderV6+9d4jJyMigWbNmtGvXDvj9SI+e67lX\nz3NzcylfvjxnnHEGEydO9DyPnkd+npWVxYgRI4DQyD2DBw8u8X5TnVTxtddee42ePXty/vnn8957\n73kdR+QPvOqkmtnfgf5Ae+fcuhJMXx7Ic87lFnr9X8CTwDnOufGF3tN+U3ztxx9/5E9/+hMtWrTg\ntdde8zqOlJAunPKp/L8s/CBZsrRq1QpI3KD+yfK5JJqy+IeZ9aRQB9XMupjZ1QWmqW1mBf8TGAjc\nGmFxmeGfG+MU17eCvh2lQvuOPvpoFixYwJAhQ7yOE3NB//5KSp1U8bV69epRq1Yt1q9fz7Jly7yO\nI+IpM7sUeB4YAXQ0s57hTuv5wGHhaVoDq4GnCszqgGvN7PgCy2oDXANMTNWLpySJOQdvvUW6c9Sr\nV8/rNBInOt0vvte1a1fee+89XnnlFXr27Ol1HJG9PBgndSOhO04VXqcDBjvn7jWzpsB44DHn3H3h\n+TIJdUj/FJ63HJALjAIed87tjLAu7TfFl/Ly8niwUyeuXbCAA1eswMqV8zqSREGn+yVQNF6qSIhz\n7mDnXLpzLq3QI905d294mrnOuZr5HdTwayucc7c755o755o55xo755o654ZH6qCK+F3vn3/mmYMO\nYk9u7v4nlqSlTmoC+anGJJmyFKxL9TpLIilLZH7KIskr6NtRkNuXNm0aCzdu5JZZs6hQoYLXceIi\nyN9fNNRJFd875ZRTSE9PZ+7cuQkb1F9ERPxnw4YNuKFD4W9/g/LlvY4jcaaaVEkKJ510ErNnzyYr\nK4szzzzT6zgigLfjpMab9pviR4O7d+cf77/P5hkzOK5pU6/jSCmoJlUCR3WpIiJy9xtvsPDZZzlc\nV/SnBHVSE8hPNSbJliVRdanJ9rkkirJI0AR9Owpq+ywtjbN792bWrFleR4mroH5/0VInVZJCwSOp\nOgUpIpJa5s2bx+uvv06uruZPKapJlaTgnKN27dqsX7+epUuXavBm8QXVpIokxowZM7jxxhvp1KkT\nd955p9dxpAyi2W9qBFxJCmZGq1ateP/995k2bZo6qSIiKeSUU05hypQp5OTkeB1FEkin+xPITzUm\nyZglEXWpyfi5JIKySNAEfTsKUvvc6tXw8MOYGeXDw04FqX2RBL19JaVOqiQNXeEvIpJaVq9ezctN\nmrBw3Divo4gHVJMqSWP79u1Ur16dtLQ0tmzZQuXKlb2OJClONaki8eV+/ZWczExevv56+tx33/5n\nEN/TOKkSSFWqVOHEE08kJyeHmTNneh1HRETizJ56ivLduqmDmqLUSU0gP9WYJGuW/FP+8apLTdbP\nJd6URYIm6NtRENo3e8oU3BNPwG237fNeENpXnKC3r6TUSZWkorpUEZHU8EX//ozbto31NWt6HUU8\noppUSSo//PADxx57LLVr12bNmjWYBbIcUJKEalJF4uv7uXM5rmlTr2NIDEWz31QnVZKKc45atWqx\nceNGli9fTmZmpteRJIWpkyoiEh1dOOVTfqoxSdYs+YP6Q3xO+Sfr5xJvyiJBE/TtKJnb98Ybb/Cf\n//yHHTt2FDlNMrevJILevpJSJ1WSjupSRUSCq0GDBkyePJkPPvjA6yjiMZ3ul6QzYcIE2rdvz8kn\nn8yMGTO8jiMpTKf7RUSio5rUQrSzDZZt27aRkZFBWloaW7dupVKlSl5HkhSlTqpI7Djn2JOVRYVp\n0+COO7yOI3GimlSf8lONSTJnqVq1Ko0bNyYnJ4dZs2Z5miWelCUyP2WR5BX07SgZ2/ftt98y8dxz\n+WLu3P1Om4zti0bQ21dS6qRKUlJdqohIsDRNT+esatXYedFFXkcRn9DpfklKI0aMoHfv3nTr1o23\n3nrL6ziSonS6XySGLr8cjj1Wp/oDLpr9Zrl4hxGJh4JHUp1zGtRfRCSJffLCC5zz3nukLV3qdRTx\nEZ3uTyA/1Zgke5Zjjz2Wgw46iDVr1rBy5UpPs8SLskTmpyySvIK+HSVT+/Ly8vjxf//j6d272V6+\nfInmSab2lUbQ21dS6qRKUor3oP4iIpIYaWlp9Jk0iUt/+okqVap4HUd8RDWpkrSGDBnC3XffzQ03\n3MBjjz3mdRxJQapJFRGJjoagkpSgK/xFRJLbo48+ysCBA/nll1+8jiI+pE5qAvmpxiQIWU499VTM\njNmzZ7Nr1y5Ps8SDskTmpyySvIK+HSVL+7p27cqWLVtYtGhRVPMlS/tKK+jtKyl1UiVpVatWjUaN\nGpGdnc0333zjdRwREYlSvXr1ePLJJ2nbtq3XUcSHVJMqSa1Pnz48//zzPPTQQ/Tr18/rOJJiVJMq\nUjq5ubnsGDmSaosXw5AhXseRBFJNqqQM1aWKiCSfObNns6h3b97WuKhSDHVSE8hPNSZByVJ4UH8v\ns8SaskTmpyySvIK+Hfm9fS127aL5kUdy2LXXlmp+v7evrILevpJSJ1WS2rHHHktGRgarV69m1apV\nXscREZGSePBByvXvT6vWrb1OIj6mmlRJep06dWLcuHGMHj2aiy++2Os4kkJUkyoSvTGDB9P9ySdJ\nX7kSKlXyOo4kmGpSJaWoLlVEJDnk5eWxe+ZM/p2dzU79EST7oU5qAvmpxiRIWfI7qdOnT/c8Sywp\nS2R+yiLJK+jbkV/bl5aWxt/ff5/b1q+ncuXKpV6OX9sXK0FvX0l52kk1s0PNbJyZ5XmZQ5Jb/qD+\n33zzDbt37/Y6joiI7Ef58uW9jiBJwLOaVDPrBjwE7AEaOOfSo5h3BbApwlv9nHMTIkyv2qqAa9y4\nMQsWLGDq1Kl7j6yKxJtqUkVK7p577uGnn35i4MCB1KtXz+s44pFkqUntB5wNTAei3ck751zzCI99\nOqiSGlSXKiLib9dddx2ZmZls2hTpGJPIvrzspLZxzq3wcP0J56cak6BladWqFVD2utSgfS6xoiwS\nNEHfjnzXPuc4+OCDueuuu2jRokWZF+e79sVY0NtXUp51UnUeSWJJR1JFRPwpOzubtY8+Cjfe6HUU\nSTKej5NqZiOAy5xzJe4wm9lyYAzQBqgJrACedM69X8T06hMHXF5eHgcffDCbN2/mp59+4ogjjvA6\nkqQA1aSK7N/cOXOwk09mVteu9H7rLa/jiMeSpSa1LNYBs5xzrYFGwFhgrJmV7v5qkvTS0tJo2bIl\nEJuhqEREJDaabtxI4/r1OfWee7yOIkkmKTupzrmWzrkx4d9znHNPAx8Bw8ysgrfpiuanGpMgZsmv\nSy3LKf8gfi6xoCwSNEHfjnzVvgcfJK1/fxqdeGLMFumr9sVB0NtXUuW8DhBDXwOdgROA2YXfvPzy\ny8nMzAQgIyODZs2a0a5dO+D3jSHez/Mlan3FPZ8zZ46n6y/4fM6cOTFZXn5d6rhx4zj//PN90z5t\nL7F9HqvtpTTPs7KyGDFiBMDe/YmIFO3FG27gslmzKD92rNdRJAklXU2qmVUE0p1zOwq9PhAYApzq\nnJtZ6D3VVqWAzZs3U6NGDQ444AC2bt1KhQq+PaguAaGaVJGiOed4+6qrmPfhh9yyZAlVqlTxOpL4\nQDLWpBa5JzSz2mZWsDE9gIcjTNoC2AUsjHE2SRIZGRkcf/zx7NmzZ+/RNhER8YaZ0f3FFxm0Zo06\nqFIqfumkRuxRm1lrYDXwVKG3/mpmJxeY7hKgK/CAc25n3FKWUeHTuF4KapayDkUV1M+lrJRFgibo\n25HX7cvL+/1u5388zhQbXrcv3oLevpLyrJNqZk+Hh5LqDjgzW25my8ys4A19txG6/enqAq99BDwI\nPG1ms8PL6A/8wzl3T4Lii09pvFQREe/dfffddOnShXnz5nkdRZKY5zWpiaDaqtSxYMECGjduzFFH\nHcWPP/7odRwJONWkikT222+/8eqrr9KyZUuaNGnidRzxkWj2m+qkSqDk5eVRo0YNtm7dys8//8xh\nhx3mdSQJMC86qWbWDLgWaA3kAOnA58AQ59yGYuY7FLgG+Auhs2jlCNXwD3LOzY8wvfabUjq5uWAG\naX6pKBQ/ScYLp1KCn2pMgpql4KD+pTnlH9TPpayUxVdeBzKAFs65JsA5QEfgy/DoJ0UZROjC087O\nuROBZkAu8JWZNY5zZt8J+nbkVft2797NksGD4cor47oefX+pQZ1UCRzVpUrA5QG3Oed+A3DOrSZU\np9+A0FjRRXHA/c65n8Pz7QZuByoBfeKaWFLG8mXLyBk+nEfXrPE6igSATvdL4Hz88cd07tyZ008/\nnS+//NLrOBJgHp3uL+ecyyn0WifgQ+Aq59xLRcyXDuQV3BmaWSVgB/Cqc+6yQtNrvynRGzcOd+ut\nrHz/fY7WDS8kAp3ul5SWf3vUWbNmsXv3bo/TiMRW4Q5q2LGEjpROKma+3Ai9zmPDP7Nik05S3oMP\nYrfeqg6qxIQ6qQnkpxqTIGepUaMGjRo1Yvfu3cyaNcvTLGWhLJH5KYsfhI+QXgm84JxbEuXsfYD5\nwCsxD+ZzQd+OvGjfY5ddxm/ffou75JK4r0vfX2pQJ1UCqXXr1gA63S+p4C5gN3BjNDOZWXvgYuBi\n51x2PIJJ6nDOcfwRR/BgjRps0xksiRHVpEogvfLKK1x22WX8+c9/ZuzYsV7HkYDyepxUM+sN9APa\nFTf8VIT5mgIfABc556YXMY3r1asXmeHTthkZGTRr1ox27doBvx/p0XM913M9L+55VlYWI0aMACAz\nM5PBgwdrnNSC1ElNPcuWLeOYY46hZs2arFu3Li635RPxspNqZn8ndLe99s65dVHM1wR4F+jpnJta\nzHTab0qJ7Nq1iwoVKmg/KyWiC6d8Kv8vCz8Iepa6detSp04dNmzYwOLFiz3NUlrKEpmfsnjFzHpS\nqINqZl3M7OoC09S2Qr2GSB1UMzvUzJ5JXHp/CPp2lMj2DR8+nFNOOYXp0yMelI8LfX+poZzXAUTi\nwcxo06YNb775JlOmTKFhw4ZeRxKJCTO7FHgeuBPoWKAfegawOjxNa0JX+j8L/Cv82onAeOBNoJ6Z\n1QvPVxPQPxAptbvvvpuTTjqJGjVqeB1FAkan+yWwHnvsMW666SZ69+7NSy9FHDpSpEw8Gid1I6E7\nThVerwMGO+fuDdecjgcec87dF57vLUK3RI2UN8s5d3ah9Wi/Kfu3Z0/oNqiVKnmdRJJENPtNHUmV\nwNIV/hJEzrmDSzDNXEJHSAu+1j1uoSQl7dy5k8W33krTX3/FRo3yOo4EkGpSE8hPNSapkKVZs2ZU\nrlyZxYsXs25dya4rSYXPpTSURYIm6NtRItq3ZtUqarz4Ivf+8kvc11WYvr/UoE6qBFb58uVp2bIl\nAFOnFnkRs4iIlMIxCxZwVJMmXPfGG15HkYBSTaoE2l133cV9993HLbfcwoMPPuh1HAkYr8dJjSft\nN6VYzsHpp0O/fnDhhV6nkSSiIahEwtq0aQPAlClTPE4iIhIMzjmGnHsuW5ctI7tLF6/jSICpk5pA\nfqoxSZUsrVq1wsyYNWsWv/32m6dZoqUskfkpiySvoG9H8W5fxz//mafq1yfHo6Pt+v5SgzqpEmjV\nq1M15JMAACAASURBVFfnxBNPJDs7m5kzZ3odR0Qk6ZkZLa+9lgFffkklDT0lcaSaVAm8a6+9lqef\nfpphw4YxYMAAr+NIgKgmVVLNpk2bqFq1KuXKaQRLKR3VpIoUoPFSRURi4+mnn6ZBgwZMmjTJ6yiS\nAtRJTSA/1ZikUpb8TurUqVPJy8vzNEs0lCUyP2WR5BX07She7Rs4cCCjRo2ibt26cVl+Sen7Sw3q\npErgHXXUURx++OFs2rSJ77//3us4IiLJads22LCBVq1aceSRR3qdRlKAalIlJfTo0YPRo0fz7LPP\n0qdPH6/jSECoJlVSxcaNG1ly5ZW0qFqVcq+84nUcSWKqSRUpRHWpIiKlt239ehqMG8fAjRu9jiIp\nRJ3UBPJTjUmqZSlpJzXVPpeSUhYJmqBvR7FuX+akSRzUvj1D3n03psstLX1/qUGdVEkJTZo0oUqV\nKixdupS1a9d6HUdEJHnk5sJDD8Ftt3HAAQd4nUZSiGpSJWWcc845fP7557z55pt0797d6zgSAKpJ\nlaDLzc1lUKNG/HPXLmp+/z0VKlb0OpIkOdWkikTQpk0bACZPnuxxEhGR5JCenk7PoUMZc9pplCtf\n3us4kmLUSU0gP9WYpGKWtm3bAhQ7CHUqfi4loSwSNEHfjmLZvuO6d+emUaNIT0+P2TLLSt9falAn\nVVJGy5YtKV++PHPmzGHLli1exxER8bWlS5eybds2r2NIClNNqqSUNm3a8OWXX/LBBx9w3nnneR1H\nkpxqUiXIhgwZwuOPP8677767d4QUkbJSTapIEUpyyl9EROCuu+5i2rRpNGnSxOsokqLUSU0gP9WY\npGqW/XVSU/Vz2R9lkaAJ+nZU5vatXAlLllC/fn2qVq0ak0yxpO8vNaiTKimldevWpKWlMXPmTHbs\n2OF1HBER35k3bx6zu3Zl5wsveB1FUpxqUiXlnHLKKcycOZPPPvuMDh06eB1HkphqUiWIVk2dSo2z\nzuKha65h0H/+43UcCZi41aSa2Tgze9rMLjKzWqWLJ+KtM888E1BdqiSO9p2STI4YPZoDr7tOHVTx\nXLSn+/8N7AJuA1ab2QIze8LMupmZbkOxH36qMUnlLPl1qRMnTvQ8S3GUJTI/ZYmC9p0+k6TbUYmV\ntn27V62CV16Bm2+ObaAY0/eXGqLqpDrnJjrnbnbOnQzUJLTDrQH8F/jJzC6IQ0aRmGrTpg1mxldf\nfcWuXbu8jiMpQPtOSQbbt2/n/44/nulHHok79FCv44jEpibVzK4HpgGPAXc758aXeaExpNoqKaxp\n06Z8++23TJw4ce+RVZFolbUm1c/7Tu03U9Pq6dOZ+OWX/LVfP6+jSEDFsyb1HjObHf5Zr+B7zrkZ\nwJnAudEsU8QLGi9VEkn7TkkWh7VqpQ6q+Ea0NanpQH+gLjDPzH4ws1nAaeH36wPLY5gvUPxUY5Lq\nWYrqpKb651IUZSkz7Tt9Jkm3oxKLtn2ffPIJq1evjk+YOND3lxqi7aSuBXDO9QLqANcB9wGXm1kG\nMA84PqYJReIgv5M6depUsrOzPU4jKUD7TvG1qVOn0rhxY5YtW+Z1FJG9oq5JNbM24fkmR3ivIbDa\nObctRvliQrVVEslxxx3HokWLmD59Oi1btvQ6jiShaGqrkm3fqf1m6tm0aRM1atTwOoYEXNxqUgGc\nc1Mi7WTD7y3y005WpDgaL1USSftO8a3PP4f589VBFd/RbVETyE81JsoSebxUfS6RKYsETdC3o5K2\n79mnnmJd9+6sXbgwvoFiTN9falAnVVJWfid1ypQp5ObmepxGRCTx/pqezo7q1ZldtarXUUT2EZNx\nUv1OtVVSlHr16rF8+XJmz55Ns2bNvI4jSaas46T6mfabKSAvD048ER57DM45x+s0kiLiWpMqEiT5\nR1N1akVEUkl2dja/PPMMVKkCHTp4HUckInVSE8hPHSFlCTnrrLMA+OKLLzzPUpiyROanLJK8gr4d\n7a99CxYsYOkNN/BqZiZY8p0MSPXvL1WU8zqAiJfyO6kTJ05UXaqIpIxmzZqxZckSDty0yesoIkVS\nTaqkvPr167N06VJmzJjBySef7HUcSSKqSRURiY5qUkWicPbZZwMwYcIEj5OIiMRXbm4u/fr1Y2GS\nDTklqUmd1ATyU42Jsvwu/5T/hAkTPM9SkLJE5qcskryCvh0V1b6cnBxq1arFFVdcQV5eXmJDxVCq\nfn+pRp1USXn5ndTJkyeTnZ3tcRoRkfipUKECt99+O9OmTSMtTV0A8TfVpIoAjRo1YuHChUyZMoXW\nrVt7HUeShGpSJZns3LGDyv37wx13wOGHex1HUpRqUkWipLpUEQm6e9q25ef//Y9fvA4iUkLqpCaQ\nn2pMlOWP8k/5v/XWWx4n+Z0fPpd8yiJBE/TtaJ/2Oce/K1Tgu+7dyahZ05NMsZRy31+KUidVBPj/\n9u47TIoqbePw7x1yUhSQYBpUQEUQV0WUICKwoiCm1RVWggiua0QRA0ZwTbiKq7ImlKCuimAEJcko\nHxiQqGQX2BUxskqSPOf7o3pwdmygm+nuU13z3Nc1F3RN18xzes5Uv1P1VtWpp56KmbFgwQI2bdrk\nO46ISGpNmUKpNWtoO2wY5cqV851GJCHqSRWJ+d3vfsecOXOYMmXKzsP/IrujnlTJBtM+/JAmV19N\nlf79oWtX33GkhFNPqsheKHwpKhGRqFi7eDFzlyzhncqVfUcRSYqK1AwKU4+JsvxW2E6eCsvrAsoi\n0RP1eVR4fB379KHp2rX8/swz/QVKsZL08yvJVKSKxLRs2ZKcnBw+/fRT1q9f7zuOiEixFG7XKFeu\nHGXKlPGYRiR56kkVKeTkk0/m448/Zvz48XTo0MF3HAm5bOxJNbNywF+BvsBpzrkPd/E8bTez3OjR\no3nyySe57777aNq0qe84IoB6UkX2WkFf6pQpUzwnEYnPzJqY2TNmttDM5pvZAjN71Mz2eF0hMzsG\n+Bg4Dciq4lqSd84559ClSxdWrVrlO4rIXlGRmkFh6jFRlviqVasGhKNIDdProiyh8jJQFTjeOdcY\naAe0B6abWfk9rHsTcAPw9/RGDL+oz6O899+nDNCrVy/OO+8833FSLvI/v4iPL1EqUkUKadSoEeXL\nl2fu3Ll8953uyyKhlA/c5JzbBOCcWw0MBuoBezozprtz7n20FzXStm7dyvIRI3BduviOIlIs6kkV\nKeL3v/89EydO5IUXXqCrrikou+GjJ9XMSjvnthdZ1gEYB1zmnHsuga/RA3gOaK2e1Oj5cskSaNyY\nca1bc+2ECb7jiPwP9aSKFEP79u0BmDRpkuckIr9VtECNqQ84IG7BKSXLEZ98wuEnnMA5Tz3lO4pI\nsahIzaAw9ZgoS3x5eXk7i9SJEyfic09S2F6XsAhTljAws1JAL+BZ59yXvvNki8jOo61b4a67+ODC\nCzk0N9d3mrSJ7M8vJurjS1Rp3wFEwuaYY46hVq1afPPNNyxcuJCGDRv6jiSyO7cDW4DrUv2Fe/To\nQW6s0KlatSpNmjShdevWwK9votn6eO7cuaHKk4rHGzdu5MsbbqDL/vszJz8f8vJClS+Vj6P484vq\n+PLy8hg+fDjAzu1JotSTKhJHt27dGDVqFA8//DB9+/b1HUdCyvd1Us2sJ8HZ+q2dcz8msV4P1JMa\nOc45ZgwYwORFi7hj7FjMdH6chI96UkWKqV27doD6UiW8zOwS4HqgTTIFqkSXmdH83nu58/XXVaBK\nJKhIzaCC3d9hoCzxFWRp27btzsdbtmzxmiUMlCVczOxPQH/gdOfc97FlHc2sd6Hn1DRVKrsUtXk0\ne/Zs8vPzdz6O2viK0vhKBhWpInHUrl2bRo0asWnTJmbMmOE7jshOZtYVeAYYDrQ3sz/FitZOQJ3Y\nc5oDq4En9vTl0hhVMmTHjh1ce+21NG3alM2bN/uOI5Iy6kkV2YV+/frxt7/9jZtvvpn77rvPdxwJ\nIU/XSV1DcMepot/XAXc75waa2bHAFGCIc+6eQut2A+4GKgP7A98Dm4FuzrlpRb6PtptZxDnHzJkz\nadq0qe8oIruVzHbTa5FqZrWB54H2zrm07dXVxlb2xoQJEzjjjDM4/vjj+eyzz3zHkRDyfeJUOmm7\nmUXeew9atYKKFX0nEdmjrDhxyszOA6YDuQR7AJJZt4yZDTKzRWb2uZlNjx3eCrUw9ZgoS3yFs7Rs\n2ZJy5coxe/Zsfvwx8+elhPV18S1MWSR7RWUe3d21K5svvJD8X375n+VRGd+uaHwlg8+e1BuANsDH\nJN8X9RjwB6CFc64RwaVUJsYOcYmkRMWKFWnRogXOOaZMmeI7jojIb1yxahWjatRgjfZ6SwR5O9xv\nsWNJZjacoB8qoYLZzBoAC4FezrnhhZZ/Aax0znWMs44OW8leefDBB7npppu49NJLGTZsmO84EjI6\n3C9ezZgBF10ES5dChQq+04gkJCsO9xdj63cuwZ7XqUWWTyU401VNOZIyBddL9X2LVBGRwpYsXkx+\nv34waJAKVImsbLwEVWNgB/CfIstXENzm9eiMJ0pQmHpMlCW+olmOPfZYatasyapVq1iwYIHXLD4p\ni0RNts+jt/v3Z8msWaxo0SLu57N9fHui8ZUM2VikVgd+ibMndl3s32oZziMRlpOTQ4cOHQAYP368\n5zQiIoF+b73FT2PHcnCS90IXySalfQfIlB49epAb+2WuWrUqTZo0oXXr1sCvf7GUtMcFfOcpWOb7\n9WjdujWtW7f+zecPPfRQIChS+/fv7/310nzxN1/y8vIYPnw4wM7tiWSnwvMpW51y1lm7/FwUxrc7\nGl/J4P1i/ntx4tRLwIVAmcJ7U83seuAhoKlz7rMi6+gEANlrP//8M9WrVwdgzZo17Lvvvp4TSVjo\nxCnJtIEDB1K9enX69OlD6dIlZj+TREhWnDhVDPMIch9cZHldYBvBmf+hVHSPlE/KEl+8LFWrVqV5\n8+bs2LGDSZMmec3ii7JI1GTrPOrcuTOvv/46ixYt2u3zsnV8idL4SoawFKm7/HPdzGqaWeGK+/XY\n808r8tTTgInOuV8QSbEzzzwTUF+qiHjkHMceeyyTJk2iUaNGvtOIpF2oD/fH7iL1IfCUc+4vhZb/\ng6Aobe6cW2NmPYHHgZOdc/PjfB0dtpJi+fzzz2ncuDG1atXi66+/JicnLH/fiU863C+ZsnTpUuoO\nGECZK68E9StKFsuKw/1mNtTMVgDnA87MVpjZcjMrU+hp64GfgNVFVr8aGA1MN7PPgcuA9vEKVJFU\nOOaYYzjooIP49ttvmTt3ru84IlLCzLjvPr59/XXm6ZqoUoL4vJj/X5xzdZ1zVZxzpWL/P8w5t63Q\nc+Y756o75+4psu5259ztzrkjnXONnHPNnXPTMz+K5ISpx0RZ4ttVFjPjrNiZtOPGjfOaxQdlkajJ\nqnm0Ywc95s5l68CB1G/cOKFVsmp8e0HjKxl0zFIkQepLFREvnn0W9tmHw2+5hQrakyoliPee1ExQ\nb5WkwoYNG6hWrRrbtm3j+++/33lZKim51JMq6Tawb1+uf+YZSk+eTPlmzXzHESm2rOhJFck2lStX\n5tRTT8U5x4QJE3zHEZESoOfFFzPqyCNZVqmS7ygiGaciNYPC1GOiLPHtKUsmD/ln0+uSSWHKItkr\nW+bRwU2bcsVnnyV9yalsGd/e0vhKBhWpIkkoKFLfe+89duzY4TmNiETVxx9/zHfffec7hohX6kkV\nSVK9evX48ssvmT59OqeccorvOOKRelIlXR588EEGDx5MXl4eDRs29B1HJGXUkyqSRgWXonr77bc9\nJxGRqOrfvz/Tp0/nyCOP9B1FxBsVqRkUph4TZYkvkSxnn302AG+++ab3LJmiLBI1YZ1HO3bsCC45\n9dVX1K9fn1KlSu3V1wnr+FJF4ysZVKSKJKlly5ZUrVqVRYsWsWzZMt9xRCRC+p9xBuuvuYYN27f7\njiLinXpSRfbCn/70J1588UUGDx5Mv379fMcRT9STKimVn8+2Zs14vXJl2o0Zw3777ec7kUjKqSdV\nJM06d+4MpP+Qv4iUIM88Q5lSpbhw8mQVqCKoSM2oMPWYKEt8iWY544wzKFu2LDNmzOCHH37wmiUT\nlEWiJmzz6JmBA9lx663w9NOQU/y35rCNL9U0vpJBRarIXqhSpQpt2rQhPz+fd955x3ccEclizjmq\nLV/OkG3b2FC3ru84IqGhnlSRvfTkk09yxRVX0LlzZ9544w3fccQD9aRKKm3YsIHKlSv7jiGSVsls\nN1Wkiuyl1atXc+CBB1KhQgV+/PFHKlas6DuSZJiKVCmu5cuXc9hhh/mOIZIxOnEqpMLUY6Is8SWT\npU6dOpx44ols2rSJKVOmeM2SbsoiUROGebR582bat29Pr169SPUfBGEYXzppfCWDilSRYtBZ/iKy\nt8qXL8+cOXM488wzMYvkDnmRYtHhfpFi+OKLL2jUqBE1atTgm2++2eu7w0h20uF+2WubNsGkSRC7\ng51ISaHD/SIZ0rBhQ+rVq8cPP/zAtGnTfMcRkSywfPlyXqpXj7VDh/qOIhJqKlIzKEw9JsoSX7JZ\nzIwLLrgAgNdee81rlnRSFokan/Oo7jffcM769TySxhOmov57ovGVDCpSRYqpoEgdM2YM+fn5ntOI\nSKht3Ij16EHF557jLu1JFdkt9aSKFJNzjsMOO4yVK1cybdo0WrRo4TuSZIh6UiUZn332Gfvedhv1\natSAUaN8xxHxQj2pIhmUzkP+IhIdpbds4ftp03i5eXPfUUSygorUDApTj4myxLe3WdJxyD8Kr0s6\nhCmLZC8f86hJ8+b87scfOadHj7R/r6j/nmh8JYOKVJEUaNq0KQcffDCrVq1i5syZvuOISIjMmzeP\nTZs2AVChQgXKly/vOZFIdlBPqkiKXHfddTz66KP069ePwYMH+44jGaCeVEnEVVddRV5eHlOmTKFm\nzZq+44h4lcx2U0WqSIr83//9Hy1btiQ3N5fly5frDjIlgIpUSYRzjvHjx9OhQwdycnQAU0o2nTgV\nUmHqMVGW+IqT5ZRTTqF27dqsXLmS2bNne82SasoiUZOJebTuxx/h3nuxbds466yzMlqgRv33ROMr\nGVSkiqRITk4O5513HgCvvvqq5zQi4tNPP/3Eq7m5fDV2LJQp4zuOSFbS4X6RFJo2bRqtWrXikEMO\nYcWKFTq0F3E63C+79NprbLnuOp7u04er77jDdxqR0FBPahHa2Eqm5Ofnk5uby1dffaUL+5cAKlKl\nKOcc9q9/wSmnwPjxcMIJviOJhIp6UkMqTD0myhJfcbPk5OTwxz/+EYB//vOfXrOkkrJI1KRrHj39\n6KP856ST2HrrrV4L1Kj/nmh8JYOKVJEU69KlCwCjR49m27ZtntOISCZ1/eMfmXr44Uxv3Nh3FJGs\np8P9IinmnOPoo49m8eLFvPvuu5xxxhm+I0ma6HC/iEhydLhfxCMz4+KLLwaKf8hfRMJvy5YtnHvu\nuSxatMh3FJFIUZGaQWHqMVGW+FKVpaBIff3113feDtFXllRQFomaVM6jcuXK0bFjR/7yl78Qlr3P\nUf890fhKBhWpImlQr149TjjhBNavX8+4ceN8xxGRdFm/HjZupFevXkyePFl3mhNJIfWkiqTJI488\nwvXXX895553HmDFjfMeRNFBPask2Ytgw2gwZwsFdusAtt/iOI5IV1JMqEgIXXXQRZsa4ceP4+eef\nfceRCDCzJmb2jJktNLP5ZrbAzB41s+oJrFvGzAaZ2SIz+9zMpptZ80zkjiTn6Dx5MiuWL2dm69a+\n04hEkorUDApTj4myxJfKLHXq1KFNmzZs2bJlr26TGtXXpbjClMWDl4GqwPHOucZAO6A9MN3Myu9h\n3ceAPwAtnHONgOeAiWZ2bDoDh1Wx59HDD1N1wQJO+Ne/OPHkk1OSKZWi/nui8ZUMKlJF0qhHjx4A\nDB8+3GsOiYx84Cbn3CYA59xqYDBQDzhzVyuZWQOgN3C/c25NbN1hwArgr+kOHSVfffUVT7VoQf4j\nj8A771CxVi3fkUQiSz2pImm0ceNGatWqxYYNG1i8eDENGjTwHUlSKNM9qWZW2jm3vciyDsA44DLn\n3HO7WO9m4F6grnPu34WWPwZcDlR1zv1SZB1tN+PYvn07Uxo3Zv5JJ3Hj88/7jiOSddSTKhISlSpV\n4sILLwRg5MiRntNItitaoMbUBxzw4W5WbQzsAP5TZPkKoDRwdEoClgClS5em3RdfcNXQob6jiESe\nitQMClOPibLEl44sBYf8R44cyY4dO7xm2VvKEk5mVgroBTzrnPtyN0+tDvwSZ9fouti/1eKttHr1\n6uKHDKlk5lF+fj4dO3Zk9uzZAOTk5FChQoU0JUuNqP+eaHwlQ2nfAUSirkWLFhx22GEsX76c999/\nn3bt2vmOJNFxO7AFuC4dX7zr6adz6kUXAVC1alWaNGlC69iZ7AVvotn6eO7cuQk/Pycnh6ZNm9K9\ne3fmz5+PmXnPn8rxZeNjjS97Hufl5e08LyM3N5dkqCdVJAMGDhzInXfeSdeuXXnhhRd8x5EU8Xmd\nVDPrCdwAtHbO/biH574EXAiUKbwxNLPrgYeAps65z4qs41yNGvDuu3D88akfQBbYsmUL5RYsgNxc\n2H9/tm3bRpkyZXzHEslq6kkVCZlu3boBMHbsWNauXes5jWQ7M7sEuB5os6cCNWYewfb+4CLL6wLb\ngIVx13rmGejYkXmvvMKWLVuKkTg73depExtbtYJ58wBUoIpkmIrUDApTj4myxJeuLLm5ubRu3ZpN\nmzYxevRor1n2hrKEh5n9CegPnO6c+z62rKOZ9S70nJr2v/fnfJ3g5KrTiny504CJRc/s36lzZ2b9\n4Q/s36ULKz/4IJXD8G6P82jcOG6fNYt7GzRgw4knZiRTKkX990TjKxlUpIpkSMEJVMOGDfMbRLKW\nmXUFngGGA+3N7E+xorUTUCf2nObAauCJgvWcc0uBp4FbzKxa7Hk9CfakDtjd9yx16aXk3HgjDWbN\nSv2AQmj+/Pls/Mc/oFcvSo0bx19nzaJy5cq+Y4mUSOpJFcmQjRs3UqdOHdatW8f8+fNp1KiR70hS\nTB6uk7qG4I5TRb+nA+52zg2M3UFqCjDEOXdPoXVLA3cS3HVqG8GZ/f2dc9N38b1+s93csWMHDz30\nEH/5y1+oUqVKqoYVKs9360aHV1+l6kcfUf6443zHEYkc9aSKhFClSpW45JJLAHjqqac8p5Fs5Jyr\n5pwr5ZzLKfJRyjk3MPacec656oUL1Njy7c65251zRzrnGjnnmu+qQN2V2267jffee4/SpaN7YZhu\nzz7LWwMGkNOwoe8oIiWeitQMClOPibLEl+4sffr0AWDUqFFs3LjRa5ZkKItAMH/feuutndcI3b49\n3r0FskPheXTdddcxdepUAEqVLUuf22+nbNmynpKlRtR/TzS+kkFFqkgGNW7cmGbNmrFu3TpeffVV\n33FEklK3bt2dh/m/mTmTBw46iP+uWeM5VfF16tSJPn36sG3bNt9RRKQQ9aSKZNjw4cPp2bMnJ510\nEh9//LHvOFIMPq+Tmm572m4OvuYauo0ZQ83TT4enn4by5TOYrnicc4x55RXOXbqUUr17Q+3arF27\nln333dd3NJHIS2a7qSJVJMN++eUX6tSpw9q1a5k7dy7HHnus70iyl0pykeqcg19+wS69FJYt49Wz\nz6bl5ZdTu3btDKbcO/nLlrHoxBMpW7069WbMgAMO8B1JpMTQiVMhFaYeE2WJLxNZKlasmNAJVCXt\ndUlUmLKUZGaGVaoEL7/MotataTtoEPuMHOk71i7t2LGDhfPmwQMPkHPyyaw85xzm3XtvZAvUqP+e\naHwlg4pUEQ8uv/xyAF544QU2bNjgOY1IMZix/003sWr0aCrVqQPAokWLWLp0qedg/2vx55+z9YQT\n2DJhAsycSaUePbjgwgt9xxKR3dDhfhFPmjdvzowZM3jyySd3Fq2SXUry4f5dcc7RqlUrunfvzmWX\nXZaGZImbN28eBx10ENWqVQNg+LXXctTFF3NSs2Zec4mUZDrcL5IFrrzySgAee+wx9EeURMXmzZtp\n06YNPXv2BMDl5/P4gw+yZcuWjGd58sknue+++3Y+7vHooypQRbKIitQMClOPibLEl8ksF1xwAbVr\n12bBggW8//77XrPsibJIoipUqMDdd99NqVKlAPho6FC63HorZQcNgm+/Zfv27Wn7o2zJ4sW82LMn\nDBoEwB133LHL651GfR5pfNkt6uNLlIpUEU/Kli3LFVdcAcCjjz7qOY1IelRq2ZIlw4Zha9bAUUex\nqmlThrVtC+vXF/tr79ixg1defhlmzYKbbuKIM87guJEjWVe5MgC1a9fm3nvvLfb3ERE/1JMq4tH3\n33/PwQcfzLZt21i2bBmHH36470iSBPWkJumnn3iyQwfO3rqVOtdeC927c+ONN9KoUSO6desGwKxZ\nszjooIOoWbMmACtWrKBGjRpUjhWegwcP5oorrqBy5co455hdrhyN69ShTJcucOGFvL9mDc1btKBc\nuXKpzS4iKaGeVJEsccABB9ClSxecczz22GO+44ik13770WfGDA749FPo3h2AadOmkZubu/Mpq889\nFzvrLOjaFS6+mJUnncSmDh3giy8AePPNN/n000+B4M3us1tuYdGbb8K990KTJrQ5/XQVqCIRoSI1\ng8LUY6Is8fnIcs011wDw3HPPsb7QIdCS/rrsSpiySPJycnIoXbr0zscTJkygWaGTmb5o3ZqtffpA\nhw7QqROLjz6anzp02Hk90xtuuGHnXlaAy+++m8Z7cUOMqM8jjS+7RX18iSq956eISDodd9xxtGzZ\nkmnTpjF8+HCuvvpq35FEMqborUhvKXJDgCu6dPmfx+eee27aM4lIOKgnVSQExowZwwUXXMARRxzB\n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\nB0lEQVTo/D9EAVodDt65OwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(11,8))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls='-', lw=2)\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_leapfrog[idx_ground_leapfrog-1]), fontsize=18);\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls=':', lw=2)\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about the observed order of convergence? We'll repeat the process we have used before, with a grid-refinement ratio $r=2$ ... here we go:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 2.186\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " u[1] = rk2_step(u[0], f, dt)\n", + " for n in range(1, N-1):\n", + " u[n+1] = leapfrog_step(u[n-1], u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical evidence that our calculation with the leapfrog method indeed exhibits second-order convergence, i.e., the method is ${\\mathcal O}(\\Delta t^2)$. _The leapfrog method is a second-order method_. Good job!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### But chew on this ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Go back to the cell that re-enters the model parameters, just above the leapfrog-method time loop, and change the following: the initial height `y0` to 25, and the final time `T` to 36. Now re-run the leapfrog calculation and the two code cells below that, which extract the glider's position and plot it.\n", + "\n", + "_What is going on?_\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tobies, R. \"Iris Runge: A life at the crossroads of mathematics, science and industry,\" Springer Basel, 1st ed. (2012). [Read on Google books, page 73](http://books.google.com/books?id=EDm0eQqFUQ4C&lpg=PA73&dq=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&pg=PA73#v=onepage&q=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&f=false)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/01_01_Phugoid_Theory.ipynb b/01_phugoid/01_01_Phugoid_Theory.ipynb new file mode 100644 index 0000000..902854f --- /dev/null +++ b/01_phugoid/01_01_Phugoid_Theory.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, C. Cooper, G.F. Forsyth, A. Krishnan." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Motion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to [**\"Practical Numerical Methods with Python!\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) This course is a collaborative, online, open education project, where we aim to give a foundation in scientific computing. The focus is on numerical solution of problems modeled by ordinary and partial differential equations.\n", + "\n", + "This IPython Notebook introduces the problem we'll be studying in the **first module** of the course: the _phugoid model of glider flight_. We'll start with some background, explaining the physics, and working out the mathematical model. \n", + "\n", + "First, we'll look at an idealized motion where there is no drag, resulting in a simple harmonic motion. We can plot some interesting trajectories that will pique your imagination. In the next notebook, you'll learn to numerically integrate the differential equation using Euler's method. But hang on ... first things first. \n", + "\n", + "The term \"phugoid\" is used in aeronautics to refer to a motion pattern where an aircraft oscillates up and down —nose-up and climb, then nose-down and descend— around an equilibrium trajectory. The aircraft oscillates in altitude, speed and pitch, with only small (neglected) variations in the angle of attack, as it repeatedly exchanges kinetic and potential energy.\n", + "\n", + "A low-amplitude phugoid motion can be just a nuisance, as the aircraft does not exceed the stall angle of attack and nothing bad happens. But the mode can also be unstable leading to a stall or even a loop!\n", + "\n", + "Look at this video showing a Cessna single-engine airplane in phugoid motion:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQED\nEQH/xAAaAAACAwEBAAAAAAAAAAAAAAACAwABBAUG/8QAQBAAAgIBAwEDCAgFBAIDAQEBAQIAAxEE\nEiExE0FRBRQiMmFxgZEjQlJTcpKhsRUzYsHRBkOC4SRjovDxNMIW/8QAGQEBAQEBAQEAAAAAAAAA\nAAAAAAECAwQF/8QAKBEBAAIBBAICAQQDAQAAAAAAAAERAgMSMVETIUFhBCJSgaEyYnEU/9oADAMB\nAAIRAxEAPwBlFdfYp9GnqjuEcKqvu0/KJKax2Nf4R+0PYRPpxEU8coKaj/tp8oa01/dp8oPIlhyI\nqCzeyr+6r/KJfY0/cp+UQFsEMWCZ2ra+yp+7T8oliuof7SflkyDB57o2wWaqUfdp+UQxXQf9tPyi\nZt57xJvPuk2ltfYUn/bT8ok7Cn7pPyiZO1Yd8IXtG0to7CodKk/KJDVWf9tPyiKF5MMOTJtLEtVQ\n/wBqv8olGmvORUn5RJuMm4xULYjXSRg1Jn8IgCmjPNSflEvcZecxUFgfT6furT8ok7Cnb/Lr/KIR\nJlFj4RSWUdPVn+Un5RJ2FQ/20/KIRfxEE2CWi1dnV91X+USdjT92n5RL3r3S+090UWX2NP3SflEr\nsqvu0/KI4FD1/SUwTuYy1BZRqq+6T8ogNp6T/tp+URpU9xEEhx3RUJZLaav7tPyiLOnr+7X5TTk+\nEHM0WzHTp92v5RKFNf3a/lmk+6TEIQKqe+tPkIxaqs/yk+Qh9lmEtWIqF9qFFP3afljFop+7T8ol\npXHKoHSZmlL83p7qk/KJR09XdUn5RNG2Q5EgStNXfWn5RD83p+6T8olk5lB8SUWIU1D/AGk/KIa1\n1fdJ+USltHfGKymSltBVV90n5RC7Kr7pPyiECJczRYOwp+6T8ok83q+6T8ohyRRYOwq+6T8ok7Cn\n7pPyiMzKigs0VfdJ+USjRT90n5RG5lEiKCeyo+6T8oldjV90n5RGnEA++WiwGqr7qv8AKJR09P3a\n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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('ysdU4mnRYdM')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That doesn't look too good! What's happening? \n", + "\n", + "It can get a lot worse when an aircraft enters one of these modes that is unstable. For example, one of [NASA's Helios Solar Powered Aircraft](http://www.nasa.gov/centers/dryden/history/pastprojects/Helios/) prototype broke up in mid air due to extreme phugoid oscillations!\n", + "\n", + "Helios was a proof-of-concept solar electric-powered flying wing that broke the world altitude record for a non-rocket-powered aircraft in August 2001. But in June 26, 2003, it broke something else. The aircraft entered phugoid motion after encountering turbulence near the Hawaiian Island of Kauai. The high speed in the oscillatory movement exceeded the design limits, and it ended up wrecked in the Pacific Ocean. Luckily, the Helios was remotely operated, and nobody got hurt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The physics of phugoids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The phugoid oscillation has the aircraft pitching up and down, as it decelerates and accelerates. The trajectory might look like a sinusoid, as in the figure below. The assumption is that the forward velocity of the aircraft, $v$, varies in such a way that the angle of attack remains (nearly) constant, which means that we can assume a constant lift coefficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/oscillatory_trajectory.png)\n", + "#### Figure 1. Trajectory of an aircraft in phugoid motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the descending portion of the trajectory, the aircraft's velocity increases as it proceeds from a peak to the minimum height—gaining kinetic energy at the expense of potential energy. The contrary happens in the upward segment, as its velocity decreases there.\n", + "\n", + "We measure the pitch angle (between the aircraft's longitudinal axis and the horizontal) as positive when the aircraft's nose is pointing up. In the portion of the trajectory below the center-line, where it curves upwards, the pitch angle $\\theta$ is increasing: $\\dot{\\theta}>0$. And where the trajectory curves down, the pitch angle is decreasing: $\\dot{\\theta}<0$, as shown in the figure.\n", + "\n", + "Let's remind ourselves of the forces affecting an aircraft in a downward glide. Look at the figure below: we show the flight path, the forces on the glider (no thrust), and the _glide angle_ or flight path angle, $\\gamma$, between the flight path and the horizontal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces.png)\n", + "#### Figure 2. Forces on a glider." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The force of lift, $L$ —created by the airflow around the wings— is perpendicular to the trajectory, and the force of drag, $D$, is parallel to the trajectory. Both forces are expressed in terms of coefficients of lift and drag, $C_L$ and $C_D$, respectively, that depend on the wing design and _angle of attack_—the angle between the wing chord and the flight path.\n", + "\n", + "If you are not familiar with airplane aerodynamics, you might be getting confused with some terms here ... and all those angles! But be patient and look things up, if you need to. We're giving you a quick summary here.\n", + "\n", + "Lift and drag are proportional to a surface area, $S$, and the dynamic pressure: $1/2 \\rho v^2$, where $\\rho$ is the density of air, and $v$ the forward velocity of the aircraft. The equations for lift and drag are:\n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "If the glider were in equilibrium, the forces would balance each other. We can equate the forces in the directions perpendicular and parallel to the trajectory, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "L = W \\cos \\gamma \\quad \\text{and} \\quad D = W \\sin \\gamma\n", + "\\end{equation}$$\n", + "\n", + "where $W$ repesents the weight of the glider.\n", + "\n", + "In the figure, we've drawn the angle $\\gamma$ as the _glide angle_, formed between the direction of motion and the horizontal. We are not bothered with the _sign_ of the angle, because we draw a free-body diagram and take the direction of the forces into account in writing our balance equations. But later on, we will need to be careful with the sign of the angles. It can cause you a real headache to keep this straight, so be patient!\n", + "\n", + "It looks like we've set this up to do a little bit of mathematics. Are you ready?\n", + "\n", + "But before, a short glimpse of the history." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanchester's Aerodonetics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Phugoid theory\" was first described by the British engineer Frederick W. Lanchester in _\"Aerodonetics\"_ (1909). This book is so old that it is now in the public domain, so you can actually download [from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&dq=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&pg=PA37#v=onepage&q=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&f=false) a PDF file of a scan, or read it online. \n", + "\n", + "Lanchester defines phugoid theory as the study of longitudinal stability of a flying machine (aerodone). He first considered the simplification where drag and moment of inertia are neglected. Then he included these effects, obtaining an equation of stability. In addition to describing many experiments by himself and others, Lanchester also reports on _\"numerical work ... done by the aid of an ordinary 25-cm slide rule.\"_ Go figure!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ideal case of zero drag" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we follow the derivation given by Milne-Thompson (1966), which we find a little bit easier than that of the original in \"Aerodonetics\"!\n", + "\n", + "An aircraft flying in a steady, straight horizontal flight has a lift equal to its weight. The velocity in this condition is sometimes called _trim velocity_ (\"trim\" is what pilots do to set the controls to just stay in a steady flight). Let's use $v_t$ for the trim velocity, and from $L=W$ deduce that:\n", + "\n", + "$$\\begin{equation}\n", + "W = C_L S \\times\\frac{1}{2} \\rho v_t^2\n", + "\\end{equation}$$\n", + "\n", + "The weight $W$ is constant for the aircraft, but the lift at any other flight condition depends on the flight speed, $v$. We can use the expression for the weight in terms of $v_t$ to obtain the ratio $L/W$ at any other flight velocity, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}= \\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "Imagine that the aircraft experienced a little upset, a wind gust, and it finds itself off the \"trim\" level, in a curved path with an instantaneous angle $\\theta$. In the sketch below, we exaggerate the curved trajectory of flight to help you visualize what we'll do next. The angle $\\theta$ (using the same name as Milne-Thompson) is between the _trajectory_ and the horizontal, positive up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "#### Figure 3. Curved trajectory of the aircraft going up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can form a free body diagram to determine the balance of forces. \n", + "\n", + "\n", + "\n", + "#### Figure 4. Free body diagram of the aircraft trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the free body diagram, we can see that\n", + "\n", + "\\begin{equation}\n", + "\\vec{L} + \\vec{W} = m\\vec{a} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "where $\\frac{v^2}{R}$ is the centripetal acceleration and $R$ is the radius of curvature of the trajectory.\n", + "If we decompose the lift and weight into their normal and tangential components we get\n", + "\n", + "\\begin{equation}\n", + "L\\hat{n} + W_n\\hat{n} + W_t\\hat{t} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "The component of the weight in the normal direction ($W_n$) is\n", + "\n", + "\\begin{equation}\n", + "W_n = -W \\cos \\theta\n", + "\\end{equation}\n", + "\n", + "If we then consider that all of the components in $\\hat{n}$ must balance out, we arrive at\n", + "\n", + "\\begin{equation}\n", + "L - W \\cos \\theta = \\frac{mv^2}{R}\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can rewrite this as\n", + "\n", + "$$\\begin{equation}\n", + "L- W \\cos \\theta = \\frac{W}{g} \\frac{v^2}{R}\n", + "\\end{equation}$$\n", + "\n", + "where $g$ is the acceleration due to gravity. Rearrange this by dividing the equation by the weight, and use the expression we found for $L/W$, above. The following equation results:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{v^2}{v_t^2}-\\cos \\theta = \\frac{v^2}{g R}\n", + "\\end{equation}$$\n", + "\n", + "Recall that we simplified the problem assuming that there is no friction, which means that the total energy is constant (the lift does no work). If $z$ represents the depth below a reference horizontal line, the energy per unit mass is (kinetic plus potential energy):\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{2}v^2-g z = \\text{constant}\n", + "\\end{equation}$$\n", + "\n", + "To get rid of that pesky constant, we can choose the reference horizontal line at the level that makes the constant energy equal to zero, so $v^2 = 2 g z$. That helps us re-write the phugoid equation in terms of $z$ as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z}{z_t}-\\cos \\theta = \\frac{2z}{R}\n", + "\\end{equation}$$\n", + "\n", + "Let $ds$ represent a small arc-length of the trajectory. We can write \n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} \\quad \\text{and}\\quad \\sin\\theta = -\\frac{dz}{ds}\n", + "\\end{equation}$$\n", + "\n", + "Employing the chain rule of calculus,\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} = \\frac{dz}{ds}\\frac{d\\theta}{dz} = -\\sin \\theta\\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "Multiply the phugoid equation by $\\frac{1}{2\\sqrt{z}}$ to get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} - \\frac{\\cos\\theta}{2\\sqrt{z}} = \\frac{\\sqrt{z}}{R}\n", + "\\end{equation}$$\n", + "\n", + "Substituting for $1/R$ on the right hand side and bringing the cosine term over to the right, we get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} = \\frac{\\cos \\theta}{2 \\sqrt{z}} - \\sqrt{z} \\sin \\theta \\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "The right-hand-side is an exact derivative! We can rewrite it as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d}{dz} \\left(\\sqrt{z}\\cos\\theta \\right) = \\frac{\\sqrt{z}}{2z_t}\n", + "\\end{equation}$$\n", + "\n", + "Integrating this equation, we add an arbitrary constant, chosen as $C\\sqrt{z_t}$ which (after dividing through by $\\sqrt{z}$) gives:\n", + "\n", + "$$\\begin{equation}\n", + "\\cos \\theta = \\frac{1}{3}\\frac{z}{z_t} + C\\sqrt{\\frac{z_t}{z}}\n", + "\\end{equation}$$\n", + "\n", + "Taking the derivative of both sides of equation (15) and applying the relations from equation (10) yields:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z_t}{R} = \\frac{1}{3} - \\frac{C}{2}\\sqrt{\\frac{z_t^3}{z^3}}\n", + "\\end{equation}$$\n", + "\n", + "Make sure you have followed the derivation, and perhaps write it out on paper!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Phugoid Curves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equation (15) is non-linear, which usually means we are hard-pressed to write a clean expression for the variable of interest, $z$. In fact, Lanchester himself said that he was unable to _\"reduce this expression to a form suitable for co-ordinate plotting.\"_ If the great polymath couldn't do it, we can't either!\n", + "\n", + "But Lanchester _was_ able to plot a suitable approximation of the phugoid flight path using what he called the \"trammel\" method. If you're interested in seeing how he did it, his explanation begins on page [48 of Aerodonetics](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PA49&lpg=PA48&dq=aerodonetics+the+use+of+the+trammel&source=bl&ots=lB6EVKYQuT&sig=aVE2kiDWZoWftaWczMIrcYftMOs&hl=en&sa=X&ei=gTD_U82fGYjzgwT3moGwCQ&ved=0CCAQ6AEwAA#v=onepage&q=aerodonetics%20the%20use%20of%20the%20trammel&f=false). It's a trip.\n", + "\n", + "Lanchester used Equations (15) and (16) to solve for the constant $C$ and the radius of curvature $R$ and then iteratively plotted small arcs of the phugoid path. By hand.\n", + "\n", + "We wrote a neat little code that duplicates the manual trammel method, but it might be a bit much for you to absorb in the first lesson. If you want to look it over, you are more than welcome to. If you are just starting with Python, skip it for the moment and we'll return to it at the end of this module. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting the flight path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we mentioned, we wrote a Python code to reproduce programmatically what Lanchester did graphically. Here's a neat feature of IPython Notebooks: you can run external programs with the magical keyword ... wait for it ... `run`. And the jargon of IPython _is_ to call this \"magic.\" In fact, there are a bunch of [magic functions](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) that you will learn about. They will make you a happy camper.\n", + "\n", + "Let's do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%run phugoid.py\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code cell loaded our simulated-trammel code, `phugoid.py`. The code defined a function for you in the background, called `plot_flight_path`, taking three inputs: $z_t$, $z$ and $\\theta$. \n", + "\n", + "Look again at Equation (15), where we take the positive square root. There are several possibilities, depending on the value that the constant $C$ takes. \n", + "\n", + "* There are no physical solutions for $C>2/3$, because it would result in $\\cos\\theta>1$. \n", + "\n", + "* If $C=2/3$, then the solution is a horizontal straight line, because $\\cos\\theta=1$, $\\theta=0$ and $R=\\infty$.\n", + "\n", + "* Any value of $C$ for which $0 < C < \\frac{2}{3}$ will produce \"trochoidal\"-like paths. What does this look like? Let's use our custom function `plot_flight_path` to find out!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnwAAAGXCAYAAAApho2KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX+//HXh0BQBOkdAZFeliZIlWABpAj4U7CDYlls\n2GiWBf26IgprV1RwARERFhBcKQEhUhYQBMFFSlBBepMmCKSc3x8zzE5iAukzuXk/H495ZObMzZ3P\nIUPynnPuudecc4iIiIiId+ULdQEiIiIikr0U+EREREQ8ToFPRERExOMU+EREREQ8ToFPRERExOMU\n+EREREQ8ToFPRERExOMU+EREREQ8ToFPJBczs3Zmlmhmd5+vLZ377OP//quzrtLQy6p+mVlVM/vC\nzA749/dxVtUoIpJdFPhEwlBQaEvplmBmzYM2T+lyOZm9hE6av9/MGprZMDOrnMnXzLQ01JIVlxaa\nALQFRgB3Ah9kwT6znJkVyOHXMzN7wsw2mdkfZvarmY0ys0IZ3N/FZvaz/z3/VirbpPZ/5HgK215i\nZs+Y2QYzO25mB81suZn1yUh9IrlN/lAXICLnNRmYk0L7tqD7FvyEc+4bM7sYiMvOwoI0AoYBi4Ff\nc+g1Q1KLmUUCbYC3nHOvZ/X+01nLFcADQEPgmP92FF8QbYyvzhdzsKQ3gEeB6cAooA7wGL6fyXUZ\n2N//ASW5cEhfAnyYrC3Je9/MDJgHtADGA28BhYDbgH+aWW3n3NAM1CiSayjwiYS3tc65yen9Jufc\n2ewoJhVG1oycZYXsrqWc/zWOZOVOzSwfUNA590cats2PL9TdDDwJDHH+i6KbWSngfeAGoHtW1niB\nmuoCjwD/cs71CmrfDrxlZrc656akY39NgAHAQOAfF9j85zT8H7kKaA38wzn3dNDrvAdsAR4EFPjE\n0zSlK+IxqR3DZ2ZVzGy6mR3z32b627ab2aIUdpXPzJ42s21mdtrMtqSwz2HAuWPYYoKm1FI9ri3o\nWLprzWy4//VPm9l6M+udwvaFzewlM1vpn4Y7bWaxZjbCP5KZ3lou2K9U6v4nsB1foBweNL1+tf/5\nkmb2rn8q84z/6ztmVuI8/X/ezLYBfwC3pKGGgkA00BVo5pybeS7sATjnDuEbYcsHLL/Q/rLQ7f6v\nbyRr/wg4hW/qO0384fcjfCPbM9P4PQXM7JLzbHKp/+ve4EbnXDxwCDiZ1vpEciuN8ImEt0JmVjJZ\n2xnn3O8X+L4ko1z+0LEMKI1vBGgzvuPQYoCLk38zvlGsEcBFwBjgDNAf3/RXrHNuhX+76UB54H7g\nJf9+AX66YM9gJL5ptXf9j+8BPjOzgs65iUHbVQTu9b/Wp0A80A4YhG+68IZ01JLWfqVkDLAOX6iZ\n4b8BbDKzS4EVQDVgnH+7xv59tzez5s655KFiFL7fwR8Cx/GNNF3IBKA50NAf7lKyHljinEtxSt8/\nvVkipedS8VtwqEzFlUAisDq40Tl3xsy+B5ql4/WeBGoCPUjboMTNwF1AhJkdBD4HnnPOBR/H9y2+\n6e5BZrYDWIXvvdcXaIJvhE/E25xzuummW5jd8AWaRCDB/zX4NjmF7e6+QNur/n3dmux1Rvq3XRTU\n1sff9h0QEdReATgNfJpsH338+746jX07t/9fgMJB7ZfiG0E7hG9681x7/uA6gtpf9L/ulWmpJb39\nSqX2Kv59/C1Z+9/9r/tgsvaH/Nu/kEIdm4L7mYbX7ur/vhcvsN1lwO1p6ENabglA5TTUtgHYm8pz\nn/v3kz8N+7kc+B14Olmtb6Wy/QrgCeBGfKOIk/3bfw8USrZta3wfAoL7dxS4Mav+3+qmWzjfNMIn\nEt4+BKYla9uXgf10xfcHOflxVKPwHSeVknedcwnnHjjn9pjZVqBGBl4/Je+5oJFK59xxMxuDLzxF\nAfP97fHntjGzCKAIEAF8DTyH7/isNel43ezoVw/gIL6pyGAf4FtE0tP/Ndh7zrkz6XiNJ/CFlHfP\nt5Fzbie+4JOafaRvEUVa3m+F8I2WpuR00DZ/Wj2bzBh8C5LStCDGOdcyWdMkM/sB33toAL7R3HNO\nAv8FZgH/wTfK+TC+UeUbnXNfp+U1RXIrBT6R8BbrnEvp+Lr0uhzfNFYSzrmDZnY0he0dvhG45A4D\nWXH6Fcf/plyD/Yhv2rVacKOZPYRv2q0eSaf5HFA8na+bHf26HFjtnEtM8mLOJfjDZOMU6ohN6879\nQfdq4Afn3P5M1Ik/ZGbFeyrYKXyHC6TkoqBtUmVmdwLXAm2DA3kGvIYvXHfBH/jMrAG+kDfAORcI\n5WY2BV8I/MjMrnDOhcviI5Esp8AnIqlJ7Y+updKeLczsSXwjkfOAN4E9wFl8x/ZNIP2Lz8KiX1wg\nACVTCt+o5nlDov/4vPbn+5DgXxSRWjhLycHkQTYFe4A6ZlbA/fnYwYrAoeCR2hRqigRG41uoccB/\nyhmASv6vRf1th5xzx85XiHMu3sz24Ps3O+cJoCDwr2Tb/mFmX+Eb6atKyh8GRDxBgU8kb9gOVE/e\naGalgWKZ3HdGRkUM33navkzWXs+/v5+D2u4EfnHOdU6yA7OOWVRLVvgZqGVm+YLDkX9kriZJ+5MR\nh0h9yjTYuanl87mMtAcbh2/08kLnNFwNXI9vQUlgdbB/VXEjfIuDzudifCG0C77DD5LXcBe+98EF\nT9Pif81K+I7vO6eC/2tECt+SP9lXEU/SG1wkb/gSeMrMbnPOfRbUntrxe+nxO74Al56VnwD9zWyM\n86+mNLOiwF/xHUj/TdB2CYAzMzs35eY/F91Q/hzwMlpLZn3hr+c+kp4E+AH+tzI6w/xTw9OAa80s\nf0qjZea7ukhj59zfLrC77DiG73PgGeBxkp4O5gF8Ye7ToDrzA1cAp/zHG4Lv+LqbU9jvuX+7ucBY\n4Ieg/ZRwzv2Wwve8hC/YzQ5q+xHogG9V7qigfRTDF5KPkPRk5iKeo8AnkjeMxHeutH+a2VX877Qs\nrfCNCCUPTumZ3lyNbzHBs/7Tv5zENyL37QW+7xCwyn9+O8N3WpZKQD/n3Omg7f4FvAzMM7MZQFF8\nV0g4m0KdF6olu6ZtX8V3Hr13zawpvtOyNMF3OplN+I4rC5aROp7AF6bGmdmDwf9GZtYZ31Ukhl9o\nJ9lxDJ9z7r9m9i7wsJlNxzc1WxfflTdikn3IqIjv3yQGuMb//fH87zQ3AWZWxX/3J+dc8nPyPWdm\nLfjfVVUKA52B9vhG994J2vYN4G7gFTP7C75/x5L4AnpZ4CEdvydep8AnEr4caZuivOC1dJ1zh82s\nNb7jpO7xPx+D7w/ut/hO/Huhfaa2751mdg8wGHgPKIDv2LrzBT7n374tvlOXlAW24judyOfJtn3V\n/7Ufvj/c+4Ap+C6R9WNwPWmoJc39usB2yf8NjptZK+AFfKcI6Qvs99cw3P35HHzpDhf+n2FTfH1b\nYGY7gd/wrYKdn4aRvew2AN9U8QP4gtchfMdcJl+dDGl/b59v2xh8hwXcjS+8JeA7xnEo8LoLutqM\nc+5XM2sG/A3fwpDe+N7z3wNPOOdmpbEWkVzLwvlDjZlVAibi+2OQCHzknHvLzIrjm0Kogu/YpF7n\nDuQ1s6H4PlXH41uRFR2K2kVyA/8o2CFgjHPuoRx6zT74rojR3jm3JCdeU0Qkrwv3S6vFA0865+oB\nLfFNF9QGhgALnXO18E1NDIXA9Rx74fvUdwPwnn/VmkieZ2YXpdB87jg4fTASEfGwsJ7Sdc7tw3/A\nsHPudzPbhO8Yn+74riYAvumaGHwh8EZgiv94kO1mFotv1difzj8mkgfN8V9Wai2+D3vX4VsVuQzf\nyWhzkj6IiYjkoLAOfMHMrCq+5f0rgbLnTj7qnNtnZmX8m1Uk6VL83f42EfGt1L0b36rEi4Fd+BYT\nvBiCA9bD91gSEREPyhWBz8wK41upN8A/0pf8j4X+eIhcgHPuddJ4yapsrmMCvpF5ERHJIWEf+Pzn\nbPoX8EnQSqr9ZlbWObffzMoBB/ztu/GdVPScSv62lParkCgiIiK5hnMuw4fDhPuiDfCt5vvROfdm\nUNtsfKc9AOjD/44/mg3camaRZnY5visLpHpqCOdcnrsNGzYs5DWo3+q3+q1+q9/qt/qdvltmhfUI\nn/+8YXcAP5jZOnxTt8/gO4nsVDO7F9iBb2UuzrkfzWwqvnNzxaGTaYqIiIiEd+Bzzi0n5WsfQiqX\nBnLOjQBGZFtRIiIiIrlMbpjSlSwUFRUV6hJCQv3OW9TvvEX9zlvyar8zK6yvtJGdgq7DLiIiIhLW\nzAyXiUUbYT2lKyIiuUPVqlXZsWNHqMsQyfWqVKnC9u3bs3y/GuETEZFM848+hLoMkVwvtf9LmR3h\n0zF8IiIiIh6nwCciIiLicQp8IiIiIh6nwCciIiLicVqlKyIikkVOnjzJyJEjqVy5MseOHeOpp55K\n8vy6deuYP38+Q4YMSXUfs2bNYuPGjURERFChQgXuuuuu7C47Q9avX88nn3zCqFGjAm0X6n9y4d7X\n9NaX2vZh0c9QXxsuhNekcyIikjX0O9Xn3nvvdTt27HDOOVevXj23ffv2wHOJiYmuS5cu7oUXXkj1\n+48dO+aaNGkSeNyiRQt36NCh7Cs4g0aPHu169uzp7rnnniTt5+t/cpnp6/Lly924cePcqFGj3JEj\nRzLQgwtLb32pbZ/e/aT2f8nfnuHcoyldERGRLPDLL7+wZ88eKleuDEB0dDRVqlQJPD99+nTat29/\n3n0sWbKEevXqBR43bNiQxYsXZ0/BmfDkk0/SvXv3JG0X6n9yGe3rTz/9xPjx47n33nupXLky//rX\nvzLYi/NLb32pbR8uP1NN6YqIiPj9/PPPfPTRR0nOhXbuvpnRokULbrzxxhS/d9GiRRQtWpRJkyZx\n5MgRihQpQt++fQE4fPgw+fLlo1SpUpw8eTLV19+1axfFihULPC5WrBixsbFZ10G/zPQzNefrf0oy\n2tfBgwczdOhQALZu3UpERESq22amn+mtL7XtixcvniM/0wtR4BMRkWxlluFzxf7JuT/a6bV69WqG\nDx9OxYoVyZcvH506daJHjx5/2q5atWqMGDEiQ6+xf/9+Nm7cyJQpUwBo27Ytbdq0oXr16syYMYP7\n77+fCRMmnHcfR44c4aKLLgo8joyM5Pfff0/T66e1j5C5fqbmfP1PSUb6unfvXr799lu+++471qxZ\nw6RJk3j++edT3T4z/UxvfefbPqM/06ykKV0REfG8Zs2a8dVXX9GoUSMKFChAjx49eP3119m/f3+W\nvUaRIkVo0KBB4HHlypWJjo7m22+/5aqrrkrzPoJD7R9//EGJEiXS9L3J+xgVFcXIkSMZP3483333\nXfo6kwGp9f9826e3r4sWLaJr16488MAD3HXXXezZs4cOHTpkSz/TW19q22fmZ5qVNMInIiLZKqOj\nclnt5ZdfZv/+/bz99tuAbzqwbNmySbYJngIMlpYpwHr16rFs2bLA43z58pGQkMC3337LqVOnmDt3\nLsuXL+f06dPMnj07xf1cccUVrFmzJvD48OHDNGnSJEN9fP3112nfvj1NmjShT58+fPrpp1nSz9Sk\n1v/UZKSvO3fupE6dOoBv5Wvnzp355JNPsqWf6a0vte2LFSuWqZ9plsnMio/cfEMrykREsky4/059\n+eWX3bPPPuucc27jxo1u6dKl7oYbbnArVqzIstc4ffq0a9GiReBxq1at3LZt25JsM3z48CSrdH/6\n6SeXmJgYeHzy5EnXoEGDwOOGDRu6/fv3O+eci42NTbJtcsn7+PDDD7tff/3VOefcDTfckImepWz8\n+PGub9++gcfn63/yfjqXsb6OHTvWjR071jnnXOfOnd2OHTvcI488ki39PF996enP+faTktT+L5HJ\nVbrmwuSTV04zM5dX+y4iktVSu+B7OPjPf/7Db7/9RtGiRRk2bBjXXHMNd911F59//jmDBg3K0tea\nP38+y5cvxzlH7dq1ueOOOwLPTZs2jREjRmBmDB06lJtvvpkmTZowbtw4GjduHNhu0qRJbN++Hecc\n1apVC+yjTp06vPXWW1x//fVp6uO+fft45plnqFChAp07d2bOnDlZ1s933nmHqVOnsnPnTvr27cuT\nTz5JkSJFUu1/Sv3MSF+PHz/O888/T4MGDahfvz4tWrTg4Ycf5tlnn82WfqZWX3r7k1p7SlL7v+Rv\nz/ABsQp8IiKSaeEc+FIyefJkqlSpQuXKlbnssstCXU6aJCYm8s0331zw1C7nvP3227Rt25Y6derQ\nt29fPvvss2yuMOukp6+5uZ8pUeDLYgp8IiJZJ7cFvlmzZhEXF0ezZs3Oe664cDJ16lS6devGxRdf\nnKbtDx8+zMcff0yxYsWoX78+LVu2zOYKs056+pqb+5kSBb4spsAnIpJ1clvgy41OnjzJJZdcEuoy\nckRe6mtyCnxZTIFPRCTrKPCJZI3sCnw6D5+IiIiIxynwiYiIiHicAp+IiIiIxynwiYiIiHicAp+I\niIiIx+lauiIikmlVqlT50/VKRST9suu8kDoti4iIiEiY02lZREREROS8FPhEREREPE6BT0RERMTj\nFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RE\nRMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6B\nT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjwj7wmdk4\nM9tvZhuC2oqbWbSZbTGz+WZWNOi5oWYWa2abzKxDaKoWERERCR9hH/iAfwIdk7UNARY652oBi4Ch\nAGZWF+gF1AFuAN4zM8vBWkVERETCTtgHPufcMuBIsubuwAT//QlAD//9G4Epzrl459x2IBZonhN1\nioiIiISrsA98qSjjnNsP4JzbB5Txt1cEdgZtt9vfJiIiIpJn5dbAl5wLdQEiIiIi4Sp/qAvIoP1m\nVtY5t9/MygEH/O27gcuCtqvkb0vR8OHDA/ejoqKIiorK+kpFRERE0ikmJoaYmJgs2585F/6DY2ZW\nFfjSOdfA/3gk8JtzbqSZDQaKO+eG+BdtfApchW8qdwFQw6XQSTNLqVlEREQk7JgZzrkML0QN+xE+\nM5sMRAElzexXYBjwCjDNzO4FduBbmYtz7kczmwr8CMQBDynViYiISF6XK0b4soNG+ERERCS3yOwI\nn1cWbYiIiIhIKhT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9E\nRETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxO\ngU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERE\nRDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4zwZ+Mysk5ltNrOtZjY41PWIiIiIhJI550JdQ5Yys3zAVuBaYA+wGrjVObc52XbOa30XERERbzIz\nnHOW0e/34ghfcyDWObfDORcHTAG6h7gmERERkZDxYuCrCOwMerzL3yYiIiKSJ3kx8ImIiIhIkPyh\nLiAb7AYqBz2u5G/7k+HDhwfuR0VFERUVlZ11iYiIiKRJTEwMMTExWbY/Ly7aiAC24Fu0sRf4FrjN\nObcp2XZatCEiIiK5QmYXbXhuhM85l2BmjwDR+KasxyUPeyIiIiJ5iedG+NJKI3wiIiKSW+i0LCIi\nIiJyXgp8IiIiIh6nwCciIiLicQp8IiIiIh7nuVW66ZGYmEi+fMq8IuI9Z86c4ddff2Xnzp3s27eP\ns2fPEh8fT6FChShdujTly5enZs2aREZGhrpUEckBeTrwRUREUKJECa644gqqV69O06ZNadWqFU2b\nNtUvQRHJVU6dOsXXX3/N/PnzWbVqFevXrycuLu6835M/f37q1KlDy5Yt6dixI9dccw3FihXLoYpF\nJCfl6dOypPZc4cKF6dy5Mz179qR79+5cfPHFOVmaiEiaJCQksGDBAsaOHctXX33F6dOnA8+ZGZUr\nV6Zy5cpUqFCBiy66iIiICE6ePMmBAwfYtWsX27ZtI/hvQIECBejSpQt33nknN954IwUKFAhFt0Qk\nBZk9LUueDnzx8fEcOnSIn376ic2bN7Ny5UqWLVvGpk3/O09z8eLFufvuu3nwwQepU6dOCCsWEfE5\nfvw477//Pu+++y47d+4MtDdr1oyuXbvStm1bmjZtyqWXXnre/Zw8eZINGzawePFi5s+fz7Jly0hM\nTASgUqVKDBgwgPvvv5+iRYtma39E5MIU+DLofCde/uWXX5g1axaffvopa9asCbR3796d559/nqZN\nm+ZUmSIiAceOHeP111/nzTff5OjRowBUq1aNfv360adPHypWrJip/e/du5fPPvuMsWPHBj74FilS\nhIEDB/LEE09QuHDhTPdBRDJGgS+D0nqljbVr1/LBBx8wceLEwHRJ165defXVVzXiJyI5Ij4+nrFj\nx/K3v/2NgwcPAtC2bVueeeYZOnTokOWLzxITE5k3bx6vvfZa4OLtZcuW5cUXX6Rfv35ERERk6euJ\nyIUp8GVQei+ttm/fPkaPHs17773HqVOniIiI4OGHH2bYsGGUKFEiGysVkbxs8eLFPProo2zcuBHw\nBb2///3vtG3bNkdePyYmhkGDBrF69WoAmjdvzgcffECjRo1y5PVFxEeBL4Myei3dAwcO8PzzzzN2\n7FgSExMpUaIE//jHP7j77rsxy/DPQUQkiaNHjzJo0CA++ugjAC6//HJee+01brrpphz/XeOcY+rU\nqTz55JPs2bOHiIgInnjiCV588UUtahPJIQp8GZTRwHfO+vXreeKJJ1i8eDEAHTt25IMPPqBKlSpZ\nVaKI5FGzZ8+mf//+7Nmzh8jISJ577jkGDhzIRRddFNK6jh8/zvPPP88777xDYmIidevWZdKkSTRu\n3DikdYnkBQp8GZTZwAe+T70TJ07kiSee4MiRIxQuXJhXX32Vv/71rxrtE5F0+/3333n00UcZP348\nAC1atGDcuHHUrVs3tIUls3r1au6++242b95MgQIFePHFFxk4cKCO7RPJRgp8GZQVge+cffv28cgj\njzB9+nQAunXrxscff0ypUqWyZP8i4n1r1qzh9ttvJzY2losuuogRI0bw6KOPhm2IOnXqFIMHD+ad\nd94BICoqis8++4xy5cqFuDIRb1Lgy6CsDHznTJ06lQcffJCjR49Svnx5Jk6cyHXXXZelryEi3pKY\nmMjo0aN59tlniYuLo379+nz22WfUr18/1KWlybx58+jbty/79++nfPnyfP755zm2oEQkL8ls4NOF\nZLNQr169WL9+PW3btmXv3r1cf/31DB48mPj4+FCXJiJh6Pjx49x0000MGjSIuLg4Hn30Ub799ttc\n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\n9dVXqf4eVOBT4Atrq1atcj179nRmluSP++zZs11CQkKoy5MckpiY6ObOnZvkQ4CZuW7durmlS5eG\nujyRTImPj3eTJ092derUCby/K1eu7N566y134sSJUJcnYeTIkSPu73//uytdunTgvVK/fn03c+bM\nC37gVeBT4MsVfvrpJzdgwABXuHDhJFfuGDVqlM5m72GHDx92r7/+epIrYxQqVMg99NBDujqGeE58\nfLybMmWKq1u3buD9Xrx4cffMM8+4PXv2hLo8CaHdu3e7gQMHBhZjAK5p06Zu2rRpaR78UOBT4MtV\njh496kaNGuUqV66cZLr31ltv1ZSeRyQmJrqlS5e6O++8M8m0bYUKFdyIESO0kEc8LyEhwU2fPt21\natUqye+5e+65x/3www+hLk9y0MqVK92dd97pIiMjA++Fa6+91i1YsCDdf+8yG/jC/jx82cXMXF7t\neziIj49nzpw5fPjhh8yZM+dcCKdGjRr069eP22+/ncsuuyzEVUp67NmzhylTpjBu3Dh+/PFHAMyM\nDh068MADD9CtWzcKFCgQ4ipFctZ//vMfRo8ezcyZMwO/59q1a0f//v3p2bMnkZGRIa5QstqZM2f4\n/PPPeeedd1i92ne113z58tGzZ0+GDBnClVdemaH9mhkuE+fhU+CTkPv1118ZN24c48aNC1yqzcxo\n164dd9xxBzfffDPFihULcZWSkuPHjzNjxgw+/fRTvv7668AftHLlynHvvfdy3333cfnll4e4SpHQ\n27ZtG2+88Qbjx4/n5MmTAJQpU4Z+/frxwAMPULVq1dAWKJkWGxvLP//5T8aOHcvBgwcBKFGiBPfd\ndx/9+/fP9M9YgS+DFPjCT3x8PHPnzuWTTz5h9uzZnDlzBoDIyEi6du1K7969ueGGGyhSpEiIK83b\nTp48ybx585g6dSqzZ88OXPYnMjKSLl26cOedd2o0TyQVx48f59NPP+X999/nhx9+AP43Et6nTx+6\nd+9OoUKFQlylpNXvv//OtGnT+Pjjj1m2bFmgvVGjRjz66KPcdtttXHzxxVnyWgp8GaTAF96OHTsW\nGDlatGhRYOQoMjKS6667jp49e9KtWzfKli0b4krzhkOHDvHll1/yxRdfEB0dneTajldffTV33nkn\nN998M8WLFw9hlSK5h3OO//znP4wZM4apU6dy9uxZAIoUKcLNN9/MXXfdRbt27ciXL6SXvJcUJCQk\n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\nKVasGMWKFaNo0aIUK1aMMmXKUL58eSpUqEDx4sU9H+guRIEvgxT4REREJLfIbODTsj0RERERj1Pg\nExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERER\nj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4R\nERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4\nBT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExER\nEfE4BT4RERERjwvbwGdmr5rZJjP73symm9mlQc8NNbNY//MdgtqbmNkGM9tqZm+EpnIRERGR8BK2\ngQ+IBuo55xoBscBQADOrC/QC6gA3AO+Zmfm/532gn3OuJlDTzDrmfNkiIiIi4SVsA59zbqFzLtH/\ncCVQyX//RmCKcy7eObcdXxhsbmblgCLOudX+7SYCPXKyZhEREZFwFLaBL5l7gTn++xWBnUHP7fa3\nVQR2BbXv8reJiIiI5Gn5Q/niZrYAKBvcBDjgWefcl/5tngXinHOfhaBEERERkVwvpIHPOXf9+Z43\ns75AZ+CaoObdwGVBjyv521JrT9Xw4cMD96OiooiKirpw0SIiIiLZLCYmhpiYmCzbnznnsmxnWcnM\nOgGjgaudc4eD2usCnwJX4ZuyXQDUcM45M1sJPAasBr4C3nLOzUtl/y5c+y4iIiISzMxwztmFt0xZ\nSEf4LuBtIBJY4F+Eu9I595Bz7kczmwr8CMQBDwUlt4eB8cBFwJzUwp6IiIhIXhK2I3zZTSN8IiIi\nkltkdoQvt6zSFREREZEMUuATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER\n8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+AT\nERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGP\nU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPC9vAZ2Yvmtl6M1tnZvPMrFzQc0PNLNbMNplZh6D2Jma2wcy2mtkboalcREREJLyYcy7U\nNaTIzAo75373338UqOuc629mdYFPgWZAJWAhUMM558xsFfCIc261mc0B3nTOzU9l/y5c+y4iIiIS\nzMxwzllGvz9sR/jOhT2/S4BE//0bgSnOuXjn3HYgFmjuHwEs4pxb7d9uItAjp+oVERERCVf5Q13A\n+ZjZS8DdwFGgvb+5IrAiaLPd/rZ4YFdQ+y5/u4iIiEieFtIRPjNb4D/m7tztB//XbgDOueecc5Xx\nTeE+GspaRURERHKrkI7wOeeuT+Omk4GvgOH4RvQuC3qukr8ttfZUDR8+PHA/KiqKqKioNJYjIiIi\nkn1iYmKIiYnJsv2F86KN6s65bf77jwJtnXO9ghZtXIVvynYB/1u0sRJ4DFiNLyC+5Zybl8r+tWhD\nREREcoXMLtoI52P4XjGzmvgWa+wA/grgnPvRzKYCPwJxwENBye1hYDxwETAntbAnIiIikpeE7Qhf\ndtMIn4iIiOQWnj0ti4iIiIhkDQU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T\n4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+ERER\nEY9T4BMRERHxOAU+EREREY9T4BMRERHxOAW+PCYmJibUJYSE+p23qN95i/qdt+TVfmeWAl8ek1f/\no6jfeYv6nbeo33lLXu13ZinwiYiIiHicAp+IiIiIx5lzLtQ1hISZ5c2Oi4iISK7knLOMfm+eDXwi\nIiIieYWmdEVEREQ8ToFPRERExOPyXOAzs05mttnMtprZ4FDXk5XMbJyZ7TezDUFtxc0s2sy2mNl8\nMysa9NxQM4s1s01m1iE0VWeemVUys0VmttHMfjCzx/ztnu67mRU0s1Vmts7f72H+dk/3+xwzy2dm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#zt = 64, z = 16, theta=0\n", + "plot_flight_path(64, 16, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cool! Note that the plot title tells us what the calculated value of $C$ was for our input conditions. We have a value of $C$ between $0$ and $\\frac{2}{3}$ and our path is trochoidal, like we announced it would be.\n", + "\n", + "* For negative values of $C$, the resultant flight path consists of a series of loops. Let's try it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUqZMGcLCwrjpppvo0KHDX9arWLEigwYNytZ77Nu3j/Xr1zNlyhQAWrRoQfPmzalcuTKffvop999/\nP2PHjj3nNo4cOUKBAgWSP4+KiiI2NjZT75/ZfYTz28/0nGv/05Kdfd2zZw/Lli1j5cqVrFixggkT\nJvD888+nu34w9nPy5MnMmDGDN998M9vbyOz3Pzs0tSoiInleo0aN+O9//0u9evWIjIykQ4cOvPXW\nW+zbty9o7xEdHU3t2rWTPy9XrhxfffUVy5Yto3HjxpneRsqyGhcXR4kSJTL12tT72LJlS4YMGcKY\nMWOSj0PLSent/7nWz+q+zps3j/bt29OrVy+6du3K7t27adWqVY7uZ6dOnfjggw+46aabsnUbuqx8\n/7NDI3IiIpKjQuXWXa+99hr79u1j2LBhgG9a7pJLLvnTOimn4lLKzFRczZo1+e6775I/DwsLIzEx\nkWXLlnHq1CnmzJnD4sWLOX36NJ9//nma26lUqRIrVqxI/vzQoUM0aNAgW/v41ltvcd1119GgQQO6\nd+/OxIkTg7Kf6Ulv/9OTnX3dtWsX1atXB3xnvLZt25bx48fnyH5+8cUXvPrqqyxevJjo6GguueQS\nPvnkkwzPxE1t6dKlxMXFZer7ny3W2nz58O26iIgEQ6j/m/raa6/Z5557zlpr7fr16+2iRYtsmzZt\n7Pfffx+09zh9+rRt0qRJ8ufNmjWzv/7665/WGThwoH3ppZeSP9+yZYtNSkpK/vzkyZO2du3ayZ/X\nrVvX7tu3z1pr7ebNm/+0bmqp97FPnz52586d1lpr27Rpcx57lrYxY8bYHj16JH9+rv1PvZ/WZm9f\nR48ebUePHm2ttbZt27Z2x44dtm/fvjmyn3PmzEn+eiYlJdmyZcvar776Kt39CUj9dUkp9fc/Len9\nXfIv/0ufMTZEflPKbcYYm1/3PSNnz55l8+bN7Nixg507d7J3715OnDjBmTNnKF26dPJBpiIiAend\n6DsULFmyhMOHD1OsWDFefPFFrr/+erp27crUqVN56qmngvpeX375JYsXL8ZaS7Vq1ejSpUvyc9Om\nTWPQoEEYY+jfvz8dO3akQYMGfPDBB9SvXz95vQkTJrB9+3astVSsWDF5G9WrV+edd97hxhtvzNQ+\n7t27l2effZbLLruMtm3b8sUXXwRtP999910+/vhjdu3aRY8ePejXrx/R0dHp7n9a+5mdfT1+/DjP\nP/88tWvXplatWjRp0oQ+ffrw3HPP5ch+jhw5koSEBHbs2EGVKlV44IEHzrk/6X1dIO3vf1rS+7vk\nX/6XA05V5ITjx4/z7bffMnfuXJYtW8batWuJj49Pc93atWuzdu3aXE4oIqEulItcWiZNmkT58uUp\nV64cZcuWdR0nU5KSkliwYEGmL2ExbNgwWrRoQfXq1enRoweTJ0/O4YTBk5V99fJ+pkVFLpPye5E7\nfvw4M2bMYNKkScybN4+EhIQ/PV+hQgUqVapEuXLlKF26NEWLFuWCCy6gVKlSdOrUyVFqEQlVXity\nn332GWfPnqVRo0bnvNZZKPn444+5+eabKViwYKbWP3ToEB9++CHFixenVq1aNG3aNIcTBk9W9tXL\n+5kWFblMyq9FbsOGDbzzzjuMGzeOuLg4AMLDw2nSpAmtWrWiRYsW1K9fP0euki0ieZfXipwXnTx5\nksKFC7uOkSvy076mpiKXSfmtyK1evZoXXniB2bNnJy9r0aIFXbp0oWPHjiF3+xcR8RYVOZHgyGqR\n0+VH8rjt27fz5JNPJt/CpFChQnTv3p2+fftSo0YNx+lERETkfKjI5VHx8fEMHjyYwYMHc/r0aQoU\nKECfPn146qmnKFWqlOt4IiIiEgQqcnnQmjVr6Nq1K+vWrQOgc+fOvP7665QpU8ZxMhEREQkm3aIr\nD0lMTGTIkCE0atSIdevWUblyZRYsWMDEiRNV4kRERPIgjcjlEYcOHeKuu+7i66+/BuDBBx/kjTfe\nyLdn/YiIiOQHKnJ5wPr167nlllvYunUrpUqVYuzYsdx0002uY4lIPlK+fPm/3M9SRLIuq9c11NSq\nx82ePZsmTZqwdetWGjRowIoVK1TiRCTXBW6z5IXH8OHDk0vnI488wtmzZ51nyu7j+PHjtG/fHoCI\niAjGjx/vPJMe5/fYvn17lv7uqch52Pjx4+nQoQOxsbF06tSJRYsWeeZWMyIiLgwaNIg+ffpgreX1\n11/n7bffJiLCu5NT0dHRzJw5k8cff5yEhAS6devG6NGjXceSXKQi51EjRoygW7duJCYmMmDAACZO\nnEihQoVcxxIRCVmvvfYazz77LMYY/vOf//Dkk0+6jhQU4eHhDB06lNdeew1rLffffz/Dhw93HUty\nie7s4EFDhw5N/gfojTfe4IknnnCcSEQktI0cOZKHHnoIYwwTJkygc+fOriPliLfffpvHHnsM8O1z\n7969HSeSYNEtulLxapH7z3/+Q+/evTHG8N5779GrVy/XkUREQtqkSZO4++67sdby/vvvc//997uO\nlKNSltaPP/6Yjh07uo4kQaAil4oXi9yUKVPo3Lkz1lpGjBjBgw8+6DqSiEhIW7BgAX/7299ISEhg\nyJAhPPXUU64j5YpXX32VAQMGEBUVxZw5c7j++utdR5LzpCKXiteK3Ny5c2nbti0JCQm8+uqrPPvs\ns64jiYiEtG3bttGoUSMOHTrEY489xptvvuk6Uq6x1vLII48wbNgwoqOjWbp0KdWrV3cdS86Dilwq\nXipyv/zyC40bN+bYsWM8/vjjvPHGG7pek4jIOcTGxtKsWTPWrVvHTTfdxOzZswkPD3cdK1clJSVx\n1113MW3aNKpUqcLSpUu58MILXceSbFKRS8UrRe7IkSM0adKETZs2cdttt/HJJ58QFqaTjUVE0mOt\n5a677uLjjz+matWq/PDDDxQvXtx1LCdOnjxJ8+bN+fHHH2ndujX//e9/812hzSvSK3JqBCEsMTGR\nTp06sWnTJurUqcO4ceNU4kREMjB69Gg+/vhjihQpwueff55vSxxA4cKFmTlzJiVLluTLL7/k+eef\ndx1JgkytIIQNGjSIL7/8kosvvpjPP/+cIkWKuI4kIhLSNmzYwCOPPALAe++9R0xMjONE7pUvXz55\nNmfw4MF88803riNJEKnIhahFixbx4osvAjBhwoQs33tNRCS/iY+P56677iIuLo7u3bvTpUsX15FC\nxrXXXssLL7yAtZauXbty4MAB15EkSFTkQtChQ4fo3LkzSUlJPPPMM7Rq1cp1JBGRkPfqq6+ybt06\nKleuzLBhw1zHCTnPPfccLVq0YM+ePdx777144ThxyZhOdghBnTp1YsqUKTRt2pQFCxYQGRnpOpKI\nSEhbs2YNDRs2JCEhgYULF9KiRQvXkULSzp07qVu3LkePHmXcuHF07drVdSTJJJ3s4BGffvopU6ZM\noXDhwkyYMEElTkQkAwkJCdx7770kJCTQp08flbhzKFeuHG+99RYAjzzyCHv37nWcSM6XilwIOXTo\nUPLdGoYMGULFihUdJxIRCX0jRoxg1apVlC9fnkGDBrmOE/K6d+9O69atOXLkCH379nUdR86TplZD\nSPfu3Rk3bhzXXnst8+bN06VGREQycODAAapUqcKxY8f47LPPuOWWW1xH8oQdO3ZQq1YtYmNjmT17\n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\nli5dyh133MG0adNCqiilnFIdNWoU9913n+tIkgs0tZoPXHnllTzxxBNYa+nevbtu3yUikg0RERFM\nmjSJ6Ohopk+fzujRo11HSpZ6SrVnz56uI4ljGpHLY06fPs2VV17Jhg0bPHGwrohIqJo4cSJ33303\nBQsWZOXKlVSvXt11JCZNmkSXLl2Ijo7mp59+oly5cq4jSS5Jb0RORS4PWr16NY0bN+bs2bPMmTOH\nm266yXUkERFP6tatG+PHj6du3br88MMPFChQwFmWnTt3UrduXY4ePaop1XxIU6v5SP369Xn55ZcB\nuPfeezl06JDjRCIi3jR8+HAqVarEmjVreOqpp5zlSExMpFu3bhw9epT27dtrSlWSqcjlUU8++STN\nmzdnz5499O7dW/diFRHJhujoaCZPnkxkZCTDhg3j448/dpLj9ddfZ8GCBVxyySV88MEHIXXyhbil\nqdU8bNu2bdSpU4fY2FjGjBlD9+7dXUcSEfGkYcOG8fDDD1OkSBGWL19OtWrVcu29ly9fTrNmzUhI\nSNDhMvmYplbzoQoVKjBs2DAAHnroIX7++WfHiUREvKlv377cddddxMbG0rFjx1y78HpsbCxdunQh\nISGBRx55RCVO/kIjcnmctZZu3boxYcIEateuzdKlSylYsKDrWCIinhMbG0ujRo34+eef6dKlC+PH\nj8/xKc577rmHMWPGULt2bZYtW+b0ZAtxSyNy+ZQxhhEjRhATE8O6det47LHHXEcSEfGkIkWKMH36\ndAoXLszEiRMZOXJkjr7fRx99xJgxYyhQoACTJk1SiZM0aUQun/jxxx9p0qQJ8fHxTJkyhX/84x+u\nI4mIeNLkyZPp3LkzERERfPPNN1xzzTVBf4+1a9fSuHFjTp8+zYcffsg999wT9PcQb9GIXD5Xr149\n3nrrLQDuv/9+fv31V8eJRES8qVOnTvTr14+EhATuuOMOduzYEdTtHz9+nL///e+cPn2ae+65RyVO\nzkkjcvmItZY777yTTz75hNq1a/P9999TuHBh17FERDwnISGB9u3b8+WXX1KnTh0WL15MkSJFznu7\n1lo6derE1KlTqV27Nj/88AOFChUKQmLxOo3ICcYYPvjgg+Tj5e6//35dX05EJBsiIiKYMmUKMTEx\nrF27lh49epCUlHTe2x0xYgRTp06lSJEiTJs2TSVOMqQil88ULVqUmTNnUqRIESZPnszbb7/tOpKI\niCcVL16czz//nGLFijF9+vTkO+pk18KFC3n00UcBGD16NFWrVg1GTMnjNLWaT3366afccccdhIeH\n8yGE+i0AACAASURBVPXXX9OyZUvXkUREPGnOnDm0a9cOay0TJ06kc+fOWd7Gzp07adiwIQcOHODx\nxx9n6NChOZBUvExTq/Int99+O8888wyJiYnceeed7Nq1y3UkERFPatOmDW+++Sbgu+7bggULsvT6\nU6dO0aFDBw4cOMCNN97I4MGDcyKm5FEakcvHEhMTadOmDXPnzqV+/fosWrRIJz+IiGTTI488wjvv\nvEPx4sVZsmQJ1atXz/A11lq6dOnC5MmTqVixIsuXL6dEiRK5kFa8RiNy8hfh4eFMnjyZypUrs3r1\narp16xaUg3VFRPKjN998kw4dOnD06FHatGnD3r17M3zN0KFDmTx5MkWKFOHzzz9XiZMsU5HL5y66\n6CJmzZpFsWLF+PTTTxkwYIDrSCIinhQeHs7EiRNp3LgxO3bsoF27dsTGxqa7/syZM3n66acBGD9+\nPDVr1sytqJKHqMgJ1apV45NPPiE8PJxBgwYxduxY15FERDypUKFCfP7551SsWJFVq1Zxxx13cObM\nmb+st3z5cjp37oy1lldeeYUOHTo4SCt5gY6Rk2TvvfceDz74IJGRkXzzzTe0aNHCdSQREU/atGkT\nzZs358CBA9x5551MmjSJ8PBwAHbs2EHjxo3Zt28f99xzDx988AHG/OXQJ5E/Se8YORU5+ZPAwbol\nSpRg8eLFVKtWzXUkERFPWrVqFddddx3Hjx+nV69evPfeexw/fpyrr76a9evXc/311zNnzhyioqJc\nRxUPUJFLRUUubQkJCdx2223Mnj2b8uXLs2TJEi677DLXsUREPGnhwoW0bt2a06dP8/jjj7NmzRq+\n/vprqlevzpIlSyhevLjriOIRKnKpqMil7+TJk9xwww0sXbqUunXrsmDBAooVK+Y6loiIJ82ePZtb\nb701+aoApUqVYunSpVxxxRVug4mn6PIjkmmFCxdm9uzZxMTEsGbNGm6//Xbi4+NdxxIR8aR27dpx\n0UUXJX9+0003qcRJ0KjISZpKlizJ//73Py699FLmzZsXtBtCi4jkN4MHD+bAgQPJn48bN46RI0c6\nTCR5iYqcpKtChQrMmTOH6OhopkyZwsMPP4ymo0VEMm/UqFE8++yzGGOYOnUqw4YNA+Chhx7i/fff\n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\nnfuBvr+KXDIqcpLRXL9+nY0bN7J69Wo2btzIkSNH7nm8YMGCNGrUiKeffhofHx9q1qypk9zTIZfL\nxaFDh9zF7bvvvuPcuXP3PKdYsWL4+vri6+tL8+bNdUhdJB2LiooiIiKCyMhI+vbt+8DfR0UuGRU5\nyehOnz7Nt99+y8aNG9m4cSMnT5685/Hs2bNTu3ZtfHx88PHxoW7duhQvXlwzYtPYxYsXCQ8Pd99+\n+OEH9yXd7nrooYdo2LAhDRs2pEmTJjzxxBP6dxLJZFTkklGRk8zEWsvx48cJDQ1l27ZthIWF3XMt\nwruKFClCzZo177mVKVNGpSEFWGs5e/Yse/bsYe/evezdu5ft27ffc57jXcWLF6dBgwY0atSIRo0a\nUalSJf0biGRyKnLJqMhJZnf58mXCw8MJCwsjLCyMnTt3Eh0d/ZvneXt7U6VKFapUqULlypXdH4sV\nK6ZycR9RUVEcPnyYQ4cOsX//fndxu3Tp0m+emydPHmrXrk29evWoV68edevWpWTJkg6kFpH0TEUu\nGRU5kXtZa4mMjGTXrl3u286dO7l48eLvPt/b25uKFSvy2GOP8eijj/LYY4+5b0WLFs3QJc9aS1RU\nFJGRkURGRnL8+HGOHDnCoUOHOHTo0O8WNoACBQpQrVo1qlevTrVq1ahZsyaVK1fW7GIR+UMqcsmo\nyIn8MWst58+fZ//+/Rw4cOCej5cvX77v1+XKlYtSpUpRokQJSpYsSYkSJdz3ixcvTuHChSlcuDD5\n8uVLd4UvNjaW8+fPc+7cud98PH36tLu8xcTE3Pd75M2bl4oVK7pvTz75JNWrV6dkyZLp7r9XRDyD\nilwyKnIiD+5uwTt69Cg///wzP//8M8eOHXPfv98eqeSyZcvmLnWFCxfG29ubvHnzki9fvns+5s2b\nlxw5cpAtWzb3LXv27GTLlo2sWbPicrlwuVzcuXPHfd/lchEbG0tMTAwxMTHcvHnTfT8mJobo6Ggu\nX77M5cuX+fXXX933r1+//qeye3t7U6ZMGcqUKUPp0qUpX748FStWpEKFCpo0IiIpTkUuGRU5kdRz\n9epVTp8+zenTpzlz5gxnzpxx3z979iyXLl0iKiqKGzduOB31N7y8vHj44YcpVqwYxYoVo2jRou77\nxYsXp2zZspQuXRpvb2+no4pIJqIil4yKnIjzbt68yaVLl7h06RIXL17kypUrXL9+nWvXrnHt2jX3\n/evXrxMbG0tcXBxxcXH33L9z5w5eXl54eXmRJUuWez5my5aN3Llzkzt3bnLlynXP/fz581OgB62D\n5wAABfpJREFUQAH3rWDBghQoUIB8+fJpQV0RSXdU5JJRkRMRERFPcb8ipz87RURERDyUipyIiIiI\nh0q3Rc4YM8EYc9AYs8cY8/+MMf9IHC9tjIkxxuxKvM1I8jU1jTH7jDFHjDFTnUsvIiIikvrSbZED\n1gFVrLXVgaPAqCSP/WStrZl4eyXJ+Eygv7W2PFDeGOObhnkzhU2bNjkdQdIhbRfye7RdyO/RdpGy\n0m2Rs9ZusNa6Ej/9Hkh6zZrfztowpiiQz1q7PXFoPtAhdVNmPvoFlN+j7UJ+j7YL+T3aLlJWui1y\nyfQDVif5vEziYdVvjTH1E8dKAKeTPOd04piIiIhIhuToBf6MMeuBh5MOARYYba39KvE5o4E4a+2i\nxOecBR6x1l42xtQEvjTGVE7L3CIiIiLpQbpeR84Y0wcYADS11t6+z3O+BYaRUPC+tdZWShzvDjSy\n1g68z9el3/9wERERkWR+bx05R/fI/SfGmJbACKBh0hJnjCkM/GqtdRljHgUeB45Za6ONMVeMMXWB\n7cDzQOD9vv/v/c8QERER8STpdo+cMeYokB24e/Xt7621rxhjOgHvArGAC/iXtXZV4tfUAv4N5ARW\nWWsHp3lwERERkTSSbouciIiIiPxnnjJrVRxmjGlpjDmUuNhygNN5JO0YY+YYYy4YY/YlGStgjFln\njDlsjFlrjMmf5LFRxpijiQt6P+NMakltxpiSxpiNxpj9xpgIY8ygxHFtG5mYMSaHMSbcGLM7cbt4\nJ3Fc20Uq0R45+UPGGC/gCNCMhEkl24Hu1tpDjgaTNJG4xM91YL619snEsQ+AS9baCYnFvoC19p+J\nM8hDgDokrP24AShn9UKT4SSu3VnUWrvHGJMX2Am0B/qibSNTM8bkttbGGGOyAFuBQUBntF2kCu2R\nkz+jLnDUWnvCWhsHfEbCC7ZkAtbaLcDlZMPtgXmJ9+fxf4tvtwM+s9bGW2sjSbgqS920yClpy1p7\n3lq7J/H+deAgCW/E2jYyOWttTOLdHCRMqrRou0g1KnLyZ5QATiX5XIstSxFr7QVIeEMHiiSOJ99W\nzqBtJcMzxpQBqpNwFZ6HtW1kbsYYL2PMbuA8sD7xikvaLlKJipyIpAQdBsmkEg+rLgUGJ+6ZS74t\naNvIZKy1LmttDRL20NY1xlRB20WqUZGTP+MM8EiSz0smjknmdcEY8zC4z5X6JXH8DFAqyfO0rWRg\nxpisJJS4Bdba5YnD2jYEAGvtVWAT0BJtF6lGRU7+jO3A48aY0saY7EB3YIXDmSRtmcTbXSuAPon3\n/YHlSca7G2OyG2PKkrBg9w9pFVLS3FzggLV2WpIxbRuZmDGm8N0ZqcaYXEALEs6f1HaRStLtlR0k\n/bDW3jHGvAasI6H8z7HWHnQ4lqQRY8wioDFQyBhzEngHGA98YYzpB5wAugJYaw8YYz4HDgBxwCua\nfZYxGWOeBnoBEYnnQ1ngTeAD4HNtG5lWMWBe4moHXsASa+0qY8z3aLtIFVp+RERERMRD6dCqiIiI\niIdSkRMRERHxUCpyIiIiIh5KRU5ERETEQ6nIiYiIiHgoFTkRERERD6UiJyIiIuKhVOREREREPJSK\nnIiIiIiHUpETERER8VAqciIiIiIeSkVORERExENldTqAiIinM8a8CBQGKgALgNJAEeAJYKS19oyD\n8UQkAzPWWqcziIh4LGPMAGCftTbcGFMHWA/0AW4Aa4DW1tq1DkYUkQxMe+RERP6eQtba8MT7jwB3\nrLVfGmNyAY2ttZsdzCYiGZz2yImIpBBjTCBQylrb0eksIpI5aLKDiEjKaQJscjqEiGQeKnIiIg/I\nGONljGluEhQBqpCkyBljRjoWTkQyBRU5EZEH9xKwDigHdAVigNMAxph2wI/ORRORzEDnyImIPCBj\nTDVgBHAI2Av8A2gKRALHrbULnUsnIpmBipyIiIiIh9KhVREREREPpSInIiIi4qFU5EREREQ8lIqc\niIiIiIdSkRMRERHxUCpyIiIiIh5KRU5ERETEQ6nIiYiIiHgoFTkRERERD6UiJyIiIuKh/j8YT825\n8zlOaAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,numpy.pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can play around with the input values and see what kind of behavior results. Just note that any value of $C > \\frac{2}{3}$ will result in $\\cos \\theta > 1$, which doesn't exist. Python will probably throw a few errors if you hit that condition, but just try again!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The last case is $C = 0$. Take another look at Equation (16) and plug in $C = 0$, what should happen? It looks like it will just reduce to \n", + "\n", + "$$R = 3z_t$$\n", + "\n", + "It's a constant radius of curvature! In fact, this solution is a series of semi-circles, with a cusp between them. One way to force $C = 0$ that we can figure out from Equation (15), is to make:\n", + "\n", + "\n", + "$$z = 3z_t\\ \\ \\ ,\\ \\ \\ \\theta = 0$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\npZeYNm0a1atXp1mzZpx11lkVUfZWef/99xk5ciQ33ngjAMOHD+eLL75g7dq1tGjRgpNOOmmz70/7\nsZa2vuL6l+txJv29WeX8nVxRklQ2/H/q/9x3332xT58+sX///t9pP++88+LcuXNjjDG2a9cuzpkz\np8j3r1ixInbs2HHT88MOOywuXbq0/AreBvn5+fH444+Pv/rVr2KMMc6fPz/ec889m14///zz4zff\nfFPs+7flWCdMmBAff/zxeO+998avv/56K49g80pbX3H9S7Of4n6Xsu1FZhqnRCVJKqVrrrmGE088\n8Ttts2fPZuHChbRo0QKAUaNG0bJlyyLf/+abb9KuXbtNzzt06MA///nP8it4GwwbNoxu3bptev7l\nl18yZswY1q9fD0C9evXYbrvtin3/1h7r559/zpNPPsl5551HixYteP7557fhKIpX2vqK61/e59Qp\nUUlSlTNr1iz+/Oc/f2c9rI2PQwgcdthh9OrVq1T7fOONN2jYsCGDBg3i66+/pn79+px77rlF9v3i\niy9o1KjRpueNGjVi5syZW308xdnW41y2bBnVqlVjxx13ZNWqVQAceOCB5Ofn88Mf/pALLriAY445\nhpo1axa7j6091p///OfcdNNNAHz66adUr169XI6ztPUV13+HHXYo13NqYJMklYkQilzvs9Q2/oW7\nNSZNmsSAAQNo3rw51apV4yc/+Qm9e/f+Xr899tiDu+66a1vK/J7Fixczbdo0hgwZAsCRRx7Jj370\nI9q0afO9vl9//TXbb7/9pufbbbcd33zzTYk+p6THCNt+nH//+9/52c9+xlNPPfWd9htvvJGBAwdy\n/fXX87vf/W6z+9iaY/3Pf/7DO++8w7vvvsvkyZMZNGgQt956a7H9t+U4S1vf5vpv7TktCadEJUmV\nxsEHH8yrr77KD37wA2rWrEnv3r154IEHWLx4cbl/dv369TnggAM2PW/RogWjRo0qtm/BYLpmzRoa\nN25cos8pfIxdu3blt7/9LU8++STvvvvuth1EAe+88w6HHnro99pnzpzJuHHjGDVqFC+//DK33347\nb7/9drH72ZpjfeONNzjhhBO44IILOOuss1i4cCHHHHNMuRxnaesrrv+2nNOScIRNklQmtmVkrCzd\neeedLF68mIcffhjITKc1bdr0O30KTqEVtC1Tou3atWP8+PGbnlerVo28vLwi++65555Mnjx50/Nl\n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\nSZISMm/ePPr160d+fj633norJ5xwQtIlSZVKoiNsIYTRIYQpBbap2Z89AWKMv4gxtiAzBXp5krVK\nkor27bffcsopp7B06VKOPfZYbrvttqRLkiqdREfYYoxHl7DrYOBVYACZEbXdC7y2W7atSAMGDNj0\nuGvXrnTt2rWUVUqSihNj5IILLmDSpEm0atWKwYMHU7169aTLknLC2LFjGTt2bIn6pvmmgzYxxs+y\njy8Hjowx9i1w08GhZKZCR+NNB5KUiPvuu4/rrruOunXrMnHiRNq3b590SVLO2txNB2m+hm1gCGFv\nMjcbzAUuAogxfhxCGAp8DKwHLjGVSVLFe+2117jhhhsA+Otf/2pYk8pRakfYyoIjbJJUPj755BMO\nPfRQVqxYwW233fady08kbZ3NjbAZ2CRJpbJs2TIOO+wwPvvsM/r06cPzzz9PtWqpXSVKyhkGNklS\nmVi7di1HH300b731FgceeCBvvvkm9erVS7osqVLIyYVzJUnpEmPkZz/7GW+99RbNmjVj+PDhhjWp\nghjYJEklcscdd/D0009Tt25dXnnlFZo3d81yqaI4JSpJ2qJBgwZx1llnEULgpZdeomfPnkmXJFU6\nTolKkrba6NGj6d+/PwAPPPCAYU1KgCNskqRivf/++3Tu3JlvvvmG6667jnvuuSfpkqRKy7tEJUml\nNmfOHDp16sSiRYvo168fgwYNcvkOqRwZ2CRJpfLll19y5JFH8sknn3DUUUcxYsQIatWqlXRZUqVm\nYJMkldjKlSvp1q0b7733Hu3bt+fNN9+kYcOGSZclVXredCBJKpE1a9bQq1cv3nvvPfbcc09Gjhxp\nWJNSwMAmSQJgw4YNnH766YwbN45mzZoxevRodtlll6TLkoSBTZIE5OXl0b9/f15++WUaN27MqFGj\naN26ddJlScoysElSFZefn89FF13EoEGDqFu3LiNGjKBdu3ZJlyWpAAObJFVhMUauvPJKHnvsMWrX\nrs2rr77KoYcemnRZkgoxsElSFRVj5Prrr+eRRx5hu+2248UXX6RLly5JlyWpCAY2SaqCYozccsst\n3HfffdSoUYNhw4ZxzDHHJF2WpGLUSLoASVLFijFy8803M3DgQKpXr86QIUM44YQTki5L0mYY2CSp\nCokxcuONN3L33XdvCmsnn3xy0mVJ2gIDmyRVETFGbrjhBu69915q1KhhWJNyiIFNkqqAGCNXX301\nDz74IDVq1GDo0KH06dMn6bIklZCBTZIquby8PC688EIef/xxatasydChQ+ndu3fSZUkqBQObJFVi\n69ev5+yzz2bIkCFsv/32vPDCC/zkJz9JuixJpWRgk6RK6ttvv+W0007j5Zdfpn79+rzyyit07tw5\n6bIkbQUDmyRVQitXrqRPnz688cYb7LDDDowcOZKDDz446bIkbSUDmyRVMosXL6ZHjx6899577LLL\nLowcOZL27dsnXZakbWBgk6RKZPbs2RxzzDF89tlntGnThpEjR7LHHnskXZakbeRXU0lSJfHhhx9y\n+OGH89lnn3HggQcyfvx4w5pUSRjYJKkSGD16NEceeSSLFi2iW7dujB07lqZNmyZdlqQyYmCTpBz3\n5JNP0qNHD/773//St29fRowYQYMGDZIuS1IZMrBJUo6KMfKrX/2K/v37s2HDBm644QaeffZZtt9+\n+6RLk1TGvOlAknLQunXruOCCC3jqqaeoVq0aDz/8MJdccknSZUkqJwY2ScoxS5cu5aSTTuKtt96i\nTp06DBkyhJ49eyZdlqRyZGCTpBzy8ccf07NnT2bNmkWzZs0YPnw4HTt2TLosSeXMa9gkKUeMHDmS\nTp06MWvWLA466CAmTZpkWJOqCAObJKVcjJH777+fHj16sHLlSk455RTefPNNmjVrlnRpkiqIgU2S\nUmz16tWcddZZXHvtteTn5/OLX/yC5557jjp16iRdmqQK5DVskpRSc+fOpU+fPrz//vvUrVuXp556\nipNPPjnpsiQlwMAmSSn0z3/+k759+7J06VL23HNPXnzxRfbff/+ky5KUEKdEJSlF8vPzueuuu+je\nvTtLly7l2GOPZdKkSYY1qYozsElSSnz99deceOKJ3HzzzZuuV3v11VfZYYcdki5NUsKcEpWkFHjv\nvfc45ZRTmD17NjvssANPP/00xx9/fNJlSUoJR9gkKUExRh5++GE6derE7NmzOeigg3jvvfcMa5K+\nw8AmSQn56quvOOmkk7jiiitYt24dF110EePHj6dVq1ZJlyYpZZwSlaQETJw4kX79+jFv3jwaNmzI\nn//8Z0499dSky5KUUo6wSVIF2rBhA7fffjudO3dm3rx5HHroobz//vuGNUmb5QibJFWQ2bNnc9ZZ\nZzFhwgQArr/+eu644w5q1qyZcGWS0i71I2whhGtDCPkhhMYF2m4KIcwMIUwPIRyTZH2StCUxRp56\n6ik6dOjAhAkTaNasGaNHj+buu+82rEkqkVSPsIUQdgOOBuYWaNsX6AvsC+wGjAkh7BVjjMlUKUnF\nW7p0KRdffDHPP/88ACeffDJ/+tOfaNKkScKVScolaR9hewC4vlDbicCQGOOGGOMcYCZwSEUXJklb\n8uKLL9KuXTuef/556tWrxxNPPMHf/vY3w5qkUkttYAsh9ALmxxinFnqpOTC/wPMF2TZJSoWvv/6a\ns846iz59+rBkyRK6dOnChx9+yLnnnksIIenyJOWgRKdEQwijgaYFm4AI/AK4mcx0qCTljFdeeYUL\nL7yQhQsXUrt2bQYOHMhll11GtWqp/fexpByQaGCLMRYZyEII+wOtgA9D5p+juwHvhRAOITOi1qJA\n992ybUUaMGDApsddu3ala9eu21q2JH3PkiVLuPLKKxkyZAgAnTp14sknn2TvvfdOuDJJaTV27FjG\njh1bor4hF67VDyHMBjrGGL8OIewHPAMcSmYqdDRQ5E0HIQTvRZBUrmKMPPPMM1x11VUsW7aM2rVr\nc/vtt3PllVdSvXr1pMuTlENCCMQYi7xuItV3iRYQyUyXEmP8OIQwFPgYWA9cYiqTlITZs2dz6aWX\n8o9//AOA7t2786c//Yk99tgj4cokVTY5McK2tRxhk1Qe1q1bx3333cdvfvMb1qxZQ6NGjbj//vu9\nqUDSNqkMI2ySlArjxo3j4osvZvr06QD069eP+++/n1122SXhyiRVZt62JEklsGjRIs455xy6du3K\n9OnT2WuvvRg9ejSDBw82rEkqdwY2SdqMjdOfe++9N3/961+pVasWAwYMYMqUKXTv3j3p8iRVEU6J\nSlIxRo0axZVXXsmMGTMAOOGEE3jggQdo06ZNwpVJqmocYZOkQj799FN69+7Nsccey4wZM9hrr714\n9dVXGT58uGFNUiIMbJKUtWzZMq644gratWvHSy+9RN26dRk4cCBTp06lR48eSZcnqQpzSlRSlbd2\n7VoeeeQRbr/9dpYvX04IgfPPP5/f/OY37LrrrkmXJ0kGNklVV15eHoMHD+aXv/wlc+bMATKL3953\n3320b98+2eIkqQADm6QqJ8bIq6++ys0338zUqVMB2G+//bjnnns47rjjXPxWUup4DZukKuWtt96i\nc+fO9OzZk6lTp7L77rvzxBNPMGXKFHr06GFYk5RKjrBJqhImTpzIbbfdxpgxYwBo0qQJv/jFL7jo\noovYfvvtE65OkjbPwCapUvv3v//NbbfdxsiRIwFo0KABV199Nddccw0NGjRIuDpJKhkDm6RKafz4\n8dxxxx289tprANSvX58rr7ySa665hh122CHh6iSpdAxskiqNGCOjRo3ijjvu4K233gKgbt26XHHF\nFVx77bU0adIk4QolaesY2CTlvLy8PF588UUGDhzI5MmTAWjUqBFXXHEFV1xxhUFNUs4zsEnKWatX\nr+bJJ5/k/vvv5/PPPwdgp5124pprruGSSy7xGjVJlYaBTVLOWbJkCY8++iiPPvooy5YtA6B169Zc\nc801nHfeedSpUyfhCiWpbBnYJOWM9957j4ceeohnn32WdevWAXDwwQdz/fXXc9JJJ1G9evWEK5Sk\n8mFgk5Rq69ev54UXXuChhx5iwoQJAIQQ6NmzJ9dddx1HHnmki91KqvQMbJJSaf78+Tz22GM89thj\nLFy4EMisoXb++edz2WWXscceeyRcoSRVHAObpNTIy8tj1KhR/PGPf+SVV14hPz8fgLZt23L55Zdz\n9tlnU69evYSrlKSKZ2CTlLg5c+bw5JNP8uSTTzJ37lwAatasyamnnspFF11Ely5dnPaUVKUZ2CQl\nYvXq1bzwwgv85S9/4Y033tjU3rp1ay688EL69+/PzjvvnGCFkpQeBjZJFSY/P59x48YxaNAgnn/+\neVauXAnA9ttvz8knn8x5551H165dqVatWsKVSlK6GNgklasYI1OnTmXQoEEMHjyYBQsWbHrt4IMP\n5vzzz+e0006jUaNGCVYpSelmYJNULqZNm8bQoUMZOnQoM2bM2NTeqlUrzjzzTM444wzatm2bYIWS\nlDsMbJLKRIyRjz76iGHDhjF06FCmT5++6bXGjRtz2mmnceaZZ9KpUydvIJCkUjKwSdpqeXl5TJw4\nkRdffJEXX3yRWbNmbXqtcePG9OnTh759+9KtWzdq1qyZYKWSlNsMbJJKZcWKFYwePZoRI0YwfPhw\nli5duum1nXbaiZ49e9K3b1+OOuooQ5oklREDm6TNijEybdo0RowYwYgRI5gwYQIbNmzY9Pqee+5J\n79696d27N506dfL7PCWpHBjYJH3PggULeP311xkzZgxjxozhP//5z6bXqlevTufOnenRowfHH388\n7dq185o0SSpnBjZJLF68mDfffJM333yTN954g48//vg7rzdt2pTjjjuOHj16cPTRR7sEhyRVMAOb\nVMXEGJkzZw4TJ07kzTffZNy4cXzyySff6VO3bl26du1K9+7d6d69u6NokpQwA5tUya1atYp3332X\nt99+m7fffpt//etfLF68+Dt96tSpw+GHH06XLl3o0qULhx56KNttt11CFUuSCjOwSZXI6tWr+eCD\nD3j33XeZPHky7777LtOnTyc/P/87/Zo0aUKnTp340Y9+RJcuXTjooIO8o1OSUszAJuWg/Px85syZ\nw5QpU5gyZQpTp05lypQpzJw5kxjjd/pWr16dDh060KlTp01bmzZtnOKUpBxiYJNS7JtvvuHzzz/n\nk08+YcaMGUyfPp0ZM2bwySefsGbNmu/1r169Ou3ateOggw7ihz/8IQcddBDt27endu3aCVQvSSor\nBjYpQWvWrOGLL75g3rx5zJ8/nzlz5vD5559v2pYsWVLse3fddVcOOOAA2rdvv2lr27YttWrVqsAj\nkCRVBAObVMa+/fZbli1bxldffcWyZcv48ssvWbRo0Xe2//znP3zxxRd8+eWXm91XrVq1aN26Nfvs\nsw9t27albdu27Lvvvuyzzz4urSFJVYiBTVXe119/zauvvkp+fj55eXmbtvz8fDZs2MDatWv59ttv\nv7OtWrWKlStX8t///nfTzxUrVvDVV18VOVVZnBo1arDbbrvRokULdt99d1q0aMGee+65aWvevDnV\nqlUrx6OXJOWCUPgC5cokhBAr8/GpbEyZMoUOHTqU2f5q1qxJkyZNaNKkCY0bN2bHHXdk1113ZZdd\ndtm0NW3alN13352mTZsayCRJAIQQiDEWeUeYI2yq8ho3bswZZ5xB9erVqVat2nd+Vq9ene233/57\nW506dWjQoAH169f/zs/GjRtTt25d78CUJJUpR9gkSZJSYHMjbM7FSJIkpZyBTZIkKeUMbJIkSSln\nYJMkSUq51Aa2EMJtIYQvQgjvZbefFHjtphDCzBDC9BDCMUnWKUmSVN5SG9iy7o8xdsxurwGEEPYF\n+gL7AscBvw8pWUNh7NixSZegbeD5y12eu9zm+cttnr+KkfbAVlQQOxEYEmPcEGOcA8wEDqnQqorh\nH9rc5vnLXZ673Ob5y22ev4qR9sB2WQjhgxDCYyGEhtm25sD8An0WZNskSZIqpUQDWwhhdAhhSoFt\navZnT+D3wB4xxh8Ai4D7kqxVkiQpKTnxTQchhJbA8Bhj+xDCjUCMMf42+9prwG0xxn8X8b70H5wk\nSVJWzn2XaAhhlxjjouzTk4CPso9fBp4JITxAZiq0DfBOUfso7qAlSZJySWoDG3B3COEHQD4wB7gQ\nIMb4cQhhKPAxsB64xC8MlSRJlVlOTIlKkiRVZWm/SzQnhBDuzi7i+0EIYVgIoUGB11zkN+VCCD8J\nIcwIIXwaQvh50vVo80IIu4UQ3gghTMveqHRFtn2HEMKoEMInIYSRBe4sV8qEEKplF0R/Ofvcc5cj\nQggNQwh/y/6dNi2EcKjnr2IY2MrGKKBd9o7WmcBNACGE/UjpIr/KCCFUAx4BjgXaAf1CCG2TrUpb\nsAG4JsbYDugEXJo9ZzcCY2KM+wBvkP09VCpdSeaylo08d7njQWBEjHFfoAMwA89fhTCwlYEY45gY\nY3726b+A3bKPe5HSRX61ySHAzBjj3BjjemAImcWZlVIxxkUxxg+yj78BppP5nTsReCrb7SmgdzIV\nanNCCLsBPYDHCjR77nJAdvboyBjjEwDZv9tW4PmrEAa2snceMCL72EV+06/wOfoCz1HOCCG0An5A\n5h9KTWOMiyET6oCdk6tMm/EAcD1Q8AJqz11uaA0sDSE8kZ3S/n8hhDp4/iqEga2EtrDI78Y+twDr\nY4zPJliqVCWEEOoBzwNXZkfaCt9B5R1VKRNCOB5YnB0h3dzlIZ67dKoBdAQejTF2BFaRmQ71d68C\npHlZj1SJMR69uddDCOeSGeY/qkDzAmD3As93y7YpPRYALQo89xzlgBBCDTJh7ekY40vZ5sUhhKYx\nxsUhhF2AJclVqGIcAfQKIfQAagP1QwhPA4s8dznhC2B+jHFy9vkwMoHN370K4AhbGQgh/ITMEH+v\nGOPaAi+9DJweQtguhNCazSzyq8RMAtqEEFqGELYDTidz3pRufwE+jjE+WKDtZeDc7ONzgJcKv0nJ\nijHeHGNsEWPcg8zv2hsxxrOA4XjuUi877Tk/hLB3tunHwDT83asQrsNWBkIIM4HtgGXZpn/FGC/J\nvnYTcD6ZRX6vjDGOSqZKFScbuB8k8w+Yx2OMAxMuSZsRQjgCeBOYSmbqJQI3k/nH0FAyo9pzgb4x\nxuVJ1anNCyF0Aa6NMfYKITTGc5cTQggdyNwwUhOYBfQHquP5K3cGNkmSpJRzSlSSJCnlDGySJEkp\nZ2CTJElKOQObJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElK\nOQObJElSytVIugBJyhUhhAuAHYF9gKeBlsDOwP7ADTHGBQmWJ6kSCzHGpGuQpNQLIfwMmBJj/HcI\n4WBgNHAusAp4DegRYxyZYImSKjFH2CSpZJrEGP+dfdwCyIsxvhhCqA10jTG+lWBtkio5R9gkqZRC\nCA8Bu8cY+yRdi6SqwZsOJKn0ugFjky5CUtVhYJOkLQghVAshdA8ZOwPtKBDYQgg3JFacpCrBwCZJ\nW3YhMArYC+gLrAa+AAgh9AI+Sq40SVWB17BJ0haEEDoA1wMzgA+BBsBRwBxgdoxxUHLVSaoKDGyS\nJEkp55SoJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElKOQOb\nJElSyhnYJEmSUu7/A9i2e0jPCtaoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(16,48,0.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks an awful lot like a quarter circle. And what's the radius of the arc? It's $$r = 48 = 3z_t.$$\n", + "\n", + "We can also get a semi-circle out of our simulated trammel by changing to another configuration where $C$ is (near) zero. Here's one example:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nvS8Z0/tyPr0nGdP7kjG9LznDb4/STXNNdhERERGvZozBXsZBG357lK6IiJyvQoUKxMTEOB1DxG+V\nL1+e/fv3e3y9GuETEZFU7lEEp2OI+K3M/g1e7gif9uETERER8XEqfCIiIiI+ToVPRERExMep8ImI\niIj4OBU+ERERkcu0du1aEhISOHv2LOvWrXM6znl0WhYREZF0Tp06xbhx4wgLC+PPP//k2Wef/dfj\nW7duJTIyksGDB2e6jsWLF7Nz504CAwO56qqr6Ny5c07HzpZt27Yxc+ZMJkyYkLrsYtufXl7Z1uzI\n6P3JSEREBDExMZQuXZp33nkHAGstxYsXJyAgIPXI22bNmjF37twcz52eCp+IiEg6Tz75JCNHjiQs\nLIyqVavywAMPUL58ecD1S3z48OHUrl07068/efIkL730Eps3bwagbt263HvvvZQoUSJX8mfV//3f\n/7F+/XqKFSv2r+UX2v70LmdbN2zYwI8//siJEyfo2rXreTmcltn7k5GhQ4fSokULypYtS2BgIAD7\n9+/nrbfe4o477iAgIIBFixZx991353TsDGlKV0REJI1ffvmFw4cPExYWBsDKlSv/VXYWLFhA48aN\nL7iOtWvXUqVKldT7t956K6tXr86ZwJfhmWeeoXXr1v9adrHtTy+727pv3z7ef/99nnjiCcLCwpg/\nf342tyLnZPT+ZCY4OJirr746tewB5M+fn7Zt21KhQgWKFi1KcHAwlStXzqm4F6QRPhER8Tk///wz\n77777r9OYpvyuTGG22+/nVatWmX4tV9++SWhoaF8+OGHnDhxgiJFitClSxcA4uLiCAgIoGTJkpw6\ndSrT1//111//NSpUrFgx9uzZ47kNdLuc7czMhbY/I9nd1ueff54XXngBgN27d/+rKKWXE9vpadHR\n0VhriYuL44YbbqBVq1aULVs29fHJkyfz9NNPO5ZPhU9ERLLEmGyf5P882b2ax8aNGxk1ahTlypUj\nICCAFi1a0KZNm/OeV7FiRcaMGZOt14iNjWXnzp3MmTMHgPr163PnnXdy/fXXs3DhQrp3784HH3xw\nwXWcOHGC/Pnzp97Ply8f8fHxWXr9rG4jXN52ZuZC25+R7Gzrb7/9RnR0NJs3b2bTpk18+OGHDB8+\nPNPn58R2elq3bt2oUaMGANWrV6dhw4aEhoYCrvcoLi6OkJAQx/Kp8ImISJ5x2223sWzZMt566y12\n7dpFmzZteO211+jUqRNXXnmlR16jSJEiVKtWLfV+WFgYK1eu5Pjx49SpUyfL6zh+/Hjq/TNnzlCm\nTJksfW36bWzUqBHjxo3jyiuvpFq1atSsWfPSNugSZbb9mRW+7Gzrl19+yf3330+PHj04ffo0gwYN\nolmzZjm+na+++ioJCQn/WpYyShgREXHBqeuLufXWW1M/L168OFFRUanTwXPnznVsKjeFCp+IiGSJ\nt1xjd/To0cTGxvLGG28ArunA9GUv7RRgWlmZAqxSpQrr169PvR8QEEBSUhLR0dGcPn2a5cuX89VX\nX5GQkMCnn36a4Xquu+46Nm3alHo/Li6O8PDwbG3ja6+9RuPGjQkPDyciIoJZs2Z5ZDszk9n2ZyY7\n23rw4MHUArR48WLuvfdeZs6cmePbOWjQoIs+JztmzZrFZ599lpo5Pj7+X1PUX375JY899liOvHaW\nWWv98ubadBERScvb/28cPXq0HTp0qLXW2p07d9p169bZe+65x3799dcee42EhAR7++23p96/4447\n7N69e//1nFGjRtkXX3wx9f6+fftscnJy6v1Tp07ZatWqpd6/9dZbbWxsrLXW2j179vzrueml38a+\nffvaAwcOWGutveeeey5jyzL2/vvv2y5duqTev9D2p99Oa7O3rVOnTrVTp0611lp777332piYGNuv\nX78c3c7sSv/+WHv++7B+/Xq7Zs0aa6218fHxtkKFCvbUqVOpj1evXt2uWrUqS6+X2b9B9/Js9x4d\npSsiInnChg0bqFatGs2bN6dJkyYsXLiQa665hkaNGnH77bd77HVCQkIYNWoUI0aMYPjw4fTp04fr\nrrsu9fGPP/6YxYsXs3jx4tQjSx944AG+++671OcULFiQQYMG8Z///IeXX36ZgQMHUrp0aQBatmzJ\nqlWrsryNwAUPaLgcb775JtOmTSMqKooXX3yRv/7664Lbn347s7utDz74INu3b2fq1KkMHz6csLAw\nkpOTc2w7syuj9wfOfx/q1avHwYMHmThxIkOHDmXOnDkULFgw9fESJUpQrly5XM+flrFeMkSf24wx\n1l+3XUQkM2mPgswLZs+eTfny5QkLC+Oaa65xOk6WJCcns2bNmoue2iXFG2+8Qf369alcuTJdunTh\no48+yuGEnnMp25qXt9OTMvs36F6e7SOnVPhERCRVXit8ixcvJjExkdtuu+2ydrjPTfPmzaNly5YU\n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\npozTkbyGRvjysB49elC9enUOHDjA2LFjnY4jIiLimISEhNRrz7/44osqex6mET6HffXVV9x5552E\nhITwww8/ULFiRacjiYiI5LqXX36ZESNGULVqVbZu3UpQkKNnjvM6GuHL4+rVq0fnzp05e/Ys/fv3\nxxtKqIiISG7av38/o0ePBuDNN99U2csBKnxe4NVXXyU0NJTPPvuM+fPnOx1HREQk11hr6d27NwkJ\nCXTs2JGGDRs6HcknaUrXS7zzzjv06tWLMmXKsGvXLooVK+Z0JBERkRw3Z84cOnbsSLFixdi1a5f2\n3cuEpnR9RPfu3alXrx6///47gwcPdjqOiIhIjjtx4kTqgRrjx49X2ctBGuHzIjt37qRGjRokJiay\nfv166tWr53QkERGRHNO9e3emTp1KgwYNWL16NQEBGofKjEb4fEiVKlUYNGgQ4Dply99//+1wIhER\nkZyxZs0apk6dSr58+XjnnXdU9nKY3l0vM3ToUK6//np++OEHxowZ43QcERERj0tISKBnz54ADBky\nhJtuusnhRL5PU7peaM2aNTRq1IigoCA2btxI9erVnY4kIiLiMYMGDWL8+PHcdNNNfPfdd4SEhDgd\nyetpStcHNWzYkH79+nHu3Dm6dOlCYmKi05FEREQ8YsOGDUyYMIGAgADef/99lb1cosLnpcaMGcO1\n117Ltm3bUk9GKSIikpedPn2aLl26YK1l0KBB1KlTx+lIfkNTul4sKiqKxo0ba2pXRER8wjPPPMNr\nr71GlSpV2Lx5s0b3LoGmdH1Yo0aN/jW1q6N2RUQkr1q/fj0TJ04kMDBQU7kOUOHzcmPGjKFixYps\n27aNUaNGOR1HRETkksXHx6dO5b7wwgvUqlXL6Uh+R1O6ecD69etp2LAh1lqioqJo0KCB05FERESy\nrFu3bkybNo1bbrmFjRs3ki9fPqcj5Tma0vUDd955Jy+88ALWWjp37swff/zhdCQREZEsWbBgAdOm\nTSN//vzMnj1bZc8hKnx5xMiRI7nttts4cOAAffv2dTqOiIjIRR06dIju3bsDrmvlVqlSxeFE/ktT\nunnI7t27qVGjBqdPn2bWrFl06tTJ6UgiIiIZSk5OplmzZnzxxRfce++9LF26FGOyPSPp9zSl60cq\nVarE66+/DkDv3r3Zv3+/s4FEREQy8dprr/HFF19QqlQppk+frrLnMI3w5THWWtq3b88nn3xC7dq1\nWbdunfaHEBERr7Jx40bq1atHYmIiS5Ys4f7773c6Up6nET4/Y4xh6tSphIWFER0dzeDBg52OJCIi\nkuqPP/6gQ4cOJCYm0q9fP5U9L6ERvjzqm2++oX79+pw7d47FixfTqlUrpyOJiIifSzsLVbNmTb76\n6iudYNlDNMLnp26//XbGjh0LQJcuXYiJiXE4kYiI+LtJkybxySefULRoUebNm6ey50U0wpeHWWtp\n1aoVS5cu5fbbb2ft2rUEBwc7HUtERPxQdHQ0d955J4mJicyfP5/27ds7HcmnaITPjxljeP/997nm\nmmv45ptvGDhwoNORRETEDx0/fpyHHnqIxMREnnzySZU9L6QRPh/w9ddf07BhQxITE3V+PhERyVVJ\nSUncd999REZGUqtWLdavX6+p3BygET6hbt26qefn69atG9u3b3c4kYiI+IsRI0YQGRlJyZIlmT9/\nvsqel9IIn4+w1vLEE0/w/vvvU7FiRTZt2kTx4sWdjiUiIj7sk08+oV27dgQEBPD555/TpEkTpyP5\nLI3wCeD6QXjrrbcIDw/n559/5pFHHiEpKcnpWCIi4qN27drFY489BsCrr76qsuflVPh8SIECBVi4\ncCElSpRg+fLljBw50ulIIiLig/7880/atm1LfHw8Dz/8MM8884zTkeQiNKXrg1atWkXz5s1JTk7m\no48+4uGHH3Y6koiI+IikpCRat27NsmXLuOWWW9iwYQOFChVyOpbP05SunKdp06a89tprADz++ONE\nR0c7nEhERHzFoEGDWLZsGSVKlOCTTz5R2csjNMLno6y19OrViylTplCmTBk2btzI1Vdf7XQsERHJ\nw6ZOnUr37t0JDg5m1apVNGjQwOlIfuNyR/hU+HxYYmIizZo1IyoqivDwcNauXau/xEREJFtWr15N\ns2bNOHfuHNOmTeOJJ55wOpJf0ZSuZCo4OJj58+dz3XXXsWXLFiIiIkhOTnY6loiI5DF79uyhffv2\nnDt3jueee05lLw9S4fNxJUqUYOnSpYSGhrJgwQIGDx7sdCQREclD4uLiuP/++zlx4gQtW7Zk7Nix\nTkeSbFDh8wM33XQT8+fPJygoiPHjx/Pmm286HUlERPKAM2fO0KpVK3bv3s0tt9zCrFmzCAwMdDqW\nZIMKn59o2rQpU6dOBeDJJ59k0aJFDicSERFvlpSUxKOPPsqGDRu4+uqr+eyzzyhSpIjTsSSbVPj8\nSEREBC+99BLWWjp27MjXX3/tdCQREfFC1lqefvppFi5cSGhoKCtWrKBcuXJOx5LLoKN0/Yy1lh49\nejB16lRKlCjB119/zQ033OB0LBER8SITJkxg4MCB5MuXj8jISBo1auR0JL+n07Jkk78WPoBz587R\nqlUrli9fzrXXXsv69eu56qqrnI4lIiJeYPbs2TzyyCMAulqTF9FpWeSSBQUFMW/ePGrVqsUvv/xC\n8+bNOX78uNOxRETEYcuWLSMiIgKA8ePHq+z5EBU+P1W4cGGWL1/OTTfdxI4dO7jvvvs4deqU07FE\nRMQh69at44EHHuDcuXMMHDiQZ5991ulI4kGa0vVzv/76K/Xq1ePAgQM0a9aMTz/9lJCQEKdjiYhI\nLtqyZQuNGzfm5MmTdO/enXfeeQdjsj17KDlAU7pyWa6++mo+//xzSpUqxcqVK+ncuTNJSUlOxxIR\nkVzy008/0aJFC06ePEmHDh14++23VfZ8kAqfUKlSJSIjIylatCgff/wx3bt31yXYRET8QExMDHff\nfTdHjx6lRYsWzJw5UydW9lEqfAJAjRo1WLp0KQUKFOC9996jV69eKn0iIj7swIEDNG7cmIMHD1Kv\nXj0WLFhAvnz5nI4lOUSFT1LVr1+fpUuXkj9/ft5991369euH9nMUEfE9v/76K40bN+aXX36hdu3a\nLFu2jIIFCzodS3KQCp/8S5MmTVIP3Hj77bcZMGCASp+IiA85dOgQjRs35ueff6ZWrVpERkYSGhrq\ndCzJYSp8cp67776bRYsWkS9fPt544w2eeeYZlT4RER9w+PBhmjRpwt69ewkPD2flypUUK1bM6ViS\nC1T4JEMtWrRg4cKFBAcHM3HiRAYNGqTSJyKSh/322280adKE3bt3U716dT7//HOKFy/udCzJJSp8\nkqn77ruP+fPnExQUxIQJE3juuedU+kRE8qDffvuNu+66i59++olbbrmFVatWccUVVzgdS3KRCp9c\nUKtWrZg3bx7BwcH83//9H3369NHRuyIieUhMTAwNGjRg165dVKtWjS+++IISJUo4HUtyma60IVny\n2Wef0b59exISEujcuTPTp08nKCjI6VgiInIBu3fvpmnTphw8eJDw8HAiIyMpWbKk07EkGy73Shsq\nfJJlq1evpmXLlpw6dYr27dsze/ZsnbNJRMRLbd++nWbNmhEbG0u9evVYtmyZjsbNw3RpNck1jRs3\n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\nvMsjiwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,-numpy.pi/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is so nice. We have reproduced the trajectories that Lanchester found more than a hundred years ago, painstakingly drawing them by hand with a contraption called a \"trammel.\" It must have taken him days!\n", + "\n", + "Here is how the different phugoid curves are drawn in von Kármán's book, _Aerodynamics_ (1957). He never says _how_ he drew them, but we're guessing by hand, also. We did pretty good!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/vonKarman-phugoids.png)\n", + "\n", + "#### Figure 4. Phugoid curves in von Kármán (1957)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next notebook of this series, we'll look at the differential equation that arises when you consider small perturbations on the horizontal phugoid, and we'll learn to numerically integrate that to get the flight paths." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Lanchester, F. W. _Aerodonetics_, D. van Nostrand Company: New York, 1909. On the public domain. [Get it from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PP1#v=onepage&q&f=false).\n", + "\n", + "2. Milne-Thompson, L. M. _Theoretical Aerodynamics_, Dover 2012 reprint of the revised 1966 edition. [Read on Google Books](http://books.google.com/books?id=EMfCAgAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see section 18.5)\n", + "\n", + "3. Sinha, N. K. and Ananthkrishnan, N. _Elementary Flight Dynamics with an introduction to Bifurcation and Continuation Methods_, CRC Press, 2013. [Read on Google Books](http://books.google.com/books?id=yXL6AQAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see chapter 5)\n", + "\n", + "4. von Kármán, T. _Aerodynamics_, Dover 2004 reprint of the 1957 2nd edition. (see pages 149–151)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "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 = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/01_02_Phugoid_Oscillation.ipynb b/01_phugoid/01_02_Phugoid_Oscillation.ipynb new file mode 100644 index 0000000..eb6283b --- /dev/null +++ b/01_phugoid/01_02_Phugoid_Oscillation.ipynb @@ -0,0 +1,949 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth. Partly based on David Ketcheson's pendulum lesson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Oscillation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome back! This is the second IPython Notebook of the series _\"The phugoid model of glider flight\"_, the first learning module of the course [**\"Practical Numerical Methods with Python.\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about)\n", + "\n", + "In the first notebook, _\"Phugoid Motion\"_, we described the physics of an aircraft's oscillatory trajectory, seen as an exchange of kinetic and potential energy. This analysis goes back to Frederick Lanchester, who published his book _\"Aerodonetics\"_ on aircraft stability in 1909. We concluded that first exposure to our problem of interest by plotting the flight paths predicted by Lanchester's analysis, known as _phugoids_.\n", + "\n", + "Here, we will look at the situation when an aircraft is initially moving on the straight-line phugoid (obtained with the parameters $C=2/3$, $\\cos\\theta=1$, and $z=z_t$ in the previous analysis), and experiences a small upset, a wind gust that slightly perturbs its path. It will then enter into a gentle oscillation around the previous straight-line path: a _phugoid oscillation_.\n", + "\n", + "If the aircraft experiences an upward acceleration of $-d^2z/dt^2$, and we assume that the perturbation is small, then $\\cos\\theta=1$ is a good approximation and Newton's second law in the vertical direction is:\n", + "\n", + "$$\\begin{equation}\n", + "L - W = - \\frac{W}{g}\\frac{d^2 z}{dt^2}\n", + "\\end{equation}$$\n", + "\n", + "In the previous notebook, we saw that the following relation holds for the ratio of lift to weight, in terms of the trim velocity $v_t$:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}=\\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "This will be useful: we can divide Equation (1) by the weight and use Equation (2) to replace $L/W$. Another useful relation from the previous notebook expressed the conservation of energy (per unit mass) as $v^2 = 2 gz$. With this, Equation (1) is rearranged as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d^2z}{dt^2} + \\frac{gz}{z_t} = g\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Look at Equation (3) for a moment. Does it ring a bell? Do you recognize it?\n", + "\n", + "If you remember from your physics courses the equation for _simple harmonic motion_, you should see the similarity! \n", + "\n", + "Take the case of a simple spring. Hooke's law is $F=-kx$, where $F$ is a restoring force, $x$ the displacement from a position of equilibrium and $k$ the spring constant. This results in the following ordinary differential equation for the displacement:\n", + "\n", + "$$\\begin{equation}\n", + " \\frac{d^2 x}{dt^2}= -\\frac{k}{m}x\n", + "\\end{equation}$$\n", + "\n", + "which has the solution $x(t) = A \\cos(\\omega t- \\phi)$, representing simple harmonic motion with an angular frequency $\\omega=\\sqrt{k/m}=2\\pi f$ and phase angle $\\phi$.\n", + "\n", + "Now look back at Equation (3): it has nearly the same form and it represents simple harmonic motion with angular frequency $\\omega=\\sqrt{g/z_t}$ around mean height $z_t$. \n", + "\n", + "Think about this for a moment ... we can immediately say what the period of the oscillation is: exactly $2 \\pi \\sqrt{z_t/g}$ — or, in terms of the trim velocity, $\\pi \\sqrt{2} v_t/g$.\n", + "\n", + "_This is a remarkable result!_ Think about it: we know nothing about the aircraft, or the flight altitude, yet we can obtain the period of the phugoid oscillation simply as a function of the trim velocity. For example, if trim velocity is 200 knots, we get a phugoid period of about 47 seconds—over that time, you really would not notice anything if you were flying in that aircraft.\n", + "\n", + "Next, we want to be able to compute the trajectory of the aircraft for a given initial perturbance. We will do this by numerically integrating the equation of motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare to integrate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to integrate the differential equation and plot the trajectory of the aircraft. Are you ready?\n", + "\n", + "The equation for the phugoid oscillation is a second-order, ordinary differential equation (ODE). Let's represent the time derivative with a prime, and write it like this:\n", + "\n", + "$$\\begin{equation}\n", + "z(t)'' + \\frac{g \\,z(t)}{z_t}=g\n", + "\\end{equation}$$\n", + "\n", + "There's a convenient trick when we work with ODEs: we can turn this 2nd-order equation into a system of two 1st-order equations. Like this:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z'(t) &=& b(t)\\\\\n", + "b'(t) &=& g\\left(1-\\frac{z(t)}{z_t}\\right)\n", + "\\end{eqnarray}$$\n", + "\n", + "Are you following? Make sure you are following the derivations, even if it means writing the equations down in your own notes! (Yes, the old-fashioned paper way.)\n", + "\n", + "Another way to look at a system of two 1st-order ODEs is by using vectors. You can make a vector with your two independent variables, \n", + "\n", + "$$\\begin{equation}\n", + "\\vec{u} = \\begin{pmatrix} z \\\\ b \\end{pmatrix}\n", + "\\end{equation}$$\n", + "\n", + "and write the differential system as a single vector equation:\n", + "\n", + "\\begin{equation}\n", + "\\vec{u}'(t) = \\begin{pmatrix} b\\\\ g-g\\frac{z(t)}{z_t} \\end{pmatrix}\n", + "\\end{equation}\n", + "\n", + "If you call the right-hand-side $\\vec{f}(\\vec{u})$, then the equation is very short: $\\vec{u}'(t) = \\vec{f}(\\vec{u})$—but let's drop those arrows to denote vectors from now on, as they are a bit cumbersome: just remember that $u$ and $f$ are vectors in the phugoid equation of motion.\n", + "\n", + "Next, we'll prepare to solve this problem numerically." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initial value problems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's step back for a moment. Suppose we have a first-order ODE $u'=f(u)$. You know that if we were to integrate this, there would be an arbitrary constant of integration. To find its value, we do need to know one point on the curve $(t, u)$. When the derivative in the ODE is with respect to time, we call that point the _initial value_ and write something like this:\n", + "\n", + "$$u(t=0)=u_0$$\n", + "\n", + "In the case of a second-order ODE, we already saw how to write it as a system of first-order ODEs, and we would need an initial value for each equation: two conditions are needed to determine our constants of integration. The same applies for higher-order ODEs: if it is of order $n$, we can write it as $n$ first-order equations, and we need $n$ known values. If we have that data, we call the problem an _initial value problem_.\n", + "\n", + "Remember the definition of a derivative? The derivative represents the slope of the tangent at a point of the curve $u=u(t)$, and the definition of the derivative $u'$ for a function is:\n", + "\n", + "$$u'(t) = \\lim_{\\Delta t\\rightarrow 0} \\frac{u(t+\\Delta t)-u(t)}{\\Delta t}$$\n", + "\n", + "If the step $\\Delta t$ is already very small, we can _approximate_ the derivative by dropping the limit. We can write:\n", + "\n", + "$$\\begin{equation}\n", + "u(t+\\Delta t) \\approx u(t) + u'(t) \\Delta t\n", + "\\end{equation}$$\n", + "\n", + "With this equation, and because we know $u'(t)=f(u)$, if we have an initial value, we can step by $\\Delta t$ and find the value of $u(t+\\Delta t)$, then we can take this value, and find $u(t+2\\Delta t)$, and so on: we say that we _step in time_, numerically finding the solution $u(t)$ for a range of values: $t_1, t_2, t_3 \\cdots$, each separated by $\\Delta t$. The numerical solution of the ODE is simply the table of values $t_i, u_i$ that results from this process." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discretization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to execute the process described above and find the numerical solution of the ODE, we start by choosing the values $t_1,t_2,t_3 \\cdots t_n$—we call these values our *grid* in time. The first point of the grid is given by our _initial value_, and the small difference between two consecutive times is called the _time step_, denoted by $\\Delta t$. The solution value at time $t_n$ is denoted by $u_n$.\n", + "\n", + "Let's build a time grid for our problem. We first choose a final time $T$ and the time step $\\Delta t$. In code, we'll use readily identifiable variable names: `T` and `dt`, respectively. With those values set, we can calculate the number of time steps that will be needed to reach the final time; we call that variable `N`. \n", + "\n", + "Let's write some code. The first thing we do in Python is load our favorite libraries: NumPy for array operations, and the Pyplot module in Matplotlib, to later on be able to plot the numerical solution. The line `%matplotlib inline` tells IPython Notebook to show the plots inline." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy \n", + "from matplotlib import pyplot\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, initialize `T` and `dt`, calculate `N` and build a NumPy array with all the values of time that make up the grid." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100.0\n", + "dt = 0.02\n", + "N = int(T/dt)+1\n", + "t = numpy.linspace(0.0, T, N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have our grid! Now it's time to apply the numerical time stepping represented by Equation (10)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Write the code above using the NumPy function `arange()` instead of `linspace()`. If you need to, read the documentation for these functions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enter a question mark followed by any function, e.g., `?numpy.linspace`, into a code cell and execute it, to get a help pane on the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The approximate solution at time $t_n$ is $u_n$, and the numerical solution of the differential equation consists of computing a sequence of approximate solutions by the following formula, based on Equation (10):\n", + "\n", + "$$u_{n+1} = u_n + \\Delta t \\,f(u_n).$$\n", + "\n", + "This formula is called **Euler's method**.\n", + "\n", + "For the equations of the phugoid oscillation, Euler's method gives the following algorithm that we need to implement in code:\n", + "\n", + "\\begin{align}\n", + "z_{n+1} & = z_n + \\Delta t \\, b_n \\\\\n", + "b_{n+1} & = b_n + \\Delta t \\left(g - \\frac{g}{z_t} \\, z_n \\right).\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To apply the numerical solution method, we need to set things up in code: define the parameter values needed in the model, initialize a NumPy array to hold the discrete solution values, and initialize another array for the elevation values." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# initial conditions\n", + "z0 = 100. #altitude\n", + "b0 = 10. #upward velocity resulting from gust\n", + "zt = 100.\n", + "g = 9.81\n", + "\n", + "u = numpy.array([z0, b0])\n", + "\n", + "# initialize an array to hold the changing elevation values\n", + "z = numpy.zeros(N)\n", + "z[0] = z0 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should pay attention to a couple of things: (1) See how there is a dot after the numbers used to define our parameters? We just want to be explicit (as a good habit) that these variables are real numbers, called \"floats.\" (2) We both _created_ and _initialized_ with zeros everywhere the solution vector `z`. Look up the documentation for the handy NumPy function `zeros()`, if you need to. (3) In the last line above, we assign the _initial value_ to the first element of the solution vector: `z[0]`.\n", + "\n", + "Now we can step in time using Euler's method. Notice how we are time stepping the two independent variables at once in the time iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-loop using Euler's method\n", + "for n in range(1,N):\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make sure you understand what this code is doing. This is a basic pattern in numerical methods: iterations in a time variable that apply a numerical scheme at each step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the code is correct, we have stored in the array `z` the position of the glider at each time. Let's use Matplotlib to examine the flight path of the aircraft.\n", + "\n", + "You should explore the [Matplotlib tutorial](http://matplotlib.org/users/pyplot_tutorial.html) (if you need to) and familiarize yourself with the command-style functions that control the size, labels, line style, and so on. Creating good plots is a useful skill: it is about communicating your results effectively. \n", + "\n", + "Here, we set the figure size, the limits of the vertical axis, the format of tick-marks, and axis labels. The final line actually produces the plot, with our chosen line style (continuous black line)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4)) #set plot size\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z, 'k-');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Explore and think" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try changing the value of `v` in the initial conditions. \n", + "\n", + "* What happens when you have a larger gust? \n", + "* What about a smaller gust? \n", + "* What happens if there isn't a gust (`v = 0`)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equation for phugoid oscillations is a 2nd-order, linear ODE and it has an exact solution of the following form:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "z(t) = A \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + B \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $A$ and $B$ are constants that we solve for using initial conditions. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our numerical solution used the initial conditions:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z(0) = z_0 \\\\\n", + "b(0) = b_0\n", + "\\end{eqnarray}$$\n", + "\n", + "Applying these to the exact solution and solving for $A$ and $B$, we get:\n", + "\n", + "$$\\begin{equation}\n", + "z(t) = b_0 \\sqrt{\\frac{z_t}{g}} \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + (z_0-z_t) \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already defined all of these variables for our numerical solution, so we can immediately compute the exact solution. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The expression is a bit long —if you don't feel like scrolling left and right, you can insert a line break in the code using a backslash '\\' _(without any trailing spaces)_ and Python will treat the next line as a continuation of the first." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot our exact solution! Even better, we can plot _both_ the numerical solution *and* the exact solution to see how well Euler's method approximated the phugoid oscillations.\n", + "\n", + "To add another curve to a plot, simply type a second `pyplot.plot()` statement. We also added a legend using the format\n", + "\n", + "```Python\n", + "pyplot.legend([\"line 1\",\"line 2\"])\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nXZ3JngAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4))\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z)\n", + "pyplot.plot(t, z_exact)\n", + "pyplot.legend(['Numerical Solution','Analytical Solution']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks like pretty good agreement, but what's happening towards the end? We'll come back to this. For now, re-run the previous steps with a different timestep, say $dt=0.01$ and pay attention to the difference.\n", + "\n", + "Euler's method, like all numerical methods, introduces some errors. If the method is *convergent*, the approximation will get closer and closer to the exact solution as we reduce the size of the step, $\\Delta t$. The error in the numerical method should tend to zero, in fact, when $\\Delta t\\rightarrow 0$—when this happens, we call the method _consistent_. We'll define these terms more carefully in the theory components of this course. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compare the two solutions, we need to use a **norm** of the difference, like the $L_1$ norm, for example.\n", + "\n", + "$$ E = \\Delta t \\sum_{n=0}^N \\left|z(t_n) - z_n\\right|$$\n", + "\n", + "The $L_1$ norm is the sum of the individual differences between the exact and the numerical solutions, at each mesh point. In other words, $E$ is the discrete representation of the integral over the interval $T$ of the (absolute) difference between the computed $z$ and $z_{\\rm exact}$:\n", + "\n", + "$$ E = \\int \\vert z-z_\\rm{exact}\\vert dt $$\n", + "\n", + "We check for convergence by calculating the numerical solution using progressively smaller values of `dt`. We already have most of the code that we need. We just need to add an extra loop and an array of different $\\Delta t$ values to iterate through. \n", + "\n", + "You should read the documentation for the function [enumerate](https://docs.python.org/2/library/functions.html#enumerate) and make sure you understand how we're using it below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Warning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cell below can take a little while to finish (the last $\\Delta t$ value alone requires 1 million iterations!). If the cell is still running, the input label will say `In [*]`. When it finishes, the `*` will be replaced by a number." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-increment array\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001, 0.0001])\n", + "\n", + "# array that will contain solution of each grid\n", + "z_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " N = int(T/dt)+1 # number of time-steps\n", + " ### discretize the time using numpy.linspace() ###\n", + " t = numpy.linspace(0.0, T, N)\n", + "\n", + " # initial conditions\n", + " u = numpy.array([z0, b0])\n", + " z = numpy.empty_like(t)\n", + " z[0] = z0\n", + " \n", + " # time loop - Euler method\n", + " for n in range(1,N):\n", + " ### compute next solution using Euler method ###\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0] # store the elevation at time-step n+1\n", + " \n", + " z_values[i] = z.copy() # store the total elevation calculation grid i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculate the error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical solutions for each $\\Delta t$ in the array `z_values`. To calculate the error corresponding to each $\\Delta t$, we can write a function! " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_error(z, dt):\n", + " \"\"\"Returns the error relative to analytical solution using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array of float\n", + " numerical solution.\n", + " dt : float\n", + " time increment.\n", + " \n", + " Returns\n", + " -------\n", + " err : float\n", + " L_{1} norm of the error with respect to the exact solution.\n", + " \"\"\"\n", + " N = len(z)\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt\n", + " \n", + " return dt * numpy.sum(numpy.abs(z-z_exact))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: in the last line of the function, we perform an 'array operation': \n", + "\n", + "`z - z_exact`\n", + "\n", + "We are *not* subtracting one value from another. Instead, we are taking the difference between elements at each corresponding index in both arrays. Here is a quick example:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 2, 1])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = numpy.array([1, 2, 3])\n", + "b = numpy.array([4, 4, 4])\n", + "\n", + "b - a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we iterate through each $\\Delta t$ value and calculate the corresponding error. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " ### call the function get_error() ###\n", + " error_values[i] = get_error(z_values[i], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember, *if* the method is convergent then the error should get smaller as $\\Delta t$ gets smaller. To visualize this, let's plot $\\Delta t$ vs. error. If you use `pyplot.plot` you won't get a very useful result. Instead, use `pyplot.loglog` to create the same plot with a log-log scale. This is what we do almost always to assess the errors of a numerical scheme graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nWtIESavUofkys59KukjSFElDJT0gaaGZbStJ7n6pu+/s7ru4e3Pbl4Yssi9f7eb72p626+75rp7r\nuL6z7aL42rq3P7OQ14XOM591Scqy0Nf2Ns9C1pdLnqX4Xe9sHXnm91xf1hVbnP/uZN/s3XaF5tmV\nSJo4d1/o7pPd/XZJ6zvZ5AxJ17n7Ne7+vLuPl/S6pJO7ek8zu1vSrZJGm9krZrZnX+uMw//ZpWri\nVqxY0W0dIcT5L6KunuvNX0RxzrLQ18bhL/a05BmXJo48wzVxpciyqzpCv47f9XCvLWUTF/klRsxs\npaRT3X1mbrm/pI8lHZlr8lq3u1jSTu6e6ePP45ArAABIjK4uMdKv1IXkYUtJG0t6s8P6tyRt3dc3\n7yoIAACAJOHsVAAAgASKYxP3jqR1kgZ3WD9YLXNxAAAAZS92TZy7r5H0uKQDOjy1v1rOUgUAACh7\nkczEmdlASTvkFjeS9BUzGyrpXXd/RdL/SLrezB5RS+N2klrm4S6Pol4AAIC4ieTsVDPLSGrKLbr+\ndX236e7+s9w2J0s6U9IQSX+SdLq731fiUgEAAGIp8kuMIBnMbIWkD9RyXb/33H2/aCtKPjPbRNKz\nkm51919GXU9SmdkgSYvVcmShv6TL3P3iaKtKptwF1a+X9AVJn0j6jbvfFm1VyWZmsyUNl9To7kdE\nXU8SmdlBki5Uy5G789z9mohLig2aOOTFzF6S9C13/39R15IWZvZbSZWSXnb3M6OuJ6nMbCNJ/d29\nOdcYPyNpD3d/O+LSEsfMtpa0lbs/bWaD1TKfvIO7r4q4tMQys+GSNpV0HE1c4cysn1p+pzOSVkp6\nQtL33P29KOuKi9id2IBY4xp7gZjZDpK+LmmhyLVP3H19m9vvfVbSaknN3bwEXXD3N9z96dyf31TL\n1QK2iLaqZHP3pZI+irqOBNtD0jPu/rq7fyRpgTY88bFs0cQhXy7pXjN7xMyOirqYFLhA0llRF5EW\nZraZmT0l6WVJU919ZdQ1JZ2Z7SppI3d/LepaUNa2kdR2H3xV0hcjqiV24njHBsTTD9z99dzhlrvN\n7E/u/qeoi0oiMztE0gvu/lcz2zvqetLA3T+Q9F0z20rSEjNrcPe/Rl1XUpnZFpJmSBoXdS0oe8x8\ndYNv4lLIzIaZ2Vwze9XM1pvZcZ1sc4qZvWRmq8zssbbNRO65ZWb2hJlVSJK7v5773zfU8nX2LqX6\nPFErQp57SjoyN2d4gaQTzGxy6T5RtIqxf7Zy97ckZSUNLfoHiYFiZGlmAyTNlnSuuz9Uuk8TvSLu\nm2XbiPQ1U0n/UPtv3r6k9t/MlTWauHQaKOlpSRMkrVKHv0DM7KeSLpI0RS3/sXtA0sLcmWly90vd\nfWd336V1WNzMNs299nOSfijpzyX7NNELmqe7n+3uX3b3r0r6v5KucvcpJfw8UQu9f27VZv/cTNI+\nufcvB6GzNEnTJTW5+42l+xixETTPti8tRfEx1adMJT0qaScz2yb3358DJd1Votrjz915pPihlrN5\nju2w7mFJV3RY94Kk33XxHl+V9GTu8SdJ1VF/riTn2WG74ySdH/XnSnKeknaXtCy3fy7r+H7l8giU\n5d5que3hE7ksl6nlrPTIP18S88w9f7ektyR9LOkVSXtG/dmSlqmkgyU9L+lFSeOi/hxxejATV2bM\nrL9aDoWe3+GpBkl7dfYad39JZXJ4qlC9ybMtd59RjLqSqpf756OSdi5yaYnTyyzvk7RxkUtLpN7+\nrrv7iGLWlWT5Zuru8yTNK2FpicHh1PKzpVr+kn6zw/q31HJrMxSGPMMiz3DIMizyDI9M+4gmDgAA\nIIFo4srPO2qZeRncYf1gSa+XvpzEI8+wyDMcsgyLPMMj0z6iiSsz7r5GLbfS6XjF6/3VclYQCkCe\nYZFnOGQZFnmGR6Z9x4kNKWRmAyXtkFvcSNJXzGyopHfd/RVJ/yPpejN7RC2/KCepZf7g8ijqjTvy\nDIs8wyHLsMgzPDItsqhPj+UR/qGWGwWvzz3WtfnztW22OVnSS2q5x+SjkvaOuu64PsiTPOP6IEvy\njPuDTIv7sFyAAAAASBBm4gAAABKIJg4AACCBaOIAAAASiCYOAAAggWjiAAAAEogmDgAAIIFo4gAA\nABKIJg4AACCBaOIAAAASiCYOAApkZgPM7AUz+0HUtQAoXzRxAFC4EyVtLmlKdxuZ2cZm9pyZbVOa\nsgCUE5o4ACiAmW0i6euSzpY03MxGdLP5rpK2cPd/lKQ4AGWFJg4ACnOKpEskXStpuaTfdLPtvpKa\nSlEUgPJDEwcAeTKz/yPpi+7+rLuvk1QnaU8zO6jDdj82s/+VdLqkz5nZ/5rZ1yMoGUCKmbtHXQMA\nJIKZ/UrSLe7+t9yySfqTpDXuvkuHbftLek/SLu7+QsmLBZB6fBMHAHkwsy0kbd7awEmSt/wr+BxJ\nQ81sTIeX/EDShzRwAIqFJg4A8lMt6Q8dV7r7HZKekFSX+2au1f6SsqUpDUA5ookDgB6Y2WBJ/d39\ntS42+S9J35R0VJt1I5Rr4sxsbzMbUNQiAZQdZuIAoAe5kxQelPRWN5tNl7RG0o7uvs7MPpa0l6Tn\nJE109/OKXiiAskITBwDdMLOtJb0kKZ9v0lzSz9x9hpldKGmtpLclXeHuHxexTABliCYOAAAggZiJ\nAwAASCCaOAAAgASiiQMAAEggmjgAAIAEookDAABIIJo4AACABKKJAwAASCCaOAAAgAT6/wsNBajn\noDeVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10, 6))\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase tick font size\n", + "pyplot.grid(True) #turn on grid lines\n", + "pyplot.xlabel('$\\Delta t$', fontsize=16) #x label\n", + "pyplot.ylabel('Error', fontsize=16) #y label\n", + "pyplot.loglog(dt_values, error_values, 'ko-') #log-log plot\n", + "pyplot.axis('equal') #make axes scale equally;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the kind of result we like to see! As $\\Delta t$ shrinks (towards the left), the error gets smaller and smaller, like it should." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We calculated the error for several different timestep sizes using two nested `for` loops. That worked, but whenever possible, we like to re-use code (and not just copy and paste it!). \n", + "\n", + "Create a function that implements Euler's method and re-write the error analysis cell to use your function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/01_03_PhugoidFullModel.ipynb b/01_phugoid/01_03_PhugoidFullModel.ipynb new file mode 100644 index 0000000..87184de --- /dev/null +++ b/01_phugoid/01_03_PhugoidFullModel.ipynb @@ -0,0 +1,943 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, I. Hawke. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Full phugoid model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the third IPython Notebook of the series on the _phugoid model of glider flight_, our first learning module of the course [\"Practical Numerical Methods with Python\"](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about). In the first notebook, we described the physics of the trajectories known as phugoids obtained from an exchange of potential and kinetic energy in an idealized motion with no drag. We gave you a neat little code to play with and plot various phugoid curves.\n", + "\n", + "In the second notebook, we looked at the equation representing small perturbations on the straight-line phugoid, resulting in simple harmonic motion. This is a second-order ordinary differential equation, and we solved it numerically using **Euler's method**: the simplest numerical method of all. We learned about convergence and calculated the error of the numerical solution, comparing with an analytical solution. That is a good foundation!\n", + "\n", + "Now, let's go back to the dynamical model, and take away the idealization of no-drag. Let's remind ourselves of the forces affecting an aircraft, considering now that it may be accelerating, with an instantaneous upward trajectory. We use the designation $\\theta$ for the angle, and consider it positive upwards." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "In lesson 1, we wrote the force balance in the directions perpendicular and parallel to the trajectory for a glider in _equilibrium_. What if the forces are _not_ in balance? Well, there will be acceleration terms in the equations of motion, and we would have in that case:\n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Recall, from our first lesson, that the ratio of lift to weight is known from the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynam-ically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The initial value problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to visualize the flight trajectories predicted by this model, we are going to need to integrate the spatial coordinates, which depend on both the forward velocity (tangential to the trajectory) and the trajectory angle. The position of the glider on a vertical plane will be designated by coordinates $(x, y)$ with respect to an inertial frame of reference, and are obtained from:\n", + "\n", + "\\begin{align}\n", + "x'(t) & = v \\cos(\\theta) \\\\\n", + "y'(t) & = v \\sin(\\theta).\n", + "\\end{align}\n", + "\n", + "Augmenting our original two differential equations by the two equations above, we have a system of four first-order differential equations to solve. We will use a time-stepping approach, like in the previous lesson. To do so, we do need *initial values* for every unknown:\n", + "\n", + "$$\n", + "v(0) = v_0 \\quad \\text{and} \\quad \\theta(0) = \\theta_0\\\\\n", + "x(0) = x_0 \\quad \\text{and} \\quad y(0) = y_0\n", + "$$\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve with Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know how to apply Euler's method from the previous lesson. We replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "Alright, we know where this is going. At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we've learned before, the system of differential equations can also be written as a vector equation:\n", + "\n", + "$$u'(t) = f(u)$$\n", + "\n", + "where\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix}.\n", + "\\end{align}\n", + "\n", + "It's a bit tricky to code the solution using a NumPy array holding all your independent variables. But if you do, a function for the Euler step can be written that takes any number of simultaneous equations. It simply steps in time using the same line of code:\n", + "\n", + "```Python\n", + "def euler_step(u, f, dt):\n", + " return u + dt * f(u)\n", + "```\n", + "\n", + "This function can take a NumPy array `u` with any number of components. All we need to do is create an appropriate function `f(u)` describing our system of differential equations. Notice how we are passing a _function_ as part of the arguments list to `euler_step()`. Neat!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we start by loading the modules and libraries that we need for this problem. We'll need a few transcendental functions, including the $\\log$ for a convergence study later on. And remember: the line `%matplotlib inline` is a magic function that tells Matplotlib to give us the plots in the notebook (the default behavior of Matplotlib is to open a pop-up window). In addition, we are importing the module `rcParams` to define notebook-wide plotting parameters: font family and size. Here we go!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log, ceil\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set things up to start our numerical solution: the parameter \n", + "values and the _initial values_. You know what the acceleration of gravity is: 9.8 m/s$^2$, but what are good values for $C_D/C_L$, the inverse of the aerodynamic efficiency? Some possible values are given on a table in the Wikipedia entry for [lift-to-drag ratio](http://en.wikipedia.org/wiki/Lift-to-drag_ratio): a modern sailplane can have $L/D$ of 40 to 60, depending on span (and, in case you're interested, a flying squirrel has $L/D$ close to 2).\n", + "\n", + "For the _trim velocity_, the speed range for typical sailplanes is between 65 and 280 km/hr, according to Wikipedia (it must be right!). Let's convert that to meters per second: 18 to 78 m/s. We'll pick a value somewhere in the middle of this range.\n", + "\n", + "Here's a possible set of parameters for the simulation, but be sure to come back and change some of these, and see what happens!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 30.0 # trim velocity in m s^{-1} \n", + "C_D = 1/40 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = v_t # start at the trim velocity (or add a delta)\n", + "theta0 = 0 # initial angle of trajectory\n", + "x0 = 0 # horizotal position is arbitrary\n", + "y0 = 1000 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll define a function `f()` to match the right-hand side of Equation (15), the full differential system in vector form. This function assumes that we have available the parameters defined above. If you re-execute the cell above with different parameter values, you can just run the solution without re-executing the function definition." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the code defining function `f(u)` with the differential equations, and convince yourself that it's right!\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix} \\nonumber\n", + "\\end{align}\n", + "\n", + "Now, Euler's method is implemented in a simple function `euler_step()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equations.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After defining a final time for the solution, and the time step $\\Delta t$, we can construct the grid in time using the NumPy function [`linspace()`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html). Make sure you study the decisions we made here to build the time grid: why do we add 1 to the definition of `N`, for example?\n", + "\n", + "Look at the code below, and make sure you understand the following aspects of it.\n", + "\n", + "* The NumPy array `u` contains the solution at every time-step, consisting of the velocity, angle and location of the glider. \n", + "* The first element of the array `u` is set to contain the initial conditions. \n", + "* In the `for`-loop, the function `euler_step()` is called to get the solution at time-step $n+1$. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100 # final time\n", + "dt = 0.1 # time increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u = numpy.empty((N, 4))\n", + "u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values\n", + "\n", + "# time loop - Euler method\n", + "for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to plot the path of the glider, we need the location (`x`, `y`) with respect to time. That information is already contained in our NumPy array containing the solution; we just need to pluck it out. \n", + "\n", + "Make sure you understand the indices to `u`, below, and the use of the colon notation. If any of it is confusing, read the Python documentation on [Indexing](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 3.00000000e+01 -1.11022302e-17 6.00000000e+00 1.00000000e+03]\n", + "[ 1000. 1000. 1000. ..., 1000. 1000. 1000.]\n", + "[ 3.00000000e+01 -1.11022302e-17 6.00000000e+00 1.00000000e+03]\n" + ] + } + ], + "source": [ + "# get the glider's position with respect to the time\n", + "print u[2]\n", + "x = u[:,2]\n", + "y = u[:,3]\n", + "print y\n", + "u[2]=euler_step(u[1],f,dt)\n", + "print u[2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to plot the path of the glider and get the distance travelled!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nfEtJjyq+OtMP69J+V0lXFvNcrPSG/neSjlf66Pa0bssvtd9K0meLeS5ROmJ0oKR/VLpQd42kiyRt\nU2qzQ9GvE0vLfpWkFUrnWQ4pnZq0WtI3pvAc7FIs733F8n4oab/S9j+qmG/b4venldb7GqUC6B+L\n7T5R0p8k/aq0/F8X835W6Z/MkNI5qV8slvN9Sdt2eV6q6+r2/D1W0m+VjiC/U9LhShd5LlQqqP4s\n6eU12328pLuUPiJ/TfG8HyZpgaSbO89Faf6/Kfr0m6I/ry8/R5L2rCz/cKUL1SYkLZJ0cPH15mK9\nt0p6cqXNnqUsVkv6pqQLJJ0j6amSDpL0kaJvZxfz/qqYd7TIbZfS8jqZvbfIZajazz7/bnYqlvsv\nRV/+VHnN7F6ad/9Shg/skvFwafpQl3XtpXTB7BpJX5b0jOK1doLSTvt5pfaHFMvcqtR+u9L01xev\nt38o1jtP0qpi+usr671fsayRLsvvfG0/hefKXbbzeZXlPKCYd3bx+/8U851ZWVZ1+jlKf/cnF9k+\nR9JVpdfH9sVzdkKx/hO19rW9sKa/MyV9qZjn68UyD5T0Qkk/Lh6/UNKWG/P9fVN9KRWsqyVdOIV5\nfzHZvEoXcndyPan0+BZKf/vr5Vhp/6xS+6c02I69Su1e1WO++aX59i49fmjp8ef0aP+uYr57JN2v\n7fz4mvpX6x3gi6+pfklaXHpD+ruNtMyuBX5lnl4Ffucf4XclzahMe6BSMdirQP1AMf2bklyZNkPS\neNH2/V3aPrm07O9X33yLImDSAr80/6JieT3bVJ6zayTtUJn+Ia1b4F8r6fM1y/pksZx3Ns2n9Pyu\nljSvS9vHFdP+LOmQyrQnSrq3mHZQTdt7JI13mXZtsdwX93iOHqF0XmvXf55KI2msUdq5mN0ji3sl\nvbcybUtJd0h6Y/H7a4t5b5G0dU1/fiHpPzfG30xluUcV6769xzxdC/zS9HIB3q3A/3Yx/Wtdpu1e\nbPdUl/8rVYpypZ3NNUo7XOsVMJP1v8Fz1XM7K/N+Rj0Kw2J65/VxRGXafsW0P0v6L0mPrkx/dun1\nsl6RrnTR6BpJX+wy7X6Sfl70bWkfz8F/Srqhz69fbqTXbJMC/+5i3mU95tm9lOsbS4/v0e3xLu0P\nLs13QoPtePxU2mnte81qSU8qPf6P3R7v0v61pfkesjEy4GvTfHGKDqaT8njDd7TWi4LTaD7PVPqI\n9N8jYnV5eqQL5N7Xo/0jJb1MNRdgFct7p9IRwHnuPd7y0oiongf9AqU38fvS2RFxe+WxBUoFdMcZ\nSgVrNx9S2r4X9bHuBSqO7kbEeqedRDp/9OtKR9JeW5n8LqUdqC9GxKU1bb/VR5863qp09PSKiPh8\nl+Wfr/QJzw7FvHUs6W2Vtn+R9Eilo/JSOv3sHqWj6sevtwD7GZIerh6vxVzZfqrSJzKhLs9TpNMv\nPthgkR+N9Uc6ubj4vqOk2uEOM/XriPhq+YGI+LlSQbyF0qc5V1bafE3p+dxJldFkilNMXlhMX+/C\n9uI95t1Kr8tXuMfwizV2krRbn19TGm9+Y3E6dbBzjcl656eXlKftUPr5/jXzTLX9ZDZ0+fd1/9Ay\nCnygfyOln79VM88lPdo/X+kf5d1Kp+N007kw7H5Kp4/U+W71gYi4NSJu6tFmY+i23tsj4nel38+M\niP+taX998X03Nx/nvjM8Y6/neKXSc/yUzgO2H6J0qouUdgDqnCxpvXOzJ+M0lvtI0bdey7+o6NvR\nrr8ZzdURcXP1wYj4XWfHKiJWKZ3+5Jr+vkLSpRHx46lvRTY6f2N/VpfXWqFX/lXrnQsdEXconUoh\nlYbSnSbGah6/qW56pIspOzvle1YmH1t8/2NEXFGz7M570rZKp3lMWUQ8PyJm9Pm1Y5N1AZs7xsHH\ndFIudHoeSbB9s9LRorKIiI15I51HFd9XRf0FWL/v0f6xxfdtJN1VXBNXFVo7pFuvO+GuVwRuIpOu\ntyh4X6p0Lu/+Srl0e+/ZXumUlUk5Xfz6MKXnZp7tk+pmLebZ3vYDIo2lXz5q+avuzaSI+KUaXJhd\n8gilTKPX8pVO9ZFSofQIpVMfqqaa6/uVjrwO2T6o86lEsTNzpKbvCBidv7HfVj8hK+n1N1Z1S83j\ndynlsE2DZbUtVL89fym+TzZ968rjnfeknWzXjYw01fekaS0i/mz7XqWDK71eF+Vp5U8z76iZZ6rt\nJ7Ohy7+v+4eWUeBjOikfUdpH6fz0Ok9UOgVDSkdiX66Nf3Oizk7GXT3m6TV8YOeI1I1KF2RONnRe\n7WgQ1dN7NqG6okvSX8eR/qbSzaquUvrY/+da+49iL6Uj2VKzoQPLR/M+pCkMmVpaZ7ltr+z6NdXl\nl3cK645O9nx+OyLi+7Z/orTz8gqt/UToX5R2mj4zleVkaEP/xqqm9HxOI2s2cHpV53V4rdK5+pP9\nTd7QcPnTzfVKp7f1Oj2oPO3/Sj/fpPTp7NZ9tp9K37otY6rLb9r+L2q2M42WUeBjOvmG0j/zLZU+\nGv5U3YxRGvPY9n11mkqnYJzZY571hoAs6Qybt01x3uwgWqxU3N+qdCHXqvJE93+n39tKP98dET/r\ns+22fa5/qsvv9dooT7utdq6pe7/Szs7zbZ+qdIRunqSPxEa8Q+wmtqF/Y2im8zrc6r54T7L9n0qj\nxvTjzoj4m43Znym4Qmn0rL17zFOe9teDUBGxxvbPlEZ8mmr7ulMZ1xMRv7N9i9JgA1NZ/h0R8evK\nuqIyT6/2V3W5zgsZ4xx8TBsR8UdJH1U6qnScu4yfvol1isqdXRovvaLXOb2d8bV3tL1b3Uy2D7T9\nEncZN30a+HulfyLfrxb3GyIi7tTa01/27TWv7eNtH1t66Celnx/Wo939ijHMm96U6GqtPeJcu/zS\ntImizYb6pFKBto3SDWyeqzQEapOLUHPT+Rvby/aMmnmm23nzOev8bezV4z1Ntg8p3pMe2HD50+Yi\n20LnTsz72q7byTyw+H5DRFQ/Vf6y0v+rx/VYR6f9pRFRd0pVna9Mcfmhtdsi6a/XnnSua+nV/nFF\n+y827BtaNm0LfNuHOt2cpvYGOBhIiyX9TqlweWPvWe9z5TsbPrVmnl4XxnaGupN6H9X6oNKIKf0e\n7Z6qznm56xS0to+zPdznMjvvMXVF8t59LleSzi+We5jt7bvNYPtvlcZJ/+vzG+mOj98v2j69x/K/\nqfSRdLXQWe95sj27eJ4eUBwt/8IUlv90pX+cFxQj42yQ4jqQTxTrfbnSqWlfiYjrezbMW+dv7H5K\no+l00+tvbGMoZ1PO/Am2j94IyzmgeO3k8P/4/OL7ZDc2+pjSCF/VEYl6moYX2X5O6V4WM5TundDN\nMUp/x+d0mfZxpdx3t31IdWJxkOqoov1H+uhfp82Bth/UZfm7ae2F0N1ucPcRFTfBsl29HkPF+/4s\npVPbPt5H/9CiHN5QGrG9je3TlcZGfoSmeF617YOd7rZ5U3H3wittn1ZcADhZ22cVbX/ndBfFG5zu\nwvkfdUdVi7sLLnW68+JdRdtzbe/TaIOxjmJYvKOVTvn4N9uv7DV/Ufg9qtc8G9CXH2ntEZp/qx5h\ntL2L0k1G6tpfpVS8W9Jp3Y6G2Z6n9BHvmV2G99vYOudX/rUfth+sdAOlfu9ieInS9j2puOCzqvb5\nmYJ3KY2Dv62kt1cnFnm8V2ms8CWVya9R+sd7lO3Hd2n7DKV/jJ/o8ryv9zwpXeA6qrVDz71J6RSZ\nR9teb6hS2y9QuuD4NtUPIdqP9xffZyvdpbLntQm2H+O1d0Xt9WlDKyLiW0rv9Zb0hup023sqXcB9\nXypf+1LO/HRJb5nqQiLiHq09Baa8nNdJ+nBEND1ffqOLiMu1didxcbdhMG3/P6XTVt41jU/9mpKI\nuE3pQJIlvdH2Ohej2n6h0o2ufqv132MUEdcovQdZ0tu67MQtVHot/FhdCnCnu4BfXdQPT+6y/O8o\n7YRsIenfu2zCvyvtnPx3RHQb0etcpfsC7KDKsKjFJ5dvV6qx3l8+7RXTRL8D6LfxpfSR9kqlj+YP\n1yQ3KCq1O17p3O0VSv+0Z0s6Vekf/w8kzaxpt4XSXuutkl6tVCjOUro99E+Kdf99l3Z7KN0A6DZJ\nL1a6Wc/TlS4uvFNdbpjEV+PXwkOVjrCuVnqD+n9KR/Ieq1TYnKg0PvitxTw3Snpzqf1MpQJrTul1\n9PTisZlK5/nvr8pdCovHdiwtZ1elcxlXK10jcJRSQf7CIu9PdFn+dqX291O6Gc1qpdM05irdkXKO\nUrH2Z6Wbad2vS9/nlpa9f/G11wY8pw9WOrXkz8W2HiTp08XfyQGl56Tbc7Z3zTL31No72V6rVIwd\nVDxPFypdAFpd1paVnHvdKGz/0vI/XfxtDiuN///Dou8n1vTtWKXTY27V2jvZPlnpTrOdj6+36dJu\nQdGnHysdVT5K6eK1yyrzPbVY9oRSIfj44ustxfO8SpX3guL19Ogi+85dhTvZ7thtO7r07+Ki7dVT\nmLdzp+C/qMFdKiU9oOjTK7T2Tradfj68mGf74vfOjaRWK/1t7q904eFWxc8HlqYfWzx2/9K6HqR0\ngfZqSV8tMu7cNfkqpcK/251y3WP5WxfzPLJ4vjvvE/9aXX8x37eL6cuK5Z1S/L644d/Yx4t2X1T6\nOzhB6X/Cx4rpDyv68z9Fn88r+vOQ0t9ot+l7VNp33pOWlrdnKturdIrXBcX0nxV9HCqe948Ur5XP\nStpiU73fb+hXsd37l56bzs0F13nN9mj/3uL5+IHSxccHKhXEdytdaPy3PdrOUCrCVyudUvN0pfeB\ndxWP/ULSg2ravqn02j2vZp7tlN6rVhevh8OU3pc+VrT9QfX1XGm/h9bevOwMpbs1P614ja5W+hRt\nRq/nh688v1rvQKPOpj+ss1Xc1l5TKPCLN7y7lE7rqL5pv75Yxodq2r5TqUAYrlnubyU9ocu0rxX9\nOq7y+OyiLzf2+oPjq9Fr4jBJZyoVWzcXed0m6TqlMchPVypIq3d5fXLp9VP9OkzrFpbVrxdXlrWd\nUtF2VZHvLcU/j2OL5VTbz+myHc8q3khvULpp0S1KOwwndpm3V98/uoHP5xHFP4Q7lT6a/qGkkWJa\nr+ek9u63knZWujnOL5T+If5J6WK0f1cqHKrLmlVq27PAL+bZvvhbvqzo891KRf/HJT12ku2dLems\nIrs7i76NK90Ya73ivmizpdKRrWuLrH6jtJPWbQdkd6Uje1cWy/5T8fN/SNqty/yLpvq667FNzyuW\nceoU5l1czPulhq+Tk3v084pinqN6zDOkde8QW/16TmV9O0h6h9Ze33CTpP9WOmDzt6XlbF9qs12v\n9Rfz3DzF9T9I6ZS6m4v1X620IzjlnaJiOTsq7STcULxOr1V6/9qhmH5ZTX8uLKZ/pmb6mZO0f06T\n7S3mfa5Skfd7pdf5KqX/bS/YkPeYNr56bPc6r9lJlnGk0ie2NyrttF+ltAO1yxT78CKl+6XconQA\n4QqlAr7rAcaizX5K75u/UY8Dg0oHI+crvV//Uel/4GVKO3CTFudKO3WnKf0fvUNpB/A7kk5qOzu+\n+v9yEe60YNtR6rDtNUofH82OmvNMbS9TOhr5HxFxWmXaDkp/rFsWy/hNado+Snea/FREnNCgj09U\n+sP4bUQ8pMv0/1K6dfQbIuIdU10usDmy/VClIiiUPiVoMozcZsn2fKWdigdFujC9br4dlI7c7Sbp\n8Egf9087tp+kdIT9roiovTAUADYn0+oc/Gi4N1Kc73ZM8es3uizvdqW93C2UjnqVvbR4/KvVdpN4\nfvH9WzXTv65iFJiGywUGmu3H2q5erFy+u+3GGEpyc/BSSaOTFPfbKl1QuYek1+Vc3Nt+hu0Te8zS\nGQFkxaboDwBMB9OqwO/DPlp7N9OVNfN0bmV/YOXxpxXff2n7hba/afv3xcUuXysurunmYKWjjb3W\nJ0n7d7tqHdiMHS3pfZXHDi6+X1HskKPE9nzbJ5d+f6rSKStnTtJ0J6WRqI6PiNPvwy5uDE+TdFa3\nAQ2KTyHmK73n5r4dALDJDPqNrh5e+rnuDmydO/H9dd7iyP/+xa9LlM7TfZ2ky5Uuclok6VzbR3Q5\nfaeznMnWt0Wx3LodAWBz9Ejb71E6p/1hSuc5/1npInes77GSnmX7aqVzid+vdFrhFb0aRcQNWv+g\nRs62k3SJ7XcqXST5Z6Vtf7XSUKtvjIiL6psDwOZl0Av8zm3OV0fE6pp5OreLL4+xu6PW3h3xSZL+\nrvQPc6Xt7ypdKHe87W9HRHn82slurT6V29MDm6NPSdpL6eLMlyn9DX1P0lsj4tI2O5axnypdRH6h\n0ilMFyqNKDVI3qk0KtlRSgX97koXBd6kNHrIP0XE99rrHgDkZ9AL/H517lgXki6pHg2LiLucbrn9\ndqXh0vq5QQWAkkjjLP9z2/2YTiLiPZLe03Y/7ksRcZPS/SKm8x15AWCTGvQCv3PO7gzbM2qO4neK\n+fIFfOWj7z9Td2PF9/1tbxMRd5fW+UClm+90U77dddeLBm3vLOkZSkP93d1tHgAAALRqG6XTBP8n\nIm5puS/rGPQC/5rSz3sojVtftWeXeTtjaW+tNB5sN3cU3610wVrnnPtrlAr8PWradda3RqmA7+YZ\nkj5ZMw0AAAD5eKHStWPZGPQC/xdKR8l3kLSvuhf4+yqdinNZ54GIWGP7CqWL0NYbuaHQeTyUdgg6\nLlW6Q+G+Ne06j/+0dNS/6teSdN5552m//farmQVtOvXUU3XGGWe03Q10QTb5Ipu8kU++yCZPP//5\nz/WiF71Iqj9g25qBLvCLQv3zkuZKOlzpFu5/VQyx1rmN+ecqzZcrFeqPrVl8Z5SdH1cK9c8oDdv2\nlJp2T1faKfh0j67fLUn77befhoaGesyGtuy4445kkymyyRfZ5I188kU22cvudOpBHwdfShfC3itp\nru37V6bNVzoN55wud8j8kNItpYdtH1yeYHsrSS9Xl7GXI+ISSd+UtJft4yrtHqY01vcqSWdvyEah\nXZdeyqAuuSKbfJFN3sgnX2SDpqZdgW97F9u72y6f475b8dh6p9NExDVKd3bcRdJXbB9qe7btV0ta\nrHRqzqld2v1B6W6zd0v6rO3n2X6I7UMlfVlpOL/3RsRol26+SNJ1kj5s+yTbe9ueI+lLSp8WHMtN\ne6a32bNnt90F1CCbfJFN3sgnX2SDpqbjKTqXSZpV/BzF9x8qXewakmZUG0TEebZ/Ien1SqfebC/p\nWqWb6LwzIu7ttqKI+Ibtx0r6N0nvlrSb0sW1l0p6dkR8uabdDbYPkPQGSadJ+oCkPyidInR0MRwg\nprFdd9217S6gBtnki2zyRj75Ihs0Ne0K/Ijoaze2uFHOMX20+6WkeX20u13SwuILA+YFL3hB211A\nDbLJF9nkjXzyRTZoyhEx+VzYpGwPSRobGxvjohoAAIAMjY+Pa3h4WJKGI2K87f6UTbtz8IEcLF++\nvO0uoAbZ5Its8kY++SIbNEWBD/RhdLTbtdXIAdnki2zyRj75Ihs0xSk6GeIUHQAAgLxxig4AAACA\nTYICHwAAABggFPgAAADAAKHAB/owd+7ctruAGmSTL7LJG/nki2zQFAU+0Ic5c+a03QXUIJt8kU3e\nyCdfZIOmGEUnQ4yiAwAAkDdG0QEAAACwSVDgAwAAAAOEAh/ow4oVK9ruAmqQTb7IJm/kky+yQVMU\n+EAfli5d2nYXUINs8kU2eSOffJENmuIi2wxxkW3+JiYmNHPmzLa7gS7IJl9kkzfyyRfZ5ImLbIEB\nwxttvsgmX2STN/LJF9mgKQp8AAAAYIBQ4AMAAAADhAIf6MOCBQva7gJqkE2+yCZv5JMvskFTFPhA\nH2bNmtV2F1CDbPJFNnkjn3yRDZpiFJ0MMYoOAABA3hhFBwAAAMAmQYEPAAAADBAKfKAPK1eubLsL\nqEE2+SKbvJFPvsgGTVHgA31YuHBh211ADbLJF9nkjXzyRTZoigIf6MPZZ5/ddhdQg2zyRTZ5I598\nkQ2aosAH+sCQZfkim3yRTd7IJ19kg6Yo8AEAAIABQoEPAAAADBAKfKAPS5YsabsLqEE2+SKbvJFP\nvsgGTVHgA32YmJhouwuoQTb5Ipu8kU++yAZNOSLa7gMqbA9JGhsbG9PQ0FDb3QEAAEDF+Pi4hoeH\nJWk4Isbb7k8ZR/ABAACAAUKBDwAAAAwQCnygD6tWrWq7C6hBNvkim7yRT77IBk1R4AN9mDdvXttd\nQA2yyRfZ5I188kU2aIoCH+jD4sWL2+4CapBNvsgmb+STL7JBUxT4QB8Y3ShfZJMvsskb+eSLbNAU\nBT4AAAAwQCjwAQAAgAFCgQ/0YdmyZW13ATXIJl9kkzfyyRfZoCkKfKAP4+NZ3bAOJWSTL7LJG/nk\ni2zQlCOi7T6gwvaQpLGxsTEurAEAAMjQ+Pi4hoeHJWk4IrLaC+MIPgAAADBAKPABAACAAUKBDwAA\nAAwQCnygDyMjI213ATXIJl9kkzfyyRfZoCkKfKAP8+fPb7sLqEE2+SKbvJFPvsgGTTGKToYYRQcA\nACBvjKIDAAAAYJOgwAcAAAAGCAU+0Ifly5e33QXUIJt8kU3eyCdfZIOmKPCBPoyOjrbdBdQgm3yR\nTd7IJ1+yUh9NAAAgAElEQVRkg6a4yDZDXGQLAACQNy6yBQAAALBJUOADAAAAA4QCHwAAABggFPhA\nH+bOndt2F1CDbPJFNnkjn3yRDZqiwAf6MGfOnLa7gBpkky+yyRv55Its0NS0HUXH9qGSzpH0CEl7\nR8T1m2CdQ5IuVdoxekpEfOc+XA+j6AAAAGSKUXQ2Itvb2D5d0reVivsp7aHYPtj2BbZvsj1h+0rb\np9neaortZ0j6qCRPZZ22d7C91PbVtu+y/Tvb59reZyrrAwAAAPoxrQp82w+T9GNJx0g6okG74yWt\nkLSrpKMl7S9pmaRFkr5je+YUFvM6SQ+VdNsU1reHpMsl/bOkt0raV9KJkh4n6XLbh0217wAAAEAT\n06rAVyrMvy5p/4i4eCoNip2CZZJulvTMiPheRFwbEWcoFfgHSTpjkmU8UtIbJL1WUyjwJZ0raW9J\nL4uIT0TEdRHxNUlHKj3nn7F9/6n0H3lasWJF211ADbLJF9nkjXzyRTZoaroV+F+MiPkRcVeDNqdJ\n2krSORFxR2Xa+yTdI2me7Qf3WMZHJP0gIj482cpsP1HS4ZJ+FxHnl6dFxLWSLpC0i6T5U98E5Gbp\n0qVtdwE1yCZfZJM38skX2aCpaVXgR8Mrgm1voXQ6jyR9o8vybpd0mdLz8LyaZcyXNCTppVNc7fOL\n79+qmf51pfP4j5vi8pChT33qU213ATXIJl9kkzfyyRfZoKlpVeD3YR9JOxU/r6yZZ6VSwX1gdYLt\nWZLeLunNEXHNFNd5sNJFuL3WJ0n72956istEZmbOnMplG2gD2eSLbPJGPvkiGzQ16AX+w0s//75m\nnhu6zNvxQUlXS3pXH+ucbH1bSJrdYLkAAADApLZsuwP3sR2K76sjYnXNPBPF9x3LD9o+QdLTJB0U\nEWv6WGfddQITpZ93rJkHAAAA6MugH8Hvi+1dJb1b0ukR8eO2+4P8LFiwoO0uoAbZ5Its8kY++SIb\nNDXoBf7txfcZxY2quumc2FYe/vIsSX+QtHgD1rntJOurrhPTyKxZs9ruAmqQTb7IJm/kky+yQVOD\nXuCXL4zdo2aePbvMe6ykWZJW2b6j/FU8LklfLR673fYLuqxzsvWtkfTrXp0/8sgjNTIyss7XIYcc\nouXLl68z30UXXaSRkZH12p988slatmzZOo+Nj49rZGREq1atWufxRYsWacmSJes8dv3112tkZEQr\nV657vfBZZ5213tGEiYkJjYyMrDdW7+joqObOnbte34477rhpvR2nnHLKQGxHxyBtx0Me8pCB2I5B\nyaO8HaeccspAbIc0GHlUt6Pzvjbdt6NsULZj5cqVA7Ed0zmP0dHRv9Zis2fP1gEHHKBTTz11veXk\nwg1HnsyK7TVKI9bMjojru0zfQtItSufFz+l2cyzb35H0BEmvjoj3FI89rMdqvy1pL0kvlHRp8diN\nEXFn0fZMpTHuPxkRJ3RZ3zylcfWviIgDarZrSNLY2NiYhoaGenQFAAAAbRgfH9fw8LAkDUfEeNv9\nKRvoI/jFxbGfVxoG8/DqdNs7KA2PuUbS50rtflX3JekvxWy/Kz1+Z2mxnym+P6WmW09X2in59IZs\nGwAAANDNQBf4hbdLulfSXNv3r0ybL2lrpbvc/t/GWFlEXCLpm5L2sr3OzayKTwaOlrRK0tkbY31o\nR/XjQeSDbPJFNnkjn3yRDZqadgW+7V1s7267fI77bsVju1fnL25Q9VJJu0j6iu1Dbc+2/Wqli2gv\nk9TzJCrb25XW2blYd+fisV26NHmRpOskfdj2Sbb3tj1H0peUPi04triLLqaphQsXtt0F1CCbfJFN\n3sgnX2SDpqbdOfi2r9XaC13XmSQpIqLraDm2D5L0eqXz7beXdK2k/5L0zoi4d5J1LpK0SOnUmqrr\nImK9c/aL03/eIOkYSQ9WGpXnYklvi4irJlkf5+Bn7vrrr2dUg0yRTb7IJm/kky+yyVPO5+BPuwJ/\nc0CBDwAAkLecC/xpd4oOAAAAgHoU+AAAAMAAocAH+lC9+QbyQTb5Ipu8kU++yAZNUeADfZiYmGi7\nC6hBNvkim7yRT77IBk1xkW2GuMgWAAAgb1xkCwAAAGCToMAHAAAABggFPtCHVatWtd0F1CCbfJFN\n3sgnX2SDpijwgT7Mmzev7S6gBtnki2zyRj75Ihs0RYEP9GHx4sVtdwE1yCZfZJM38skX2aApCnyg\nD4xulC+yyRfZ5I188kU2aIoCHwAAABggFPgAAADAAKHAB/qwbNmytruAGmSTL7LJG/nki2zQFAU+\n0Ifx8axuWIcSsskX2eSNfPJFNmjKEdF2H1Bhe0jS2NjYGBfWAAAAZGh8fFzDw8OSNBwRWe2FcQQf\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualization of the path\n", + "pyplot.figure(figsize=(8,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'x', fontsize=18)\n", + "pyplot.ylabel(r'y', fontsize=18)\n", + "pyplot.title('Glider trajectory, flight time = %.2f' % T, fontsize=18)\n", + "pyplot.plot(x,y, 'k-', lw=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grid convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's study the convergence of Euler's method for the phugoid model. In the previous lesson, when we studied the straight-line phugoid under a small perturbation, we looked at convergence by comparing the numerical solution with the exact solution. Unfortunately, most problems don't have an exact solution (that's why we compute in the first place!). But here's a neat thing: we can use numerical solutions computed on different grids to study the convergence of the method, even without an analytical solution.\n", + "\n", + "We need to be careful, though, and make sure that the fine-grid solution is resolving all of the features in the mathematical model. How can we know this? We'll have a look at that in a bit. Let's see how this works first.\n", + "\n", + "You need a sequence of numerical solutions of the same problem, each with a different number of time grid points.\n", + "\n", + "Let's create a NumPy array called `dt_values` that contains the time-increment of each grid to be solved on. For each element `dt_values[i]`, we will compute the solution `u_values[i]` of the glider model using Euler's method. If we want to use five different values of $\\Delta t$, we'll have five solutions: we put them in an array ... but each one is also an array! We'll have an array of arrays. How meta is that?\n", + "\n", + "We have one more trick up our sleeve: `enumerate()`. To get all the numerical solutions—each with its value of $\\Delta t$—done in one fell swoop, we will loop over the elements of the array `dt_values`. Within the loop, we need to access both `dt_values[i]` and the index `i`. It turns out, `enumerate()` is a built-in Python function that will give us consecutive `index, value` pairs just like we need. \n", + "\n", + "Read the code below carefully, and remember: you can get a help pane on any function by entering a question mark followed by the function name. For example, add a new code cell below and type: `?numpy.empty_like`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), we compared our numerical result to an analytical solution, but now we will instead compare numerical results from different grids. \n", + "\n", + "For each solution, we'll compute the difference relative to the finest grid. You will be tempted to call this an _\"error\"_, but be careful: the solution at the finest grid is _not the exact_ solution, it is just a reference value that we can use to estimate grid convergence.\n", + "\n", + "To calculate the difference between one solution `u_current` and the solution at the finest grid, `u_finest`, we'll use the $L_1$-norm, but any norm will do.\n", + "\n", + "There is a small problem with this, though. The coarsest grid, where $\\Delta t = 0.1$, has 1001 grid points, while the finest grid, with $\\Delta t = 0.001$ has 100001 grid points. How do we know which grid points correspond to the same location in two numerical solutions, in order to compare them? \n", + "\n", + "If we had time grids of 10 and 100 steps, respectively, this would be relatively simple to calculate. Each element in our 10-step grid would span ten elements in our 100-step grid. \n", + "\n", + "Calculating the _ratio_ of the two grid sizes will tell us how many elements in our fine-grid will span over one element in our coarser grid.\n", + "\n", + "Recall that we can _slice_ a NumPy array and grab a subset of values from it. The syntax for that is\n", + "\n", + "```Python\n", + "my_array[3:8]\n", + "```\n", + "\n", + "An additional slicing trick that we can take advantage of is the \"slice step size.\" We add an additional `:` to the slice range and then specify how many steps to take between elements. For example, this code\n", + "\n", + "```Python\n", + "my_array[3:8:2]\n", + "```\n", + "\n", + "will return the values of `my_array[3]`, `my_array[5]` and `my_array[7]`\n", + "\n", + "With that, we can write a function to obtain the differences between coarser and finest grids. Here we go ..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = ceil(N_fine/N_current)\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that the function has been defined, let's compute the grid differences for each solution, relative to the fine-grid solution. Call the function `get_diffgrid()` with two solutions, one of which is always the one at the finest grid. Here's a neat Python trick: you can use negative indexing in Python! If you have an array called `my_array` you access the _first_ element with\n", + "\n", + "`my_array[0]`\n", + "\n", + "But you can also access the _last_ element with \n", + "\n", + "`my_array[-1]`\n", + "\n", + "and the next to last element with\n", + "\n", + "`my_array[-2]`\n", + "\n", + "and so on. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dt = 0.1\n", + "dt = 0.05\n", + "dt = 0.01\n", + "dt = 0.005\n", + "dt = 0.001\n" + ] + } + ], + "source": [ + "# compute difference between one grid solution and the finest one\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " print('dt = {}'.format(dt))\n", + "\n", + " ### call the function get_diffgrid() ###\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to create a plot of the results! We'll create a *log-log* plot with the Matplotlib function [`loglog()`](http://matplotlib.org/api/pyplot_api.html?highlight=loglog#matplotlib.pyplot.loglog). Remember to skip the difference of the finest-grid solution with itself, which is zero." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIh\nZGatzGyLmZ1Sibanm9nPkhGXSLIpSYmE0/1AE+APlWj7Z6BHYsMRCYaSlEjImNmPgM3ANKCnmZ1X\nTtss4GLgv5IUnkhSaasOkZAxs/HAEOAYIhsdvu3u/1ZG27bAB8Cx7r41eVGKJId6UiIhYmYXA/90\n9x3uvgp4DuhoZpeXaJdjZi8CfwO2AE+Y2ejkRyySWOpJiYSImU0C/t3d90RfHwusAv7H3Q8b9jOz\nmcB6dx+U3EhFkkM9KZGQMLNuwJv7ExSAu39FZHvuc8zsmhLtawA/BRYkNVCRJFJPSiQEohMgXnT3\n60s51xBYDWwHznD3oujxC4D3gObuvjmZ8Yoki3pSIuFwAzCptBPu/i2RqehtgJsOOtWRyDCgEpSk\nLSUpkYCZWW2go7u/UU6zMcAaYLiZ1Y0e60h0qM/MapvZgwkNVCQANYMOQES4DXAzu7OCdp8CXYhM\nTx8BNAdmRc/dCbyYsAhFAqKalEiAor2itUCzSr7Fga+BVkA3oDewFHjL3RcmJEiRAClJiYhIaKkm\nJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIi\nofX/ARE7ZqFnKYAXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# log-log plot of the grid differences\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel('$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='-', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Order of convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The order of convergence is the rate at which the numerical solution approaches the exact one as the mesh is refined. Considering that we're not comparing with an exact solution, we use 3 grid resolutions that are refined at a constant ratio $r$ to find the *observed order of convergence* ($p$), which is given by:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "p = \\frac{\\log \\left(\\frac{f_3-f_2}{f_2-f_1} \\right) }{\\log(r)}\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $f_1$ is the finest mesh solution, and $f_3$ the coarsest. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is p = 1.014\n" + ] + } + ], + "source": [ + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values2 = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values2 = numpy.empty_like(dt_values2, dtype=numpy.ndarray)\n", + "\n", + "diffgrid2 = numpy.empty(2)\n", + "\n", + "for i, dt in enumerate(dt_values2):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + "\n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values2[i] = u\n", + " \n", + "\n", + "#calculate f2 - f1\n", + "diffgrid2[0] = get_diffgrid(u_values2[1], u_values2[0], dt_values2[1])\n", + "\n", + "#calculate f3 - f2\n", + "diffgrid2[1] = get_diffgrid(u_values2[2], u_values2[1], dt_values2[2])\n", + "\n", + "# calculate the order of convergence\n", + "p = (log(diffgrid2[1]) - log(diffgrid2[0])) / log(r)\n", + "\n", + "print('The order of convergence is p = {:.3f}'.format(p));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See how the observed order of convergence is close to 1? This means that the rate at which the grid differences decrease match the mesh-refinement ratio. We say that Euler's method is of *first order*, and this result is a consequence of that." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paper airplane challenge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose you wanted to participate in a paper-airplane competition, and you want to use what you know about the phugoid model to improve your chances. For a given value of $L/D$ that you can obtain in your design, you want to know what is the best initial velocity and launch angle to fly the longest distance from a given height.\n", + "\n", + "Using the phugoid model, write a new code to analyze the flight of a paper airplane, with the following conditions:\n", + "\n", + "* Assume $L/D$ of 5.0 (a value close to measurements in Feng et al. 2009)\n", + "* For the trim velocity, let's take an average value of 4.9 m/s.\n", + "* Find a combination of launch angle and velocity that gives the best distance.\n", + "* Think about how you will know when the flight needs to stop ... this will influence how you organize the code.\n", + "* How can you check if your answer is realistic?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Feng, N. B. et al. _\"On the aerodynamics of paper airplanes\"_, AIAA paper 2009-3958, 27th AIAA Applied Aerodynamics Conference, San Antonio, TX. [PDF](http://arc.aiaa.org/doi/abs/10.2514/6.2009-3958)\n", + "\n", + "* Simanca, S. R. and Sutherland, S. _\"Mathematical problem-solving with computers,\"_ 2002 course notes, Stony Brook University, chapter 3: [The Art of Phugoid](https://www.math.sunysb.edu/~scott/Book331/Art_Phugoid.html). (Note that there is an error in the figure: sine and cosine are switched.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/01_04_Second_Order_Methods.ipynb b/01_phugoid/01_04_Second_Order_Methods.ipynb new file mode 100644 index 0000000..dfe6da7 --- /dev/null +++ b/01_phugoid/01_04_Second_Order_Methods.ipynb @@ -0,0 +1,1187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, C.D. Cooper. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid model: bonus!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_The phugoid model of glider flight_ has been such a fun problem to showcase the power of numerical solution of differential equations, we thought you'd enjoy a bonus notebook. The previous lessons were:\n", + "\n", + "* [Phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) —Lays the groundwork for our fun problem, with some context, a little history and a description of the physics of phugoids: curves representing the trajectory of a glider exchanging potential and kinetic energy, with no drag.\n", + "* [Phugoid oscillation](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) —Develops the simple harmonic motion of an aircraft experiencing a small perturbation from the horizontal trajectory: our opportunity to introduce Euler's method, and study its convergence via an exact solution.\n", + "* [Full phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) —The full model takes into account the force of drag and results in a system of two nonlinear equations. We obtain the trajectories using Euler's method in vectorized form, introduce grid-convergence analysis and finish with the paper-airplane challenge!\n", + "\n", + "That is a fantastic foundation for numerical methods. It's a good time to complement it with some theory: the first screencast of the course uses Taylor series to show that _Euler's method is a first-order method_, and we also show you graphical interpretations. Many problems require a more accurate method, though: second order or higher. Among the most popular higher-order methods that we can mention are the _Runge-Kutta methods_, developed around 1900: more than 100 years after Euler published his book containing the method now named after him!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Euler's method is a first-order method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this screencast, we use a Taylor series expansion to analyze Euler's method and show that it incurs a truncation error of first order. We also use a graphical interpretation to motivate the _modified_ Euler method, which achieves second order." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('6i6qhqDCViA')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Second-order methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notebook on phugoid oscillation (lesson 2) included a study of the accuracy obtained with Euler's method, using the exact solution for the simple harmonic motion. We made a _convergence plot_ and saw that as $\\Delta t$ gets smaller, the error also gets smaller. \n", + "\n", + "We could have drawn a line with a slope equal to 1 on that log-log plot, and you would have seen that it was parallel to the convergence line. A slope equal to 1 on a log-log convergence plot is an indication that we have a first-order method: the error scales as ${\\mathcal O}(\\Delta t)$. \n", + "\n", + "In lesson 3, using the full phugoid model (which is nonlinear and does not have an exact solution), we did a _grid-convergence study_ with three different grids, and obtained the _observed_ order of convergence—it was very close to 1, indicating a slope of 1 on a log-log plot.\n", + "\n", + "Another way to look at an ${\\mathcal O}(\\Delta t)$ method is to say that the error scales _linearly_ with the step size, or that they are proportional:\n", + "\n", + "$$ e \\propto \\Delta t.$$\n", + "\n", + "where $e$ stands for the error. To get more accuracy, we could use a _second-order_ method, in which the error is ${\\mathcal O}(\\Delta t^2)$. In general, we say that a method is of order $p$ when the error is proportional to $(\\Delta t)^p$.\n", + "\n", + "In the screencast titled \"Euler's method is a first-order method,\" we used a graphical interpretation to get an idea for improving it: by estimating an intermediate point, like the **midpoint**, we can get a better approximation of the area under the curve of $u^\\prime$. The scheme has two steps and is written as:\n", + "\n", + "\\begin{align}\n", + "u_{n+1/2} & = u_n + \\frac{\\Delta t}{2} f(u_n) \\\\\n", + "u_{n+1} & = u_n + \\Delta t \\,\\, f(u_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "This method is known as the *explicit midpoint method* or the *modified Euler method*, and it is a second-order method. Notice that we had to apply the right-hand side, $~f(u)$, twice. This idea can be extended: we could imagine estimating additional points between $u_{n}$ and $u_{n+1}$ and evaulating $~f(u)$ at the intermediate points to get higher accuracy—that's the idea behind Runge-Kutta methods." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Runge-Kutta methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the modified Euler method, we improve the accuracy over Euler's method by evaluating the right-hand side of the differential equation at an intermediate point: the midpoint. The same idea can be applied again, and the function $f(u)$ can be evaluated at more intermediate points, improving the accuracy even more. This is the basis of the famous *Runge-Kutta (RK) methods*, going back to Carl Runge and Martin Kutta. The modified Euler method corresponds to _second-order_ Runge-Kutta.\n", + "\n", + "Here's a bit of historical coincidence that will blow your mind: Carl Runge's daughter Iris—an accomplished applied mathematician in her own right—worked assiduously over the summer of 1909 to translate Lanchester's _\"Aerodonetics.\"_ She also reproduced his graphical method to draw the phugoid curves (Tobies, 2012)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phugoid model with 2nd-order RK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compute the motion of a glider under the full phugoid model using the second-order Runge-Kutta method. We'll build on the _paper airplane challenge_ of lesson 3 now, and look for the horizontal distance that the plane travels until the moment it touches the ground. \n", + "\n", + "As usual, let's start by importing the libraries and modules that we need, and setting up the model parameters. We also set some default plotting formats using the [`rcParams`](http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rcParams) module. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the paper-airplane challenge of lesson 3, we suggested an $L/D=5.0$ as a realistic value for paper airplanes, according to experiments, and a trim velocity of 4.9 m/s. Let's start with those values, but you could experiment changing these a bit. _What do you think will happen if you make $L/D$ higher?_" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among the initial parameters that we suggest for your first experiment, we are starting with a velocity a little higher than the trim velocity, launch the paper airplane with a negative initial angle, and take the initial height to be 2 meters—all sound like reasonable choices.\n", + "\n", + "Now, we can define a few functions to carry out the computation:\n", + "* The right-hand side of the phugoid model from [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb),\n", + "* One step of the Euler's method that we learned in [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), and\n", + "* Differences with respect to a fine grid, as in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])\n", + "\n", + "\n", + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)\n", + "\n", + "\n", + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = int(numpy.ceil(N_fine/N_current))\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we also need to define the function `rk2_step()` that computes the next time step using the *modified Euler* method of equations $(1)$ and $(2)$, above, otherwise known as 2nd-order Runge-Kutta or RK2. This function will be called over and over again within the time loop." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def rk2_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using 2nd-order Runge-Kutta.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at the next time step.\n", + " \"\"\"\n", + " u_star = u + 0.5*dt*f(u)\n", + " return u + dt*f(u_star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we first need to set up the time discretization, then initialize arrays to save the solution and we are set to go! The only difference this time is that we are using _both_ Euler's method and 2nd-order Runge-Kutta to get a solution, to compare the two. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "\n", + "# set initial conditions\n", + "u_euler = numpy.empty((N, 4))\n", + "u_rk2 = numpy.empty((N, 4))\n", + "\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_euler[0] = numpy.array([v0, theta0, x0, y0])\n", + "u_rk2[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "\n", + "# use a for loop to call the function rk2_step()\n", + "for n in range(N-1):\n", + " \n", + " u_euler[n+1] = euler_step(u_euler[n], f, dt)\n", + " u_rk2[n+1] = rk2_step(u_rk2[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can get the position of the glider in time, according to both Euler's method and the 2nd-order Runge-Kutta method, by extracting the appropriate portions of the solution arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x_euler = u_euler[:,2]\n", + "y_euler = u_euler[:,3]\n", + "x_rk2 = u_rk2[:,2]\n", + "y_rk2 = u_rk2[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### How far will it fly before touching the ground?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the $y$-axis measures the vertical coordinate with respect to the ground, negative values of $y$ don't have any physical meaning: the glider would have hit the ground by then! To find out if there are any negative $y$ values we can use the handy function [`numpy.where`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html). This function returns the **indices** of the elements in an array that match a given condition. For example, `numpy.where(y_euler<0)[0]` gives an array of the indices `i` where `y_euler[i]<0` (the `[0]` is necessary as `numpy.where` returns an array, which in this case contains a single line). If no elements of the array match the condition, the array of indices comes out empty. \n", + "\n", + "From the physical problem, we know that once there is one negative value, the glider has hit the ground and all the remaining time-steps are unphysical. Therefore, we are interested in finding the _first_ index where the condition applies, given by `numpy.where(y_euler<0)[0][0]`—do read the documentation of the function if you need to! " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_euler = numpy.where(y_euler<0.0)[0]\n", + "if len(idx_negative_euler)==0:\n", + " idx_ground_euler = N-1\n", + " print ('Euler integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_euler = idx_negative_euler[0]\n", + " \n", + "idx_negative_rk2 = numpy.where(y_rk2<0.0)[0]\n", + "if len(idx_negative_rk2)==0:\n", + " idx_ground_rk2 = N-1\n", + " print ('Runge-Kutta integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_rk2 = idx_negative_rk2[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Do Euler and RK2 produce the same solution?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An easy way to compare the numerical results obtained with the Euler and 2nd-order Runge-Kutta methods is using [`numpy.allclose`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html). This function compares each element of two arrays and returns `True` if each comparison is within some relative tolerance. Here, we use the default tolerance: $10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the x-values close? False\n", + "Are the y-values close? False\n" + ] + } + ], + "source": [ + "# check to see if the paths match\n", + "print('Are the x-values close? {}'.format(numpy.allclose(x_euler, x_rk2)))\n", + "print('Are the y-values close? {}'.format(numpy.allclose(y_euler, y_rk2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hmmm, they do differ. Maybe $10^{-5}$ is too tight a tolerance, considering we're using a somewhat coarse grid with first- and second-order methods. Perhaps we can assess this visually, by plotting the glider's path? Study the code below, where we are plotting the path twice, taking a closer look in the second plot by \"zooming in\" to the beginning of the flight." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+eWXL1nerVu3i92pp06dMq1atTKNGzc2x9PpOsjI4cOHjYiY0qVLZysHb3mznwlAdyrQBfgFKOFF\n2RbAH8BB3IdmAAAgAElEQVT6VK/tWN2pu+z3T6Szbo6+L6WC3d69e02FChXMlClT/lm4caMxVata\nP4PF6tXGtGqVbpfuuHHjzI033mhOnTqV46q8PYdpd6qfrVixgh07djB69GhmzJgR8KcbBGIOoHr1\n6rF79252797tSP0qYxcuXCA+Ph4R4ZZbbvFY5tChQzRu3JiCBQuyaNEiChYsmOV6VtkDgDt06JCj\neEOBiNwLDAXijDGH7GWtRaRXqjIlxZ57xxiz0BhT1hhzY8oLSLml7Ul72bOBziPQ3HI+cEse4Hwu\nf/31Fy1atOC+++7jgQce+OeDqlXh55+tn17yey5168KXX6bbpTtkyBCqVatG79690x2q4mvaiPOz\npC1bWNysGU888USOHswbzHLlykXr5s2Z/9lnToei0ti/fz99+vRh7969DBo0iFq1anks16NHDzZs\n2MDIkSMvn0jTC8YYXnzxRWJiYhgxYkROww5qItIZmAG8CTQXkXvtRl0boLRdpgGwD5ia0abS/FQq\nrJw5c4a2bdvSpEkThg8ffnmBXKE14ktEeO2119iwYQMzZswITKXeXK4L9RdOdUecPGmOFi9uRleu\n7Mpu1NT233CDeaJ2bUdjyPZ+HjXKGOtm8ktfo0b5tnx6n/tASndqVFSUKVWqlClVqpTJly+fERFT\nu3Zt88MPP3hcL6U7tU6dOkZETJkyZcz27duzXP/kyZNNdHS0+fbbb3OaSqa82c/4sTsVOAokYXWF\npn4lASPtMjWAI3joIgVKATuB/fY6h+33ddKpL+dfmlJBJikpydx1112mY8eOrvv9uHnzZlOsWDGz\nfv36bG/D23OY4w2sQLycOgkeu+su80FUlNmxY4cj9QfS6aefNq/nzm3+/vtvx2II5192nsbEnT59\n2owYMcKIiGnVqpXHaWBSGnErVqwwvXv3NiJirr76avPbb795XffHH39soqOjzWeffeaTXDLjdCMu\n0K9wPq6Vew0fPtw0aNDAnDlzxhprtnix0yFlz4ULxniY2uTtt982VapUMadPn87WZr09h2l3qp8k\nfvghJz//nB969qRixYqOxRGo8Q55O3TgvyIsWbTIkfrV5fLmzcuzzz5LXFwcCxYs4PXXX0+3rIgw\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(10,6))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler[:idx_ground_euler], y_euler[:idx_ground_euler], 'k-', label='Euler')\n", + "pyplot.plot(x_rk2[:idx_ground_rk2], y_rk2[:idx_ground_rk2], 'r--', label='RK2')\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_rk2[idx_ground_rk2-1]))\n", + "pyplot.legend();\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler, y_euler, 'k-', label='Euler')\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From far away, the Euler and RK2 methods seem to be producing similar answers. However, if we take a closer look, small differences become evident. Keep in mind that we are solving the same equation and both methods will converge to the same solution as we refine the grid. However, they converge to that solution at different rates: RK2 gets more accurate faster, as you make $\\Delta t$ smaller." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid-convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we want to do a grid-convergence study with RK2, to see if we indeed observe the expected rate of convergence. It is always an important step in a numerical solution to investigate whether the method is behaving the way we expect it to: this needs to be confirmed experimentally for every new problem we solve and for every new method we apply!\n", + "\n", + "In the code below, a `for`-loop computes the solution on different time grids, with the coarsest and finest grid differing by 100x. We can use the difference between solutions to investigate convergence, as before." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for-loop to compute the solution on different grids\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once those runs are done, we compute the difference between each numerical solution and the fine-grid solution." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# compute diffgrid\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "for i, dt in enumerate(dt_values):\n", + "\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we plot!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nicaKFSu44YYbWLVqFR9//HHU4UgBmUymza7Dqqy9lhRJb+kkfdpm0qUpfxdffDGTJk3iuOOO449/\n/GPU4VQs6bkLe/aaiEjNNDc3M2XKFMyMa665JupwpEJq6RSR9JaOSByMGDGCX/3qV5x++un86le/\nijocKYFaOiISW4cffji9e/fm6quvjjoUCYGKToql+VmBJEhL/i666CKam5vp27dv1KGEJi25y6cq\nRcfMZlfjviKSTttsU9FEW6kjpeynE2QTt0nu3rWSwOqBmfn48eM1ZVpEpAQtU6YnTJgQfMFPbeKm\niQQiIuWodCLB+8BRwODcayjwMnAHMILspm1H5/77DmAx2U3fpM6luV85CZKav08++YR7772XjRsT\ntcDJpyQ1d6UopaP0L+7+RMsbM5tEdhO3+/NcO93MTia7idvvQopRRFLkrrvu4vzzz+f444/noYce\nijocCZk2cStC3WsitbVmzRoGDhzIkiVLuOeee/j2t78ddUgSQNjP6ewCFJsk0BXYKcB9RSTlbrnl\nFpYsWcLBBx/Mt771rajDkSrQJm4pluZ+5SRIWv7ef/99Jk6cCMA111xDu3axn4tUUNJyV44gk98v\nAR4nu4nbUmAp2WnSPYCewCqgIawARSQdpk6dygcffMBRRx3FMcccE3U4UiWB1l4zs32AnwDHAZ1z\nh1cDTcA4d58bWoQR0piOSO1s2rSJe+65h/32249DDjkk6nCkAsXGdLSJWxF6OFREpHShPBwahJmd\n4e6xXw426S2dpO/pkXTKX3wlPXdRrDJ9Q5XuKyIiMVbKMjiNwM7uPir3vpnia7EZ0NvdO4QVZFSS\n3tIREamGisZ0zOxtYEdgF3dfa2brgafb+MzD3b1ToGjriIqOSPW4O8OHD+dLX/oSF154IZ06xf5X\nhuRUWnR6AB3d/c3c+6Xu3rONr2nzmjhIetFJer9y0sU9fzNnzuS4445jp512YuHChXTtGvuF6UsW\n99y1paIxHXdf1lJwcjqa2VQz+1qRL/t+uUGKSHps2rSJyy+/HIAxY8akquCkXZC11zYB04Hr3P2V\nqkRVJ5Le0hGJyvTp0znjjDPo3bs38+bNU9dawoT6nI6ZLXP3HqFEVudUdETCt379evbdd1+am5u5\n4447OPfcc6MOSUIW9pTpV8ysVxsfeFeA+0qNpXn9pySIa/5WrFhB79692X///TnzzDOjDicScc1d\n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\nzP8H50NbGbioopAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot using the matplotlib function loglog()\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel(r'$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.xlim(1e-4,1)\n", + "pyplot.ylim(1e-4,1)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='--', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is looking good! The difference relative to our fine-grid solution is decreasing with the mesh size at a faster rate than in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), but *how much faster?* When we computed the observed order of convergence with Euler's method, we got a value close to 1—it's a first-order method. Can you guess what we'll get now with RK2?\n", + "\n", + "To compute the observed order of convergence, we use three grid resolutions that are refined at a constant rate, in this case $r=2$. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 1.983\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " ### call rk2_step() ###\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Probably you're not too surprised to see that the observed order of convergence is close to $2$. Because we used a second-order method! This means that the numerical solution is converging with the grid resolution twice as fast compared with Euler's method in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), or in other words, the error scales as ${\\mathcal O}(\\Delta t^2)$. That is a lot faster! However, we are paying a price here: second-order Runge-Kutta requires more computations per iteration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge task" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How much longer does it take to get the solution with RK2, compared to Euler's method? Run the same solution (same time grid, same parameters), but find a way to *time* the calculation with Python, and compare the runtimes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multi-step methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The screencast *\"Euler's method is a first-order method\"* motivated graphically an idea to get increased accuracy: using intermediate points between $u_{n}$ and $u_{n+1}$ and evaluating the right-hand side of the differential equation at those intermediate points. The idea is to somehow get a better approximation using more data from the function $f(u)$.\n", + "\n", + "Another way to bring more information about $f(u)$ into the numerical solution is to look at time data $t\\lt t_{n}$. For example, we can involve in the calculation of the solution $u_{n+1}$ the known solution at $u_{n-1}$, in addition to $u_{n}$. Schemes that use this idea are called _multi-step methods_.\n", + "\n", + "\n", + "A classical multi-step method achieves second order by applying a _centered difference_ approximation of the derivative $u'$:\n", + "\n", + "$$ u'(t) \\approx \\frac{u_{n+1} - u_{n-1}}{2\\Delta t}.$$\n", + "\n", + "Isolate the future value of the solution $u_{n+1}$ and apply the differential equation $u'=f(u)$, to get the following formula for this method:\n", + "\n", + "$$ u_{n+1} = u_{n-1} + 2\\Delta t \\, f(u_n),$$\n", + "\n", + "This scheme is known as the **leapfrog method**. Notice that it is using the right-hand side of the differential equation, $f(u)$, evaluated at the _midpoint_ between $u_{n-1}$ and $u_{n+1}$, where the time interval between these two solutions is $2\\Delta t$. Why is it called \"leapfrog\"? If you imagine for a moment all of the _even_ indices $n$ of the numerical solution, you notice that these solution values are computed using the slope estimated from _odd_ values $n$, and vice-versa.\n", + "\n", + "Let's define a function that computes the numerical solution using the leapfrog method:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def leapfrog_step(unm1, u, f, dt):\n", + " \"\"\"Returns the solution time-step n+1) using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " unm1 : array of float\n", + " solution at time-step n-1.\n", + " u : array of float\n", + " solution at time-step n.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at time-step n+1.\n", + " \"\"\"\n", + " return unm1 + 2.0*dt*f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But wait ... what will we do at the _initial_ time step, when we don't have information for $u_{n-1}$? This is an issue with all multi-step methods: we say that they are _not self-starting_. In the first time step, we need to use another method to get the first \"kick\"—either Euler's method or 2nd-order Runge Kutta could do: let's use RK2, since it's also second order.\n", + "\n", + "For this calculation, we are going to re-enter the model parameters in the code cell below, so that later on we can experiment here using the leapfrog method and different starting values. At the end of this notebook, we'll give you some other model parameters to try that will create a very interesting situation!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude\n", + "\n", + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# set initial conditions\n", + "u_leapfrog = numpy.empty((N, 4))\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_leapfrog[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "# first step using RK2\n", + "u_leapfrog[1] = rk2_step(u_leapfrog[0], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have all the required information to loop in time using the leapfrog method. The code cell below calls the leapfrog function for each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for loop to call the function leapfrog_step()\n", + "for n in range(1,N-1):\n", + " \n", + " u_leapfrog[n+1] = leapfrog_step(u_leapfrog[n-1], u_leapfrog[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like before, we extract from the solution array the information about the glider's position in time and find where it reaches the ground." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider position in time\n", + "x_leapfrog = u_leapfrog[:,2]\n", + "y_leapfrog = u_leapfrog[:,3]\n", + "\n", + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_leapfrog = numpy.where(y_leapfrog<0.0)[0]\n", + "\n", + "if len(idx_negative_leapfrog)==0:\n", + " idx_ground_leapfrog = N-1\n", + " print ('The glider has not reached the ground yet!')\n", + "else:\n", + " idx_ground_leapfrog = idx_negative_leapfrog[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the glider's trajectory with both the leapfrog and RK2 methods, we find that the solutions are very close to each other now: we don't see the differences that were apparent when we compared Euler's method and RK2." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nz6bl5ZdTu3btDKbcO/nLlrHoxBMpW7069WbMgAMO8B1JpMTQiVMhFaYeE2WJLxNZKlasmNAJVCXt\ndUlUmLKUZGaGVaoEL7/MotataTtoEPuMHOk71i7t2LGDhfPmwQMPkHPyyaw85xzm3XtvZAvUqP+e\naHwlg4pUEQ8uv/xyAF544QU2bNjgOY1IMZix/003sWr0aCrVqQPAokWLWLp0qedg/2vx55+z9YQT\n2DJhAsycSaUePbjgwgt9xxKR3dDhfhFPmjdvzowZM3jyySd3Fq2SXUry4f5dcc7RqlUrunfvzmWX\nXZaGZImbN28eBx10ENWqVQNg+LXXctTFF3NSs2Zec4mUZDrcL5IFrrzySgAee+wx9EeURMXmzZtp\n06YNPXv2BMDl5/P4gw+yZcuWjGd58sknue+++3Y+7vHooypQRbKIitQMClOPibLEl8ksF1xwAbVr\n12bBggW8//77XrPsibJIoipUqMDdd99NqVKlAPho6FC63HorZQcNgm+/Zfv27Wn7o2zJ4sW82LMn\nDBoEwB133LHL651GfR5pfNkt6uNLlIpUEU/Kli3LFVdcAcCjjz7qOY1IelRq2ZIlw4Zha9bAUUex\nqmlThrVtC+vXF/tr79ixg1defhlmzYKbbuKIM87guJEjWVe5MgC1a9fm3nvvLfb3ERE/1JMq4tH3\n33/PwQcfzLZt21i2bBmHH36470iSBPWkJumnn3iyQwfO3rqVOtdeC927c+ONN9KoUSO6desGwKxZ\nszjooIOoWbMmACtWrKBGjRpUjhWegwcP5oorrqBy5co455hdrhyN69ShTJcucOGFvL9mDc1btKBc\nuXKpzS4iKaGeVJEsccABB9ClSxecczz22GO+44ik13770WfGDA749FPo3h2AadOmkZubu/Mpq889\nFzvrLOjaFS6+mJUnncSmDh3giy8AePPNN/n000+B4M3us1tuYdGbb8K990KTJrQ5/XQVqCIRoSI1\ng8LUY6Is8fnIcs011wDw3HPPsb7QIdCS/rrsSpiySPJycnIoXbr0zscTJkygWaGTmb5o3ZqtffpA\nhw7QqROLjz6anzp02Hk90xtuuGHnXlaAy+++m8Z7cUOMqM8jjS+7RX18iSq956eISDodd9xxtGzZ\nkmnTpjF8+HCuvvpq35FEMqborUhvKXJDgCu6dPmfx+eee27aM4lIOKgnVSQExowZwwUXXMARRxzB\n4sWLd54ZLeGmnlQRkeSoJ1Uky3Tu3Jnc3Fy+/PJL3njjDd9xREREvFORmkFh6jFRlvh8ZSldl/Pa\nmwAAIABJREFUujT9+vUD4IEHHsA5p9dlF8KURbJX1OeRxpfdoj6+RKlIFQmJnj17UqNGDWbOnMnU\nqVN9xxEREfFKPakiIXLPPfdw++23065dOyZOnOg7juyBelJFRJKTzHZTRapIiPz0008ccsghbNiw\ngVmzZvG73/3OdyTZDRWpIiLJ0YlTIRWmHhNlic93lv3224/LL78cCK4HGRa+X5fCwpRFslfU55HG\nl92iPr5EqUgVCZm+fftSpkwZPvjgA5YtW+Y7joiIiBc63C8SQpdddhnDhg3jsssu45lnnvEdR3ZB\nh/tFRJKjntQitLGVbLN06VKOOuoocnJyWLp0KXXr1vUdSeJQkSoikhz1pIZUmHpMlCW+sGSpX78+\nbdu2Zfv27dxzzz2+44TmdYFwZZHsFfV5pPFlt6iPL1HeilQzO8DMXjSzxbGP0WZ2YILrrjSzOXE+\n2qQ7t0imdOvWjVKlSjFixAi+/PJL33FEREQyysvhfjMrC8wEFgMXxxY/B5wCHOec27iH9Vc45xI+\n/qnDVpKtevXqxXPPPUe3bt0YMWKE7zhShA73i4gkJ/Q9qWbWG3gKOMw5tzK2rCbwNXCzc+6hPayv\nIlVKhBUrVlC/fn3y8/NZuHAhDRo08B1JClGRKiKSnGzoST0f+HdBgQrgnPsOWBj7XCSFqcdEWeIL\nW5a6devSs2dP8vPzGTRokNcsYRGmLJK9oj6PNL7sFvXxJcpXkdoYWBFn+UqgUSJfwMweMLPpZrbE\nzCaYWadUBhQJiwEDBlCmTBleeuklFixY4DuOiIhIRvg63L8VeNc517nI8heALkAF59yW3az/CfA3\n59yrZlYa6AM8DlztnHsizvN12Eqy2pVXXsnQoUPp1KkTb731lu84EqPD/SIiycmGntQtwHt7W6Tu\n4mu+A7QEDii6rja2ku2+++47jjjiCDZs2EBeXh6nnnqq70iCilQRkWRlQ0/qj0CVOMv3ATYmW6DG\nfBr7mkfH+2SPHj246667uOuuuxgyZMj/9Hvk5eVl5HHBskx9v909HjJkiNfvX/ixr59HvMdFf1Y+\n8xTOtGjRIvr37w9Anz59eP/99zOaR/Mlb+f/e/TosXN7Itmr8M84ijS+7Bb18SXMOZfxD+BdYEWc\n5Z8DM/awbnmgUpzlA4B84IQ4n3NhMHXqVN8RdlKW+MKcZcOGDa527doOcC+99JLXLD6FKUts2+Jl\nO5ruj7BsN9MlTPMoHTS+7Bbl8SWz3fR9Caq6zrl/x5bVBFYRXILqb4WeWxP4PjYwzKwH0Mw59+ci\nX3MscAZQ3Tn3S5HPOR/jFEm1Z599lt69e5Obm8vixYspV66c70glmg73i4gkJxsO9w8n2Gv6gJmV\nMrMc4H5gOfCPgieZWXNgNVD0ZKiLzeyEQs+7COgMPFi0QBWJkp49e9KwYUNWrlzJ448/7juOiIhI\n2ngpUp1z24B2wA6Ca6MuBCoDbYoUmeuBnwgK1QLjgcHA0NitUFcA/YHLnXN3ZSD+XgtTj4myxBf2\nLKVKleLBBx8E4J577uGHH37wlsWXMGWR7BX1eaTxZbeojy9RpX19Y+fc90DXPTxnPlA9znr3xD5E\nSpwOHTrQvn17Jk6cyC233MKzzz7rO5KIiEjKeelJzTT1VknULFmyhEaNGrFt2zY+/vhjTjrpJN+R\nSiT1pIqIJCcbelJFpBgaNGjADTfcAAQX+t+xY4fnRCIiIqmlIjWDwtRjoizxZVOW2267jYMOOohZ\ns2al/ZB/Nr0uIomI+jzS+LJb1MeXKBWpIlmqUqVKPPzwwwDceuutrFmzxnMiERGR1FFPqkgWc87R\nrl07pkyZwqWXXsqwYcN8RypR1JMqIpKcZLabKlJFstySJUs49thj2bJlC5MmTaJt27a+I5UYKlJF\nRJKjE6dCKkw9JsoSXzZmadCgAXfeeScAvXv3ZuPGjd6yZEKYskj2ivo80viyW9THlygVqSIR0K9f\nP5o0acLKlSsZMGCA7zgiIiLFpsP9IhExZ84cTjzxRPLz85k+fTonn3yy70iRp8P9IiLJ0eF+kRLo\nuOOOo3///jjn6NWrF5s3b/YdSUREZK+pSM2gMPWYKEt82Z7ljjvu4Mgjj2TRokXceuutXrOkS5iy\nSPaK+jzS+LJb1MeXKBWpIhFSvnx5Ro4cSenSpXnkkUeYNGmS70iSBmZW28zeM7N831lERNJFPaki\nEfTXv/6V2267jTp16jB//nyqVavmO1Ik+ehJNbPzgIeArUA951ypJNY9FLgfOAnYDqwFBjnn3orz\nXG03RSTl1JMqUsLdfPPNNG/enNWrV9OnTx9UbETKDUAb4GMg4QLZzA4AZgBlgfrOufoExe5YMzsr\nHUFFRIpDRWoGhanHRFnii0qWUqVKMWrUKKpUqcLYsWN5/vnnvWVJtTBl8aSFc27lXqx3FVAbuNk5\ntx3AOfcKQbE7OHXxskPU55HGl92iPr5EqUgViai6devyxBNPAHD11VezYMECz4kkFYpxDP4EYKtz\nblmR5Z8DR5pZveIlExFJLfWkikSYc44ePXowcuRIGjRowMyZM6lSpYrvWJHh8zqpZjYc6OacS2hn\ng5mNBs52zpUrsvwJ4IrY594ptFzbTRFJOfWkiggQbAyGDh3KMcccw5IlS9SfWrLNBsqYWeMiy5vE\n/t0nw3lERHZLRWoGhanHRFnii2KWSpUq8dprr1G5cmVefvllhg4d6i1LKoQpS5Z5HFgNPGJm+5tZ\njpn1BhrFPr/JX7TMi/o80viyW9THl6jSvgOISPo1aNCAYcOGcdFFF9G3b1+OP/54mjVr5juWZJBz\nbr2ZtQAGEpws9QuQB1wPPA18VXSdHj16kJubC0DVqlVp0qQJrVu3Bn59E83Wx3Pnzg1VHo1P44vq\n+PLy8hg+fDjAzu1JotSTKlKCXHvttfz973+nVq1azJw5k4MOOsh3pKyWTT2pu/k6/YEBQA3n3NZC\ny7XdFJGUU0+qiMT10EMPcdppp/Htt9/SuXNnfvnlF9+RpHh2WUWaWU0zs0KPK5hZ2zhP7Qi8ULhA\nFREJAxWpGVSw+zsMlCW+qGcpU6YMo0eP5vDDD2f27Nn07NkzoROpov66ZLG4eyPMrDlB/+kThRbX\nBN42syax5+SYWT+gFnB7uoOGTdTnkcaX3aI+vkSpSBUpYapVq8Zbb71FlSpVePXVVxk0aJDvSJIE\nMxtqZiuA8wFnZivMbLmZlSn0tPXATwSFaoGfgLeBN8xsPsHZ/ocBpzjn/puh+CIiCVNPqkgJNW7c\nODp16oRzjhEjRtCtWzffkbKOz57UdNN2U0TSQT2pIrJHZ511FkOGDAGgV69eTJgwwXMiERGRX6lI\nzaAw9ZgoS3wlLcs111zDjTfeyPbt2zn//POZNWuWtyyJClMWyV5Rn0caX3aL+vgSpSJVpIS7//77\n6dq1Kxs3buTMM89k+fLlviOJiIioJ1VEYOvWrXTs2JFJkyZxxBFHMH36dA444ADfsUJPPakiIslR\nT6qIJKVs2bKMGTOG4447ji+//JL27dvz008/+Y4lIiIlmIrUDApTj4myxFeSs1SpUoV3332X+vXr\nM2/ePM444wzWrVvnJcvuhCmLZK+ozyONL7tFfXyJUpEqIjvVrFmTKVOmULduXT799FM6duzIxo0b\nfccSEZESSD2pIvIbK1asoFWrVqxatYq2bdvy9ttvU758ed+xQkc9qSIiyVFPqogUS926dZkyZQo1\na9Zk8uTJnH/++WzevNl3LBERKUFUpGZQmHpMlCU+ZflV/fr1mTx5MtWqVWP8+PF07tyZTZs2ec0E\n/l8XiYaozyONL7tFfXyJUpEqIrt0zDHHMHXqVPbdd18mTpyoHlUREckY9aSKyB4tXLiQ008/nW+/\n/ZZWrVoxbtw4Kleu7DuWd+pJFRFJjnpSRSSljj76aPLy8qhTpw4ffvjh/1yeSkREJB1UpGZQmHpM\nlCU+ZYkvLy+PBg0a8MEHH3DwwQczffp02rdvz88//+wli0hxRX0eaXzZLerjS5SKVBFJ2BFHHMEH\nH3xAbm4un3zyCW3atOHHH3/0HUtERCJIPakikrSvvvqKNm3a8OWXX9KwYUMmT55MrVq1fMfKOPWk\niogkRz2pIpJWBx98MB9++CFHH300CxYsoFWrVnz11Ve+Y4mISISoSM2gMPWYKEt8yhJfvCy1a9cm\nLy+PJk2asGzZMlq1asWKFSu8ZBFJVtTnkcaX3aI+vkSpSBWRvVajRg3ef/99mjZtysqVK2nZsiVL\nly71HUtERCJAPakiUmzr1q2jY8eOTJs2beetVI855hjfsdJOPakiIslRT6qIZNQ+++zDu+++S9u2\nbfnuu+849dRTmT17tu9YIiKSxVSkZlCYekyUJT5liS+RLJUqVeLtt9/mrLPO4r///S9t2rTho48+\n8pJFZE+iPo80vuwW9fElSkWqiKRM+fLlGTt2LBdccAFr166lXbt22tiKiMheUU+qiKTc9u3b6dmz\nJy+88ALly5fnjTfe4Pe//73vWCmnnlQRkeSoJ1VEvCpdujQjRoygd+/ebN68mbPPPpu33nrLdywR\nEckiKlIzKEyHPZUlPmWJb2+y5OTk8NRTT3HNNdewdetWzj//fF599VUvWUSKivo80viyW9THlygV\nqSKSNmbGkCFDuOmmm9i+fTsXX3wxI0eO9B1LRESygHpSRSTtnHMMGjSIO++8E4Ann3ySyy+/3HOq\n4lNPqohIctSTKiKhYmbccccdPPjggwD8+c9/ZsiQIZ5TiYhImKlIzaAw9ZgoS3zKEl+qstx44408\n9thjAPTt25d7773XWxYp2aI+jzS+7Bb18SVKRaqIZNRVV13FsGHDMDMGDBjA3Xff7TuSiIiEkHpS\nRcSLl156iUsuuYT8/Hwefvhh+vbt6ztS0tSTKiKSnGS2mypSRcSbESNG0KNHDwCeffZZevXq5TdQ\nklSkiogkRydOhVSYekyUJT5liS9dWbp3787f//53AHr37p3QdVTD9LpI9or6PNL4slvUx5coFaki\n4tXVV1/NoEGDcM7RtWtXxo8f7zuSiIiEgA73i4h3zjn69+/PQw89RMWKFcnLy+PEE0/0HWuPdLhf\nRCQ56kktQhtbkfBzznHppZcyfPhwDjjgAD7++GPq1q3rO9ZuqUgVEUmOelJDKkw9JsoSn7LEl4ks\nZsbTTz9Nu3bt+P777+nQoQNr1qzxkkWiL+rzSOPLblEfX6JUpIpIaJQpU4bXXnuNxo0bs2TJEs45\n5xw2b97sO5aIiHigw/0iEjpff/01zZo1Y9WqVVx00UX885//xCx8R9V1uF9EJDk63C8iWe3AAw9k\n/PjxVKlShVdeeYX777/fdyQREckwFakZFKYeE2WJT1ni85GlUaNGvPjiiztvn/rOO+94yyLRE/V5\npPFlt6iPL1EqUkUktDp16rTzGqpdunRh8eLFviOJiEiGqCdVRELNOcdFF13E6NGjqV+/Pp988glV\nq1b1HQtQT6qISLLUkyoikWFmPP/88zRu3JilS5fStWtX8vPzfccSEZE0U5GaQWHqMVGW+JQlPt9Z\nKlWqxJtvvsn+++/P+PHjGTx4sNc8kv18z+l00/iyW9THlygVqSKSFXJzcxk5ciQAAwYMYPr06Z4T\niYhIOqknVUSySv/+/Rk8eDAHHXQQc+bMoXr16t6yqCdVRCQ5yWw3VaSKSFbZtm0bp556Kh999BFn\nnnkmb7/9Njk5fg4KqUgVEUmOTpwKqTD1mChLfMoSX5iyTJ8+nZdffnlnf+pDDz3kO5JkoTDN6XTQ\n+LJb1MeXKBWpIpJ1DjnkEEaMGAEE/alz5szxnCizzKy2mb1nZrrMgYhElrfD/WZ2APAIcHxs0efA\ndc65rxNYtwxwB3ABsB1YB/R3zsU9k0KHrUSi6eqrr+bxxx+nYcOGfPbZZ5QvXz6j39/H4X4zOw94\nCNgK1HPOlUpi3drAIKB5bP3SwD+BB5xz24o8V9tNEUm50B/uN7OywCSCDeTRsY+NwFQzq5TAl3gM\n+APQwjnXCHgOmGhmx6YpsoiE0AMPPED9+vVZsGABt912m+84mXID0Ab4GEi4QDazHGA80BQ4xTl3\nLNAVuBXQNb1EJHR8He7vDjQCbnLO5Tvn8oGbgMOAK3a3opk1AHoD9zvn1gA454YBK4C/pjV1MYWp\nx0RZ4lOW+MKapWLFiowaNYpSpUrx8MMP88EHH/gLljktnHMr92K9I4FjgWHOuZ8AnHNzgYnAH1MX\nLzuEaU6ng8aX3aI+vkT5KlLPB/5deEPrnPsOWBj73O6cS7D3YGqR5VOB9mZWMYU5U2ru3Lm+I+yk\nLPEpS3xhztK0aVMGDBiAc47u3buzbt06T8kyoxjH4LfH/i1TZHkZYBslTJjmdDpofNkt6uNLlK8i\ntTHBns+iVhLsYd3TujuA/xRZvoJf2wdC6eeff/YdYSdliU9Z4gt7lttuu43jjz+ef//73/Tt29dD\nqvBzzi0FXgIuN7NDAcysDUHrwJ0+s/kQpjmdDhpfdov6+BLlq0itDqyPs3wdUNHMyu1h3V/i7E0o\n2H1SLQX5RCSLlClThlGjRlGuXDmee+45JkyY4DtSWHUH3gWWmdnXwBjgKufcc35jiYj8lq8itUSe\nMrpy5UrfEXZSlviUJb5syHLUUUcxcOBAgJ2H/+VXZlYeyANOAA51zh1IsBf1bjN71Gc2H8I0p9NB\n48tuUR9forxcgir2F/wS51ybIsvfAk5zzlXZzbovARcCZQrvTTWz6wkuy9LUOfdZkXX0biUiaeHr\njlNmNhzo5pxLaGeDmf0FeBxoWfhyfWZ2DTAEONk590mh5dpuikhaJLrdLJ3uILswn+BM06LqElwv\ndXfmEZyJejD/25dal6D5f2HRFaJ620IRkSQU9PsvK7K84HFjYGeRqu2miPjm63D/WODQguZ9ADOr\nSVC4jin8RDOraWaFN5avE7QLnFbka54GTHTO/ZKeyCIiobPLvZ1xtp3fxf49tMhTDy3yeRGRUPBV\npA4n2GP6gJmVil1k+n5gOfCPgieZWXNgNfBEwbLYGapPA7eYWbXY83oS7EkdkKkBiIiEQNy9nfG2\nnQTb3fXAPWZWOfa8Q4B+wFLgvbQmFRFJkpciNXb7vXYEl5JaGPuoDLQpsid0PfATwca2sKuB0cB0\nM/scuAxo75ybn+7sIiI+mdlQM1tBcE1pZ2YrzGx57HbRBX6z7Yxdl7op8F9gppnNIyhMxxHcIGBr\npsYgIpIILydOSTiY2TSCe3jnOueKXndW0ix2H/XnCf7A8nVUI+uzmNkLQBegtXPuQ59ZJPz0M5Vs\noPfnQCR/Qc3sADN70cwWxz5Gm9mBnrI0MbNnzGyhmc03swVm9qiZVfeRp1Cu8wl+Abz9lWJm55vZ\nh2b2mZn9y8xmmtmfPOQ4wczeLfQz+tTMLkrz9zwPmA7ksvu+wspm9nhsHi8wswlmltIbViSSxcyO\nMLOHzeyL2Gu00MyGF+4rz1SWIs8/gaBATfk8TiaLmbU2s0mxubws9hpdn+pM6RambWc6JDu/sklY\n32tSxcwON7OHYr9jn5nZktj7x5m+s6VaGN6fU8nMcs1sg5nNifOx725Xds5F6gMoS3AFgFcIivAc\ngl6spUAlD3kWE7QmVIg9rgMsApYA5T2+RsuAd4B84BAPGfoStHkcGntcGngReC7DOXKBtcAIICe2\n7PLY63JOGr9vwRvlcCB/N897F/iwYK4AA4HvgTqZzEJwWPhDYL/Y431jj78Hamb6dSn0/A+At2M/\nr1aefkYXAF8DjQstux94P13zJ01zMlTbzjSNMan5lU0fYXyvSfH4rgK+Ag6LPTbgXoLb/ab0d9/z\nOL2/P6dhTLnA1L1ZN4p7UrsTXGrlJudcvnMuH7gJOAy4wkOe/FiWTQDOudXAYKAe4OsvwCsJLjUz\n08c3N7Nc4D7gaufcvwGcc9sJTuB4YtdrpsWZQBXg4dhcwTn3FMEdzP6Yxu/bwgU9grtkZu2A3wN3\nOOc2xxYPAkoBt2YyC8Ff9Hc5534CcM6tBe4iuANc1wxnAcDMziUopF5L4fdPKouZVQGeJPgZFe6J\nv4/su9Vo2Lad6ZDw/MpCYXyvSaVVwJ3OueUALqh+HiDYBpztM1iKeX1/DpsoFqnnA/8uvCFyzn1H\nsNfufA95Ghf8UhXyTezfqpkOY2b7ExSDt7CLM4Mz4BKCv37fL7zQOfeNc25WhrNsj/2786ST2GV7\nShFcdzctYhvYPTkf2Ar8X6H1thHsDUrZXE4wSyfn3PtFlqV8HieYhdhJQvcDN5CmeZxglnOA/Qn2\nehRed61zblo6cqVR2LadKZfo/MpSoXqvSTXn3Bvut7fvLThU/EOm86RDSN6fQyWKRWpjYEWc5Sv5\n9WLWGRPbQ1hUfYI9Uyk9ySNBdwCjnHNfefjeBU4h+Kv4TDObGuuhmmFml3rI8k+Cw2S3mVml2OXQ\nbiUoUP/mIU9hjYHVcebQSqBmJnvNdjOPIbjVZqZdCcxxzn3q4XsXdgqwBahrZu/F+gBnmdmNsbmU\nTUK17ZTkhPC9Jq1ivdJPALPI/BG4dAnD+3O61DSzUWb2Sayf+EUzO2ZPK/m641Q6VSe4/EpR64CK\nZlbOObclw5l2MrNSQC/gWefclxn+3vWAPxD/bl+ZdHDs4y6gs3NudeyEhlfMrJZz7t5MBXHOrTez\n0wl61H4ENhBcoucs59zcTOXYhd3NZYBqBJl96UNwA42ie1jTysz2A/oTFIi+HUywHR1O0MO82Mxa\nEfTJ1iN4jbJFqLedkhyf7zXpZGaHAxMI2lDGA+c65zb4TVV8IXp/TocdBEctH3bOzYm1ST0GfGJm\np7oit7IvLNv+0k9E2A/n3E6w5+U6D9/7AeA+51y8N6JMKg9UAAbE+qZwzo0F3gRuNbMKmQpiZg0I\nen9WEJwUVIPgr9nJZnZxpnJkGzPrARxF0MeYabcDL4Wkt7A8QWvIw865xQAuuAzWM0CvWP91tgj7\ntlOS4/O9Jm2cc/9yzh1BcKh/GTDPgptXZLuwvD+nnHPuK+dcY+fcnNjj9cCfgY0EJ7/tUhSL1B8J\nToQpah9go+e9qD0JzgTuUNDcnsHv3RJoSHCSx28+ncksBHtrHFB0T+VcoCJB8ZMpgwjmxrUFJyc5\n514h+Ev9H/a/F0jPtN3NZYA1Gcyyk5m1J9gL3j7Ws5jJ7304cDFwT7xPZzJLTMEbSry5bMDvMhun\nWEK77ZTk+HyvyRTn3HrnXF+C2/kO9Z2nOEL2/pwRsffbL4Bmu3teFA/3zyf+7vK6BLdi9cLMLgGu\nJ7irlo9DtG0J9vjMtF9v510r9u94M9sK3OKcy8StERcDx/LbP5J2xP7N5B9PjYBVcd6AlxGcFJMb\n+78P84Hjzax0kX6zusC3PuaRmbUluHVxe0+HEE8DNgNTC83j/WP/PmtmG4DH4pxgkS6Lgc6EYy4X\nVyi3nZKcELzXpIWZlS90lZPCvgDON7MysRNLs1GY3p9Tzsz2ATbF+fnsYA/byGzagCZqLHBo4YuM\nm1lNgo3vGB+BLLhAfX/gdOfc97FlHc2sd6YyOOfudM4d4Zw7ruCDX/9q6xBblqlfgLdi/zYusvwY\n4BdgQYZyQPBXeJ1Y/1ZhhxJc0iUTZ43u6jDrGIKrDuw8lGVmZWOP0zWXd3djgdOBpwjmy9LYsuPN\n7I5MZXHOPeucq1tkHhd8/16xZekoUHf1uuxuLjtgl71WIRS6bWeaRa69IQzvNWn0npnF2+uWC6zN\n4gI1bO/P6fB3ilwhJPZe1giYvbsVo1ikDif4q/8BMysVO8P2fmA5wR6gjDKzrgT9acOB9mb2p9iG\npBPBxZZ9siL/ZsorBH2gd8b+wsLMWhBM4r9m+PDUYwSHMwcWLDCz04BzgReccz9nIEPc1985N4mg\n7WBQoT7dAQRXHkjXyWVxs5hZG4KC7CWgaaF5fB7BnraMZdnN89I5j3f1M/oIeB24wYLbbWJmRxGc\nMPVsSPpmEzWcEG07MyBSh1FD/l6TCg64O3aZJixwDXACQREUNb7en9PBATeaWS3YeVLfYIKTf+/e\n3YoWxcvGmdkBwCMEk9cRbHivc8597SHLGoJr1BWdaA642zk38LdrpT3TOQSvT1WCAm01sM05d1gG\nM+xH0Cj+e2ATQYP/351zwzKVoVCW9sDNBIdXthPsQR0OPL6Ly7qk4nsOBToQnFFdEfgPwZxoUHiP\ngJlVInid2hEcGvmKYC4vymQWM5sFNCH+PB7hnEvJ5cMSfV1izz2B4A47lQkO+X9PMJdaFJyQl4ks\nZlae4I+cPxC0IkBwb/jB2XZdzjBtO9MhmfmVbcL4XpNKZnYKcBlwIsF2ujxBH/VQ59w/fWZLpTC8\nP6da7FJTlwMtY4uqE1x/+a/OuQ92u26WbUNFREREpASI4uF+EREREclyKlJFREREJHRUpIqIiIhI\n6KhIFREREZHQUZEqIiIiIqGjIlVEREREQkdFqoiIiIiEjopUEREREQkdFakiIiIiEjoqUkVEREQk\ndFSkioiIiEjoqEgVERERkdBRkSoiIiIioaMiVURERERCp7TvACK+mVkF4GpgM3Ai8CTQDDgZuMM5\nt9BjPBGRUNK2U9LNnHO+M4h4ZWb9gcecc5vM7A1gHXApsAa4wDk3yWtAEZEQ0rZT0k17UqVEMzMD\npjvnNsUWNQCud85tB/b1l0xEJLy07ZRM0J5UkRgzOxBYAeznnNvoO4+ISDbQtlPSRSdOSYlnZgW/\nB6cDswo2smbWwl8qEZFw07ZT0k1FqpRoZnYBsDr28BxgaWx5ZeAUX7lERMJM207JBB3ulxLNzJoB\n1wOfAB8TnKn6AVAReMI5t9ljPBGRUNK2UzJBRaqIiIiIhI4O94uIiIhI6KhIFREREZHQUZEqIiIi\nIqGjIlVEREREQkdFqoiIiIiEjopUEREREQkdFakiIiIiEjoqUkVEREQkdFSkioiIiEgzgsqZAAAA\nB0lEQVTo/D9EAVodDt65OwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(11,8))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls='-', lw=2)\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_leapfrog[idx_ground_leapfrog-1]), fontsize=18);\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls=':', lw=2)\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about the observed order of convergence? We'll repeat the process we have used before, with a grid-refinement ratio $r=2$ ... here we go:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 2.186\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " u[1] = rk2_step(u[0], f, dt)\n", + " for n in range(1, N-1):\n", + " u[n+1] = leapfrog_step(u[n-1], u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical evidence that our calculation with the leapfrog method indeed exhibits second-order convergence, i.e., the method is ${\\mathcal O}(\\Delta t^2)$. _The leapfrog method is a second-order method_. Good job!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### But chew on this ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Go back to the cell that re-enters the model parameters, just above the leapfrog-method time loop, and change the following: the initial height `y0` to 25, and the final time `T` to 36. Now re-run the leapfrog calculation and the two code cells below that, which extract the glider's position and plot it.\n", + "\n", + "_What is going on?_\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tobies, R. \"Iris Runge: A life at the crossroads of mathematics, science and industry,\" Springer Basel, 1st ed. (2012). [Read on Google books, page 73](http://books.google.com/books?id=EDm0eQqFUQ4C&lpg=PA73&dq=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&pg=PA73#v=onepage&q=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&f=false)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/README.md b/01_phugoid/README.md new file mode 100644 index 0000000..c7c2701 --- /dev/null +++ b/01_phugoid/README.md @@ -0,0 +1,43 @@ +#Module 1: The phugoid model of glider flight. + +##Summary + +The phugoid model motivates the learning of numerical time integration methods. The model is described by a set of two nonlinear ordinary differential equations, representing the oscillatory trajectory of an aircraft subject to longitudinal perturbations. + +* [Lesson 1](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) presents the physics of phugoids in the assumption of zero drag (following Lanchester, 1909). Plotting the flight path gives fascinating curve shapes. +* [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) develops a single-equation model for zero-drag oscillations, leading to simple harmonic motion. The lesson defines initial-value problems, demonstrates Euler's method, and uses the exact solution to study the numerical convergence. +* [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) develops the full phugoid model and solves it with (vectorized) Euler's method. In the absence of an exact solution, the study of convergence uses a grid-refinement method, obtaining the observed order of convergence. The lesson ends with the paper-airplane challenge. +* [Lesson 4](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_04_Second_Order_Methods.ipynb) starts with the screencast "Euler's method is a first-order method" and develops second-order methods: explicit midpoint (modified Euler) and Runge-Kutta. It ends with a grid-refinement study. + +##Badge earning + +Completion of this module in the online course platform can earn the learner the Module 1 badge. + +###Description: What does this badge represent? + +The earner completed Module 1 "The phugoid model of glider flight" of the course "Practical Numerical Methods with Python" (a.k.a., numericalmooc). + +###Criteria: What needs to be done to earn it? + +To earn this badge, the learner needs to complete the graded assessment in the course platform including: answering quiz about basic numerical Python commands; answering quiz about basics of initial-value problems; completing the individual coding assignment "Rocket flight" and answering the numeric questions online. Earners should also have completed self-study of the four module lessons, by reading, reflecting on and writing their own version of the codes. This is not directly assessed, but it is assumed. Thus, earners are encouraged to provide evidence of this self-study by giving links to their code repositories or other learning objects they created in the process. + +###Evidence: Website (link to original digital content) + +Desirable: link to the earner's GitHub repository (or equivalent) containing the solution to the "Rocket flight" coding assignment. +Optional: link to the earner's GitHub repository (or equivalent) containing other codes, following the lesson. + +###Category: + +Higher education, graduate + +###Tags: + +engineering, computation, higher education, numericalmooc, python, gwu, george washington university, lorena barba, github + +###Relevant Links: Is there more information on the web? + +[Course About page](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) + +[Course Wiki](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/wiki/GW.MAE6286.2014_fall/) + +[Course GitHub repo](https://github.com/numerical-mooc/numerical-mooc) diff --git a/01_phugoid/Rocket_Assignment.ipynb b/01_phugoid/Rocket_Assignment.ipynb new file mode 100644 index 0000000..2839d18 --- /dev/null +++ b/01_phugoid/Rocket_Assignment.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Coding Assignment: Rocket" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equations of motion for a rocket in purely vertical flight are given by\n", + "\n", + "\\begin{align}\n", + "\\frac{dh}{dt} &= v\\\\\n", + "(m_s+m_p) \\frac{dv}{dt}& = -(m_s+m_p)g + \\dot{m}_pv_e - \\frac{1}{2}\\rho v|v|AC_D\n", + "\\end{align}\n", + "\n", + "$h$ is the altitude of the rocket\n", + "\n", + "$m_s = 50kg$ is the weight of the rocket shell\n", + "\n", + "$g = 9.81 \\frac{m}{s^2}$\n", + "\n", + "$\\rho = 1.091 \\frac{kg}{m^3}$ is the average air density (assumed constant throughout flight)\n", + "\n", + "$A = \\pi r^2$ is the maximum cross sectional area of the rocket, where $r = 0.5 m$\n", + "\n", + "$v_e = 325 \\frac{m}{s}$ is the exhaust speed\n", + "\n", + "$C_D = 0.15 $ is the drag coefficient\n", + "\n", + "$m_{po} = 100 kg$ at time $t = 0$ is the initial weight of the rocket propellant\n", + "\n", + "The mass of the remaining propellant is given by:\n", + "\n", + "$$m_p = m_{po} - \\int^t_0 \\dot{m}_p d\\tau$$\n", + "\n", + "where $\\dot{m}_p$ is the time-varying burn rate given by the following figure:\n", + "\n", + "Propellant Burn Rate\n", + "\n", + "![burn rate](./burn.rate.png)\n", + "\n", + "Using Euler's method with a timestep of $\\Delta t=0.1s$, create a Python script to calculate the altitude and velocity of the rocket from launch until crash down. \n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assessment:\n", + "\n", + "To check your answers, you can register for [MAE 6286: Practical Numerical Methods with Python](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about).\n", + "\n", + "1. At time $t=3.2s$, what is the mass (in kg) of rocket propellant remaining in the rocket?\n", + "\n", + "2. What is the maximum speed of the rocket in $\\frac{m}{s}$?\n", + " At what time does this occur (in seconds)? \n", + " What is the altitude at this time (in meters)? \n", + " \n", + "3. What is the rocket's maximum altitude during flight (in meters)? At what time (in seconds) does this occur?\n", + "\n", + "4. At what time (in seconds) does the rocket impact the ground? What is the velocity of the rocket (in $\\frac{m}{s}$) at time of impact?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Derivation of the rocket equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you are kind of confused about the rocket equations, here we show how to get to them. \n", + "\n", + "Newton's second law states that the acceleration of the vehicle times its mass is equal to all the forces acting on it. Therefore,\n", + "\n", + "\\begin{equation}\n", + "(m_s + m_p)\\frac{d\\bf{v}}{dt}=\\sum {\\bf F}.\n", + "\\end{equation}\n", + "In the above formula we have assumed that the propellant inside the rocket and the rocket move at the same velocity (in other words, their relative velocity is negligible). \n", + "\n", + "Two of the external forces acting on the rocket are,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_g&= (m_s+m_p)\\bf{g} \\quad (\\rm{Gravity}),\\\\\n", + "{\\bf F}_d&= - \\frac{1}{2} \\rho_a \\mathbf{v} |\\mathbf{v}| A C_D \\quad (\\rm{Drag}).\n", + "\\end{align}\n", + "\n", + "We also need to consider the force resulting from the ejection of the propellant. During an interval $dt$, the engine of the rocket ejects downwards a mass of propellant given by $\\dot m_p dt$. Relative to the rocket, the speed of the ejected burning gas is assumed constant and equal to $v_e$ (the exhaust speed). The momentum variation induced on the exhaust gas by the engine during that interval is therefore, $d{\\bf p}_{gas} = \\dot m_p {\\bf v}_e dt$. Again using Newton's second law we conclude that the force applied by the rocket on the gas is,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_{rocket\\rightarrow gas} = \\frac{d{\\bf p}_{gas}}{dt} = \\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n", + "Using Newton's third law (|action| = |reaction|), the force exerted by the exhaust gas on the rocket is then,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_{gas\\rightarrow rocket} = -{\\bf F}_{rocket\\rightarrow gas} = -\\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n", + "If we collect all the forces acting on the rocket we finally have:\n", + "\n", + "\\begin{align}\n", + "(m_s + m_p)\\frac{d\\bf{v}}{dt}=(m_s+m_p){\\bf g}- \\frac{1}{2} \\rho_a \\mathbf{v} |v| A C_D -\\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/01_phugoid/burn.rate.png b/01_phugoid/burn.rate.png new file mode 100644 index 0000000000000000000000000000000000000000..d2cd9359506696d386f80a02f1fcae91e597ffae GIT binary patch literal 11761 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 QnAt{jG<4OUow5o0AHj2&AOHXW literal 0 HcmV?d00001 diff --git a/01_phugoid/figures/glider_forces-lesson3.png b/01_phugoid/figures/glider_forces-lesson3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d73dd73285f165fc818e54bbf085a667bef3ea2 GIT binary patch literal 29182 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 literal 0 HcmV?d00001 diff --git a/01_phugoid/figures/glider_forces.png b/01_phugoid/figures/glider_forces.png new file mode 100644 index 0000000000000000000000000000000000000000..ac036d505fe1948aa1b5b29768b8dfd0765c1bf3 GIT binary patch literal 33331 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 n0FC~?KMz2Q{vX^uyQn1;x-o literal 0 HcmV?d00001 diff --git a/01_phugoid/figures/glider_forces_fbd.svg b/01_phugoid/figures/glider_forces_fbd.svg new file mode 100644 index 0000000..47a1d34 --- /dev/null +++ b/01_phugoid/figures/glider_forces_fbd.svg @@ -0,0 +1,465 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + + + + + + + + + + + + diff --git a/01_phugoid/figures/glider_forces_nodrag.png b/01_phugoid/figures/glider_forces_nodrag.png new file mode 100644 index 0000000000000000000000000000000000000000..969042c183bab07d991615d249a151cdfebd5efb GIT binary patch literal 16886 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 literal 0 HcmV?d00001 diff --git a/01_phugoid/figures/glider_forces_nodrag.svg b/01_phugoid/figures/glider_forces_nodrag.svg new file mode 100644 index 0000000..00942f4 --- /dev/null +++ b/01_phugoid/figures/glider_forces_nodrag.svg @@ -0,0 +1,368 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + diff --git a/01_phugoid/figures/oscillatory_trajectory.png b/01_phugoid/figures/oscillatory_trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7dca91eb93c970cd940912af2285310018f394 GIT binary patch literal 43076 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≧1 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 LWvL1YlfeH2FG<84V2$U;h4GH8eDs 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 literal 0 HcmV?d00001 diff --git a/01_phugoid/phugoid.py b/01_phugoid/phugoid.py new file mode 100755 index 0000000..0f99fd6 --- /dev/null +++ b/01_phugoid/phugoid.py @@ -0,0 +1,112 @@ +# Script to plot the flight path of the phugoid using Lanchester's model. +# It uses the sign convention and formulae provided by Milne-Thomson (1958). + +import numpy +from matplotlib import pyplot + +numpy.seterr(all='ignore') +''' +see http://docs.scipy.org/doc/numpy/reference/generated/numpy.seterr.html for explanation. ignore over/underflow errors that pop up in the radius_of_curvature function +''' + +def radius_of_curvature(z, zt, C): + """Returns the radius of curvature of the flight path at any point. + + Parameters + --------- + z : float + current depth below the reference horizontal line. + zt : float + initial depth below the reference horizontal line. + C : float + constant of integration. + + Returns + ------- + radius : float + radius of curvature. + """ + return zt / (1/3 - C/2*(zt/z)**1.5) + +def rotate(x, z, xCenter, zCenter, angle): + """Returns the new position of the point. + + Parameters + --------- + x : float + previous x-position of the point + z : float + previous z-position of the point. + xCenter : float + x-location of the center of rotation. + zCenter : float + z-location of the center of rotation. + angle : float + angle of rotation + + Returns + ------- + xCenter_new : float + new x-location of the center of rotation. + zCenter_new : float + new z-location of the center of rotation. + """ + dx = x - xCenter + dz = z - zCenter + # the following formulae take into account the orientation of the axes + xNew = dx*numpy.cos(angle) + dz*numpy.sin(angle) + zNew = -dx*numpy.sin(angle) + dz*numpy.cos(angle) + return xCenter + xNew, zCenter + zNew + +def plot_flight_path(zt, z0, theta0): + """Plots the flight path. + + Parameters + --------- + zt : float + trim height of the glider. + z0 : float + initial height of the glider. + theta0 : float + initial orientation of the glider. + + Returns + ------- + None : None + """ + # arrays to store the coordinates of the flight path + N = 1000 + z = numpy.zeros(N) + x = numpy.zeros(N) + + # set initial conditions + z[0] = z0 + x[0] = 0. + theta = theta0 + + # calculate the constant C + C = (numpy.cos(theta) - 1/3*z[0]/zt)*(z[0]/zt)**.5 + # incremental distance along the flight path + ds = 1 + + #obtain the curve coordinates + for i in range(1,N): + # minus sign for the second coordinate because the z-axis points downwards + normal = numpy.array([numpy.cos(theta+numpy.pi/2.), -numpy.sin(theta+numpy.pi/2.)]) + R = radius_of_curvature(z[i-1], zt, C) + center = numpy.array([x[i-1]+normal[0]*R, z[i-1]+normal[1]*R]) + dtheta = ds/R + x[i], z[i] = rotate(x[i-1], z[i-1], center[0], center[1], dtheta) + theta = theta + dtheta + + # generate a plot + pyplot.figure(figsize=(10,6)) + pyplot.plot(x, -z, color = 'k', ls='-', lw=2.0, label="$z_t=\ %.1f,\\,z_0=\ %.1f,\\,\\theta_0=\ %.2f$" % (zt, z[0], theta0)) + pyplot.axis('equal') + pyplot.title("Flight path for $C$ = %.3f" % C, fontsize=18) + pyplot.xlabel("$x$", fontsize=18) + pyplot.ylabel("$z$", fontsize=18) + pyplot.legend() + pyplot.show() + +# End of File diff --git a/lecture_22/.ipynb_checkpoints/lecture_22-checkpoint.ipynb b/lecture_22/.ipynb_checkpoints/lecture_22-checkpoint.ipynb new file mode 100644 index 0000000..8fdd6a6 --- /dev/null +++ b/lecture_22/.ipynb_checkpoints/lecture_22-checkpoint.ipynb @@ -0,0 +1,821 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![q1](q1.png)\n", + "\n", + "![q2](q2.png)\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Initial Value Problem\n", + "\n", + "## Euler's method\n", + "\n", + "$\\frac{dy}{dt}=f(t,y)$\n", + "\n", + "$y_{i+1}=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)$\n", + "\n", + "### 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": 6, + "metadata": { + "collapsed": false + }, + "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", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)| error (m/s)\n", + "-------------------------\n", + " 0.0 | 0.00\n", + " 7.1 | 26.67\n", + " 14.3 | 54.21\n", + " 28.6 | 33.62\n", + " 35.7 | 29.84\n", + " 42.9 | 82.85\n", + " 50.0 | 47.86\n", + "\n", + "O(h^2)=51.02\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\t-40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\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\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", + "\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", + "\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(8,50);\n", + "fprintf('\\nO(h^2)=%1.2f',min(diff(t).^2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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)dt=\\frac{f(t_{i})+f(t_{i+1})}{2}h$\n", + "\n", + "therefore the error is\n", + "\n", + "$E_{t}=\\frac{-f''(\\xi)}{12}h^3$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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": 102, + "metadata": { + "collapsed": false + }, + "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": 103, + "metadata": { + "collapsed": false + }, + "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": {}, + "source": [ + "This process can be iterated until a desired tolerance is achieved" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "n=0;\n", + "e=10;\n", + "while (1)\n", + " n=n+1;\n", + " yold=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));\n", + " e=abs(y(2)-yold)/y(2)*100;\n", + " if e<= 0.00001 | n>100, break, end\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 2.00000\n", + " 6.36087\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "dy_corr =\n", + "\n", + " 4.36087\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "n = 12\n", + "e = 6.3760e-06\n" + ] + } + ], + "source": [ + "y\n", + "dy_corr\n", + "n\n", + "e" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": false + }, + "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", + " 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": 121, + "metadata": { + "collapsed": false + }, + "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": 122, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 2.0000\n", + " 6.3609\n", + " 15.3022\n", + " 34.7433\n", + " 77.7351\n", + "\n", + "ans =\n", + "\n", + " 2.0000\n", + " 6.1946\n", + " 14.8439\n", + " 33.6772\n", + " 75.3390\n", + "\n" + ] + } + ], + "source": [ + "y\n", + "y_an(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "collapsed": false + }, + "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 + }, + "source": [ + "# Phugoid Oscillation example\n", + "\n", + "[phugoid lessons in python](" + ] + } + ], + "metadata": { + "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/lecture_22/.ipynb_checkpoints/lecture_22_python-checkpoint.ipynb b/lecture_22/.ipynb_checkpoints/lecture_22_python-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/lecture_22/.ipynb_checkpoints/lecture_22_python-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_22/01_phugoid/.gitignore b/lecture_22/01_phugoid/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/lecture_22/01_phugoid/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/lecture_22/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb b/lecture_22/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb new file mode 100644 index 0000000..902854f --- /dev/null +++ b/lecture_22/01_phugoid/.ipynb_checkpoints/01_01_Phugoid_Theory-checkpoint.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, C. Cooper, G.F. Forsyth, A. Krishnan." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Motion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to [**\"Practical Numerical Methods with Python!\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) This course is a collaborative, online, open education project, where we aim to give a foundation in scientific computing. The focus is on numerical solution of problems modeled by ordinary and partial differential equations.\n", + "\n", + "This IPython Notebook introduces the problem we'll be studying in the **first module** of the course: the _phugoid model of glider flight_. We'll start with some background, explaining the physics, and working out the mathematical model. \n", + "\n", + "First, we'll look at an idealized motion where there is no drag, resulting in a simple harmonic motion. We can plot some interesting trajectories that will pique your imagination. In the next notebook, you'll learn to numerically integrate the differential equation using Euler's method. But hang on ... first things first. \n", + "\n", + "The term \"phugoid\" is used in aeronautics to refer to a motion pattern where an aircraft oscillates up and down —nose-up and climb, then nose-down and descend— around an equilibrium trajectory. The aircraft oscillates in altitude, speed and pitch, with only small (neglected) variations in the angle of attack, as it repeatedly exchanges kinetic and potential energy.\n", + "\n", + "A low-amplitude phugoid motion can be just a nuisance, as the aircraft does not exceed the stall angle of attack and nothing bad happens. But the mode can also be unstable leading to a stall or even a loop!\n", + "\n", + "Look at this video showing a Cessna single-engine airplane in phugoid motion:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQED\nEQH/xAAaAAACAwEBAAAAAAAAAAAAAAACAwABBAUG/8QAQBAAAgIBAwEDCAgFBAIDAQEBAQIAAxEE\nEiExE0FRBRQiMmFxgZEjQlJTcpKhsRUzYsHRBkOC4SRjovDxNMIW/8QAGQEBAQEBAQEAAAAAAAAA\nAAAAAAECAwQF/8QAKBEBAAIBBAICAQQDAQAAAAAAAAERAgMSMVETIUFhBCJSgaEyYnEU/9oADAMB\nAAIRAxEAPwBlFdfYp9GnqjuEcKqvu0/KJKax2Nf4R+0PYRPpxEU8coKaj/tp8oa01/dp8oPIlhyI\nqCzeyr+6r/KJfY0/cp+UQFsEMWCZ2ra+yp+7T8oliuof7SflkyDB57o2wWaqUfdp+UQxXQf9tPyi\nZt57xJvPuk2ltfYUn/bT8ok7Cn7pPyiZO1Yd8IXtG0to7CodKk/KJDVWf9tPyiKF5MMOTJtLEtVQ\n/wBqv8olGmvORUn5RJuMm4xULYjXSRg1Jn8IgCmjPNSflEvcZecxUFgfT6furT8ok7Cnb/Lr/KIR\nJlFj4RSWUdPVn+Un5RJ2FQ/20/KIRfxEE2CWi1dnV91X+USdjT92n5RL3r3S+090UWX2NP3SflEr\nsqvu0/KI4FD1/SUwTuYy1BZRqq+6T8ogNp6T/tp+URpU9xEEhx3RUJZLaav7tPyiLOnr+7X5TTk+\nEHM0WzHTp92v5RKFNf3a/lmk+6TEIQKqe+tPkIxaqs/yk+Qh9lmEtWIqF9qFFP3afljFop+7T8ol\npXHKoHSZmlL83p7qk/KJR09XdUn5RNG2Q5EgStNXfWn5RD83p+6T8olk5lB8SUWIU1D/AGk/KIa1\n1fdJ+USltHfGKymSltBVV90n5RC7Kr7pPyiECJczRYOwp+6T8ok83q+6T8ohyRRYOwq+6T8ok7Cn\n7pPyiMzKigs0VfdJ+USjRT90n5RG5lEiKCeyo+6T8oldjV90n5RGnEA++WiwGqr7qv8AKJR09P3a\n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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('ysdU4mnRYdM')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That doesn't look too good! What's happening? \n", + "\n", + "It can get a lot worse when an aircraft enters one of these modes that is unstable. For example, one of [NASA's Helios Solar Powered Aircraft](http://www.nasa.gov/centers/dryden/history/pastprojects/Helios/) prototype broke up in mid air due to extreme phugoid oscillations!\n", + "\n", + "Helios was a proof-of-concept solar electric-powered flying wing that broke the world altitude record for a non-rocket-powered aircraft in August 2001. But in June 26, 2003, it broke something else. The aircraft entered phugoid motion after encountering turbulence near the Hawaiian Island of Kauai. The high speed in the oscillatory movement exceeded the design limits, and it ended up wrecked in the Pacific Ocean. Luckily, the Helios was remotely operated, and nobody got hurt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The physics of phugoids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The phugoid oscillation has the aircraft pitching up and down, as it decelerates and accelerates. The trajectory might look like a sinusoid, as in the figure below. The assumption is that the forward velocity of the aircraft, $v$, varies in such a way that the angle of attack remains (nearly) constant, which means that we can assume a constant lift coefficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/oscillatory_trajectory.png)\n", + "#### Figure 1. Trajectory of an aircraft in phugoid motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the descending portion of the trajectory, the aircraft's velocity increases as it proceeds from a peak to the minimum height—gaining kinetic energy at the expense of potential energy. The contrary happens in the upward segment, as its velocity decreases there.\n", + "\n", + "We measure the pitch angle (between the aircraft's longitudinal axis and the horizontal) as positive when the aircraft's nose is pointing up. In the portion of the trajectory below the center-line, where it curves upwards, the pitch angle $\\theta$ is increasing: $\\dot{\\theta}>0$. And where the trajectory curves down, the pitch angle is decreasing: $\\dot{\\theta}<0$, as shown in the figure.\n", + "\n", + "Let's remind ourselves of the forces affecting an aircraft in a downward glide. Look at the figure below: we show the flight path, the forces on the glider (no thrust), and the _glide angle_ or flight path angle, $\\gamma$, between the flight path and the horizontal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces.png)\n", + "#### Figure 2. Forces on a glider." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The force of lift, $L$ —created by the airflow around the wings— is perpendicular to the trajectory, and the force of drag, $D$, is parallel to the trajectory. Both forces are expressed in terms of coefficients of lift and drag, $C_L$ and $C_D$, respectively, that depend on the wing design and _angle of attack_—the angle between the wing chord and the flight path.\n", + "\n", + "If you are not familiar with airplane aerodynamics, you might be getting confused with some terms here ... and all those angles! But be patient and look things up, if you need to. We're giving you a quick summary here.\n", + "\n", + "Lift and drag are proportional to a surface area, $S$, and the dynamic pressure: $1/2 \\rho v^2$, where $\\rho$ is the density of air, and $v$ the forward velocity of the aircraft. The equations for lift and drag are:\n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "If the glider were in equilibrium, the forces would balance each other. We can equate the forces in the directions perpendicular and parallel to the trajectory, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "L = W \\cos \\gamma \\quad \\text{and} \\quad D = W \\sin \\gamma\n", + "\\end{equation}$$\n", + "\n", + "where $W$ repesents the weight of the glider.\n", + "\n", + "In the figure, we've drawn the angle $\\gamma$ as the _glide angle_, formed between the direction of motion and the horizontal. We are not bothered with the _sign_ of the angle, because we draw a free-body diagram and take the direction of the forces into account in writing our balance equations. But later on, we will need to be careful with the sign of the angles. It can cause you a real headache to keep this straight, so be patient!\n", + "\n", + "It looks like we've set this up to do a little bit of mathematics. Are you ready?\n", + "\n", + "But before, a short glimpse of the history." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanchester's Aerodonetics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Phugoid theory\" was first described by the British engineer Frederick W. Lanchester in _\"Aerodonetics\"_ (1909). This book is so old that it is now in the public domain, so you can actually download [from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&dq=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&pg=PA37#v=onepage&q=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&f=false) a PDF file of a scan, or read it online. \n", + "\n", + "Lanchester defines phugoid theory as the study of longitudinal stability of a flying machine (aerodone). He first considered the simplification where drag and moment of inertia are neglected. Then he included these effects, obtaining an equation of stability. In addition to describing many experiments by himself and others, Lanchester also reports on _\"numerical work ... done by the aid of an ordinary 25-cm slide rule.\"_ Go figure!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ideal case of zero drag" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we follow the derivation given by Milne-Thompson (1966), which we find a little bit easier than that of the original in \"Aerodonetics\"!\n", + "\n", + "An aircraft flying in a steady, straight horizontal flight has a lift equal to its weight. The velocity in this condition is sometimes called _trim velocity_ (\"trim\" is what pilots do to set the controls to just stay in a steady flight). Let's use $v_t$ for the trim velocity, and from $L=W$ deduce that:\n", + "\n", + "$$\\begin{equation}\n", + "W = C_L S \\times\\frac{1}{2} \\rho v_t^2\n", + "\\end{equation}$$\n", + "\n", + "The weight $W$ is constant for the aircraft, but the lift at any other flight condition depends on the flight speed, $v$. We can use the expression for the weight in terms of $v_t$ to obtain the ratio $L/W$ at any other flight velocity, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}= \\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "Imagine that the aircraft experienced a little upset, a wind gust, and it finds itself off the \"trim\" level, in a curved path with an instantaneous angle $\\theta$. In the sketch below, we exaggerate the curved trajectory of flight to help you visualize what we'll do next. The angle $\\theta$ (using the same name as Milne-Thompson) is between the _trajectory_ and the horizontal, positive up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "#### Figure 3. Curved trajectory of the aircraft going up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can form a free body diagram to determine the balance of forces. \n", + "\n", + "\n", + "\n", + "#### Figure 4. Free body diagram of the aircraft trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the free body diagram, we can see that\n", + "\n", + "\\begin{equation}\n", + "\\vec{L} + \\vec{W} = m\\vec{a} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "where $\\frac{v^2}{R}$ is the centripetal acceleration and $R$ is the radius of curvature of the trajectory.\n", + "If we decompose the lift and weight into their normal and tangential components we get\n", + "\n", + "\\begin{equation}\n", + "L\\hat{n} + W_n\\hat{n} + W_t\\hat{t} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "The component of the weight in the normal direction ($W_n$) is\n", + "\n", + "\\begin{equation}\n", + "W_n = -W \\cos \\theta\n", + "\\end{equation}\n", + "\n", + "If we then consider that all of the components in $\\hat{n}$ must balance out, we arrive at\n", + "\n", + "\\begin{equation}\n", + "L - W \\cos \\theta = \\frac{mv^2}{R}\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can rewrite this as\n", + "\n", + "$$\\begin{equation}\n", + "L- W \\cos \\theta = \\frac{W}{g} \\frac{v^2}{R}\n", + "\\end{equation}$$\n", + "\n", + "where $g$ is the acceleration due to gravity. Rearrange this by dividing the equation by the weight, and use the expression we found for $L/W$, above. The following equation results:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{v^2}{v_t^2}-\\cos \\theta = \\frac{v^2}{g R}\n", + "\\end{equation}$$\n", + "\n", + "Recall that we simplified the problem assuming that there is no friction, which means that the total energy is constant (the lift does no work). If $z$ represents the depth below a reference horizontal line, the energy per unit mass is (kinetic plus potential energy):\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{2}v^2-g z = \\text{constant}\n", + "\\end{equation}$$\n", + "\n", + "To get rid of that pesky constant, we can choose the reference horizontal line at the level that makes the constant energy equal to zero, so $v^2 = 2 g z$. That helps us re-write the phugoid equation in terms of $z$ as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z}{z_t}-\\cos \\theta = \\frac{2z}{R}\n", + "\\end{equation}$$\n", + "\n", + "Let $ds$ represent a small arc-length of the trajectory. We can write \n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} \\quad \\text{and}\\quad \\sin\\theta = -\\frac{dz}{ds}\n", + "\\end{equation}$$\n", + "\n", + "Employing the chain rule of calculus,\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} = \\frac{dz}{ds}\\frac{d\\theta}{dz} = -\\sin \\theta\\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "Multiply the phugoid equation by $\\frac{1}{2\\sqrt{z}}$ to get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} - \\frac{\\cos\\theta}{2\\sqrt{z}} = \\frac{\\sqrt{z}}{R}\n", + "\\end{equation}$$\n", + "\n", + "Substituting for $1/R$ on the right hand side and bringing the cosine term over to the right, we get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} = \\frac{\\cos \\theta}{2 \\sqrt{z}} - \\sqrt{z} \\sin \\theta \\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "The right-hand-side is an exact derivative! We can rewrite it as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d}{dz} \\left(\\sqrt{z}\\cos\\theta \\right) = \\frac{\\sqrt{z}}{2z_t}\n", + "\\end{equation}$$\n", + "\n", + "Integrating this equation, we add an arbitrary constant, chosen as $C\\sqrt{z_t}$ which (after dividing through by $\\sqrt{z}$) gives:\n", + "\n", + "$$\\begin{equation}\n", + "\\cos \\theta = \\frac{1}{3}\\frac{z}{z_t} + C\\sqrt{\\frac{z_t}{z}}\n", + "\\end{equation}$$\n", + "\n", + "Taking the derivative of both sides of equation (15) and applying the relations from equation (10) yields:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z_t}{R} = \\frac{1}{3} - \\frac{C}{2}\\sqrt{\\frac{z_t^3}{z^3}}\n", + "\\end{equation}$$\n", + "\n", + "Make sure you have followed the derivation, and perhaps write it out on paper!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Phugoid Curves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equation (15) is non-linear, which usually means we are hard-pressed to write a clean expression for the variable of interest, $z$. In fact, Lanchester himself said that he was unable to _\"reduce this expression to a form suitable for co-ordinate plotting.\"_ If the great polymath couldn't do it, we can't either!\n", + "\n", + "But Lanchester _was_ able to plot a suitable approximation of the phugoid flight path using what he called the \"trammel\" method. If you're interested in seeing how he did it, his explanation begins on page [48 of Aerodonetics](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PA49&lpg=PA48&dq=aerodonetics+the+use+of+the+trammel&source=bl&ots=lB6EVKYQuT&sig=aVE2kiDWZoWftaWczMIrcYftMOs&hl=en&sa=X&ei=gTD_U82fGYjzgwT3moGwCQ&ved=0CCAQ6AEwAA#v=onepage&q=aerodonetics%20the%20use%20of%20the%20trammel&f=false). It's a trip.\n", + "\n", + "Lanchester used Equations (15) and (16) to solve for the constant $C$ and the radius of curvature $R$ and then iteratively plotted small arcs of the phugoid path. By hand.\n", + "\n", + "We wrote a neat little code that duplicates the manual trammel method, but it might be a bit much for you to absorb in the first lesson. If you want to look it over, you are more than welcome to. If you are just starting with Python, skip it for the moment and we'll return to it at the end of this module. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting the flight path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we mentioned, we wrote a Python code to reproduce programmatically what Lanchester did graphically. Here's a neat feature of IPython Notebooks: you can run external programs with the magical keyword ... wait for it ... `run`. And the jargon of IPython _is_ to call this \"magic.\" In fact, there are a bunch of [magic functions](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) that you will learn about. They will make you a happy camper.\n", + "\n", + "Let's do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%run phugoid.py\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code cell loaded our simulated-trammel code, `phugoid.py`. The code defined a function for you in the background, called `plot_flight_path`, taking three inputs: $z_t$, $z$ and $\\theta$. \n", + "\n", + "Look again at Equation (15), where we take the positive square root. There are several possibilities, depending on the value that the constant $C$ takes. \n", + "\n", + "* There are no physical solutions for $C>2/3$, because it would result in $\\cos\\theta>1$. \n", + "\n", + "* If $C=2/3$, then the solution is a horizontal straight line, because $\\cos\\theta=1$, $\\theta=0$ and $R=\\infty$.\n", + "\n", + "* Any value of $C$ for which $0 < C < \\frac{2}{3}$ will produce \"trochoidal\"-like paths. What does this look like? Let's use our custom function `plot_flight_path` to find out!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnwAAAGXCAYAAAApho2KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX+//HXh0BQBOkdAZFeliZIlWABpAj4U7CDYlls\n2GiWBf26IgprV1RwARERFhBcKQEhUhYQBMFFSlBBepMmCKSc3x8zzE5iAukzuXk/H495ZObMzZ3P\nIUPynnPuudecc4iIiIiId+ULdQEiIiIikr0U+EREREQ8ToFPRERExOMU+EREREQ8ToFPRERExOMU\n+EREREQ8ToFPRERExOMU+EREREQ8ToFPJBczs3Zmlmhmd5+vLZ377OP//quzrtLQy6p+mVlVM/vC\nzA749/dxVtUoIpJdFPhEwlBQaEvplmBmzYM2T+lyOZm9hE6av9/MGprZMDOrnMnXzLQ01JIVlxaa\nALQFRgB3Ah9kwT6znJkVyOHXMzN7wsw2mdkfZvarmY0ys0IZ3N/FZvaz/z3/VirbpPZ/5HgK215i\nZs+Y2QYzO25mB81suZn1yUh9IrlN/lAXICLnNRmYk0L7tqD7FvyEc+4bM7sYiMvOwoI0AoYBi4Ff\nc+g1Q1KLmUUCbYC3nHOvZ/X+01nLFcADQEPgmP92FF8QbYyvzhdzsKQ3gEeB6cAooA7wGL6fyXUZ\n2N//ASW5cEhfAnyYrC3Je9/MDJgHtADGA28BhYDbgH+aWW3n3NAM1CiSayjwiYS3tc65yen9Jufc\n2ewoJhVG1oycZYXsrqWc/zWOZOVOzSwfUNA590cats2PL9TdDDwJDHH+i6KbWSngfeAGoHtW1niB\nmuoCjwD/cs71CmrfDrxlZrc656akY39NgAHAQOAfF9j85zT8H7kKaA38wzn3dNDrvAdsAR4EFPjE\n0zSlK+IxqR3DZ2ZVzGy6mR3z32b627ab2aIUdpXPzJ42s21mdtrMtqSwz2HAuWPYYoKm1FI9ri3o\nWLprzWy4//VPm9l6M+udwvaFzewlM1vpn4Y7bWaxZjbCP5KZ3lou2K9U6v4nsB1foBweNL1+tf/5\nkmb2rn8q84z/6ztmVuI8/X/ezLYBfwC3pKGGgkA00BVo5pybeS7sATjnDuEbYcsHLL/Q/rLQ7f6v\nbyRr/wg4hW/qO0384fcjfCPbM9P4PQXM7JLzbHKp/+ve4EbnXDxwCDiZ1vpEciuN8ImEt0JmVjJZ\n2xnn3O8X+L4ko1z+0LEMKI1vBGgzvuPQYoCLk38zvlGsEcBFwBjgDNAf3/RXrHNuhX+76UB54H7g\nJf9+AX66YM9gJL5ptXf9j+8BPjOzgs65iUHbVQTu9b/Wp0A80A4YhG+68IZ01JLWfqVkDLAOX6iZ\n4b8BbDKzS4EVQDVgnH+7xv59tzez5s655KFiFL7fwR8Cx/GNNF3IBKA50NAf7lKyHljinEtxSt8/\nvVkipedS8VtwqEzFlUAisDq40Tl3xsy+B5ql4/WeBGoCPUjboMTNwF1AhJkdBD4HnnPOBR/H9y2+\n6e5BZrYDWIXvvdcXaIJvhE/E25xzuummW5jd8AWaRCDB/zX4NjmF7e6+QNur/n3dmux1Rvq3XRTU\n1sff9h0QEdReATgNfJpsH338+746jX07t/9fgMJB7ZfiG0E7hG9681x7/uA6gtpf9L/ulWmpJb39\nSqX2Kv59/C1Z+9/9r/tgsvaH/Nu/kEIdm4L7mYbX7ur/vhcvsN1lwO1p6ENabglA5TTUtgHYm8pz\nn/v3kz8N+7kc+B14Olmtb6Wy/QrgCeBGfKOIk/3bfw8USrZta3wfAoL7dxS4Mav+3+qmWzjfNMIn\nEt4+BKYla9uXgf10xfcHOflxVKPwHSeVknedcwnnHjjn9pjZVqBGBl4/Je+5oJFK59xxMxuDLzxF\nAfP97fHntjGzCKAIEAF8DTyH7/isNel43ezoVw/gIL6pyGAf4FtE0tP/Ndh7zrkz6XiNJ/CFlHfP\nt5Fzbie+4JOafaRvEUVa3m+F8I2WpuR00DZ/Wj2bzBh8C5LStCDGOdcyWdMkM/sB33toAL7R3HNO\nAv8FZgH/wTfK+TC+UeUbnXNfp+U1RXIrBT6R8BbrnEvp+Lr0uhzfNFYSzrmDZnY0he0dvhG45A4D\nWXH6Fcf/plyD/Yhv2rVacKOZPYRv2q0eSaf5HFA8na+bHf26HFjtnEtM8mLOJfjDZOMU6ohN6879\nQfdq4Afn3P5M1Ik/ZGbFeyrYKXyHC6TkoqBtUmVmdwLXAm2DA3kGvIYvXHfBH/jMrAG+kDfAORcI\n5WY2BV8I/MjMrnDOhcviI5Esp8AnIqlJ7Y+updKeLczsSXwjkfOAN4E9wFl8x/ZNIP2Lz8KiX1wg\nACVTCt+o5nlDov/4vPbn+5DgXxSRWjhLycHkQTYFe4A6ZlbA/fnYwYrAoeCR2hRqigRG41uoccB/\nyhmASv6vRf1th5xzx85XiHMu3sz24Ps3O+cJoCDwr2Tb/mFmX+Eb6atKyh8GRDxBgU8kb9gOVE/e\naGalgWKZ3HdGRkUM33navkzWXs+/v5+D2u4EfnHOdU6yA7OOWVRLVvgZqGVm+YLDkX9kriZJ+5MR\nh0h9yjTYuanl87mMtAcbh2/08kLnNFwNXI9vQUlgdbB/VXEjfIuDzudifCG0C77DD5LXcBe+98EF\nT9Pif81K+I7vO6eC/2tECt+SP9lXEU/SG1wkb/gSeMrMbnPOfRbUntrxe+nxO74Al56VnwD9zWyM\n86+mNLOiwF/xHUj/TdB2CYAzMzs35eY/F91Q/hzwMlpLZn3hr+c+kp4E+AH+tzI6w/xTw9OAa80s\nf0qjZea7ukhj59zfLrC77DiG73PgGeBxkp4O5gF8Ye7ToDrzA1cAp/zHG4Lv+LqbU9jvuX+7ucBY\n4Ieg/ZRwzv2Wwve8hC/YzQ5q+xHogG9V7qigfRTDF5KPkPRk5iKeo8AnkjeMxHeutH+a2VX877Qs\nrfCNCCUPTumZ3lyNbzHBs/7Tv5zENyL37QW+7xCwyn9+O8N3WpZKQD/n3Omg7f4FvAzMM7MZQFF8\nV0g4m0KdF6olu6ZtX8V3Hr13zawpvtOyNMF3OplN+I4rC5aROp7AF6bGmdmDwf9GZtYZ31Ukhl9o\nJ9lxDJ9z7r9m9i7wsJlNxzc1WxfflTdikn3IqIjv3yQGuMb//fH87zQ3AWZWxX/3J+dc8nPyPWdm\nLfjfVVUKA52B9vhG994J2vYN4G7gFTP7C75/x5L4AnpZ4CEdvydep8AnEr4caZuivOC1dJ1zh82s\nNb7jpO7xPx+D7w/ut/hO/Huhfaa2751mdg8wGHgPKIDv2LrzBT7n374tvlOXlAW24judyOfJtn3V\n/7Ufvj/c+4Ap+C6R9WNwPWmoJc39usB2yf8NjptZK+AFfKcI6Qvs99cw3P35HHzpDhf+n2FTfH1b\nYGY7gd/wrYKdn4aRvew2AN9U8QP4gtchfMdcJl+dDGl/b59v2xh8hwXcjS+8JeA7xnEo8LoLutqM\nc+5XM2sG/A3fwpDe+N7z3wNPOOdmpbEWkVzLwvlDjZlVAibi+2OQCHzknHvLzIrjm0Kogu/YpF7n\nDuQ1s6H4PlXH41uRFR2K2kVyA/8o2CFgjHPuoRx6zT74rojR3jm3JCdeU0Qkrwv3S6vFA0865+oB\nLfFNF9QGhgALnXO18E1NDIXA9Rx74fvUdwPwnn/VmkieZ2YXpdB87jg4fTASEfGwsJ7Sdc7tw3/A\nsHPudzPbhO8Yn+74riYAvumaGHwh8EZgiv94kO1mFotv1difzj8mkgfN8V9Wai2+D3vX4VsVuQzf\nyWhzkj6IiYjkoLAOfMHMrCq+5f0rgbLnTj7qnNtnZmX8m1Uk6VL83f42EfGt1L0b36rEi4Fd+BYT\nvBiCA9bD91gSEREPyhWBz8wK41upN8A/0pf8j4X+eIhcgHPuddJ4yapsrmMCvpF5ERHJIWEf+Pzn\nbPoX8EnQSqr9ZlbWObffzMoBB/ztu/GdVPScSv62lParkCgiIiK5hnMuw4fDhPuiDfCt5vvROfdm\nUNtsfKc9AOjD/44/mg3camaRZnY5visLpHpqCOdcnrsNGzYs5DWo3+q3+q1+q9/qt/qdvltmhfUI\nn/+8YXcAP5jZOnxTt8/gO4nsVDO7F9iBb2UuzrkfzWwqvnNzxaGTaYqIiIiEd+Bzzi0n5WsfQiqX\nBnLOjQBGZFtRIiIiIrlMbpjSlSwUFRUV6hJCQv3OW9TvvEX9zlvyar8zK6yvtJGdgq7DLiIiIhLW\nzAyXiUUbYT2lKyIiuUPVqlXZsWNHqMsQyfWqVKnC9u3bs3y/GuETEZFM848+hLoMkVwvtf9LmR3h\n0zF8IiIiIh6nwCciIiLicQp8IiIiIh6nwCciIiLicVqlKyIikkVOnjzJyJEjqVy5MseOHeOpp55K\n8vy6deuYP38+Q4YMSXUfs2bNYuPGjURERFChQgXuuuuu7C47Q9avX88nn3zCqFGjAm0X6n9y4d7X\n9NaX2vZh0c9QXxsuhNekcyIikjX0O9Xn3nvvdTt27HDOOVevXj23ffv2wHOJiYmuS5cu7oUXXkj1\n+48dO+aaNGkSeNyiRQt36NCh7Cs4g0aPHu169uzp7rnnniTt5+t/cpnp6/Lly924cePcqFGj3JEj\nRzLQgwtLb32pbZ/e/aT2f8nfnuHcoyldERGRLPDLL7+wZ88eKleuDEB0dDRVqlQJPD99+nTat29/\n3n0sWbKEevXqBR43bNiQxYsXZ0/BmfDkk0/SvXv3JG0X6n9yGe3rTz/9xPjx47n33nupXLky//rX\nvzLYi/NLb32pbR8uP1NN6YqIiPj9/PPPfPTRR0nOhXbuvpnRokULbrzxxhS/d9GiRRQtWpRJkyZx\n5MgRihQpQt++fQE4fPgw+fLlo1SpUpw8eTLV19+1axfFihULPC5WrBixsbFZ10G/zPQzNefrf0oy\n2tfBgwczdOhQALZu3UpERESq22amn+mtL7XtixcvniM/0wtR4BMRkWxlluFzxf7JuT/a6bV69WqG\nDx9OxYoVyZcvH506daJHjx5/2q5atWqMGDEiQ6+xf/9+Nm7cyJQpUwBo27Ytbdq0oXr16syYMYP7\n77+fCRMmnHcfR44c4aKLLgo8joyM5Pfff0/T66e1j5C5fqbmfP1PSUb6unfvXr799lu+++471qxZ\nw6RJk3j++edT3T4z/UxvfefbPqM/06ykKV0REfG8Zs2a8dVXX9GoUSMKFChAjx49eP3119m/f3+W\nvUaRIkVo0KBB4HHlypWJjo7m22+/5aqrrkrzPoJD7R9//EGJEiXS9L3J+xgVFcXIkSMZP3483333\nXfo6kwGp9f9826e3r4sWLaJr16488MAD3HXXXezZs4cOHTpkSz/TW19q22fmZ5qVNMInIiLZKqOj\nclnt5ZdfZv/+/bz99tuAbzqwbNmySbYJngIMlpYpwHr16rFs2bLA43z58pGQkMC3337LqVOnmDt3\nLsuXL+f06dPMnj07xf1cccUVrFmzJvD48OHDNGnSJEN9fP3112nfvj1NmjShT58+fPrpp1nSz9Sk\n1v/UZKSvO3fupE6dOoBv5Wvnzp355JNPsqWf6a0vte2LFSuWqZ9plsnMio/cfEMrykREsky4/059\n+eWX3bPPPuucc27jxo1u6dKl7oYbbnArVqzIstc4ffq0a9GiReBxq1at3LZt25JsM3z48CSrdH/6\n6SeXmJgYeHzy5EnXoEGDwOOGDRu6/fv3O+eci42NTbJtcsn7+PDDD7tff/3VOefcDTfckImepWz8\n+PGub9++gcfn63/yfjqXsb6OHTvWjR071jnnXOfOnd2OHTvcI488ki39PF996enP+faTktT+L5HJ\nVbrmwuSTV04zM5dX+y4iktVSu+B7OPjPf/7Db7/9RtGiRRk2bBjXXHMNd911F59//jmDBg3K0tea\nP38+y5cvxzlH7dq1ueOOOwLPTZs2jREjRmBmDB06lJtvvpkmTZowbtw4GjduHNhu0qRJbN++Hecc\n1apVC+yjTp06vPXWW1x//fVp6uO+fft45plnqFChAp07d2bOnDlZ1s933nmHqVOnsnPnTvr27cuT\nTz5JkSJFUu1/Sv3MSF+PHz/O888/T4MGDahfvz4tWrTg4Ycf5tlnn82WfqZWX3r7k1p7SlL7v+Rv\nz/ABsQp8IiKSaeEc+FIyefJkqlSpQuXKlbnssstCXU6aJCYm8s0331zw1C7nvP3227Rt25Y6derQ\nt29fPvvss2yuMOukp6+5uZ8pUeDLYgp8IiJZJ7cFvlmzZhEXF0ezZs3Oe664cDJ16lS6devGxRdf\nnKbtDx8+zMcff0yxYsWoX78+LVu2zOYKs056+pqb+5kSBb4spsAnIpJ1clvgy41OnjzJJZdcEuoy\nckRe6mtyCnxZTIFPRCTrKPCJZI3sCnw6D5+IiIiIxynwiYiIiHicAp+IiIiIxynwiYiIiHicAp+I\niIiIx+lauiIikmlVqlT50/VKRST9suu8kDoti4iIiEiY02lZREREROS8FPhEREREPE6BT0RERMTj\nFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RE\nRMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6B\nT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjwj7wmdk4\nM9tvZhuC2oqbWbSZbTGz+WZWNOi5oWYWa2abzKxDaKoWERERCR9hH/iAfwIdk7UNARY652oBi4Ch\nAGZWF+gF1AFuAN4zM8vBWkVERETCTtgHPufcMuBIsubuwAT//QlAD//9G4Epzrl459x2IBZonhN1\nioiIiISrsA98qSjjnNsP4JzbB5Txt1cEdgZtt9vfJiIiIpJn5dbAl5wLdQEiIiIi4Sp/qAvIoP1m\nVtY5t9/MygEH/O27gcuCtqvkb0vR8OHDA/ejoqKIiorK+kpFRERE0ikmJoaYmJgs2585F/6DY2ZW\nFfjSOdfA/3gk8JtzbqSZDQaKO+eG+BdtfApchW8qdwFQw6XQSTNLqVlEREQk7JgZzrkML0QN+xE+\nM5sMRAElzexXYBjwCjDNzO4FduBbmYtz7kczmwr8CMQBDynViYiISF6XK0b4soNG+ERERCS3yOwI\nn1cWbYiIiIhIKhT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9E\nRETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxO\ngU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERE\nRDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4zwZ+Mysk5ltNrOtZjY41PWIiIiIhJI550JdQ5Yys3zAVuBaYA+wGrjVObc52XbOa30XERERbzIz\nnHOW0e/34ghfcyDWObfDORcHTAG6h7gmERERkZDxYuCrCOwMerzL3yYiIiKSJ3kx8ImIiIhIkPyh\nLiAb7AYqBz2u5G/7k+HDhwfuR0VFERUVlZ11iYiIiKRJTEwMMTExWbY/Ly7aiAC24Fu0sRf4FrjN\nObcp2XZatCEiIiK5QmYXbXhuhM85l2BmjwDR+KasxyUPeyIiIiJ5iedG+NJKI3wiIiKSW+i0LCIi\nIiJyXgp8IiIiIh6nwCciIiLicQp8IiIiIh7nuVW66ZGYmEi+fMq8IuI9Z86c4ddff2Xnzp3s27eP\ns2fPEh8fT6FChShdujTly5enZs2aREZGhrpUEckBeTrwRUREUKJECa644gqqV69O06ZNadWqFU2b\nNtUvQRHJVU6dOsXXX3/N/PnzWbVqFevXrycuLu6835M/f37q1KlDy5Yt6dixI9dccw3FihXLoYpF\nJCfl6dOypPZc4cKF6dy5Mz179qR79+5cfPHFOVmaiEiaJCQksGDBAsaOHctXX33F6dOnA8+ZGZUr\nV6Zy5cpUqFCBiy66iIiICE6ePMmBAwfYtWsX27ZtI/hvQIECBejSpQt33nknN954IwUKFAhFt0Qk\nBZk9LUueDnzx8fEcOnSIn376ic2bN7Ny5UqWLVvGpk3/O09z8eLFufvuu3nwwQepU6dOCCsWEfE5\nfvw477//Pu+++y47d+4MtDdr1oyuXbvStm1bmjZtyqWXXnre/Zw8eZINGzawePFi5s+fz7Jly0hM\nTASgUqVKDBgwgPvvv5+iRYtma39E5MIU+DLofCde/uWXX5g1axaffvopa9asCbR3796d559/nqZN\nm+ZUmSIiAceOHeP111/nzTff5OjRowBUq1aNfv360adPHypWrJip/e/du5fPPvuMsWPHBj74FilS\nhIEDB/LEE09QuHDhTPdBRDJGgS+D0nqljbVr1/LBBx8wceLEwHRJ165defXVVzXiJyI5Ij4+nrFj\nx/K3v/2NgwcPAtC2bVueeeYZOnTokOWLzxITE5k3bx6vvfZa4OLtZcuW5cUXX6Rfv35ERERk6euJ\nyIUp8GVQei+ttm/fPkaPHs17773HqVOniIiI4OGHH2bYsGGUKFEiGysVkbxs8eLFPProo2zcuBHw\nBb2///3vtG3bNkdePyYmhkGDBrF69WoAmjdvzgcffECjRo1y5PVFxEeBL4Myei3dAwcO8PzzzzN2\n7FgSExMpUaIE//jHP7j77rsxy/DPQUQkiaNHjzJo0CA++ugjAC6//HJee+01brrpphz/XeOcY+rU\nqTz55JPs2bOHiIgInnjiCV588UUtahPJIQp8GZTRwHfO+vXreeKJJ1i8eDEAHTt25IMPPqBKlSpZ\nVaKI5FGzZ8+mf//+7Nmzh8jISJ577jkGDhzIRRddFNK6jh8/zvPPP88777xDYmIidevWZdKkSTRu\n3DikdYnkBQp8GZTZwAe+T70TJ07kiSee4MiRIxQuXJhXX32Vv/71rxrtE5F0+/3333n00UcZP348\nAC1atGDcuHHUrVs3tIUls3r1au6++242b95MgQIFePHFFxk4cKCO7RPJRgp8GZQVge+cffv28cgj\njzB9+nQAunXrxscff0ypUqWyZP8i4n1r1qzh9ttvJzY2losuuogRI0bw6KOPhm2IOnXqFIMHD+ad\nd94BICoqis8++4xy5cqFuDIRb1Lgy6CsDHznTJ06lQcffJCjR49Svnx5Jk6cyHXXXZelryEi3pKY\nmMjo0aN59tlniYuLo379+nz22WfUr18/1KWlybx58+jbty/79++nfPnyfP755zm2oEQkL8ls4NOF\nZLNQr169WL9+PW3btmXv3r1cf/31DB48mPj4+FCXJiJh6Pjx49x0000MGjSIuLg4Hn30Ub799ttc\n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\n9dVXqf4eVOBT4Atrq1atcj179nRmluSP++zZs11CQkKoy5MckpiY6ObOnZvkQ4CZuW7durmlS5eG\nujyRTImPj3eTJ092derUCby/K1eu7N566y134sSJUJcnYeTIkSPu73//uytdunTgvVK/fn03c+bM\nC37gVeBT4MsVfvrpJzdgwABXuHDhJFfuGDVqlM5m72GHDx92r7/+epIrYxQqVMg99NBDujqGeE58\nfLybMmWKq1u3buD9Xrx4cffMM8+4PXv2hLo8CaHdu3e7gQMHBhZjAK5p06Zu2rRpaR78UOBT4MtV\njh496kaNGuUqV66cZLr31ltv1ZSeRyQmJrqlS5e6O++8M8m0bYUKFdyIESO0kEc8LyEhwU2fPt21\natUqye+5e+65x/3www+hLk9y0MqVK92dd97pIiMjA++Fa6+91i1YsCDdf+8yG/jC/jx82cXMXF7t\neziIj49nzpw5fPjhh8yZM+dcCKdGjRr069eP22+/ncsuuyzEVUp67NmzhylTpjBu3Dh+/PFHAMyM\nDh068MADD9CtWzcKFCgQ4ipFctZ//vMfRo8ezcyZMwO/59q1a0f//v3p2bMnkZGRIa5QstqZM2f4\n/PPPeeedd1i92ne113z58tGzZ0+GDBnClVdemaH9mhkuE+fhU+CTkPv1118ZN24c48aNC1yqzcxo\n164dd9xxBzfffDPFihULcZWSkuPHjzNjxgw+/fRTvv7668AftHLlynHvvfdy3333cfnll4e4SpHQ\n27ZtG2+88Qbjx4/n5MmTAJQpU4Z+/frxwAMPULVq1dAWKJkWGxvLP//5T8aOHcvBgwcBKFGiBPfd\ndx/9+/fP9M9YgS+DFPjCT3x8PHPnzuWTTz5h9uzZnDlzBoDIyEi6du1K7969ueGGGyhSpEiIK83b\nTp48ybx585g6dSqzZ88OXPYnMjKSLl26cOedd2o0TyQVx48f59NPP+X999/nhx9+AP43Et6nTx+6\nd+9OoUKFQlylpNXvv//OtGnT+Pjjj1m2bFmgvVGjRjz66KPcdtttXHzxxVnyWgp8GaTAF96OHTsW\nGDlatGhRYOQoMjKS6667jp49e9KtWzfKli0b4krzhkOHDvHll1/yxRdfEB0dneTajldffTV33nkn\nN998M8WLFw9hlSK5h3OO//znP4wZM4apU6dy9uxZAIoUKcLNN9/MXXfdRbt27ciXL6SXvJcUJCQk\n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\nKVasGMWKFaNo0aIUK1aMMmXKUL58eSpUqEDx4sU9H+guRIEvgxT4REREJLfIbODTsj0RERERj1Pg\nExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERER\nj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4R\nERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4\nBT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExER\nEfE4BT4RERERjwvbwGdmr5rZJjP73symm9mlQc8NNbNY//MdgtqbmNkGM9tqZm+EpnIRERGR8BK2\ngQ+IBuo55xoBscBQADOrC/QC6gA3AO+Zmfm/532gn3OuJlDTzDrmfNkiIiIi4SVsA59zbqFzLtH/\ncCVQyX//RmCKcy7eObcdXxhsbmblgCLOudX+7SYCPXKyZhEREZFwFLaBL5l7gTn++xWBnUHP7fa3\nVQR2BbXv8reJiIiI5Gn5Q/niZrYAKBvcBDjgWefcl/5tngXinHOfhaBEERERkVwvpIHPOXf9+Z43\ns75AZ+CaoObdwGVBjyv521JrT9Xw4cMD96OiooiKirpw0SIiIiLZLCYmhpiYmCzbnznnsmxnWcnM\nOgGjgaudc4eD2usCnwJX4ZuyXQDUcM45M1sJPAasBr4C3nLOzUtl/y5c+y4iIiISzMxwztmFt0xZ\nSEf4LuBtIBJY4F+Eu9I595Bz7kczmwr8CMQBDwUlt4eB8cBFwJzUwp6IiIhIXhK2I3zZTSN8IiIi\nkltkdoQvt6zSFREREZEMUuATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER\n8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+AT\nERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGP\nU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPC9vAZ2Yvmtl6M1tnZvPMrFzQc0PNLNbMNplZh6D2Jma2wcy2mtkboalcREREJLyYcy7U\nNaTIzAo75373338UqOuc629mdYFPgWZAJWAhUMM558xsFfCIc261mc0B3nTOzU9l/y5c+y4iIiIS\nzMxwzllGvz9sR/jOhT2/S4BE//0bgSnOuXjn3HYgFmjuHwEs4pxb7d9uItAjp+oVERERCVf5Q13A\n+ZjZS8DdwFGgvb+5IrAiaLPd/rZ4YFdQ+y5/u4iIiEieFtIRPjNb4D/m7tztB//XbgDOueecc5Xx\nTeE+GspaRURERHKrkI7wOeeuT+Omk4GvgOH4RvQuC3qukr8ttfZUDR8+PHA/KiqKqKioNJYjIiIi\nkn1iYmKIiYnJsv2F86KN6s65bf77jwJtnXO9ghZtXIVvynYB/1u0sRJ4DFiNLyC+5Zybl8r+tWhD\nREREcoXMLtoI52P4XjGzmvgWa+wA/grgnPvRzKYCPwJxwENBye1hYDxwETAntbAnIiIikpeE7Qhf\ndtMIn4iIiOQWnj0ti4iIiIhkDQU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T\n4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+ERER\nEY9T4BMRERHxOAU+EREREY9T4BMRERHxOAW+PCYmJibUJYSE+p23qN95i/qdt+TVfmeWAl8ek1f/\no6jfeYv6nbeo33lLXu13ZinwiYiIiHicAp+IiIiIx5lzLtQ1hISZ5c2Oi4iISK7knLOMfm+eDXwi\nIiIieYWmdEVEREQ8ToFPRERExOPyXOAzs05mttnMtprZ4FDXk5XMbJyZ7TezDUFtxc0s2sy2mNl8\nMysa9NxQM4s1s01m1iE0VWeemVUys0VmttHMfjCzx/ztnu67mRU0s1Vmts7f72H+dk/3+xwzy2dm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#zt = 64, z = 16, theta=0\n", + "plot_flight_path(64, 16, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cool! Note that the plot title tells us what the calculated value of $C$ was for our input conditions. We have a value of $C$ between $0$ and $\\frac{2}{3}$ and our path is trochoidal, like we announced it would be.\n", + "\n", + "* For negative values of $C$, the resultant flight path consists of a series of loops. Let's try it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUqZMGcLCwrjpppvo0KHDX9arWLEigwYNytZ77Nu3j/Xr1zNlyhQAWrRoQfPmzalcuTKffvop999/\nP2PHjj3nNo4cOUKBAgWSP4+KiiI2NjZT75/ZfYTz28/0nGv/05Kdfd2zZw/Lli1j5cqVrFixggkT\nJvD888+nu34w9nPy5MnMmDGDN998M9vbyOz3Pzs0tSoiInleo0aN+O9//0u9evWIjIykQ4cOvPXW\nW+zbty9o7xEdHU3t2rWTPy9XrhxfffUVy5Yto3HjxpneRsqyGhcXR4kSJTL12tT72LJlS4YMGcKY\nMWOSj0PLSent/7nWz+q+zps3j/bt29OrVy+6du3K7t27adWqVY7uZ6dOnfjggw+46aabsnUbuqx8\n/7NDI3IiIpKjQuXWXa+99hr79u1j2LBhgG9a7pJLLvnTOimn4lLKzFRczZo1+e6775I/DwsLIzEx\nkWXLlnHq1CnmzJnD4sWLOX36NJ9//nma26lUqRIrVqxI/vzQoUM0aNAgW/v41ltvcd1119GgQQO6\nd+/OxIkTg7Kf6Ulv/9OTnX3dtWsX1atXB3xnvLZt25bx48fnyH5+8cUXvPrqqyxevJjo6GguueQS\nPvnkkwzPxE1t6dKlxMXFZer7ny3W2nz58O26iIgEQ6j/m/raa6/Z5557zlpr7fr16+2iRYtsmzZt\n7Pfffx+09zh9+rRt0qRJ8ufNmjWzv/7665/WGThwoH3ppZeSP9+yZYtNSkpK/vzkyZO2du3ayZ/X\nrVvX7tu3z1pr7ebNm/+0bmqp97FPnz52586d1lpr27Rpcx57lrYxY8bYHj16JH9+rv1PvZ/WZm9f\nR48ebUePHm2ttbZt27Z2x44dtm/fvjmyn3PmzEn+eiYlJdmyZcvar776Kt39CUj9dUkp9fc/Len9\nXfIv/0ufMTZEflPKbcYYm1/3PSNnz55l8+bN7Nixg507d7J3715OnDjBmTNnKF26dPJBpiIiAend\n6DsULFmyhMOHD1OsWDFefPFFrr/+erp27crUqVN56qmngvpeX375JYsXL8ZaS7Vq1ejSpUvyc9Om\nTWPQoEEYY+jfvz8dO3akQYMGfPDBB9SvXz95vQkTJrB9+3astVSsWDF5G9WrV+edd97hxhtvzNQ+\n7t27l2effZbLLruMtm3b8sUXXwRtP999910+/vhjdu3aRY8ePejXrx/R0dHp7n9a+5mdfT1+/DjP\nP/88tWvXplatWjRp0oQ+ffrw3HPP5ch+jhw5koSEBHbs2EGVKlV44IEHzrk/6X1dIO3vf1rS+7vk\nX/6XA05V5ITjx4/z7bffMnfuXJYtW8batWuJj49Pc93atWuzdu3aXE4oIqEulItcWiZNmkT58uUp\nV64cZcuWdR0nU5KSkliwYEGmL2ExbNgwWrRoQfXq1enRoweTJ0/O4YTBk5V99fJ+pkVFLpPye5E7\nfvw4M2bMYNKkScybN4+EhIQ/PV+hQgUqVapEuXLlKF26NEWLFuWCCy6gVKlSdOrUyVFqEQlVXity\nn332GWfPnqVRo0bnvNZZKPn444+5+eabKViwYKbWP3ToEB9++CHFixenVq1aNG3aNIcTBk9W9tXL\n+5kWFblMyq9FbsOGDbzzzjuMGzeOuLg4AMLDw2nSpAmtWrWiRYsW1K9fP0euki0ieZfXipwXnTx5\nksKFC7uOkSvy076mpiKXSfmtyK1evZoXXniB2bNnJy9r0aIFXbp0oWPHjiF3+xcR8RYVOZHgyGqR\n0+VH8rjt27fz5JNPJt/CpFChQnTv3p2+fftSo0YNx+lERETkfKjI5VHx8fEMHjyYwYMHc/r0aQoU\nKECfPn146qmnKFWqlOt4IiIiEgQqcnnQmjVr6Nq1K+vWrQOgc+fOvP7665QpU8ZxMhEREQkm3aIr\nD0lMTGTIkCE0atSIdevWUblyZRYsWMDEiRNV4kRERPIgjcjlEYcOHeKuu+7i66+/BuDBBx/kjTfe\nyLdn/YiIiOQHKnJ5wPr167nlllvYunUrpUqVYuzYsdx0002uY4lIPlK+fPm/3M9SRLIuq9c11NSq\nx82ePZsmTZqwdetWGjRowIoVK1TiRCTXBW6z5IXH8OHDk0vnI488wtmzZ51nyu7j+PHjtG/fHoCI\niAjGjx/vPJMe5/fYvn17lv7uqch52Pjx4+nQoQOxsbF06tSJRYsWeeZWMyIiLgwaNIg+ffpgreX1\n11/n7bffJiLCu5NT0dHRzJw5k8cff5yEhAS6devG6NGjXceSXKQi51EjRoygW7duJCYmMmDAACZO\nnEihQoVcxxIRCVmvvfYazz77LMYY/vOf//Dkk0+6jhQU4eHhDB06lNdeew1rLffffz/Dhw93HUty\nie7s4EFDhw5N/gfojTfe4IknnnCcSEQktI0cOZKHHnoIYwwTJkygc+fOriPliLfffpvHHnsM8O1z\n7969HSeSYNEtulLxapH7z3/+Q+/evTHG8N5779GrVy/XkUREQtqkSZO4++67sdby/vvvc//997uO\nlKNSltaPP/6Yjh07uo4kQaAil4oXi9yUKVPo3Lkz1lpGjBjBgw8+6DqSiEhIW7BgAX/7299ISEhg\nyJAhPPXUU64j5YpXX32VAQMGEBUVxZw5c7j++utdR5LzpCKXiteK3Ny5c2nbti0JCQm8+uqrPPvs\ns64jiYiEtG3bttGoUSMOHTrEY489xptvvuk6Uq6x1vLII48wbNgwoqOjWbp0KdWrV3cdS86Dilwq\nXipyv/zyC40bN+bYsWM8/vjjvPHGG7pek4jIOcTGxtKsWTPWrVvHTTfdxOzZswkPD3cdK1clJSVx\n1113MW3aNKpUqcLSpUu58MILXceSbFKRS8UrRe7IkSM0adKETZs2cdttt/HJJ58QFqaTjUVE0mOt\n5a677uLjjz+matWq/PDDDxQvXtx1LCdOnjxJ8+bN+fHHH2ndujX//e9/812hzSvSK3JqBCEsMTGR\nTp06sWnTJurUqcO4ceNU4kREMjB69Gg+/vhjihQpwueff55vSxxA4cKFmTlzJiVLluTLL7/k+eef\ndx1JgkytIIQNGjSIL7/8kosvvpjPP/+cIkWKuI4kIhLSNmzYwCOPPALAe++9R0xMjONE7pUvXz55\nNmfw4MF88803riNJEKnIhahFixbx4osvAjBhwoQs33tNRCS/iY+P56677iIuLo7u3bvTpUsX15FC\nxrXXXssLL7yAtZauXbty4MAB15EkSFTkQtChQ4fo3LkzSUlJPPPMM7Rq1cp1JBGRkPfqq6+ybt06\nKleuzLBhw1zHCTnPPfccLVq0YM+ePdx777144ThxyZhOdghBnTp1YsqUKTRt2pQFCxYQGRnpOpKI\nSEhbs2YNDRs2JCEhgYULF9KiRQvXkULSzp07qVu3LkePHmXcuHF07drVdSTJJJ3s4BGffvopU6ZM\noXDhwkyYMEElTkQkAwkJCdx7770kJCTQp08flbhzKFeuHG+99RYAjzzyCHv37nWcSM6XilwIOXTo\nUPLdGoYMGULFihUdJxIRCX0jRoxg1apVlC9fnkGDBrmOE/K6d+9O69atOXLkCH379nUdR86TplZD\nSPfu3Rk3bhzXXnst8+bN06VGREQycODAAapUqcKxY8f47LPPuOWWW1xH8oQdO3ZQq1YtYmNjmT17\n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\nli5dyh133MG0adNCqiilnFIdNWoU9913n+tIkgs0tZoPXHnllTzxxBNYa+nevbtu3yUikg0RERFM\nmjSJ6Ohopk+fzujRo11HSpZ6SrVnz56uI4ljGpHLY06fPs2VV17Jhg0bPHGwrohIqJo4cSJ33303\nBQsWZOXKlVSvXt11JCZNmkSXLl2Ijo7mp59+oly5cq4jSS5Jb0RORS4PWr16NY0bN+bs2bPMmTOH\nm266yXUkERFP6tatG+PHj6du3br88MMPFChQwFmWnTt3UrduXY4ePaop1XxIU6v5SP369Xn55ZcB\nuPfeezl06JDjRCIi3jR8+HAqVarEmjVreOqpp5zlSExMpFu3bhw9epT27dtrSlWSqcjlUU8++STN\nmzdnz5499O7dW/diFRHJhujoaCZPnkxkZCTDhg3j448/dpLj9ddfZ8GCBVxyySV88MEHIXXyhbil\nqdU8bNu2bdSpU4fY2FjGjBlD9+7dXUcSEfGkYcOG8fDDD1OkSBGWL19OtWrVcu29ly9fTrNmzUhI\nSNDhMvmYplbzoQoVKjBs2DAAHnroIX7++WfHiUREvKlv377cddddxMbG0rFjx1y78HpsbCxdunQh\nISGBRx55RCVO/kIjcnmctZZu3boxYcIEateuzdKlSylYsKDrWCIinhMbG0ujRo34+eef6dKlC+PH\nj8/xKc577rmHMWPGULt2bZYtW+b0ZAtxSyNy+ZQxhhEjRhATE8O6det47LHHXEcSEfGkIkWKMH36\ndAoXLszEiRMZOXJkjr7fRx99xJgxYyhQoACTJk1SiZM0aUQun/jxxx9p0qQJ8fHxTJkyhX/84x+u\nI4mIeNLkyZPp3LkzERERfPPNN1xzzTVBf4+1a9fSuHFjTp8+zYcffsg999wT9PcQb9GIXD5Xr149\n3nrrLQDuv/9+fv31V8eJRES8qVOnTvTr14+EhATuuOMOduzYEdTtHz9+nL///e+cPn2ae+65RyVO\nzkkjcvmItZY777yTTz75hNq1a/P9999TuHBh17FERDwnISGB9u3b8+WXX1KnTh0WL15MkSJFznu7\n1lo6derE1KlTqV27Nj/88AOFChUKQmLxOo3ICcYYPvjgg+Tj5e6//35dX05EJBsiIiKYMmUKMTEx\nrF27lh49epCUlHTe2x0xYgRTp06lSJEiTJs2TSVOMqQil88ULVqUmTNnUqRIESZPnszbb7/tOpKI\niCcVL16czz//nGLFijF9+vTkO+pk18KFC3n00UcBGD16NFWrVg1GTMnjNLWaT3366afccccdhIeH\n8yGE+i0AACAASURBVPXXX9OyZUvXkUREPGnOnDm0a9cOay0TJ06kc+fOWd7Gzp07adiwIQcOHODx\nxx9n6NChOZBUvExTq/Int99+O8888wyJiYnceeed7Nq1y3UkERFPatOmDW+++Sbgu+7bggULsvT6\nU6dO0aFDBw4cOMCNN97I4MGDcyKm5FEakcvHEhMTadOmDXPnzqV+/fosWrRIJz+IiGTTI488wjvv\nvEPx4sVZsmQJ1atXz/A11lq6dOnC5MmTqVixIsuXL6dEiRK5kFa8RiNy8hfh4eFMnjyZypUrs3r1\narp16xaUg3VFRPKjN998kw4dOnD06FHatGnD3r17M3zN0KFDmTx5MkWKFOHzzz9XiZMsU5HL5y66\n6CJmzZpFsWLF+PTTTxkwYIDrSCIinhQeHs7EiRNp3LgxO3bsoF27dsTGxqa7/syZM3n66acBGD9+\nPDVr1sytqJKHqMgJ1apV45NPPiE8PJxBgwYxduxY15FERDypUKFCfP7551SsWJFVq1Zxxx13cObM\nmb+st3z5cjp37oy1lldeeYUOHTo4SCt5gY6Rk2TvvfceDz74IJGRkXzzzTe0aNHCdSQREU/atGkT\nzZs358CBA9x5551MmjSJ8PBwAHbs2EHjxo3Zt28f99xzDx988AHG/OXQJ5E/Se8YORU5+ZPAwbol\nSpRg8eLFVKtWzXUkERFPWrVqFddddx3Hjx+nV69evPfeexw/fpyrr76a9evXc/311zNnzhyioqJc\nRxUPUJFLRUUubQkJCdx2223Mnj2b8uXLs2TJEi677DLXsUREPGnhwoW0bt2a06dP8/jjj7NmzRq+\n/vprqlevzpIlSyhevLjriOIRKnKpqMil7+TJk9xwww0sXbqUunXrsmDBAooVK+Y6loiIJ82ePZtb\nb701+aoApUqVYunSpVxxxRVug4mn6PIjkmmFCxdm9uzZxMTEsGbNGm6//Xbi4+NdxxIR8aR27dpx\n0UUXJX9+0003qcRJ0KjISZpKlizJ//73Py699FLmzZsXtBtCi4jkN4MHD+bAgQPJn48bN46RI0c6\nTCR5iYqcpKtChQrMmTOH6OhopkyZwsMPP4ymo0VEMm/UqFE8++yzGGOYOnUqw4YNA+Chhx7i/fff\n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\nnfuBvr+KXDIqcpLRXL9+nY0bN7J69Wo2btzIkSNH7nm8YMGCNGrUiKeffhofHx9q1qypk9zTIZfL\nxaFDh9zF7bvvvuPcuXP3PKdYsWL4+vri6+tL8+bNdUhdJB2LiooiIiKCyMhI+vbt+8DfR0UuGRU5\nyehOnz7Nt99+y8aNG9m4cSMnT5685/Hs2bNTu3ZtfHx88PHxoW7duhQvXlwzYtPYxYsXCQ8Pd99+\n+OEH9yXd7nrooYdo2LAhDRs2pEmTJjzxxBP6dxLJZFTkklGRk8zEWsvx48cJDQ1l27ZthIWF3XMt\nwruKFClCzZo177mVKVNGpSEFWGs5e/Yse/bsYe/evezdu5ft27ffc57jXcWLF6dBgwY0atSIRo0a\nUalSJf0biGRyKnLJqMhJZnf58mXCw8MJCwsjLCyMnTt3Eh0d/ZvneXt7U6VKFapUqULlypXdH4sV\nK6ZycR9RUVEcPnyYQ4cOsX//fndxu3Tp0m+emydPHmrXrk29evWoV68edevWpWTJkg6kFpH0TEUu\nGRU5kXtZa4mMjGTXrl3u286dO7l48eLvPt/b25uKFSvy2GOP8eijj/LYY4+5b0WLFs3QJc9aS1RU\nFJGRkURGRnL8+HGOHDnCoUOHOHTo0O8WNoACBQpQrVo1qlevTrVq1ahZsyaVK1fW7GIR+UMqcsmo\nyIn8MWst58+fZ//+/Rw4cOCej5cvX77v1+XKlYtSpUpRokQJSpYsSYkSJdz3ixcvTuHChSlcuDD5\n8uVLd4UvNjaW8+fPc+7cud98PH36tLu8xcTE3Pd75M2bl4oVK7pvTz75JNWrV6dkyZLp7r9XRDyD\nilwyKnIiD+5uwTt69Cg///wzP//8M8eOHXPfv98eqeSyZcvmLnWFCxfG29ubvHnzki9fvns+5s2b\nlxw5cpAtWzb3LXv27GTLlo2sWbPicrlwuVzcuXPHfd/lchEbG0tMTAwxMTHcvHnTfT8mJobo6Ggu\nX77M5cuX+fXXX933r1+//qeye3t7U6ZMGcqUKUPp0qUpX748FStWpEKFCpo0IiIpTkUuGRU5kdRz\n9epVTp8+zenTpzlz5gxnzpxx3z979iyXLl0iKiqKGzduOB31N7y8vHj44YcpVqwYxYoVo2jRou77\nxYsXp2zZspQuXRpvb2+no4pIJqIil4yKnIjzbt68yaVLl7h06RIXL17kypUrXL9+nWvXrnHt2jX3\n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\n8zlOaAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,numpy.pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can play around with the input values and see what kind of behavior results. Just note that any value of $C > \\frac{2}{3}$ will result in $\\cos \\theta > 1$, which doesn't exist. Python will probably throw a few errors if you hit that condition, but just try again!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The last case is $C = 0$. Take another look at Equation (16) and plug in $C = 0$, what should happen? It looks like it will just reduce to \n", + "\n", + "$$R = 3z_t$$\n", + "\n", + "It's a constant radius of curvature! In fact, this solution is a series of semi-circles, with a cusp between them. One way to force $C = 0$ that we can figure out from Equation (15), is to make:\n", + "\n", + "\n", + "$$z = 3z_t\\ \\ \\ ,\\ \\ \\ \\theta = 0$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\npZeYNm0a1atXp1mzZpx11lkVUfZWef/99xk5ciQ33ngjAMOHD+eLL75g7dq1tGjRgpNOOmmz70/7\nsZa2vuL6l+txJv29WeX8nVxRklQ2/H/q/9x3332xT58+sX///t9pP++88+LcuXNjjDG2a9cuzpkz\np8j3r1ixInbs2HHT88MOOywuXbq0/AreBvn5+fH444+Pv/rVr2KMMc6fPz/ec889m14///zz4zff\nfFPs+7flWCdMmBAff/zxeO+998avv/56K49g80pbX3H9S7Of4n6Xsu1FZhqnRCVJKqVrrrmGE088\n8Ttts2fPZuHChbRo0QKAUaNG0bJlyyLf/+abb9KuXbtNzzt06MA///nP8it4GwwbNoxu3bptev7l\nl18yZswY1q9fD0C9evXYbrvtin3/1h7r559/zpNPPsl5551HixYteP7557fhKIpX2vqK61/e59Qp\nUUlSlTNr1iz+/Oc/f2c9rI2PQwgcdthh9OrVq1T7fOONN2jYsCGDBg3i66+/pn79+px77rlF9v3i\niy9o1KjRpueNGjVi5syZW308xdnW41y2bBnVqlVjxx13ZNWqVQAceOCB5Ofn88Mf/pALLriAY445\nhpo1axa7j6091p///OfcdNNNAHz66adUr169XI6ztPUV13+HHXYo13NqYJMklYkQilzvs9Q2/oW7\nNSZNmsSAAQNo3rw51apV4yc/+Qm9e/f+Xr899tiDu+66a1vK/J7Fixczbdo0hgwZAsCRRx7Jj370\nI9q0afO9vl9//TXbb7/9pufbbbcd33zzTYk+p6THCNt+nH//+9/52c9+xlNPPfWd9htvvJGBAwdy\n/fXX87vf/W6z+9iaY/3Pf/7DO++8w7vvvsvkyZMZNGgQt956a7H9t+U4S1vf5vpv7TktCadEJUmV\nxsEHH8yrr77KD37wA2rWrEnv3r154IEHWLx4cbl/dv369TnggAM2PW/RogWjRo0qtm/BYLpmzRoa\nN25cos8pfIxdu3blt7/9LU8++STvvvvuth1EAe+88w6HHnro99pnzpzJuHHjGDVqFC+//DK33347\nb7/9drH72ZpjfeONNzjhhBO44IILOOuss1i4cCHHHHNMuRxnaesrrv+2nNOScIRNklQmtmVkrCzd\neeedLF68mIcffhjITKc1bdr0O30KTqEVtC1Tou3atWP8+PGbnlerVo28vLwi++65555Mnjx50/Nl\n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\nSZISMm/ePPr160d+fj633norJ5xwQtIlSZVKoiNsIYTRIYQpBbap2Z89AWKMv4gxtiAzBXp5krVK\nkor27bffcsopp7B06VKOPfZYbrvttqRLkiqdREfYYoxHl7DrYOBVYACZEbXdC7y2W7atSAMGDNj0\nuGvXrnTt2rWUVUqSihNj5IILLmDSpEm0atWKwYMHU7169aTLknLC2LFjGTt2bIn6pvmmgzYxxs+y\njy8Hjowx9i1w08GhZKZCR+NNB5KUiPvuu4/rrruOunXrMnHiRNq3b590SVLO2txNB2m+hm1gCGFv\nMjcbzAUuAogxfhxCGAp8DKwHLjGVSVLFe+2117jhhhsA+Otf/2pYk8pRakfYyoIjbJJUPj755BMO\nPfRQVqxYwW233fady08kbZ3NjbAZ2CRJpbJs2TIOO+wwPvvsM/r06cPzzz9PtWqpXSVKyhkGNklS\nmVi7di1HH300b731FgceeCBvvvkm9erVS7osqVLIyYVzJUnpEmPkZz/7GW+99RbNmjVj+PDhhjWp\nghjYJEklcscdd/D0009Tt25dXnnlFZo3d81yqaI4JSpJ2qJBgwZx1llnEULgpZdeomfPnkmXJFU6\nTolKkrba6NGj6d+/PwAPPPCAYU1KgCNskqRivf/++3Tu3JlvvvmG6667jnvuuSfpkqRKy7tEJUml\nNmfOHDp16sSiRYvo168fgwYNcvkOqRwZ2CRJpfLll19y5JFH8sknn3DUUUcxYsQIatWqlXRZUqVm\nYJMkldjKlSvp1q0b7733Hu3bt+fNN9+kYcOGSZclVXredCBJKpE1a9bQq1cv3nvvPfbcc09Gjhxp\nWJNSwMAmSQJgw4YNnH766YwbN45mzZoxevRodtlll6TLkoSBTZIE5OXl0b9/f15++WUaN27MqFGj\naN26ddJlScoysElSFZefn89FF13EoEGDqFu3LiNGjKBdu3ZJlyWpAAObJFVhMUauvPJKHnvsMWrX\nrs2rr77KoYcemnRZkgoxsElSFRVj5Prrr+eRRx5hu+2248UXX6RLly5JlyWpCAY2SaqCYozccsst\n3HfffdSoUYNhw4ZxzDHHJF2WpGLUSLoASVLFijFy8803M3DgQKpXr86QIUM44YQTki5L0mYY2CSp\nCokxcuONN3L33XdvCmsnn3xy0mVJ2gIDmyRVETFGbrjhBu69915q1KhhWJNyiIFNkqqAGCNXX301\nDz74IDVq1GDo0KH06dMn6bIklZCBTZIquby8PC688EIef/xxatasydChQ+ndu3fSZUkqBQObJFVi\n69ev5+yzz2bIkCFsv/32vPDCC/zkJz9JuixJpWRgk6RK6ttvv+W0007j5Zdfpn79+rzyyit07tw5\n6bIkbQUDmyRVQitXrqRPnz688cYb7LDDDowcOZKDDz446bIkbSUDmyRVMosXL6ZHjx6899577LLL\nLowcOZL27dsnXZakbWBgk6RKZPbs2RxzzDF89tlntGnThpEjR7LHHnskXZakbeRXU0lSJfHhhx9y\n+OGH89lnn3HggQcyfvx4w5pUSRjYJKkSGD16NEceeSSLFi2iW7dujB07lqZNmyZdlqQyYmCTpBz3\n5JNP0qNHD/773//St29fRowYQYMGDZIuS1IZMrBJUo6KMfKrX/2K/v37s2HDBm644QaeffZZtt9+\n+6RLk1TGvOlAknLQunXruOCCC3jqqaeoVq0aDz/8MJdccknSZUkqJwY2ScoxS5cu5aSTTuKtt96i\nTp06DBkyhJ49eyZdlqRyZGCTpBzy8ccf07NnT2bNmkWzZs0YPnw4HTt2TLosSeXMa9gkKUeMHDmS\nTp06MWvWLA466CAmTZpkWJOqCAObJKVcjJH777+fHj16sHLlSk455RTefPNNmjVrlnRpkiqIgU2S\nUmz16tWcddZZXHvtteTn5/OLX/yC5557jjp16iRdmqQK5DVskpRSc+fOpU+fPrz//vvUrVuXp556\nipNPPjnpsiQlwMAmSSn0z3/+k759+7J06VL23HNPXnzxRfbff/+ky5KUEKdEJSlF8vPzueuuu+je\nvTtLly7l2GOPZdKkSYY1qYozsElSSnz99deceOKJ3HzzzZuuV3v11VfZYYcdki5NUsKcEpWkFHjv\nvfc45ZRTmD17NjvssANPP/00xx9/fNJlSUoJR9gkKUExRh5++GE6derE7NmzOeigg3jvvfcMa5K+\nw8AmSQn56quvOOmkk7jiiitYt24dF110EePHj6dVq1ZJlyYpZZwSlaQETJw4kX79+jFv3jwaNmzI\nn//8Z0499dSky5KUUo6wSVIF2rBhA7fffjudO3dm3rx5HHroobz//vuGNUmb5QibJFWQ2bNnc9ZZ\nZzFhwgQArr/+eu644w5q1qyZcGWS0i71I2whhGtDCPkhhMYF2m4KIcwMIUwPIRyTZH2StCUxRp56\n6ik6dOjAhAkTaNasGaNHj+buu+82rEkqkVSPsIUQdgOOBuYWaNsX6AvsC+wGjAkh7BVjjMlUKUnF\nW7p0KRdffDHPP/88ACeffDJ/+tOfaNKkScKVScolaR9hewC4vlDbicCQGOOGGOMcYCZwSEUXJklb\n8uKLL9KuXTuef/556tWrxxNPPMHf/vY3w5qkUkttYAsh9ALmxxinFnqpOTC/wPMF2TZJSoWvv/6a\ns846iz59+rBkyRK6dOnChx9+yLnnnksIIenyJOWgRKdEQwijgaYFm4AI/AK4mcx0qCTljFdeeYUL\nL7yQhQsXUrt2bQYOHMhll11GtWqp/fexpByQaGCLMRYZyEII+wOtgA9D5p+juwHvhRAOITOi1qJA\n992ybUUaMGDApsddu3ala9eu21q2JH3PkiVLuPLKKxkyZAgAnTp14sknn2TvvfdOuDJJaTV27FjG\njh1bor4hF67VDyHMBjrGGL8OIewHPAMcSmYqdDRQ5E0HIQTvRZBUrmKMPPPMM1x11VUsW7aM2rVr\nc/vtt3PllVdSvXr1pMuTlENCCMQYi7xuItV3iRYQyUyXEmP8OIQwFPgYWA9cYiqTlITZs2dz6aWX\n8o9//AOA7t2786c//Yk99tgj4cokVTY5McK2tRxhk1Qe1q1bx3333cdvfvMb1qxZQ6NGjbj//vu9\nqUDSNqkMI2ySlArjxo3j4osvZvr06QD069eP+++/n1122SXhyiRVZt62JEklsGjRIs455xy6du3K\n9OnT2WuvvRg9ejSDBw82rEkqdwY2SdqMjdOfe++9N3/961+pVasWAwYMYMqUKXTv3j3p8iRVEU6J\nSlIxRo0axZVXXsmMGTMAOOGEE3jggQdo06ZNwpVJqmocYZOkQj799FN69+7Nsccey4wZM9hrr714\n9dVXGT58uGFNUiIMbJKUtWzZMq644gratWvHSy+9RN26dRk4cCBTp06lR48eSZcnqQpzSlRSlbd2\n7VoeeeQRbr/9dpYvX04IgfPPP5/f/OY37LrrrkmXJ0kGNklVV15eHoMHD+aXv/wlc+bMATKL3953\n3320b98+2eIkqQADm6QqJ8bIq6++ys0338zUqVMB2G+//bjnnns47rjjXPxWUup4DZukKuWtt96i\nc+fO9OzZk6lTp7L77rvzxBNPMGXKFHr06GFYk5RKjrBJqhImTpzIbbfdxpgxYwBo0qQJv/jFL7jo\noovYfvvtE65OkjbPwCapUvv3v//NbbfdxsiRIwFo0KABV199Nddccw0NGjRIuDpJKhkDm6RKafz4\n8dxxxx289tprANSvX58rr7ySa665hh122CHh6iSpdAxskiqNGCOjRo3ijjvu4K233gKgbt26XHHF\nFVx77bU0adIk4QolaesY2CTlvLy8PF588UUGDhzI5MmTAWjUqBFXXHEFV1xxhUFNUs4zsEnKWatX\nr+bJJ5/k/vvv5/PPPwdgp5124pprruGSSy7xGjVJlYaBTVLOWbJkCY8++iiPPvooy5YtA6B169Zc\nc801nHfeedSpUyfhCiWpbBnYJOWM9957j4ceeohnn32WdevWAXDwwQdz/fXXc9JJJ1G9evWEK5Sk\n8mFgk5Rq69ev54UXXuChhx5iwoQJAIQQ6NmzJ9dddx1HHnmki91KqvQMbJJSaf78+Tz22GM89thj\nLFy4EMisoXb++edz2WWXscceeyRcoSRVHAObpNTIy8tj1KhR/PGPf+SVV14hPz8fgLZt23L55Zdz\n9tlnU69evYSrlKSKZ2CTlLg5c+bw5JNP8uSTTzJ37lwAatasyamnnspFF11Ely5dnPaUVKUZ2CQl\nYvXq1bzwwgv85S9/4Y033tjU3rp1ay688EL69+/PzjvvnGCFkpQeBjZJFSY/P59x48YxaNAgnn/+\neVauXAnA9ttvz8knn8x5551H165dqVatWsKVSlK6GNgklasYI1OnTmXQoEEMHjyYBQsWbHrt4IMP\n5vzzz+e0006jUaNGCVYpSelmYJNULqZNm8bQoUMZOnQoM2bM2NTeqlUrzjzzTM444wzatm2bYIWS\nlDsMbJLKRIyRjz76iGHDhjF06FCmT5++6bXGjRtz2mmnceaZZ9KpUydvIJCkUjKwSdpqeXl5TJw4\nkRdffJEXX3yRWbNmbXqtcePG9OnTh759+9KtWzdq1qyZYKWSlNsMbJJKZcWKFYwePZoRI0YwfPhw\nli5duum1nXbaiZ49e9K3b1+OOuooQ5oklREDm6TNijEybdo0RowYwYgRI5gwYQIbNmzY9Pqee+5J\n79696d27N506dfL7PCWpHBjYJH3PggULeP311xkzZgxjxozhP//5z6bXqlevTufOnenRowfHH388\n7dq185o0SSpnBjZJLF68mDfffJM333yTN954g48//vg7rzdt2pTjjjuOHj16cPTRR7sEhyRVMAOb\nVMXEGJkzZw4TJ07kzTffZNy4cXzyySff6VO3bl26du1K9+7d6d69u6NokpQwA5tUya1atYp3332X\nt99+m7fffpt//etfLF68+Dt96tSpw+GHH06XLl3o0qULhx56KNttt11CFUuSCjOwSZXI6tWr+eCD\nD3j33XeZPHky7777LtOnTyc/P/87/Zo0aUKnTp340Y9+RJcuXTjooIO8o1OSUszAJuWg/Px85syZ\nw5QpU5gyZQpTp05lypQpzJw5kxjjd/pWr16dDh060KlTp01bmzZtnOKUpBxiYJNS7JtvvuHzzz/n\nk08+YcaMGUyfPp0ZM2bwySefsGbNmu/1r169Ou3ateOggw7ihz/8IQcddBDt27endu3aCVQvSSor\nBjYpQWvWrOGLL75g3rx5zJ8/nzlz5vD5559v2pYsWVLse3fddVcOOOAA2rdvv2lr27YttWrVqsAj\nkCRVBAObVMa+/fZbli1bxldffcWyZcv48ssvWbRo0Xe2//znP3zxxRd8+eWXm91XrVq1aN26Nfvs\nsw9t27albdu27Lvvvuyzzz4urSFJVYiBTVXe119/zauvvkp+fj55eXmbtvz8fDZs2MDatWv59ttv\nv7OtWrWKlStX8t///nfTzxUrVvDVV18VOVVZnBo1arDbbrvRokULdt99d1q0aMGee+65aWvevDnV\nqlUrx6OXJOWCUPgC5cokhBAr8/GpbEyZMoUOHTqU2f5q1qxJkyZNaNKkCY0bN2bHHXdk1113ZZdd\ndtm0NW3alN13352mTZsayCRJAIQQiDEWeUeYI2yq8ho3bswZZ5xB9erVqVat2nd+Vq9ene233/57\nW506dWjQoAH169f/zs/GjRtTt25d78CUJJUpR9gkSZJSYHMjbM7FSJIkpZyBTZIkKeUMbJIkSSln\nYJMkSUq51Aa2EMJtIYQvQgjvZbefFHjtphDCzBDC9BDCMUnWKUmSVN5SG9iy7o8xdsxurwGEEPYF\n+gL7AscBvw8pWUNh7NixSZegbeD5y12eu9zm+cttnr+KkfbAVlQQOxEYEmPcEGOcA8wEDqnQqorh\nH9rc5vnLXZ673Ob5y22ev4qR9sB2WQjhgxDCYyGEhtm25sD8An0WZNskSZIqpUQDWwhhdAhhSoFt\navZnT+D3wB4xxh8Ai4D7kqxVkiQpKTnxTQchhJbA8Bhj+xDCjUCMMf42+9prwG0xxn8X8b70H5wk\nSVJWzn2XaAhhlxjjouzTk4CPso9fBp4JITxAZiq0DfBOUfso7qAlSZJySWoDG3B3COEHQD4wB7gQ\nIMb4cQhhKPAxsB64xC8MlSRJlVlOTIlKkiRVZWm/SzQnhBDuzi7i+0EIYVgIoUGB11zkN+VCCD8J\nIcwIIXwaQvh50vVo80IIu4UQ3gghTMveqHRFtn2HEMKoEMInIYSRBe4sV8qEEKplF0R/Ofvcc5cj\nQggNQwh/y/6dNi2EcKjnr2IY2MrGKKBd9o7WmcBNACGE/UjpIr/KCCFUAx4BjgXaAf1CCG2TrUpb\nsAG4JsbYDugEXJo9ZzcCY2KM+wBvkP09VCpdSeaylo08d7njQWBEjHFfoAMwA89fhTCwlYEY45gY\nY3726b+A3bKPe5HSRX61ySHAzBjj3BjjemAImcWZlVIxxkUxxg+yj78BppP5nTsReCrb7SmgdzIV\nanNCCLsBPYDHCjR77nJAdvboyBjjEwDZv9tW4PmrEAa2snceMCL72EV+06/wOfoCz1HOCCG0An5A\n5h9KTWOMiyET6oCdk6tMm/EAcD1Q8AJqz11uaA0sDSE8kZ3S/n8hhDp4/iqEga2EtrDI78Y+twDr\nY4zPJliqVCWEEOoBzwNXZkfaCt9B5R1VKRNCOB5YnB0h3dzlIZ67dKoBdAQejTF2BFaRmQ71d68C\npHlZj1SJMR69uddDCOeSGeY/qkDzAmD3As93y7YpPRYALQo89xzlgBBCDTJh7ekY40vZ5sUhhKYx\nxsUhhF2AJclVqGIcAfQKIfQAagP1QwhPA4s8dznhC2B+jHFy9vkwMoHN370K4AhbGQgh/ITMEH+v\nGOPaAi+9DJweQtguhNCazSzyq8RMAtqEEFqGELYDTidz3pRufwE+jjE+WKDtZeDc7ONzgJcKv0nJ\nijHeHGNsEWPcg8zv2hsxxrOA4XjuUi877Tk/hLB3tunHwDT83asQrsNWBkIIM4HtgGXZpn/FGC/J\nvnYTcD6ZRX6vjDGOSqZKFScbuB8k8w+Yx2OMAxMuSZsRQjgCeBOYSmbqJQI3k/nH0FAyo9pzgb4x\nxuVJ1anNCyF0Aa6NMfYKITTGc5cTQggdyNwwUhOYBfQHquP5K3cGNkmSpJRzSlSSJCnlDGySJEkp\nZ2CTJElKOQObJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElK\nOQObJElSytVIugBJyhUhhAuAHYF9gKeBlsDOwP7ADTHGBQmWJ6kSCzHGpGuQpNQLIfwMmBJj/HcI\n4WBgNHAusAp4DegRYxyZYImSKjFH2CSpZJrEGP+dfdwCyIsxvhhCqA10jTG+lWBtkio5R9gkqZRC\nCA8Bu8cY+yRdi6SqwZsOJKn0ugFjky5CUtVhYJOkLQghVAshdA8ZOwPtKBDYQgg3JFacpCrBwCZJ\nW3YhMArYC+gLrAa+AAgh9AI+Sq40SVWB17BJ0haEEDoA1wMzgA+BBsBRwBxgdoxxUHLVSaoKDGyS\nJEkp55SoJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElKOQOb\nJElSyhnYJEmSUu7/A9i2e0jPCtaoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(16,48,0.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks an awful lot like a quarter circle. And what's the radius of the arc? It's $$r = 48 = 3z_t.$$\n", + "\n", + "We can also get a semi-circle out of our simulated trammel by changing to another configuration where $C$ is (near) zero. Here's one example:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nvS8Z0/tyPr0nGdP7kjG9LznDb4/STXNNdhERERGvZozBXsZBG357lK6IiJyvQoUKxMTEOB1DxG+V\nL1+e/fv3e3y9GuETEZFU7lEEp2OI+K3M/g1e7gif9uETERER8XEqfCIiIiI+ToVPRERExMep8ImI\niIj4OBU+ERERkcu0du1aEhISOHv2LOvWrXM6znl0WhYREZF0Tp06xbhx4wgLC+PPP//k2Wef/dfj\nW7duJTIyksGDB2e6jsWLF7Nz504CAwO56qqr6Ny5c07HzpZt27Yxc+ZMJkyYkLrsYtufXl7Z1uzI\n6P3JSEREBDExMZQuXZp33nkHAGstxYsXJyAgIPXI22bNmjF37twcz52eCp+IiEg6Tz75JCNHjiQs\nLIyqVavywAMPUL58ecD1S3z48OHUrl07068/efIkL730Eps3bwagbt263HvvvZQoUSJX8mfV//3f\n/7F+/XqKFSv2r+UX2v70LmdbN2zYwI8//siJEyfo2rXreTmcltn7k5GhQ4fSokULypYtS2BgIAD7\n9+/nrbfe4o477iAgIIBFixZx991353TsDGlKV0REJI1ffvmFw4cPExYWBsDKlSv/VXYWLFhA48aN\nL7iOtWvXUqVKldT7t956K6tXr86ZwJfhmWeeoXXr1v9adrHtTy+727pv3z7ef/99nnjiCcLCwpg/\nf342tyLnZPT+ZCY4OJirr746tewB5M+fn7Zt21KhQgWKFi1KcHAwlStXzqm4F6QRPhER8Tk///wz\n77777r9OYpvyuTGG22+/nVatWmX4tV9++SWhoaF8+OGHnDhxgiJFitClSxcA4uLiCAgIoGTJkpw6\ndSrT1//111//NSpUrFgx9uzZ47kNdLuc7czMhbY/I9nd1ueff54XXngBgN27d/+rKKWXE9vpadHR\n0VhriYuL44YbbqBVq1aULVs29fHJkyfz9NNPO5ZPhU9ERLLEmGyf5P882b2ax8aNGxk1ahTlypUj\nICCAFi1a0KZNm/OeV7FiRcaMGZOt14iNjWXnzp3MmTMHgPr163PnnXdy/fXXs3DhQrp3784HH3xw\nwXWcOHGC/Pnzp97Ply8f8fHxWXr9rG4jXN52ZuZC25+R7Gzrb7/9RnR0NJs3b2bTpk18+OGHDB8+\nPNPn58R2elq3bt2oUaMGANWrV6dhw4aEhoYCrvcoLi6OkJAQx/Kp8ImISJ5x2223sWzZMt566y12\n7dpFmzZteO211+jUqRNXXnmlR16jSJEiVKtWLfV+WFgYK1eu5Pjx49SpUyfL6zh+/Hjq/TNnzlCm\nTJksfW36bWzUqBHjxo3jyiuvpFq1atSsWfPSNugSZbb9mRW+7Gzrl19+yf3330+PHj04ffo0gwYN\nolmzZjm+na+++ioJCQn/WpYyShgREXHBqeuLufXWW1M/L168OFFRUanTwXPnznVsKjeFCp+IiGSJ\nt1xjd/To0cTGxvLGG28ArunA9GUv7RRgWlmZAqxSpQrr169PvR8QEEBSUhLR0dGcPn2a5cuX89VX\nX5GQkMCnn36a4Xquu+46Nm3alHo/Li6O8PDwbG3ja6+9RuPGjQkPDyciIoJZs2Z5ZDszk9n2ZyY7\n23rw4MHUArR48WLuvfdeZs6cmePbOWjQoIs+JztmzZrFZ599lpo5Pj7+X1PUX375JY899liOvHaW\nWWv98ubadBERScvb/28cPXq0HTp0qLXW2p07d9p169bZe+65x3799dcee42EhAR7++23p96/4447\n7N69e//1nFGjRtkXX3wx9f6+fftscnJy6v1Tp07ZatWqpd6/9dZbbWxsrLXW2j179vzrueml38a+\nffvaAwcOWGutveeeey5jyzL2/vvv2y5duqTev9D2p99Oa7O3rVOnTrVTp0611lp777332piYGNuv\nX78c3c7sSv/+WHv++7B+/Xq7Zs0aa6218fHxtkKFCvbUqVOpj1evXt2uWrUqS6+X2b9B9/Js9x4d\npSsiInnChg0bqFatGs2bN6dJkyYsXLiQa665hkaNGnH77bd77HVCQkIYNWoUI0aMYPjw4fTp04fr\nrrsu9fGPP/6YxYsXs3jx4tQjSx944AG+++671OcULFiQQYMG8Z///IeXX36ZgQMHUrp0aQBatmzJ\nqlWrsryNwAUPaLgcb775JtOmTSMqKooXX3yRv/7664Lbn347s7utDz74INu3b2fq1KkMHz6csLAw\nkpOTc2w7syuj9wfOfx/q1avHwYMHmThxIkOHDmXOnDkULFgw9fESJUpQrly5XM+flrFeMkSf24wx\n1l+3XUQkM2mPgswLZs+eTfny5QkLC+Oaa65xOk6WJCcns2bNmoue2iXFG2+8Qf369alcuTJdunTh\no48+yuGEnnMp25qXt9OTMvs36F6e7SOnVPhERCRVXit8ixcvJjExkdtuu+2ydrjPTfPmzaNly5YU\n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\npozTkbyGRvjysB49elC9enUOHDjA2LFjnY4jIiLimISEhNRrz7/44osqex6mET6HffXVV9x5552E\nhITwww8/ULFiRacjiYiI5LqXX36ZESNGULVqVbZu3UpQkKNnjvM6GuHL4+rVq0fnzp05e/Ys/fv3\nxxtKqIiISG7av38/o0ePBuDNN99U2csBKnxe4NVXXyU0NJTPPvuM+fPnOx1HREQk11hr6d27NwkJ\nCXTs2JGGDRs6HcknaUrXS7zzzjv06tWLMmXKsGvXLooVK+Z0JBERkRw3Z84cOnbsSLFixdi1a5f2\n3cuEpnR9RPfu3alXrx6///47gwcPdjqOiIhIjjtx4kTqgRrjx49X2ctBGuHzIjt37qRGjRokJiay\nfv166tWr53QkERGRHNO9e3emTp1KgwYNWL16NQEBGofKjEb4fEiVKlUYNGgQ4Dply99//+1wIhER\nkZyxZs0apk6dSr58+XjnnXdU9nKY3l0vM3ToUK6//np++OEHxowZ43QcERERj0tISKBnz54ADBky\nhJtuusnhRL5PU7peaM2aNTRq1IigoCA2btxI9erVnY4kIiLiMYMGDWL8+PHcdNNNfPfdd4SEhDgd\nyetpStcHNWzYkH79+nHu3Dm6dOlCYmKi05FEREQ8YsOGDUyYMIGAgADef/99lb1cosLnpcaMGcO1\n117Ltm3bUk9GKSIikpedPn2aLl26YK1l0KBB1KlTx+lIfkNTul4sKiqKxo0ba2pXRER8wjPPPMNr\nr71GlSpV2Lx5s0b3LoGmdH1Yo0aN/jW1q6N2RUQkr1q/fj0TJ04kMDBQU7kOUOHzcmPGjKFixYps\n27aNUaNGOR1HRETkksXHx6dO5b7wwgvUqlXL6Uh+R1O6ecD69etp2LAh1lqioqJo0KCB05FERESy\nrFu3bkybNo1bbrmFjRs3ki9fPqcj5Tma0vUDd955Jy+88ALWWjp37swff/zhdCQREZEsWbBgAdOm\nTSN//vzMnj1bZc8hKnx5xMiRI7nttts4cOAAffv2dTqOiIjIRR06dIju3bsDrmvlVqlSxeFE/ktT\nunnI7t27qVGjBqdPn2bWrFl06tTJ6UgiIiIZSk5OplmzZnzxxRfce++9LF26FGOyPSPp9zSl60cq\nVarE66+/DkDv3r3Zv3+/s4FEREQy8dprr/HFF19QqlQppk+frrLnMI3w5THWWtq3b88nn3xC7dq1\nWbdunfaHEBERr7Jx40bq1atHYmIiS5Ys4f7773c6Up6nET4/Y4xh6tSphIWFER0dzeDBg52OJCIi\nkuqPP/6gQ4cOJCYm0q9fP5U9L6ERvjzqm2++oX79+pw7d47FixfTqlUrpyOJiIifSzsLVbNmTb76\n6iudYNlDNMLnp26//XbGjh0LQJcuXYiJiXE4kYiI+LtJkybxySefULRoUebNm6ey50U0wpeHWWtp\n1aoVS5cu5fbbb2ft2rUEBwc7HUtERPxQdHQ0d955J4mJicyfP5/27ds7HcmnaITPjxljeP/997nm\nmmv45ptvGDhwoNORRETEDx0/fpyHHnqIxMREnnzySZU9L6QRPh/w9ddf07BhQxITE3V+PhERyVVJ\nSUncd999REZGUqtWLdavX6+p3BygET6hbt26qefn69atG9u3b3c4kYiI+IsRI0YQGRlJyZIlmT9/\nvsqel9IIn4+w1vLEE0/w/vvvU7FiRTZt2kTx4sWdjiUiIj7sk08+oV27dgQEBPD555/TpEkTpyP5\nLI3wCeD6QXjrrbcIDw/n559/5pFHHiEpKcnpWCIi4qN27drFY489BsCrr76qsuflVPh8SIECBVi4\ncCElSpRg+fLljBw50ulIIiLig/7880/atm1LfHw8Dz/8MM8884zTkeQiNKXrg1atWkXz5s1JTk7m\no48+4uGHH3Y6koiI+IikpCRat27NsmXLuOWWW9iwYQOFChVyOpbP05SunKdp06a89tprADz++ONE\nR0c7nEhERHzFoEGDWLZsGSVKlOCTTz5R2csjNMLno6y19OrViylTplCmTBk2btzI1Vdf7XQsERHJ\nw6ZOnUr37t0JDg5m1apVNGjQwOlIfuNyR/hU+HxYYmIizZo1IyoqivDwcNauXau/xEREJFtWr15N\ns2bNOHfuHNOmTeOJJ55wOpJf0ZSuZCo4OJj58+dz3XXXsWXLFiIiIkhOTnY6loiI5DF79uyhffv2\nnDt3jueee05lLw9S4fNxJUqUYOnSpYSGhrJgwQIGDx7sdCQREclD4uLiuP/++zlx4gQtW7Zk7Nix\nTkeSbFDh8wM33XQT8+fPJygoiPHjx/Pmm286HUlERPKAM2fO0KpVK3bv3s0tt9zCrFmzCAwMdDqW\nZIMKn59o2rQpU6dOBeDJJ59k0aJFDicSERFvlpSUxKOPPsqGDRu4+uqr+eyzzyhSpIjTsSSbVPj8\nSEREBC+99BLWWjp27MjXX3/tdCQREfFC1lqefvppFi5cSGhoKCtWrKBcuXJOx5LLoKN0/Yy1lh49\nejB16lRKlCjB119/zQ033OB0LBER8SITJkxg4MCB5MuXj8jISBo1auR0JL+n07Jkk78WPoBz587R\nqlUrli9fzrXXXsv69eu56qqrnI4lIiJeYPbs2TzyyCMAulqTF9FpWeSSBQUFMW/ePGrVqsUvv/xC\n8+bNOX78uNOxRETEYcuWLSMiIgKA8ePHq+z5EBU+P1W4cGGWL1/OTTfdxI4dO7jvvvs4deqU07FE\nRMQh69at44EHHuDcuXMMHDiQZ5991ulI4kGa0vVzv/76K/Xq1ePAgQM0a9aMTz/9lJCQEKdjiYhI\nLtqyZQuNGzfm5MmTdO/enXfeeQdjsj17KDlAU7pyWa6++mo+//xzSpUqxcqVK+ncuTNJSUlOxxIR\nkVzy008/0aJFC06ePEmHDh14++23VfZ8kAqfUKlSJSIjIylatCgff/wx3bt31yXYRET8QExMDHff\nfTdHjx6lRYsWzJw5UydW9lEqfAJAjRo1WLp0KQUKFOC9996jV69eKn0iIj7swIEDNG7cmIMHD1Kv\nXj0WLFhAvnz5nI4lOUSFT1LVr1+fpUuXkj9/ft5991369euH9nMUEfE9v/76K40bN+aXX36hdu3a\nLFu2jIIFCzodS3KQCp/8S5MmTVIP3Hj77bcZMGCASp+IiA85dOgQjRs35ueff6ZWrVpERkYSGhrq\ndCzJYSp8cp67776bRYsWkS9fPt544w2eeeYZlT4RER9w+PBhmjRpwt69ewkPD2flypUUK1bM6ViS\nC1T4JEMtWrRg4cKFBAcHM3HiRAYNGqTSJyKSh/322280adKE3bt3U716dT7//HOKFy/udCzJJSp8\nkqn77ruP+fPnExQUxIQJE3juuedU+kRE8qDffvuNu+66i59++olbbrmFVatWccUVVzgdS3KRCp9c\nUKtWrZg3bx7BwcH83//9H3369NHRuyIieUhMTAwNGjRg165dVKtWjS+++IISJUo4HUtyma60IVny\n2Wef0b59exISEujcuTPTp08nKCjI6VgiInIBu3fvpmnTphw8eJDw8HAiIyMpWbKk07EkGy73Shsq\nfJJlq1evpmXLlpw6dYr27dsze/ZsnbNJRMRLbd++nWbNmhEbG0u9evVYtmyZjsbNw3RpNck1jRs3\n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\nvMsjiwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,-numpy.pi/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is so nice. We have reproduced the trajectories that Lanchester found more than a hundred years ago, painstakingly drawing them by hand with a contraption called a \"trammel.\" It must have taken him days!\n", + "\n", + "Here is how the different phugoid curves are drawn in von Kármán's book, _Aerodynamics_ (1957). He never says _how_ he drew them, but we're guessing by hand, also. We did pretty good!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/vonKarman-phugoids.png)\n", + "\n", + "#### Figure 4. Phugoid curves in von Kármán (1957)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next notebook of this series, we'll look at the differential equation that arises when you consider small perturbations on the horizontal phugoid, and we'll learn to numerically integrate that to get the flight paths." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Lanchester, F. W. _Aerodonetics_, D. van Nostrand Company: New York, 1909. On the public domain. [Get it from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PP1#v=onepage&q&f=false).\n", + "\n", + "2. Milne-Thompson, L. M. _Theoretical Aerodynamics_, Dover 2012 reprint of the revised 1966 edition. [Read on Google Books](http://books.google.com/books?id=EMfCAgAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see section 18.5)\n", + "\n", + "3. Sinha, N. K. and Ananthkrishnan, N. _Elementary Flight Dynamics with an introduction to Bifurcation and Continuation Methods_, CRC Press, 2013. [Read on Google Books](http://books.google.com/books?id=yXL6AQAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see chapter 5)\n", + "\n", + "4. von Kármán, T. _Aerodynamics_, Dover 2004 reprint of the 1957 2nd edition. (see pages 149–151)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "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 = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb b/lecture_22/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb new file mode 100644 index 0000000..eb6283b --- /dev/null +++ b/lecture_22/01_phugoid/.ipynb_checkpoints/01_02_Phugoid_Oscillation-checkpoint.ipynb @@ -0,0 +1,949 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth. Partly based on David Ketcheson's pendulum lesson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Oscillation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome back! This is the second IPython Notebook of the series _\"The phugoid model of glider flight\"_, the first learning module of the course [**\"Practical Numerical Methods with Python.\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about)\n", + "\n", + "In the first notebook, _\"Phugoid Motion\"_, we described the physics of an aircraft's oscillatory trajectory, seen as an exchange of kinetic and potential energy. This analysis goes back to Frederick Lanchester, who published his book _\"Aerodonetics\"_ on aircraft stability in 1909. We concluded that first exposure to our problem of interest by plotting the flight paths predicted by Lanchester's analysis, known as _phugoids_.\n", + "\n", + "Here, we will look at the situation when an aircraft is initially moving on the straight-line phugoid (obtained with the parameters $C=2/3$, $\\cos\\theta=1$, and $z=z_t$ in the previous analysis), and experiences a small upset, a wind gust that slightly perturbs its path. It will then enter into a gentle oscillation around the previous straight-line path: a _phugoid oscillation_.\n", + "\n", + "If the aircraft experiences an upward acceleration of $-d^2z/dt^2$, and we assume that the perturbation is small, then $\\cos\\theta=1$ is a good approximation and Newton's second law in the vertical direction is:\n", + "\n", + "$$\\begin{equation}\n", + "L - W = - \\frac{W}{g}\\frac{d^2 z}{dt^2}\n", + "\\end{equation}$$\n", + "\n", + "In the previous notebook, we saw that the following relation holds for the ratio of lift to weight, in terms of the trim velocity $v_t$:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}=\\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "This will be useful: we can divide Equation (1) by the weight and use Equation (2) to replace $L/W$. Another useful relation from the previous notebook expressed the conservation of energy (per unit mass) as $v^2 = 2 gz$. With this, Equation (1) is rearranged as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d^2z}{dt^2} + \\frac{gz}{z_t} = g\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Look at Equation (3) for a moment. Does it ring a bell? Do you recognize it?\n", + "\n", + "If you remember from your physics courses the equation for _simple harmonic motion_, you should see the similarity! \n", + "\n", + "Take the case of a simple spring. Hooke's law is $F=-kx$, where $F$ is a restoring force, $x$ the displacement from a position of equilibrium and $k$ the spring constant. This results in the following ordinary differential equation for the displacement:\n", + "\n", + "$$\\begin{equation}\n", + " \\frac{d^2 x}{dt^2}= -\\frac{k}{m}x\n", + "\\end{equation}$$\n", + "\n", + "which has the solution $x(t) = A \\cos(\\omega t- \\phi)$, representing simple harmonic motion with an angular frequency $\\omega=\\sqrt{k/m}=2\\pi f$ and phase angle $\\phi$.\n", + "\n", + "Now look back at Equation (3): it has nearly the same form and it represents simple harmonic motion with angular frequency $\\omega=\\sqrt{g/z_t}$ around mean height $z_t$. \n", + "\n", + "Think about this for a moment ... we can immediately say what the period of the oscillation is: exactly $2 \\pi \\sqrt{z_t/g}$ — or, in terms of the trim velocity, $\\pi \\sqrt{2} v_t/g$.\n", + "\n", + "_This is a remarkable result!_ Think about it: we know nothing about the aircraft, or the flight altitude, yet we can obtain the period of the phugoid oscillation simply as a function of the trim velocity. For example, if trim velocity is 200 knots, we get a phugoid period of about 47 seconds—over that time, you really would not notice anything if you were flying in that aircraft.\n", + "\n", + "Next, we want to be able to compute the trajectory of the aircraft for a given initial perturbance. We will do this by numerically integrating the equation of motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare to integrate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to integrate the differential equation and plot the trajectory of the aircraft. Are you ready?\n", + "\n", + "The equation for the phugoid oscillation is a second-order, ordinary differential equation (ODE). Let's represent the time derivative with a prime, and write it like this:\n", + "\n", + "$$\\begin{equation}\n", + "z(t)'' + \\frac{g \\,z(t)}{z_t}=g\n", + "\\end{equation}$$\n", + "\n", + "There's a convenient trick when we work with ODEs: we can turn this 2nd-order equation into a system of two 1st-order equations. Like this:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z'(t) &=& b(t)\\\\\n", + "b'(t) &=& g\\left(1-\\frac{z(t)}{z_t}\\right)\n", + "\\end{eqnarray}$$\n", + "\n", + "Are you following? Make sure you are following the derivations, even if it means writing the equations down in your own notes! (Yes, the old-fashioned paper way.)\n", + "\n", + "Another way to look at a system of two 1st-order ODEs is by using vectors. You can make a vector with your two independent variables, \n", + "\n", + "$$\\begin{equation}\n", + "\\vec{u} = \\begin{pmatrix} z \\\\ b \\end{pmatrix}\n", + "\\end{equation}$$\n", + "\n", + "and write the differential system as a single vector equation:\n", + "\n", + "\\begin{equation}\n", + "\\vec{u}'(t) = \\begin{pmatrix} b\\\\ g-g\\frac{z(t)}{z_t} \\end{pmatrix}\n", + "\\end{equation}\n", + "\n", + "If you call the right-hand-side $\\vec{f}(\\vec{u})$, then the equation is very short: $\\vec{u}'(t) = \\vec{f}(\\vec{u})$—but let's drop those arrows to denote vectors from now on, as they are a bit cumbersome: just remember that $u$ and $f$ are vectors in the phugoid equation of motion.\n", + "\n", + "Next, we'll prepare to solve this problem numerically." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initial value problems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's step back for a moment. Suppose we have a first-order ODE $u'=f(u)$. You know that if we were to integrate this, there would be an arbitrary constant of integration. To find its value, we do need to know one point on the curve $(t, u)$. When the derivative in the ODE is with respect to time, we call that point the _initial value_ and write something like this:\n", + "\n", + "$$u(t=0)=u_0$$\n", + "\n", + "In the case of a second-order ODE, we already saw how to write it as a system of first-order ODEs, and we would need an initial value for each equation: two conditions are needed to determine our constants of integration. The same applies for higher-order ODEs: if it is of order $n$, we can write it as $n$ first-order equations, and we need $n$ known values. If we have that data, we call the problem an _initial value problem_.\n", + "\n", + "Remember the definition of a derivative? The derivative represents the slope of the tangent at a point of the curve $u=u(t)$, and the definition of the derivative $u'$ for a function is:\n", + "\n", + "$$u'(t) = \\lim_{\\Delta t\\rightarrow 0} \\frac{u(t+\\Delta t)-u(t)}{\\Delta t}$$\n", + "\n", + "If the step $\\Delta t$ is already very small, we can _approximate_ the derivative by dropping the limit. We can write:\n", + "\n", + "$$\\begin{equation}\n", + "u(t+\\Delta t) \\approx u(t) + u'(t) \\Delta t\n", + "\\end{equation}$$\n", + "\n", + "With this equation, and because we know $u'(t)=f(u)$, if we have an initial value, we can step by $\\Delta t$ and find the value of $u(t+\\Delta t)$, then we can take this value, and find $u(t+2\\Delta t)$, and so on: we say that we _step in time_, numerically finding the solution $u(t)$ for a range of values: $t_1, t_2, t_3 \\cdots$, each separated by $\\Delta t$. The numerical solution of the ODE is simply the table of values $t_i, u_i$ that results from this process." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discretization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to execute the process described above and find the numerical solution of the ODE, we start by choosing the values $t_1,t_2,t_3 \\cdots t_n$—we call these values our *grid* in time. The first point of the grid is given by our _initial value_, and the small difference between two consecutive times is called the _time step_, denoted by $\\Delta t$. The solution value at time $t_n$ is denoted by $u_n$.\n", + "\n", + "Let's build a time grid for our problem. We first choose a final time $T$ and the time step $\\Delta t$. In code, we'll use readily identifiable variable names: `T` and `dt`, respectively. With those values set, we can calculate the number of time steps that will be needed to reach the final time; we call that variable `N`. \n", + "\n", + "Let's write some code. The first thing we do in Python is load our favorite libraries: NumPy for array operations, and the Pyplot module in Matplotlib, to later on be able to plot the numerical solution. The line `%matplotlib inline` tells IPython Notebook to show the plots inline." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy \n", + "from matplotlib import pyplot\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, initialize `T` and `dt`, calculate `N` and build a NumPy array with all the values of time that make up the grid." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100.0\n", + "dt = 0.02\n", + "N = int(T/dt)+1\n", + "t = numpy.linspace(0.0, T, N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have our grid! Now it's time to apply the numerical time stepping represented by Equation (10)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Write the code above using the NumPy function `arange()` instead of `linspace()`. If you need to, read the documentation for these functions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enter a question mark followed by any function, e.g., `?numpy.linspace`, into a code cell and execute it, to get a help pane on the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The approximate solution at time $t_n$ is $u_n$, and the numerical solution of the differential equation consists of computing a sequence of approximate solutions by the following formula, based on Equation (10):\n", + "\n", + "$$u_{n+1} = u_n + \\Delta t \\,f(u_n).$$\n", + "\n", + "This formula is called **Euler's method**.\n", + "\n", + "For the equations of the phugoid oscillation, Euler's method gives the following algorithm that we need to implement in code:\n", + "\n", + "\\begin{align}\n", + "z_{n+1} & = z_n + \\Delta t \\, b_n \\\\\n", + "b_{n+1} & = b_n + \\Delta t \\left(g - \\frac{g}{z_t} \\, z_n \\right).\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To apply the numerical solution method, we need to set things up in code: define the parameter values needed in the model, initialize a NumPy array to hold the discrete solution values, and initialize another array for the elevation values." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# initial conditions\n", + "z0 = 100. #altitude\n", + "b0 = 10. #upward velocity resulting from gust\n", + "zt = 100.\n", + "g = 9.81\n", + "\n", + "u = numpy.array([z0, b0])\n", + "\n", + "# initialize an array to hold the changing elevation values\n", + "z = numpy.zeros(N)\n", + "z[0] = z0 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should pay attention to a couple of things: (1) See how there is a dot after the numbers used to define our parameters? We just want to be explicit (as a good habit) that these variables are real numbers, called \"floats.\" (2) We both _created_ and _initialized_ with zeros everywhere the solution vector `z`. Look up the documentation for the handy NumPy function `zeros()`, if you need to. (3) In the last line above, we assign the _initial value_ to the first element of the solution vector: `z[0]`.\n", + "\n", + "Now we can step in time using Euler's method. Notice how we are time stepping the two independent variables at once in the time iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-loop using Euler's method\n", + "for n in range(1,N):\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make sure you understand what this code is doing. This is a basic pattern in numerical methods: iterations in a time variable that apply a numerical scheme at each step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the code is correct, we have stored in the array `z` the position of the glider at each time. Let's use Matplotlib to examine the flight path of the aircraft.\n", + "\n", + "You should explore the [Matplotlib tutorial](http://matplotlib.org/users/pyplot_tutorial.html) (if you need to) and familiarize yourself with the command-style functions that control the size, labels, line style, and so on. Creating good plots is a useful skill: it is about communicating your results effectively. \n", + "\n", + "Here, we set the figure size, the limits of the vertical axis, the format of tick-marks, and axis labels. The final line actually produces the plot, with our chosen line style (continuous black line)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4)) #set plot size\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z, 'k-');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Explore and think" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try changing the value of `v` in the initial conditions. \n", + "\n", + "* What happens when you have a larger gust? \n", + "* What about a smaller gust? \n", + "* What happens if there isn't a gust (`v = 0`)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equation for phugoid oscillations is a 2nd-order, linear ODE and it has an exact solution of the following form:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "z(t) = A \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + B \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $A$ and $B$ are constants that we solve for using initial conditions. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our numerical solution used the initial conditions:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z(0) = z_0 \\\\\n", + "b(0) = b_0\n", + "\\end{eqnarray}$$\n", + "\n", + "Applying these to the exact solution and solving for $A$ and $B$, we get:\n", + "\n", + "$$\\begin{equation}\n", + "z(t) = b_0 \\sqrt{\\frac{z_t}{g}} \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + (z_0-z_t) \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already defined all of these variables for our numerical solution, so we can immediately compute the exact solution. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The expression is a bit long —if you don't feel like scrolling left and right, you can insert a line break in the code using a backslash '\\' _(without any trailing spaces)_ and Python will treat the next line as a continuation of the first." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot our exact solution! Even better, we can plot _both_ the numerical solution *and* the exact solution to see how well Euler's method approximated the phugoid oscillations.\n", + "\n", + "To add another curve to a plot, simply type a second `pyplot.plot()` statement. We also added a legend using the format\n", + "\n", + "```Python\n", + "pyplot.legend([\"line 1\",\"line 2\"])\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nXZ3JngAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4))\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z)\n", + "pyplot.plot(t, z_exact)\n", + "pyplot.legend(['Numerical Solution','Analytical Solution']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks like pretty good agreement, but what's happening towards the end? We'll come back to this. For now, re-run the previous steps with a different timestep, say $dt=0.01$ and pay attention to the difference.\n", + "\n", + "Euler's method, like all numerical methods, introduces some errors. If the method is *convergent*, the approximation will get closer and closer to the exact solution as we reduce the size of the step, $\\Delta t$. The error in the numerical method should tend to zero, in fact, when $\\Delta t\\rightarrow 0$—when this happens, we call the method _consistent_. We'll define these terms more carefully in the theory components of this course. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compare the two solutions, we need to use a **norm** of the difference, like the $L_1$ norm, for example.\n", + "\n", + "$$ E = \\Delta t \\sum_{n=0}^N \\left|z(t_n) - z_n\\right|$$\n", + "\n", + "The $L_1$ norm is the sum of the individual differences between the exact and the numerical solutions, at each mesh point. In other words, $E$ is the discrete representation of the integral over the interval $T$ of the (absolute) difference between the computed $z$ and $z_{\\rm exact}$:\n", + "\n", + "$$ E = \\int \\vert z-z_\\rm{exact}\\vert dt $$\n", + "\n", + "We check for convergence by calculating the numerical solution using progressively smaller values of `dt`. We already have most of the code that we need. We just need to add an extra loop and an array of different $\\Delta t$ values to iterate through. \n", + "\n", + "You should read the documentation for the function [enumerate](https://docs.python.org/2/library/functions.html#enumerate) and make sure you understand how we're using it below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Warning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cell below can take a little while to finish (the last $\\Delta t$ value alone requires 1 million iterations!). If the cell is still running, the input label will say `In [*]`. When it finishes, the `*` will be replaced by a number." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-increment array\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001, 0.0001])\n", + "\n", + "# array that will contain solution of each grid\n", + "z_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " N = int(T/dt)+1 # number of time-steps\n", + " ### discretize the time using numpy.linspace() ###\n", + " t = numpy.linspace(0.0, T, N)\n", + "\n", + " # initial conditions\n", + " u = numpy.array([z0, b0])\n", + " z = numpy.empty_like(t)\n", + " z[0] = z0\n", + " \n", + " # time loop - Euler method\n", + " for n in range(1,N):\n", + " ### compute next solution using Euler method ###\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0] # store the elevation at time-step n+1\n", + " \n", + " z_values[i] = z.copy() # store the total elevation calculation grid i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculate the error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical solutions for each $\\Delta t$ in the array `z_values`. To calculate the error corresponding to each $\\Delta t$, we can write a function! " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_error(z, dt):\n", + " \"\"\"Returns the error relative to analytical solution using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array of float\n", + " numerical solution.\n", + " dt : float\n", + " time increment.\n", + " \n", + " Returns\n", + " -------\n", + " err : float\n", + " L_{1} norm of the error with respect to the exact solution.\n", + " \"\"\"\n", + " N = len(z)\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt\n", + " \n", + " return dt * numpy.sum(numpy.abs(z-z_exact))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: in the last line of the function, we perform an 'array operation': \n", + "\n", + "`z - z_exact`\n", + "\n", + "We are *not* subtracting one value from another. Instead, we are taking the difference between elements at each corresponding index in both arrays. Here is a quick example:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 2, 1])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = numpy.array([1, 2, 3])\n", + "b = numpy.array([4, 4, 4])\n", + "\n", + "b - a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we iterate through each $\\Delta t$ value and calculate the corresponding error. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " ### call the function get_error() ###\n", + " error_values[i] = get_error(z_values[i], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember, *if* the method is convergent then the error should get smaller as $\\Delta t$ gets smaller. To visualize this, let's plot $\\Delta t$ vs. error. If you use `pyplot.plot` you won't get a very useful result. Instead, use `pyplot.loglog` to create the same plot with a log-log scale. This is what we do almost always to assess the errors of a numerical scheme graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nWtIESavUofkys59KukjSFElDJT0gaaGZbStJ7n6pu+/s7ru4e3Pbl4Yssi9f7eb72p626+75rp7r\nuL6z7aL42rq3P7OQ14XOM591Scqy0Nf2Ns9C1pdLnqX4Xe9sHXnm91xf1hVbnP/uZN/s3XaF5tmV\nSJo4d1/o7pPd/XZJ6zvZ5AxJ17n7Ne7+vLuPl/S6pJO7ek8zu1vSrZJGm9krZrZnX+uMw//ZpWri\nVqxY0W0dIcT5L6KunuvNX0RxzrLQ18bhL/a05BmXJo48wzVxpciyqzpCv47f9XCvLWUTF/klRsxs\npaRT3X1mbrm/pI8lHZlr8lq3u1jSTu6e6ePP45ArAABIjK4uMdKv1IXkYUtJG0t6s8P6tyRt3dc3\n7yoIAACAJOHsVAAAgASKYxP3jqR1kgZ3WD9YLXNxAAAAZS92TZy7r5H0uKQDOjy1v1rOUgUAACh7\nkczEmdlASTvkFjeS9BUzGyrpXXd/RdL/SLrezB5RS+N2klrm4S6Pol4AAIC4ieTsVDPLSGrKLbr+\ndX236e7+s9w2J0s6U9IQSX+SdLq731fiUgEAAGIp8kuMIBnMbIWkD9RyXb/33H2/aCtKPjPbRNKz\nkm51919GXU9SmdkgSYvVcmShv6TL3P3iaKtKptwF1a+X9AVJn0j6jbvfFm1VyWZmsyUNl9To7kdE\nXU8SmdlBki5Uy5G789z9mohLig2aOOTFzF6S9C13/39R15IWZvZbSZWSXnb3M6OuJ6nMbCNJ/d29\nOdcYPyNpD3d/O+LSEsfMtpa0lbs/bWaD1TKfvIO7r4q4tMQys+GSNpV0HE1c4cysn1p+pzOSVkp6\nQtL33P29KOuKi9id2IBY4xp7gZjZDpK+LmmhyLVP3H19m9vvfVbSaknN3bwEXXD3N9z96dyf31TL\n1QK2iLaqZHP3pZI+irqOBNtD0jPu/rq7fyRpgTY88bFs0cQhXy7pXjN7xMyOirqYFLhA0llRF5EW\nZraZmT0l6WVJU919ZdQ1JZ2Z7SppI3d/LepaUNa2kdR2H3xV0hcjqiV24njHBsTTD9z99dzhlrvN\n7E/u/qeoi0oiMztE0gvu/lcz2zvqetLA3T+Q9F0z20rSEjNrcPe/Rl1XUpnZFpJmSBoXdS0oe8x8\ndYNv4lLIzIaZ2Vwze9XM1pvZcZ1sc4qZvWRmq8zssbbNRO65ZWb2hJlVSJK7v5773zfU8nX2LqX6\nPFErQp57SjoyN2d4gaQTzGxy6T5RtIqxf7Zy97ckZSUNLfoHiYFiZGlmAyTNlnSuuz9Uuk8TvSLu\nm2XbiPQ1U0n/UPtv3r6k9t/MlTWauHQaKOlpSRMkrVKHv0DM7KeSLpI0RS3/sXtA0sLcmWly90vd\nfWd336V1WNzMNs299nOSfijpzyX7NNELmqe7n+3uX3b3r0r6v5KucvcpJfw8UQu9f27VZv/cTNI+\nufcvB6GzNEnTJTW5+42l+xixETTPti8tRfEx1adMJT0qaScz2yb3358DJd1Votrjz915pPihlrN5\nju2w7mFJV3RY94Kk33XxHl+V9GTu8SdJ1VF/riTn2WG74ySdH/XnSnKeknaXtCy3fy7r+H7l8giU\n5d5que3hE7ksl6nlrPTIP18S88w9f7ektyR9LOkVSXtG/dmSlqmkgyU9L+lFSeOi/hxxejATV2bM\nrL9aDoWe3+GpBkl7dfYad39JZXJ4qlC9ybMtd59RjLqSqpf756OSdi5yaYnTyyzvk7RxkUtLpN7+\nrrv7iGLWlWT5Zuru8yTNK2FpicHh1PKzpVr+kn6zw/q31HJrMxSGPMMiz3DIMizyDI9M+4gmDgAA\nIIFo4srPO2qZeRncYf1gSa+XvpzEI8+wyDMcsgyLPMMj0z6iiSsz7r5GLbfS6XjF6/3VclYQCkCe\nYZFnOGQZFnmGR6Z9x4kNKWRmAyXtkFvcSNJXzGyopHfd/RVJ/yPpejN7RC2/KCepZf7g8ijqjTvy\nDIs8wyHLsMgzPDItsqhPj+UR/qGWGwWvzz3WtfnztW22OVnSS2q5x+SjkvaOuu64PsiTPOP6IEvy\njPuDTIv7sFyAAAAASBBm4gAAABKIJg4AACCBaOIAAAASiCYOAAAggWjiAAAAEogmDgAAIIFo4gAA\nABKIJg4AACCBaOIAAAASiCYOAApkZgPM7AUz+0HUtQAoXzRxAFC4EyVtLmlKdxuZ2cZm9pyZbVOa\nsgCUE5o4ACiAmW0i6euSzpY03MxGdLP5rpK2cPd/lKQ4AGWFJg4ACnOKpEskXStpuaTfdLPtvpKa\nSlEUgPJDEwcAeTKz/yPpi+7+rLuvk1QnaU8zO6jDdj82s/+VdLqkz5nZ/5rZ1yMoGUCKmbtHXQMA\nJIKZ/UrSLe7+t9yySfqTpDXuvkuHbftLek/SLu7+QsmLBZB6fBMHAHkwsy0kbd7awEmSt/wr+BxJ\nQ81sTIeX/EDShzRwAIqFJg4A8lMt6Q8dV7r7HZKekFSX+2au1f6SsqUpDUA5ookDgB6Y2WBJ/d39\ntS42+S9J35R0VJt1I5Rr4sxsbzMbUNQiAZQdZuIAoAe5kxQelPRWN5tNl7RG0o7uvs7MPpa0l6Tn\nJE109/OKXiiAskITBwDdMLOtJb0kKZ9v0lzSz9x9hpldKGmtpLclXeHuHxexTABliCYOAAAggZiJ\nAwAASCCaOAAAgASiiQMAAEggmjgAAIAEookDAABIIJo4AACABKKJAwAASCCaOAAAgAT6/wsNBajn\noDeVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10, 6))\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase tick font size\n", + "pyplot.grid(True) #turn on grid lines\n", + "pyplot.xlabel('$\\Delta t$', fontsize=16) #x label\n", + "pyplot.ylabel('Error', fontsize=16) #y label\n", + "pyplot.loglog(dt_values, error_values, 'ko-') #log-log plot\n", + "pyplot.axis('equal') #make axes scale equally;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the kind of result we like to see! As $\\Delta t$ shrinks (towards the left), the error gets smaller and smaller, like it should." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We calculated the error for several different timestep sizes using two nested `for` loops. That worked, but whenever possible, we like to re-use code (and not just copy and paste it!). \n", + "\n", + "Create a function that implements Euler's method and re-write the error analysis cell to use your function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb b/lecture_22/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb new file mode 100644 index 0000000..742302d --- /dev/null +++ b/lecture_22/01_phugoid/.ipynb_checkpoints/01_03_PhugoidFullModel-checkpoint.ipynb @@ -0,0 +1,929 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, I. Hawke. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Full phugoid model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the third IPython Notebook of the series on the _phugoid model of glider flight_, our first learning module of the course [\"Practical Numerical Methods with Python\"](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about). In the first notebook, we described the physics of the trajectories known as phugoids obtained from an exchange of potential and kinetic energy in an idealized motion with no drag. We gave you a neat little code to play with and plot various phugoid curves.\n", + "\n", + "In the second notebook, we looked at the equation representing small perturbations on the straight-line phugoid, resulting in simple harmonic motion. This is a second-order ordinary differential equation, and we solved it numerically using **Euler's method**: the simplest numerical method of all. We learned about convergence and calculated the error of the numerical solution, comparing with an analytical solution. That is a good foundation!\n", + "\n", + "Now, let's go back to the dynamical model, and take away the idealization of no-drag. Let's remind ourselves of the forces affecting an aircraft, considering now that it may be accelerating, with an instantaneous upward trajectory. We use the designation $\\theta$ for the angle, and consider it positive upwards." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "In lesson 1, we wrote the force balance in the directions perpendicular and parallel to the trajectory for a glider in _equilibrium_. What if the forces are _not_ in balance? Well, there will be acceleration terms in the equations of motion, and we would have in that case:\n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Recall, from our first lesson, that the ratio of lift to weight is known from the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynam-ically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The initial value problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to visualize the flight trajectories predicted by this model, we are going to need to integrate the spatial coordinates, which depend on both the forward velocity (tangential to the trajectory) and the trajectory angle. The position of the glider on a vertical plane will be designated by coordinates $(x, y)$ with respect to an inertial frame of reference, and are obtained from:\n", + "\n", + "\\begin{align}\n", + "x'(t) & = v \\cos(\\theta) \\\\\n", + "y'(t) & = v \\sin(\\theta).\n", + "\\end{align}\n", + "\n", + "Augmenting our original two differential equations by the two equations above, we have a system of four first-order differential equations to solve. We will use a time-stepping approach, like in the previous lesson. To do so, we do need *initial values* for every unknown:\n", + "\n", + "$$\n", + "v(0) = v_0 \\quad \\text{and} \\quad \\theta(0) = \\theta_0\\\\\n", + "x(0) = x_0 \\quad \\text{and} \\quad y(0) = y_0\n", + "$$\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve with Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know how to apply Euler's method from the previous lesson. We replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "Alright, we know where this is going. At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we've learned before, the system of differential equations can also be written as a vector equation:\n", + "\n", + "$$u'(t) = f(u)$$\n", + "\n", + "where\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix}.\n", + "\\end{align}\n", + "\n", + "It's a bit tricky to code the solution using a NumPy array holding all your independent variables. But if you do, a function for the Euler step can be written that takes any number of simultaneous equations. It simply steps in time using the same line of code:\n", + "\n", + "```Python\n", + "def euler_step(u, f, dt):\n", + " return u + dt * f(u)\n", + "```\n", + "\n", + "This function can take a NumPy array `u` with any number of components. All we need to do is create an appropriate function `f(u)` describing our system of differential equations. Notice how we are passing a _function_ as part of the arguments list to `euler_step()`. Neat!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we start by loading the modules and libraries that we need for this problem. We'll need a few transcendental functions, including the $\\log$ for a convergence study later on. And remember: the line `%matplotlib inline` is a magic function that tells Matplotlib to give us the plots in the notebook (the default behavior of Matplotlib is to open a pop-up window). In addition, we are importing the module `rcParams` to define notebook-wide plotting parameters: font family and size. Here we go!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log, ceil\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set things up to start our numerical solution: the parameter \n", + "values and the _initial values_. You know what the acceleration of gravity is: 9.8 m/s$^2$, but what are good values for $C_D/C_L$, the inverse of the aerodynamic efficiency? Some possible values are given on a table in the Wikipedia entry for [lift-to-drag ratio](http://en.wikipedia.org/wiki/Lift-to-drag_ratio): a modern sailplane can have $L/D$ of 40 to 60, depending on span (and, in case you're interested, a flying squirrel has $L/D$ close to 2).\n", + "\n", + "For the _trim velocity_, the speed range for typical sailplanes is between 65 and 280 km/hr, according to Wikipedia (it must be right!). Let's convert that to meters per second: 18 to 78 m/s. We'll pick a value somewhere in the middle of this range.\n", + "\n", + "Here's a possible set of parameters for the simulation, but be sure to come back and change some of these, and see what happens!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 30.0 # trim velocity in m s^{-1} \n", + "C_D = 1/40 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = v_t # start at the trim velocity (or add a delta)\n", + "theta0 = 0 # initial angle of trajectory\n", + "x0 = 0 # horizotal position is arbitrary\n", + "y0 = 1000 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll define a function `f()` to match the right-hand side of Equation (15), the full differential system in vector form. This function assumes that we have available the parameters defined above. If you re-execute the cell above with different parameter values, you can just run the solution without re-executing the function definition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the code defining function `f(u)` with the differential equations, and convince yourself that it's right!\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix} \\nonumber\n", + "\\end{align}\n", + "\n", + "Now, Euler's method is implemented in a simple function `euler_step()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equations.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After defining a final time for the solution, and the time step $\\Delta t$, we can construct the grid in time using the NumPy function [`linspace()`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html). Make sure you study the decisions we made here to build the time grid: why do we add 1 to the definition of `N`, for example?\n", + "\n", + "Look at the code below, and make sure you understand the following aspects of it.\n", + "\n", + "* The NumPy array `u` contains the solution at every time-step, consisting of the velocity, angle and location of the glider. \n", + "* The first element of the array `u` is set to contain the initial conditions. \n", + "* In the `for`-loop, the function `euler_step()` is called to get the solution at time-step $n+1$. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100 # final time\n", + "dt = 0.1 # time increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u = numpy.empty((N, 4))\n", + "u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values\n", + "\n", + "# time loop - Euler method\n", + "for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to plot the path of the glider, we need the location (`x`, `y`) with respect to time. That information is already contained in our NumPy array containing the solution; we just need to pluck it out. \n", + "\n", + "Make sure you understand the indices to `u`, below, and the use of the colon notation. If any of it is confusing, read the Python documentation on [Indexing](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider's position with respect to the time\n", + "x = u[:,2]\n", + "y = u[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to plot the path of the glider and get the distance travelled!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nnMGDB7Np0ybGjx9PcXExr7zyStwh5h0dAamBjoCIiNRPs2fPZvTo0VRUVNCgQQPGjh3LuHHjaNAg\nv3831xRMQqgAERGpv7Zu3cq4ceO4+eabcXeGDBnC5MmT83pKRlMwUqfo/PpolKfolKtolKfoMuVq\nr7324i9/+QszZ86kRYsWPPHEE/Ts2ZOPP/449wHmGRUgIiKS9372s59RXl5Ohw4dWLBgAb1792bd\nunVxh1WvaQqmBpqCERHJHx999BF9+vRhyZIldOzYkbKysrw7VVdTMCIiIjl24IEHUlpaSnFxMcuX\nL2fAgAF8+eWXcYdVL6kAkazQPHQ0ylN0ylU0ylN0UXPVunVrXnzxRTp27MjixYs588wz2bJlS+0G\nl4dUgIiIiKRp1aoVM2fOpE2bNpSVlTFixIgab3Ynu0drQGqgNSAiIvmroqKCnj178uWXXzJ27Fiu\nu+66uEOqdboOSEKoABERyW+zZs1iwIABVFZW8thjj3H22WfHHVKt0iJUqVM0Dx2N8hSdchWN8hTd\nnuaqX79+3HzzzQCMHDmSRYsWZTGq/KUCREREpAa//e1vufDCC9m8eTNnnnkmn376adwh1XmagqmB\npmBERARgy5Yt9OrVi1dffZX+/fszY8aMennfGE3BiIiIJMjee+/N1KlT2X///Xnuuee44YYb4g6p\nTlMBIlmheeholKfolKtolKfospGrdu3a8eCDD2JmjB8/nhdeeOGHB5anVICIiIjshv79+zN27Fjc\nnfPPP58PPvgg7pDqJK0BqYHWgIiISLrt27czYMAAnn/+eXr06EFZWRkFBQVxh5UVWgMiIiKSUA0b\nNmTKlCkccsghzJ8/nyuvvDLukOocFSCSFZqHjkZ5ik65ikZ5ii7buWrdujWPPfYYjRo1YsKECUyf\nPj2r+6/vVICIiIjsoR49enzvImXLly+POaK6Q2tAaqA1ICIisivuzjnnnMPjjz9Oly5dKC8vp1mz\nZnGHtce0BkRERKQOMDMmTZpE586dWbp0KSNHjkS/uNZMBYhkheaho1GeolOuolGeoqvNXDVr1own\nn3ySFi1aMH36dP785z/X2mfVFypAREREsqBjx45MmTIFM+MPf/gDzz77bNwhJZrWgNRAa0BERGR3\nXH/99YwbN47mzZszb948jjrqqLhD2i25WgOiAqQGKkBERGR3VFZWcs455zBt2jTatm1LeXk5Bx98\ncNxhRaZFqCEz62lmpWb2jpmtMrMZZtY5rc8BZnadmZWb2etm9paZvWZmF2bYX4GZXR/2edPM5pnZ\nSbn7RvWT5qGjUZ6iU66iUZ6iy1WuGjRowOTJk+nRowdr1qzh9NNPZ+PGjTn57Lok0QWImfUCXgRm\nuPsR7t4eWAXMMbNDU7oeD/wn8Gt37+bunYF7gfvN7IK03U4EzgZOdvejgUnALDM7pna/jYiI5Ism\nTZrwz3/+kyOOOIJFixYxePBgNm/eHHdYiZLoKRgzmwO0d/d2KW3NgI+AB9z9V2Fbd+Cn7n5j2vvX\nAy+6+7Bw+0hgKTDK3e9P6fcvYJW7D8wQg6ZgRERkj7z33nucfPLJrFu3jr59+/LUU0/RpEmTuMPa\nJU3BBLoBb6c2uPtGYDVwRkpbeYbiowBoAnyS0jwEMKA07XNKgX5m1jR7oYuISL7r0KEDpaWlHHjg\ngbzwwgsMHjyYr7/+Ou6wEiHpBchXZI6xEjjIzPbJ9CYz2w+4A1gD3JDyUjGwHXg/7S0rgUZAlx8a\ncL7SPHQ0ylN0ylU0ylN0ceWqU6dOvPTSSxxwwAE8//zz9OnTh08++aTmN9ZzSS9AFgJHmVmjqgYz\nawEUhZvNUzubWRMzewv4mKCYGOzuH6R0aQVszjCnsiF83j+bwYuIiAB06dKF0tJS2rVrxyuvvEKP\nHj1YtmxZ3GHFKulrQI4D5gO3AtcQHKW4DRgGFAKt3H19hvc1JliUei0wwt2nh+2zgBPcvUVa/0uA\nu4EB7j4z7TWtARERkaxYu3YtAwcOZMGCBRQWFnLHHXcwYsSIuMP6nlytAWlUc5f4uPtrZtYXuApY\nAnwBPARsAYZnKj7C930D3GxmfYC/m9mT7l4JfAoU2s5VRdWRlM8y7W/kyJG0b98egJYtW9K1a1dO\nPfVU4LtDetrWtra1rW1tR9mePXs2l156KY888ggXXnghJSUlTJgwYccRkVzHU/XnVatWkVPuXuce\nQAkwK2W7MdAgQ7+/EqwX6RBuXxlut0vrNxHYCjTNsA+XmpWWlsYdQp2gPEWnXEWjPEWXpFxVVlb6\nvffe602bNnXAmzVr5n/961/9q6++ijs0D//fq/X/yxO9BsTM2plZcVpbC+Bk4O8pzXcD52TYRXuC\nguPzcHs64EDvtH69CQoanaQtIiK1zsy4+OKLefPNNxk0aBAbN25kzJgxtGvXjvHjx+f+aEQMkr4G\nZCQwBjjJ3debWSFwH9DQ3c9K6Xcf0BUY5OGiUzMbCjwKTHH3kSl97yAoOE5y98/M7CLgb8CJ7l6R\nIQZPco5ERKTue/bZZ7nuuusoLy/f0da9e3dOO+00TjnlFI477jgKCwtzEovuBQOY2bHATcARwHqC\nU2inAre4+/aUfkcB/w70JDjisRewieAqp3en9W0EjCe4Guo2gjNgxrj7vGpiUAEiIiK1zt2ZO3cu\nt99+O0899dROV05t164dnTt3pkOHDhQVFXH44YdTVFREUVERLVu2zFocKkASQgVINGVlZTsWNkn1\nlKfolKtolKfo6lKuNm3axMyZM5k9ezZz5sxhyZIlbNu2rdr+++67745ipKioiOLiYvr27UubNm12\n+7N1FoyIiEieKiwsZOjQoQwdOhSAb7/9lhUrVvD222+zYsUKVq5cueN55cqVrF+/nvXr17NgwYLv\n7adr165ceOGFDB8+nNatW8fxVaqlIyA10BEQERFJMnfnk08++V5hMn/+fMrKynZM4xQUFDBq1Ciu\nueYaDj300F3uT1MwCaECRERE6qKtW7dSUlLCvffeS0lJCe5O48aNueKKKxg7dix77713xvfpZnRS\np6Re0EaqpzxFp1xFozxFl2+52muvvRgyZAjPPPMMS5Ys4bzzzmPbtm3ceOONdO3alVdeeSXW+FSA\niIiI1HOdO3fm4YcfZu7cuXTq1Illy5bRs2dPJk6cSFxH+TUFUwNNwYiISH2yZcsWrr76am699VYA\nRowYwT333EPjxo0BrQFJDBUgIiJSHz366KOMGjWKTZs28fOf/5xp06ZRWFioNSBSt+Tb3OqeUp6i\nU66iUZ6iU66+79xzz2XOnDm0bt2amTNn0rdvX7788sucfb4KEBERkTz1k5/8hLlz53LYYYdRXl5O\n//79c/bZmoKpgaZgRESkvlu9ejW9evVi9erVAJqCERERkdp32GGHUVpayoknnpizz1QBIlmhudVo\nlKfolKtolKfolKtdKyoqYt68jPdlrRUqQERERAQITsHN2WdpfcOuaQ2IiIjkE52GKyIiIvWWChDJ\nCs2tRqM8RadcRaM8RadcJYsKEBEREck5rQGpgdaAiIhIPtEaEBEREam3VIBIVmhuNRrlKTrlKhrl\nKTrlKllUgIiIiEjOaQ1IDbQGRERE8onWgIiIiEi9pQJEskJzq9EoT9EpV9EoT9EpV8miAkRERERy\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualization of the path\n", + "pyplot.figure(figsize=(8,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'x', fontsize=18)\n", + "pyplot.ylabel(r'y', fontsize=18)\n", + "pyplot.title('Glider trajectory, flight time = %.2f' % T, fontsize=18)\n", + "pyplot.plot(x,y, 'k-', lw=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grid convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's study the convergence of Euler's method for the phugoid model. In the previous lesson, when we studied the straight-line phugoid under a small perturbation, we looked at convergence by comparing the numerical solution with the exact solution. Unfortunately, most problems don't have an exact solution (that's why we compute in the first place!). But here's a neat thing: we can use numerical solutions computed on different grids to study the convergence of the method, even without an analytical solution.\n", + "\n", + "We need to be careful, though, and make sure that the fine-grid solution is resolving all of the features in the mathematical model. How can we know this? We'll have a look at that in a bit. Let's see how this works first.\n", + "\n", + "You need a sequence of numerical solutions of the same problem, each with a different number of time grid points.\n", + "\n", + "Let's create a NumPy array called `dt_values` that contains the time-increment of each grid to be solved on. For each element `dt_values[i]`, we will compute the solution `u_values[i]` of the glider model using Euler's method. If we want to use five different values of $\\Delta t$, we'll have five solutions: we put them in an array ... but each one is also an array! We'll have an array of arrays. How meta is that?\n", + "\n", + "We have one more trick up our sleeve: `enumerate()`. To get all the numerical solutions—each with its value of $\\Delta t$—done in one fell swoop, we will loop over the elements of the array `dt_values`. Within the loop, we need to access both `dt_values[i]` and the index `i`. It turns out, `enumerate()` is a built-in Python function that will give us consecutive `index, value` pairs just like we need. \n", + "\n", + "Read the code below carefully, and remember: you can get a help pane on any function by entering a question mark followed by the function name. For example, add a new code cell below and type: `?numpy.empty_like`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), we compared our numerical result to an analytical solution, but now we will instead compare numerical results from different grids. \n", + "\n", + "For each solution, we'll compute the difference relative to the finest grid. You will be tempted to call this an _\"error\"_, but be careful: the solution at the finest grid is _not the exact_ solution, it is just a reference value that we can use to estimate grid convergence.\n", + "\n", + "To calculate the difference between one solution `u_current` and the solution at the finest grid, `u_finest`, we'll use the $L_1$-norm, but any norm will do.\n", + "\n", + "There is a small problem with this, though. The coarsest grid, where $\\Delta t = 0.1$, has 1001 grid points, while the finest grid, with $\\Delta t = 0.001$ has 100001 grid points. How do we know which grid points correspond to the same location in two numerical solutions, in order to compare them? \n", + "\n", + "If we had time grids of 10 and 100 steps, respectively, this would be relatively simple to calculate. Each element in our 10-step grid would span ten elements in our 100-step grid. \n", + "\n", + "Calculating the _ratio_ of the two grid sizes will tell us how many elements in our fine-grid will span over one element in our coarser grid.\n", + "\n", + "Recall that we can _slice_ a NumPy array and grab a subset of values from it. The syntax for that is\n", + "\n", + "```Python\n", + "my_array[3:8]\n", + "```\n", + "\n", + "An additional slicing trick that we can take advantage of is the \"slice step size.\" We add an additional `:` to the slice range and then specify how many steps to take between elements. For example, this code\n", + "\n", + "```Python\n", + "my_array[3:8:2]\n", + "```\n", + "\n", + "will return the values of `my_array[3]`, `my_array[5]` and `my_array[7]`\n", + "\n", + "With that, we can write a function to obtain the differences between coarser and finest grids. Here we go ..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = ceil(N_fine/N_current)\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that the function has been defined, let's compute the grid differences for each solution, relative to the fine-grid solution. Call the function `get_diffgrid()` with two solutions, one of which is always the one at the finest grid. Here's a neat Python trick: you can use negative indexing in Python! If you have an array called `my_array` you access the _first_ element with\n", + "\n", + "`my_array[0]`\n", + "\n", + "But you can also access the _last_ element with \n", + "\n", + "`my_array[-1]`\n", + "\n", + "and the next to last element with\n", + "\n", + "`my_array[-2]`\n", + "\n", + "and so on. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dt = 0.1\n", + "dt = 0.05\n", + "dt = 0.01\n", + "dt = 0.005\n", + "dt = 0.001\n" + ] + } + ], + "source": [ + "# compute difference between one grid solution and the finest one\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " print('dt = {}'.format(dt))\n", + "\n", + " ### call the function get_diffgrid() ###\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to create a plot of the results! We'll create a *log-log* plot with the Matplotlib function [`loglog()`](http://matplotlib.org/api/pyplot_api.html?highlight=loglog#matplotlib.pyplot.loglog). Remember to skip the difference of the finest-grid solution with itself, which is zero." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIh\nZGatzGyLmZ1Sibanm9nPkhGXSLIpSYmE0/1AE+APlWj7Z6BHYsMRCYaSlEjImNmPgM3ANKCnmZ1X\nTtss4GLgv5IUnkhSaasOkZAxs/HAEOAYIhsdvu3u/1ZG27bAB8Cx7r41eVGKJId6UiIhYmYXA/90\n9x3uvgp4DuhoZpeXaJdjZi8CfwO2AE+Y2ejkRyySWOpJiYSImU0C/t3d90RfHwusAv7H3Q8b9jOz\nmcB6dx+U3EhFkkM9KZGQMLNuwJv7ExSAu39FZHvuc8zsmhLtawA/BRYkNVCRJFJPSiQEohMgXnT3\n60s51xBYDWwHznD3oujxC4D3gObuvjmZ8Yoki3pSIuFwAzCptBPu/i2RqehtgJsOOtWRyDCgEpSk\nLSUpkYCZWW2go7u/UU6zMcAaYLiZ1Y0e60h0qM/MapvZgwkNVCQANYMOQES4DXAzu7OCdp8CXYhM\nTx8BNAdmRc/dCbyYsAhFAqKalEiAor2itUCzSr7Fga+BVkA3oDewFHjL3RcmJEiRAClJiYhIaKkm\nJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIi\nofX/ARE7ZqFnKYAXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# log-log plot of the grid differences\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel('$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='-', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Order of convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The order of convergence is the rate at which the numerical solution approaches the exact one as the mesh is refined. Considering that we're not comparing with an exact solution, we use 3 grid resolutions that are refined at a constant ratio $r$ to find the *observed order of convergence* ($p$), which is given by:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "p = \\frac{\\log \\left(\\frac{f_3-f_2}{f_2-f_1} \\right) }{\\log(r)}\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $f_1$ is the finest mesh solution, and $f_3$ the coarsest. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is p = 1.014\n" + ] + } + ], + "source": [ + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values2 = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values2 = numpy.empty_like(dt_values2, dtype=numpy.ndarray)\n", + "\n", + "diffgrid2 = numpy.empty(2)\n", + "\n", + "for i, dt in enumerate(dt_values2):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + "\n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values2[i] = u\n", + " \n", + "\n", + "#calculate f2 - f1\n", + "diffgrid2[0] = get_diffgrid(u_values2[1], u_values2[0], dt_values2[1])\n", + "\n", + "#calculate f3 - f2\n", + "diffgrid2[1] = get_diffgrid(u_values2[2], u_values2[1], dt_values2[2])\n", + "\n", + "# calculate the order of convergence\n", + "p = (log(diffgrid2[1]) - log(diffgrid2[0])) / log(r)\n", + "\n", + "print('The order of convergence is p = {:.3f}'.format(p));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See how the observed order of convergence is close to 1? This means that the rate at which the grid differences decrease match the mesh-refinement ratio. We say that Euler's method is of *first order*, and this result is a consequence of that." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paper airplane challenge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose you wanted to participate in a paper-airplane competition, and you want to use what you know about the phugoid model to improve your chances. For a given value of $L/D$ that you can obtain in your design, you want to know what is the best initial velocity and launch angle to fly the longest distance from a given height.\n", + "\n", + "Using the phugoid model, write a new code to analyze the flight of a paper airplane, with the following conditions:\n", + "\n", + "* Assume $L/D$ of 5.0 (a value close to measurements in Feng et al. 2009)\n", + "* For the trim velocity, let's take an average value of 4.9 m/s.\n", + "* Find a combination of launch angle and velocity that gives the best distance.\n", + "* Think about how you will know when the flight needs to stop ... this will influence how you organize the code.\n", + "* How can you check if your answer is realistic?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Feng, N. B. et al. _\"On the aerodynamics of paper airplanes\"_, AIAA paper 2009-3958, 27th AIAA Applied Aerodynamics Conference, San Antonio, TX. [PDF](http://arc.aiaa.org/doi/abs/10.2514/6.2009-3958)\n", + "\n", + "* Simanca, S. R. and Sutherland, S. _\"Mathematical problem-solving with computers,\"_ 2002 course notes, Stony Brook University, chapter 3: [The Art of Phugoid](https://www.math.sunysb.edu/~scott/Book331/Art_Phugoid.html). (Note that there is an error in the figure: sine and cosine are switched.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb b/lecture_22/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb new file mode 100644 index 0000000..dfe6da7 --- /dev/null +++ b/lecture_22/01_phugoid/.ipynb_checkpoints/01_04_Second_Order_Methods-checkpoint.ipynb @@ -0,0 +1,1187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, C.D. Cooper. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid model: bonus!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_The phugoid model of glider flight_ has been such a fun problem to showcase the power of numerical solution of differential equations, we thought you'd enjoy a bonus notebook. The previous lessons were:\n", + "\n", + "* [Phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) —Lays the groundwork for our fun problem, with some context, a little history and a description of the physics of phugoids: curves representing the trajectory of a glider exchanging potential and kinetic energy, with no drag.\n", + "* [Phugoid oscillation](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) —Develops the simple harmonic motion of an aircraft experiencing a small perturbation from the horizontal trajectory: our opportunity to introduce Euler's method, and study its convergence via an exact solution.\n", + "* [Full phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) —The full model takes into account the force of drag and results in a system of two nonlinear equations. We obtain the trajectories using Euler's method in vectorized form, introduce grid-convergence analysis and finish with the paper-airplane challenge!\n", + "\n", + "That is a fantastic foundation for numerical methods. It's a good time to complement it with some theory: the first screencast of the course uses Taylor series to show that _Euler's method is a first-order method_, and we also show you graphical interpretations. Many problems require a more accurate method, though: second order or higher. Among the most popular higher-order methods that we can mention are the _Runge-Kutta methods_, developed around 1900: more than 100 years after Euler published his book containing the method now named after him!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Euler's method is a first-order method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this screencast, we use a Taylor series expansion to analyze Euler's method and show that it incurs a truncation error of first order. We also use a graphical interpretation to motivate the _modified_ Euler method, which achieves second order." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('6i6qhqDCViA')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Second-order methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notebook on phugoid oscillation (lesson 2) included a study of the accuracy obtained with Euler's method, using the exact solution for the simple harmonic motion. We made a _convergence plot_ and saw that as $\\Delta t$ gets smaller, the error also gets smaller. \n", + "\n", + "We could have drawn a line with a slope equal to 1 on that log-log plot, and you would have seen that it was parallel to the convergence line. A slope equal to 1 on a log-log convergence plot is an indication that we have a first-order method: the error scales as ${\\mathcal O}(\\Delta t)$. \n", + "\n", + "In lesson 3, using the full phugoid model (which is nonlinear and does not have an exact solution), we did a _grid-convergence study_ with three different grids, and obtained the _observed_ order of convergence—it was very close to 1, indicating a slope of 1 on a log-log plot.\n", + "\n", + "Another way to look at an ${\\mathcal O}(\\Delta t)$ method is to say that the error scales _linearly_ with the step size, or that they are proportional:\n", + "\n", + "$$ e \\propto \\Delta t.$$\n", + "\n", + "where $e$ stands for the error. To get more accuracy, we could use a _second-order_ method, in which the error is ${\\mathcal O}(\\Delta t^2)$. In general, we say that a method is of order $p$ when the error is proportional to $(\\Delta t)^p$.\n", + "\n", + "In the screencast titled \"Euler's method is a first-order method,\" we used a graphical interpretation to get an idea for improving it: by estimating an intermediate point, like the **midpoint**, we can get a better approximation of the area under the curve of $u^\\prime$. The scheme has two steps and is written as:\n", + "\n", + "\\begin{align}\n", + "u_{n+1/2} & = u_n + \\frac{\\Delta t}{2} f(u_n) \\\\\n", + "u_{n+1} & = u_n + \\Delta t \\,\\, f(u_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "This method is known as the *explicit midpoint method* or the *modified Euler method*, and it is a second-order method. Notice that we had to apply the right-hand side, $~f(u)$, twice. This idea can be extended: we could imagine estimating additional points between $u_{n}$ and $u_{n+1}$ and evaulating $~f(u)$ at the intermediate points to get higher accuracy—that's the idea behind Runge-Kutta methods." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Runge-Kutta methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the modified Euler method, we improve the accuracy over Euler's method by evaluating the right-hand side of the differential equation at an intermediate point: the midpoint. The same idea can be applied again, and the function $f(u)$ can be evaluated at more intermediate points, improving the accuracy even more. This is the basis of the famous *Runge-Kutta (RK) methods*, going back to Carl Runge and Martin Kutta. The modified Euler method corresponds to _second-order_ Runge-Kutta.\n", + "\n", + "Here's a bit of historical coincidence that will blow your mind: Carl Runge's daughter Iris—an accomplished applied mathematician in her own right—worked assiduously over the summer of 1909 to translate Lanchester's _\"Aerodonetics.\"_ She also reproduced his graphical method to draw the phugoid curves (Tobies, 2012)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phugoid model with 2nd-order RK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compute the motion of a glider under the full phugoid model using the second-order Runge-Kutta method. We'll build on the _paper airplane challenge_ of lesson 3 now, and look for the horizontal distance that the plane travels until the moment it touches the ground. \n", + "\n", + "As usual, let's start by importing the libraries and modules that we need, and setting up the model parameters. We also set some default plotting formats using the [`rcParams`](http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rcParams) module. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the paper-airplane challenge of lesson 3, we suggested an $L/D=5.0$ as a realistic value for paper airplanes, according to experiments, and a trim velocity of 4.9 m/s. Let's start with those values, but you could experiment changing these a bit. _What do you think will happen if you make $L/D$ higher?_" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among the initial parameters that we suggest for your first experiment, we are starting with a velocity a little higher than the trim velocity, launch the paper airplane with a negative initial angle, and take the initial height to be 2 meters—all sound like reasonable choices.\n", + "\n", + "Now, we can define a few functions to carry out the computation:\n", + "* The right-hand side of the phugoid model from [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb),\n", + "* One step of the Euler's method that we learned in [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), and\n", + "* Differences with respect to a fine grid, as in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])\n", + "\n", + "\n", + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)\n", + "\n", + "\n", + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = int(numpy.ceil(N_fine/N_current))\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we also need to define the function `rk2_step()` that computes the next time step using the *modified Euler* method of equations $(1)$ and $(2)$, above, otherwise known as 2nd-order Runge-Kutta or RK2. This function will be called over and over again within the time loop." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def rk2_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using 2nd-order Runge-Kutta.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at the next time step.\n", + " \"\"\"\n", + " u_star = u + 0.5*dt*f(u)\n", + " return u + dt*f(u_star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we first need to set up the time discretization, then initialize arrays to save the solution and we are set to go! The only difference this time is that we are using _both_ Euler's method and 2nd-order Runge-Kutta to get a solution, to compare the two. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "\n", + "# set initial conditions\n", + "u_euler = numpy.empty((N, 4))\n", + "u_rk2 = numpy.empty((N, 4))\n", + "\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_euler[0] = numpy.array([v0, theta0, x0, y0])\n", + "u_rk2[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "\n", + "# use a for loop to call the function rk2_step()\n", + "for n in range(N-1):\n", + " \n", + " u_euler[n+1] = euler_step(u_euler[n], f, dt)\n", + " u_rk2[n+1] = rk2_step(u_rk2[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can get the position of the glider in time, according to both Euler's method and the 2nd-order Runge-Kutta method, by extracting the appropriate portions of the solution arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x_euler = u_euler[:,2]\n", + "y_euler = u_euler[:,3]\n", + "x_rk2 = u_rk2[:,2]\n", + "y_rk2 = u_rk2[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### How far will it fly before touching the ground?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the $y$-axis measures the vertical coordinate with respect to the ground, negative values of $y$ don't have any physical meaning: the glider would have hit the ground by then! To find out if there are any negative $y$ values we can use the handy function [`numpy.where`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html). This function returns the **indices** of the elements in an array that match a given condition. For example, `numpy.where(y_euler<0)[0]` gives an array of the indices `i` where `y_euler[i]<0` (the `[0]` is necessary as `numpy.where` returns an array, which in this case contains a single line). If no elements of the array match the condition, the array of indices comes out empty. \n", + "\n", + "From the physical problem, we know that once there is one negative value, the glider has hit the ground and all the remaining time-steps are unphysical. Therefore, we are interested in finding the _first_ index where the condition applies, given by `numpy.where(y_euler<0)[0][0]`—do read the documentation of the function if you need to! " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_euler = numpy.where(y_euler<0.0)[0]\n", + "if len(idx_negative_euler)==0:\n", + " idx_ground_euler = N-1\n", + " print ('Euler integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_euler = idx_negative_euler[0]\n", + " \n", + "idx_negative_rk2 = numpy.where(y_rk2<0.0)[0]\n", + "if len(idx_negative_rk2)==0:\n", + " idx_ground_rk2 = N-1\n", + " print ('Runge-Kutta integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_rk2 = idx_negative_rk2[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Do Euler and RK2 produce the same solution?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An easy way to compare the numerical results obtained with the Euler and 2nd-order Runge-Kutta methods is using [`numpy.allclose`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html). This function compares each element of two arrays and returns `True` if each comparison is within some relative tolerance. Here, we use the default tolerance: $10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the x-values close? False\n", + "Are the y-values close? False\n" + ] + } + ], + "source": [ + "# check to see if the paths match\n", + "print('Are the x-values close? {}'.format(numpy.allclose(x_euler, x_rk2)))\n", + "print('Are the y-values close? {}'.format(numpy.allclose(y_euler, y_rk2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hmmm, they do differ. Maybe $10^{-5}$ is too tight a tolerance, considering we're using a somewhat coarse grid with first- and second-order methods. Perhaps we can assess this visually, by plotting the glider's path? Study the code below, where we are plotting the path twice, taking a closer look in the second plot by \"zooming in\" to the beginning of the flight." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+eWXL1nerVu3i92pp06dMq1atTKNGzc2x9PpOsjI4cOHjYiY0qVLZysHb3mznwlAdyrQBfgFKOFF\n2RbAH8BB3IdmAAAgAElEQVT6VK/tWN2pu+z3T6Szbo6+L6WC3d69e02FChXMlClT/lm4caMxVata\nP4PF6tXGtGqVbpfuuHHjzI033mhOnTqV46q8PYdpd6qfrVixgh07djB69GhmzJgR8KcbBGIOoHr1\n6rF79252797tSP0qYxcuXCA+Ph4R4ZZbbvFY5tChQzRu3JiCBQuyaNEiChYsmOV6VtkDgDt06JCj\neEOBiNwLDAXijDGH7GWtRaRXqjIlxZ57xxiz0BhT1hhzY8oLSLml7Ul72bOBziPQ3HI+cEse4Hwu\nf/31Fy1atOC+++7jgQce+OeDqlXh55+tn17yey5168KXX6bbpTtkyBCqVatG79690x2q4mvaiPOz\npC1bWNysGU888USOHswbzHLlykXr5s2Z/9lnToei0ti/fz99+vRh7969DBo0iFq1anks16NHDzZs\n2MDIkSMvn0jTC8YYXnzxRWJiYhgxYkROww5qItIZmAG8CTQXkXvtRl0boLRdpgGwD5ia0abS/FQq\nrJw5c4a2bdvSpEkThg8ffnmBXKE14ktEeO2119iwYQMzZswITKXeXK4L9RdOdUecPGmOFi9uRleu\n7Mpu1NT233CDeaJ2bUdjyPZ+HjXKGOtm8ktfo0b5tnx6n/tASndqVFSUKVWqlClVqpTJly+fERFT\nu3Zt88MPP3hcL6U7tU6dOkZETJkyZcz27duzXP/kyZNNdHS0+fbbb3OaSqa82c/4sTsVOAokYXWF\npn4lASPtMjWAI3joIgVKATuB/fY6h+33ddKpL+dfmlJBJikpydx1112mY8eOrvv9uHnzZlOsWDGz\nfv36bG/D23OY4w2sQLycOgkeu+su80FUlNmxY4cj9QfS6aefNq/nzm3+/vtvx2II5192nsbEnT59\n2owYMcKIiGnVqpXHaWBSGnErVqwwvXv3NiJirr76avPbb795XffHH39soqOjzWeffeaTXDLjdCMu\n0K9wPq6Vew0fPtw0aNDAnDlzxhprtnix0yFlz4ULxniY2uTtt982VapUMadPn87WZr09h2l3qp8k\nfvghJz//nB969qRixYqOxRGo8Q55O3TgvyIsWbTIkfrV5fLmzcuzzz5LXFwcCxYs4PXXX0+3rIgw\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(10,6))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler[:idx_ground_euler], y_euler[:idx_ground_euler], 'k-', label='Euler')\n", + "pyplot.plot(x_rk2[:idx_ground_rk2], y_rk2[:idx_ground_rk2], 'r--', label='RK2')\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_rk2[idx_ground_rk2-1]))\n", + "pyplot.legend();\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler, y_euler, 'k-', label='Euler')\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From far away, the Euler and RK2 methods seem to be producing similar answers. However, if we take a closer look, small differences become evident. Keep in mind that we are solving the same equation and both methods will converge to the same solution as we refine the grid. However, they converge to that solution at different rates: RK2 gets more accurate faster, as you make $\\Delta t$ smaller." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid-convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we want to do a grid-convergence study with RK2, to see if we indeed observe the expected rate of convergence. It is always an important step in a numerical solution to investigate whether the method is behaving the way we expect it to: this needs to be confirmed experimentally for every new problem we solve and for every new method we apply!\n", + "\n", + "In the code below, a `for`-loop computes the solution on different time grids, with the coarsest and finest grid differing by 100x. We can use the difference between solutions to investigate convergence, as before." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for-loop to compute the solution on different grids\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once those runs are done, we compute the difference between each numerical solution and the fine-grid solution." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# compute diffgrid\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "for i, dt in enumerate(dt_values):\n", + "\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we plot!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nicaKFSu44YYbWLVqFR9//HHU4UgBmUymza7Dqqy9lhRJb+kkfdpm0qUpfxdffDGTJk3iuOOO449/\n/GPU4VQs6bkLe/aaiEjNNDc3M2XKFMyMa665JupwpEJq6RSR9JaOSByMGDGCX/3qV5x++un86le/\nijocKYFaOiISW4cffji9e/fm6quvjjoUCYGKToql+VmBJEhL/i666CKam5vp27dv1KGEJi25y6cq\nRcfMZlfjviKSTttsU9FEW6kjpeynE2QTt0nu3rWSwOqBmfn48eM1ZVpEpAQtU6YnTJgQfMFPbeKm\niQQiIuWodCLB+8BRwODcayjwMnAHMILspm1H5/77DmAx2U3fpM6luV85CZKav08++YR7772XjRsT\ntcDJpyQ1d6UopaP0L+7+RMsbM5tEdhO3+/NcO93MTia7idvvQopRRFLkrrvu4vzzz+f444/noYce\nijocCZk2cStC3WsitbVmzRoGDhzIkiVLuOeee/j2t78ddUgSQNjP6ewCFJsk0BXYKcB9RSTlbrnl\nFpYsWcLBBx/Mt771rajDkSrQJm4pluZ+5SRIWv7ef/99Jk6cCMA111xDu3axn4tUUNJyV44gk98v\nAR4nu4nbUmAp2WnSPYCewCqgIawARSQdpk6dygcffMBRRx3FMcccE3U4UiWB1l4zs32AnwDHAZ1z\nh1cDTcA4d58bWoQR0piOSO1s2rSJe+65h/32249DDjkk6nCkAsXGdLSJWxF6OFREpHShPBwahJmd\n4e6xXw426S2dpO/pkXTKX3wlPXdRrDJ9Q5XuKyIiMVbKMjiNwM7uPir3vpnia7EZ0NvdO4QVZFSS\n3tIREamGisZ0zOxtYEdgF3dfa2brgafb+MzD3b1ToGjriIqOSPW4O8OHD+dLX/oSF154IZ06xf5X\nhuRUWnR6AB3d/c3c+6Xu3rONr2nzmjhIetFJer9y0sU9fzNnzuS4445jp512YuHChXTtGvuF6UsW\n99y1paIxHXdf1lJwcjqa2VQz+1qRL/t+uUGKSHps2rSJyy+/HIAxY8akquCkXZC11zYB04Hr3P2V\nqkRVJ5Le0hGJyvTp0znjjDPo3bs38+bNU9dawoT6nI6ZLXP3HqFEVudUdETCt379evbdd1+am5u5\n4447OPfcc6MOSUIW9pTpV8ysVxsfeFeA+0qNpXn9pySIa/5WrFhB79692X///TnzzDOjDicScc1d\n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\nzP8H50NbGbioopAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot using the matplotlib function loglog()\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel(r'$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.xlim(1e-4,1)\n", + "pyplot.ylim(1e-4,1)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='--', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is looking good! The difference relative to our fine-grid solution is decreasing with the mesh size at a faster rate than in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), but *how much faster?* When we computed the observed order of convergence with Euler's method, we got a value close to 1—it's a first-order method. Can you guess what we'll get now with RK2?\n", + "\n", + "To compute the observed order of convergence, we use three grid resolutions that are refined at a constant rate, in this case $r=2$. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 1.983\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " ### call rk2_step() ###\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Probably you're not too surprised to see that the observed order of convergence is close to $2$. Because we used a second-order method! This means that the numerical solution is converging with the grid resolution twice as fast compared with Euler's method in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), or in other words, the error scales as ${\\mathcal O}(\\Delta t^2)$. That is a lot faster! However, we are paying a price here: second-order Runge-Kutta requires more computations per iteration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge task" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How much longer does it take to get the solution with RK2, compared to Euler's method? Run the same solution (same time grid, same parameters), but find a way to *time* the calculation with Python, and compare the runtimes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multi-step methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The screencast *\"Euler's method is a first-order method\"* motivated graphically an idea to get increased accuracy: using intermediate points between $u_{n}$ and $u_{n+1}$ and evaluating the right-hand side of the differential equation at those intermediate points. The idea is to somehow get a better approximation using more data from the function $f(u)$.\n", + "\n", + "Another way to bring more information about $f(u)$ into the numerical solution is to look at time data $t\\lt t_{n}$. For example, we can involve in the calculation of the solution $u_{n+1}$ the known solution at $u_{n-1}$, in addition to $u_{n}$. Schemes that use this idea are called _multi-step methods_.\n", + "\n", + "\n", + "A classical multi-step method achieves second order by applying a _centered difference_ approximation of the derivative $u'$:\n", + "\n", + "$$ u'(t) \\approx \\frac{u_{n+1} - u_{n-1}}{2\\Delta t}.$$\n", + "\n", + "Isolate the future value of the solution $u_{n+1}$ and apply the differential equation $u'=f(u)$, to get the following formula for this method:\n", + "\n", + "$$ u_{n+1} = u_{n-1} + 2\\Delta t \\, f(u_n),$$\n", + "\n", + "This scheme is known as the **leapfrog method**. Notice that it is using the right-hand side of the differential equation, $f(u)$, evaluated at the _midpoint_ between $u_{n-1}$ and $u_{n+1}$, where the time interval between these two solutions is $2\\Delta t$. Why is it called \"leapfrog\"? If you imagine for a moment all of the _even_ indices $n$ of the numerical solution, you notice that these solution values are computed using the slope estimated from _odd_ values $n$, and vice-versa.\n", + "\n", + "Let's define a function that computes the numerical solution using the leapfrog method:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def leapfrog_step(unm1, u, f, dt):\n", + " \"\"\"Returns the solution time-step n+1) using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " unm1 : array of float\n", + " solution at time-step n-1.\n", + " u : array of float\n", + " solution at time-step n.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at time-step n+1.\n", + " \"\"\"\n", + " return unm1 + 2.0*dt*f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But wait ... what will we do at the _initial_ time step, when we don't have information for $u_{n-1}$? This is an issue with all multi-step methods: we say that they are _not self-starting_. In the first time step, we need to use another method to get the first \"kick\"—either Euler's method or 2nd-order Runge Kutta could do: let's use RK2, since it's also second order.\n", + "\n", + "For this calculation, we are going to re-enter the model parameters in the code cell below, so that later on we can experiment here using the leapfrog method and different starting values. At the end of this notebook, we'll give you some other model parameters to try that will create a very interesting situation!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude\n", + "\n", + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# set initial conditions\n", + "u_leapfrog = numpy.empty((N, 4))\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_leapfrog[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "# first step using RK2\n", + "u_leapfrog[1] = rk2_step(u_leapfrog[0], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have all the required information to loop in time using the leapfrog method. The code cell below calls the leapfrog function for each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for loop to call the function leapfrog_step()\n", + "for n in range(1,N-1):\n", + " \n", + " u_leapfrog[n+1] = leapfrog_step(u_leapfrog[n-1], u_leapfrog[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like before, we extract from the solution array the information about the glider's position in time and find where it reaches the ground." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider position in time\n", + "x_leapfrog = u_leapfrog[:,2]\n", + "y_leapfrog = u_leapfrog[:,3]\n", + "\n", + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_leapfrog = numpy.where(y_leapfrog<0.0)[0]\n", + "\n", + "if len(idx_negative_leapfrog)==0:\n", + " idx_ground_leapfrog = N-1\n", + " print ('The glider has not reached the ground yet!')\n", + "else:\n", + " idx_ground_leapfrog = idx_negative_leapfrog[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the glider's trajectory with both the leapfrog and RK2 methods, we find that the solutions are very close to each other now: we don't see the differences that were apparent when we compared Euler's method and RK2." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nz6bl5ZdTu3btDKbcO/nLlrHoxBMpW7069WbMgAMO8B1JpMTQiVMhFaYeE2WJLxNZKlasmNAJVCXt\ndUlUmLKUZGaGVaoEL7/MotataTtoEPuMHOk71i7t2LGDhfPmwQMPkHPyyaw85xzm3XtvZAvUqP+e\naHwlg4pUEQ8uv/xyAF544QU2bNjgOY1IMZix/003sWr0aCrVqQPAokWLWLp0qedg/2vx55+z9YQT\n2DJhAsycSaUePbjgwgt9xxKR3dDhfhFPmjdvzowZM3jyySd3Fq2SXUry4f5dcc7RqlUrunfvzmWX\nXZaGZImbN28eBx10ENWqVQNg+LXXctTFF3NSs2Zec4mUZDrcL5IFrrzySgAee+wx9EeURMXmzZtp\n06YNPXv2BMDl5/P4gw+yZcuWjGd58sknue+++3Y+7vHooypQRbKIitQMClOPibLEl8ksF1xwAbVr\n12bBggW8//77XrPsibJIoipUqMDdd99NqVKlAPho6FC63HorZQcNgm+/Zfv27Wn7o2zJ4sW82LMn\nDBoEwB133LHL651GfR5pfNkt6uNLlIpUEU/Kli3LFVdcAcCjjz7qOY1IelRq2ZIlw4Zha9bAUUex\nqmlThrVtC+vXF/tr79ixg1defhlmzYKbbuKIM87guJEjWVe5MgC1a9fm3nvvLfb3ERE/1JMq4tH3\n33/PwQcfzLZt21i2bBmHH36470iSBPWkJumnn3iyQwfO3rqVOtdeC927c+ONN9KoUSO6desGwKxZ\nszjooIOoWbMmACtWrKBGjRpUjhWegwcP5oorrqBy5co455hdrhyN69ShTJcucOGFvL9mDc1btKBc\nuXKpzS4iKaGeVJEsccABB9ClSxecczz22GO+44ik13770WfGDA749FPo3h2AadOmkZubu/Mpq889\nFzvrLOjaFS6+mJUnncSmDh3giy8AePPNN/n000+B4M3us1tuYdGbb8K990KTJrQ5/XQVqCIRoSI1\ng8LUY6Is8fnIcs011wDw3HPPsb7QIdCS/rrsSpiySPJycnIoXbr0zscTJkygWaGTmb5o3ZqtffpA\nhw7QqROLjz6anzp02Hk90xtuuGHnXlaAy+++m8Z7cUOMqM8jjS+7RX18iSq956eISDodd9xxtGzZ\nkmnTpjF8+HCuvvpq35FEMqborUhvKXJDgCu6dPmfx+eee27aM4lIOKgnVSQExowZwwUXXMARRxzB\n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\nB0lEQVTo/D9EAVodDt65OwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(11,8))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls='-', lw=2)\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_leapfrog[idx_ground_leapfrog-1]), fontsize=18);\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls=':', lw=2)\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about the observed order of convergence? We'll repeat the process we have used before, with a grid-refinement ratio $r=2$ ... here we go:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 2.186\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " u[1] = rk2_step(u[0], f, dt)\n", + " for n in range(1, N-1):\n", + " u[n+1] = leapfrog_step(u[n-1], u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical evidence that our calculation with the leapfrog method indeed exhibits second-order convergence, i.e., the method is ${\\mathcal O}(\\Delta t^2)$. _The leapfrog method is a second-order method_. Good job!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### But chew on this ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Go back to the cell that re-enters the model parameters, just above the leapfrog-method time loop, and change the following: the initial height `y0` to 25, and the final time `T` to 36. Now re-run the leapfrog calculation and the two code cells below that, which extract the glider's position and plot it.\n", + "\n", + "_What is going on?_\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tobies, R. \"Iris Runge: A life at the crossroads of mathematics, science and industry,\" Springer Basel, 1st ed. (2012). [Read on Google books, page 73](http://books.google.com/books?id=EDm0eQqFUQ4C&lpg=PA73&dq=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&pg=PA73#v=onepage&q=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&f=false)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/01_01_Phugoid_Theory.ipynb b/lecture_22/01_phugoid/01_01_Phugoid_Theory.ipynb new file mode 100644 index 0000000..902854f --- /dev/null +++ b/lecture_22/01_phugoid/01_01_Phugoid_Theory.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, C. Cooper, G.F. Forsyth, A. Krishnan." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Motion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to [**\"Practical Numerical Methods with Python!\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) This course is a collaborative, online, open education project, where we aim to give a foundation in scientific computing. The focus is on numerical solution of problems modeled by ordinary and partial differential equations.\n", + "\n", + "This IPython Notebook introduces the problem we'll be studying in the **first module** of the course: the _phugoid model of glider flight_. We'll start with some background, explaining the physics, and working out the mathematical model. \n", + "\n", + "First, we'll look at an idealized motion where there is no drag, resulting in a simple harmonic motion. We can plot some interesting trajectories that will pique your imagination. In the next notebook, you'll learn to numerically integrate the differential equation using Euler's method. But hang on ... first things first. \n", + "\n", + "The term \"phugoid\" is used in aeronautics to refer to a motion pattern where an aircraft oscillates up and down —nose-up and climb, then nose-down and descend— around an equilibrium trajectory. The aircraft oscillates in altitude, speed and pitch, with only small (neglected) variations in the angle of attack, as it repeatedly exchanges kinetic and potential energy.\n", + "\n", + "A low-amplitude phugoid motion can be just a nuisance, as the aircraft does not exceed the stall angle of attack and nothing bad happens. But the mode can also be unstable leading to a stall or even a loop!\n", + "\n", + "Look at this video showing a Cessna single-engine airplane in phugoid motion:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQED\nEQH/xAAaAAACAwEBAAAAAAAAAAAAAAACAwABBAUG/8QAQBAAAgIBAwEDCAgFBAIDAQEBAQIAAxEE\nEiExE0FRBRQiMmFxgZEjQlJTcpKhsRUzYsHRBkOC4SRjovDxNMIW/8QAGQEBAQEBAQEAAAAAAAAA\nAAAAAAECAwQF/8QAKBEBAAIBBAICAQQDAQAAAAAAAAERAgMSMVETIUFhBCJSgaEyYnEU/9oADAMB\nAAIRAxEAPwBlFdfYp9GnqjuEcKqvu0/KJKax2Nf4R+0PYRPpxEU8coKaj/tp8oa01/dp8oPIlhyI\nqCzeyr+6r/KJfY0/cp+UQFsEMWCZ2ra+yp+7T8oliuof7SflkyDB57o2wWaqUfdp+UQxXQf9tPyi\nZt57xJvPuk2ltfYUn/bT8ok7Cn7pPyiZO1Yd8IXtG0to7CodKk/KJDVWf9tPyiKF5MMOTJtLEtVQ\n/wBqv8olGmvORUn5RJuMm4xULYjXSRg1Jn8IgCmjPNSflEvcZecxUFgfT6furT8ok7Cnb/Lr/KIR\nJlFj4RSWUdPVn+Un5RJ2FQ/20/KIRfxEE2CWi1dnV91X+USdjT92n5RL3r3S+090UWX2NP3SflEr\nsqvu0/KI4FD1/SUwTuYy1BZRqq+6T8ogNp6T/tp+URpU9xEEhx3RUJZLaav7tPyiLOnr+7X5TTk+\nEHM0WzHTp92v5RKFNf3a/lmk+6TEIQKqe+tPkIxaqs/yk+Qh9lmEtWIqF9qFFP3afljFop+7T8ol\npXHKoHSZmlL83p7qk/KJR09XdUn5RNG2Q5EgStNXfWn5RD83p+6T8olk5lB8SUWIU1D/AGk/KIa1\n1fdJ+USltHfGKymSltBVV90n5RC7Kr7pPyiECJczRYOwp+6T8ok83q+6T8ohyRRYOwq+6T8ok7Cn\n7pPyiMzKigs0VfdJ+USjRT90n5RG5lEiKCeyo+6T8oldjV90n5RGnEA++WiwGqr7qv8AKJR09P3a\n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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('ysdU4mnRYdM')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That doesn't look too good! What's happening? \n", + "\n", + "It can get a lot worse when an aircraft enters one of these modes that is unstable. For example, one of [NASA's Helios Solar Powered Aircraft](http://www.nasa.gov/centers/dryden/history/pastprojects/Helios/) prototype broke up in mid air due to extreme phugoid oscillations!\n", + "\n", + "Helios was a proof-of-concept solar electric-powered flying wing that broke the world altitude record for a non-rocket-powered aircraft in August 2001. But in June 26, 2003, it broke something else. The aircraft entered phugoid motion after encountering turbulence near the Hawaiian Island of Kauai. The high speed in the oscillatory movement exceeded the design limits, and it ended up wrecked in the Pacific Ocean. Luckily, the Helios was remotely operated, and nobody got hurt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The physics of phugoids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The phugoid oscillation has the aircraft pitching up and down, as it decelerates and accelerates. The trajectory might look like a sinusoid, as in the figure below. The assumption is that the forward velocity of the aircraft, $v$, varies in such a way that the angle of attack remains (nearly) constant, which means that we can assume a constant lift coefficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/oscillatory_trajectory.png)\n", + "#### Figure 1. Trajectory of an aircraft in phugoid motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the descending portion of the trajectory, the aircraft's velocity increases as it proceeds from a peak to the minimum height—gaining kinetic energy at the expense of potential energy. The contrary happens in the upward segment, as its velocity decreases there.\n", + "\n", + "We measure the pitch angle (between the aircraft's longitudinal axis and the horizontal) as positive when the aircraft's nose is pointing up. In the portion of the trajectory below the center-line, where it curves upwards, the pitch angle $\\theta$ is increasing: $\\dot{\\theta}>0$. And where the trajectory curves down, the pitch angle is decreasing: $\\dot{\\theta}<0$, as shown in the figure.\n", + "\n", + "Let's remind ourselves of the forces affecting an aircraft in a downward glide. Look at the figure below: we show the flight path, the forces on the glider (no thrust), and the _glide angle_ or flight path angle, $\\gamma$, between the flight path and the horizontal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces.png)\n", + "#### Figure 2. Forces on a glider." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The force of lift, $L$ —created by the airflow around the wings— is perpendicular to the trajectory, and the force of drag, $D$, is parallel to the trajectory. Both forces are expressed in terms of coefficients of lift and drag, $C_L$ and $C_D$, respectively, that depend on the wing design and _angle of attack_—the angle between the wing chord and the flight path.\n", + "\n", + "If you are not familiar with airplane aerodynamics, you might be getting confused with some terms here ... and all those angles! But be patient and look things up, if you need to. We're giving you a quick summary here.\n", + "\n", + "Lift and drag are proportional to a surface area, $S$, and the dynamic pressure: $1/2 \\rho v^2$, where $\\rho$ is the density of air, and $v$ the forward velocity of the aircraft. The equations for lift and drag are:\n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "If the glider were in equilibrium, the forces would balance each other. We can equate the forces in the directions perpendicular and parallel to the trajectory, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "L = W \\cos \\gamma \\quad \\text{and} \\quad D = W \\sin \\gamma\n", + "\\end{equation}$$\n", + "\n", + "where $W$ repesents the weight of the glider.\n", + "\n", + "In the figure, we've drawn the angle $\\gamma$ as the _glide angle_, formed between the direction of motion and the horizontal. We are not bothered with the _sign_ of the angle, because we draw a free-body diagram and take the direction of the forces into account in writing our balance equations. But later on, we will need to be careful with the sign of the angles. It can cause you a real headache to keep this straight, so be patient!\n", + "\n", + "It looks like we've set this up to do a little bit of mathematics. Are you ready?\n", + "\n", + "But before, a short glimpse of the history." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanchester's Aerodonetics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Phugoid theory\" was first described by the British engineer Frederick W. Lanchester in _\"Aerodonetics\"_ (1909). This book is so old that it is now in the public domain, so you can actually download [from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&dq=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&pg=PA37#v=onepage&q=%22phugoid%20theory%20deals%20with%20the%20longitudinal%20stability%22&f=false) a PDF file of a scan, or read it online. \n", + "\n", + "Lanchester defines phugoid theory as the study of longitudinal stability of a flying machine (aerodone). He first considered the simplification where drag and moment of inertia are neglected. Then he included these effects, obtaining an equation of stability. In addition to describing many experiments by himself and others, Lanchester also reports on _\"numerical work ... done by the aid of an ordinary 25-cm slide rule.\"_ Go figure!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ideal case of zero drag" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we follow the derivation given by Milne-Thompson (1966), which we find a little bit easier than that of the original in \"Aerodonetics\"!\n", + "\n", + "An aircraft flying in a steady, straight horizontal flight has a lift equal to its weight. The velocity in this condition is sometimes called _trim velocity_ (\"trim\" is what pilots do to set the controls to just stay in a steady flight). Let's use $v_t$ for the trim velocity, and from $L=W$ deduce that:\n", + "\n", + "$$\\begin{equation}\n", + "W = C_L S \\times\\frac{1}{2} \\rho v_t^2\n", + "\\end{equation}$$\n", + "\n", + "The weight $W$ is constant for the aircraft, but the lift at any other flight condition depends on the flight speed, $v$. We can use the expression for the weight in terms of $v_t$ to obtain the ratio $L/W$ at any other flight velocity, as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}= \\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "Imagine that the aircraft experienced a little upset, a wind gust, and it finds itself off the \"trim\" level, in a curved path with an instantaneous angle $\\theta$. In the sketch below, we exaggerate the curved trajectory of flight to help you visualize what we'll do next. The angle $\\theta$ (using the same name as Milne-Thompson) is between the _trajectory_ and the horizontal, positive up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "#### Figure 3. Curved trajectory of the aircraft going up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can form a free body diagram to determine the balance of forces. \n", + "\n", + "\n", + "\n", + "#### Figure 4. Free body diagram of the aircraft trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the free body diagram, we can see that\n", + "\n", + "\\begin{equation}\n", + "\\vec{L} + \\vec{W} = m\\vec{a} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "where $\\frac{v^2}{R}$ is the centripetal acceleration and $R$ is the radius of curvature of the trajectory.\n", + "If we decompose the lift and weight into their normal and tangential components we get\n", + "\n", + "\\begin{equation}\n", + "L\\hat{n} + W_n\\hat{n} + W_t\\hat{t} = \\frac{mv^2}{R}\\hat{n} + m \\frac{dv}{dt}\\hat{t}\n", + "\\end{equation}\n", + "\n", + "The component of the weight in the normal direction ($W_n$) is\n", + "\n", + "\\begin{equation}\n", + "W_n = -W \\cos \\theta\n", + "\\end{equation}\n", + "\n", + "If we then consider that all of the components in $\\hat{n}$ must balance out, we arrive at\n", + "\n", + "\\begin{equation}\n", + "L - W \\cos \\theta = \\frac{mv^2}{R}\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can rewrite this as\n", + "\n", + "$$\\begin{equation}\n", + "L- W \\cos \\theta = \\frac{W}{g} \\frac{v^2}{R}\n", + "\\end{equation}$$\n", + "\n", + "where $g$ is the acceleration due to gravity. Rearrange this by dividing the equation by the weight, and use the expression we found for $L/W$, above. The following equation results:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{v^2}{v_t^2}-\\cos \\theta = \\frac{v^2}{g R}\n", + "\\end{equation}$$\n", + "\n", + "Recall that we simplified the problem assuming that there is no friction, which means that the total energy is constant (the lift does no work). If $z$ represents the depth below a reference horizontal line, the energy per unit mass is (kinetic plus potential energy):\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{2}v^2-g z = \\text{constant}\n", + "\\end{equation}$$\n", + "\n", + "To get rid of that pesky constant, we can choose the reference horizontal line at the level that makes the constant energy equal to zero, so $v^2 = 2 g z$. That helps us re-write the phugoid equation in terms of $z$ as follows:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z}{z_t}-\\cos \\theta = \\frac{2z}{R}\n", + "\\end{equation}$$\n", + "\n", + "Let $ds$ represent a small arc-length of the trajectory. We can write \n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} \\quad \\text{and}\\quad \\sin\\theta = -\\frac{dz}{ds}\n", + "\\end{equation}$$\n", + "\n", + "Employing the chain rule of calculus,\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{1}{R} = \\frac{d\\theta}{ds} = \\frac{dz}{ds}\\frac{d\\theta}{dz} = -\\sin \\theta\\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "Multiply the phugoid equation by $\\frac{1}{2\\sqrt{z}}$ to get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} - \\frac{\\cos\\theta}{2\\sqrt{z}} = \\frac{\\sqrt{z}}{R}\n", + "\\end{equation}$$\n", + "\n", + "Substituting for $1/R$ on the right hand side and bringing the cosine term over to the right, we get:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{\\sqrt{z}}{2z_t} = \\frac{\\cos \\theta}{2 \\sqrt{z}} - \\sqrt{z} \\sin \\theta \\frac{d\\theta}{dz}\n", + "\\end{equation}$$\n", + "\n", + "The right-hand-side is an exact derivative! We can rewrite it as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d}{dz} \\left(\\sqrt{z}\\cos\\theta \\right) = \\frac{\\sqrt{z}}{2z_t}\n", + "\\end{equation}$$\n", + "\n", + "Integrating this equation, we add an arbitrary constant, chosen as $C\\sqrt{z_t}$ which (after dividing through by $\\sqrt{z}$) gives:\n", + "\n", + "$$\\begin{equation}\n", + "\\cos \\theta = \\frac{1}{3}\\frac{z}{z_t} + C\\sqrt{\\frac{z_t}{z}}\n", + "\\end{equation}$$\n", + "\n", + "Taking the derivative of both sides of equation (15) and applying the relations from equation (10) yields:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{z_t}{R} = \\frac{1}{3} - \\frac{C}{2}\\sqrt{\\frac{z_t^3}{z^3}}\n", + "\\end{equation}$$\n", + "\n", + "Make sure you have followed the derivation, and perhaps write it out on paper!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Phugoid Curves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equation (15) is non-linear, which usually means we are hard-pressed to write a clean expression for the variable of interest, $z$. In fact, Lanchester himself said that he was unable to _\"reduce this expression to a form suitable for co-ordinate plotting.\"_ If the great polymath couldn't do it, we can't either!\n", + "\n", + "But Lanchester _was_ able to plot a suitable approximation of the phugoid flight path using what he called the \"trammel\" method. If you're interested in seeing how he did it, his explanation begins on page [48 of Aerodonetics](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PA49&lpg=PA48&dq=aerodonetics+the+use+of+the+trammel&source=bl&ots=lB6EVKYQuT&sig=aVE2kiDWZoWftaWczMIrcYftMOs&hl=en&sa=X&ei=gTD_U82fGYjzgwT3moGwCQ&ved=0CCAQ6AEwAA#v=onepage&q=aerodonetics%20the%20use%20of%20the%20trammel&f=false). It's a trip.\n", + "\n", + "Lanchester used Equations (15) and (16) to solve for the constant $C$ and the radius of curvature $R$ and then iteratively plotted small arcs of the phugoid path. By hand.\n", + "\n", + "We wrote a neat little code that duplicates the manual trammel method, but it might be a bit much for you to absorb in the first lesson. If you want to look it over, you are more than welcome to. If you are just starting with Python, skip it for the moment and we'll return to it at the end of this module. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting the flight path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we mentioned, we wrote a Python code to reproduce programmatically what Lanchester did graphically. Here's a neat feature of IPython Notebooks: you can run external programs with the magical keyword ... wait for it ... `run`. And the jargon of IPython _is_ to call this \"magic.\" In fact, there are a bunch of [magic functions](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) that you will learn about. They will make you a happy camper.\n", + "\n", + "Let's do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%run phugoid.py\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code cell loaded our simulated-trammel code, `phugoid.py`. The code defined a function for you in the background, called `plot_flight_path`, taking three inputs: $z_t$, $z$ and $\\theta$. \n", + "\n", + "Look again at Equation (15), where we take the positive square root. There are several possibilities, depending on the value that the constant $C$ takes. \n", + "\n", + "* There are no physical solutions for $C>2/3$, because it would result in $\\cos\\theta>1$. \n", + "\n", + "* If $C=2/3$, then the solution is a horizontal straight line, because $\\cos\\theta=1$, $\\theta=0$ and $R=\\infty$.\n", + "\n", + "* Any value of $C$ for which $0 < C < \\frac{2}{3}$ will produce \"trochoidal\"-like paths. What does this look like? Let's use our custom function `plot_flight_path` to find out!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n5MgRihQpQt++fQE4fPgw+fLlo1SpUpw8eTLV19+1axfFihULPC5WrBixsbFZ10G/zPQzNefrf0oy\n2tfBgwczdOhQALZu3UpERESq22amn+mtL7XtixcvniM/0wtR4BMRkWxlluFzxf7JuT/a6bV69WqG\nDx9OxYoVyZcvH506daJHjx5/2q5atWqMGDEiQ6+xf/9+Nm7cyJQpUwBo27Ytbdq0oXr16syYMYP7\n77+fCRMmnHcfR44c4aKLLgo8joyM5Pfff0/T66e1j5C5fqbmfP1PSUb6unfvXr799lu+++471qxZ\nw6RJk3j++edT3T4z/UxvfefbPqM/06ykKV0REfG8Zs2a8dVXX9GoUSMKFChAjx49eP3119m/f3+W\nvUaRIkVo0KBB4HHlypWJjo7m22+/5aqrrkrzPoJD7R9//EGJEiXS9L3J+xgVFcXIkSMZP3483333\nXfo6kwGp9f9826e3r4sWLaJr16488MAD3HXXXezZs4cOHTpkSz/TW19q22fmZ5qVNMInIiLZKqOj\nclnt5ZdfZv/+/bz99tuAbzqwbNmySbYJngIMlpYpwHr16rFs2bLA43z58pGQkMC3337LqVOnmDt3\nLsuXL+f06dPMnj07xf1cccUVrFmzJvD48OHDNGnSJEN9fP3112nfvj1NmjShT58+fPrpp1nSz9Sk\n1v/UZKSvO3fupE6dOoBv5Wvnzp355JNPsqWf6a0vte2LFSuWqZ9plsnMio/cfEMrykREsky4/059\n+eWX3bPPPuucc27jxo1u6dKl7oYbbnArVqzIstc4ffq0a9GiReBxq1at3LZt25JsM3z48CSrdH/6\n6SeXmJgYeHzy5EnXoEGDwOOGDRu6/fv3O+eci42NTbJtcsn7+PDDD7tff/3VOefcDTfckImepWz8\n+PGub9++gcfn63/yfjqXsb6OHTvWjR071jnnXOfOnd2OHTvcI488ki39PF996enP+faTktT+L5HJ\nVbrmwuSTV04zM5dX+y4iktVSu+B7OPjPf/7Db7/9RtGiRRk2bBjXXHMNd911F59//jmDBg3K0tea\nP38+y5cvxzlH7dq1ueOOOwLPTZs2jREjRmBmDB06lJtvvpkmTZowbtw4GjduHNhu0qRJbN++Hecc\n1apVC+yjTp06vPXWW1x//fVp6uO+fft45plnqFChAp07d2bOnDlZ1s933nmHqVOnsnPnTvr27cuT\nTz5JkSJFUu1/Sv3MSF+PHz/O888/T4MGDahfvz4tWrTg4Ycf5tlnn82WfqZWX3r7k1p7SlL7v+Rv\nz/ABsQp8IiKSaeEc+FIyefJkqlSpQuXKlbnssstCXU6aJCYm8s0331zw1C7nvP3227Rt25Y6derQ\nt29fPvvss2yuMOukp6+5uZ8pUeDLYgp8IiJZJ7cFvlmzZhEXF0ezZs3Oe664cDJ16lS6devGxRdf\nnKbtDx8+zMcff0yxYsWoX78+LVu2zOYKs056+pqb+5kSBb4spsAnIpJ1clvgy41OnjzJJZdcEuoy\nckRe6mtyCnxZTIFPRCTrKPCJZI3sCnw6D5+IiIiIxynwiYiIiHicAp+IiIiIxynwiYiIiHicAp+I\niIiIx+lauiIikmlVqlT50/VKRST9suu8kDoti4iIiEiY02lZREREROS8FPhEREREPE6BT0RERMTj\nFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RE\nRMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6B\nT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjFPhEREREPE6BT0RERMTjwj7wmdk4\nM9tvZhuC2oqbWbSZbTGz+WZWNOi5oWYWa2abzKxDaKoWERERCR9hH/iAfwIdk7UNARY652oBi4Ch\nAGZWF+gF1AFuAN4zM8vBWkVERETCTtgHPufcMuBIsubuwAT//QlAD//9G4Epzrl459x2IBZonhN1\nioiIiISrsA98qSjjnNsP4JzbB5Txt1cEdgZtt9vfJiIiIpJn5dbAl5wLdQEiIiIi4Sp/qAvIoP1m\nVtY5t9/MygEH/O27gcuCtqvkb0vR8OHDA/ejoqKIiorK+kpFRERE0ikmJoaYmJgs2585F/6DY2ZW\nFfjSOdfA/3gk8JtzbqSZDQaKO+eG+BdtfApchW8qdwFQw6XQSTNLqVlEREQk7JgZzrkML0QN+xE+\nM5sMRAElzexXYBjwCjDNzO4FduBbmYtz7kczmwr8CMQBDynViYiISF6XK0b4soNG+ERERCS3yOwI\nn1cWbYiIiIhIKhT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9E\nRETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxO\ngU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERE\nRDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4\nRERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE4xT4RERERDxOgU9ERETE\n4zwZ+Mysk5ltNrOtZjY41PWIiIiIhJI550JdQ5Yys3zAVuBaYA+wGrjVObc52XbOa30XERERbzIz\nnHOW0e/34ghfcyDWObfDORcHTAG6h7gmERERkZDxYuCrCOwMerzL3yYiIiKSJ3kx8ImIiIhIkPyh\nLiAb7AYqBz2u5G/7k+HDhwfuR0VFERUVlZ11iYiIiKRJTEwMMTExWbY/Ly7aiAC24Fu0sRf4FrjN\nObcp2XZatCEiIiK5QmYXbXhuhM85l2BmjwDR+KasxyUPeyIiIiJ5iedG+NJKI3wiIiKSW+i0LCIi\nIiJyXgp8IiIiIh6nwCciIiLicQp8IiIiIh7nuVW66ZGYmEi+fMq8IuI9Z86c4ddff2Xnzp3s27eP\ns2fPEh8fT6FChShdujTly5enZs2aREZGhrpUEckBeTrwRUREUKJECa644gqqV69O06ZNadWqFU2b\nNtUvQRHJVU6dOsXXX3/N/PnzWbVqFevXrycuLu6835M/f37q1KlDy5Yt6dixI9dccw3FihXLoYpF\nJCfl6dOypPZc4cKF6dy5Mz179qR79+5cfPHFOVmaiEiaJCQksGDBAsaOHctXX33F6dOnA8+ZGZUr\nV6Zy5cpUqFCBiy66iIiICE6ePMmBAwfYtWsX27ZtI/hvQIECBejSpQt33nknN954IwUKFAhFt0Qk\nBZk9LUueDnzx8fEcOnSIn376ic2bN7Ny5UqWLVvGpk3/O09z8eLFufvuu3nwwQepU6dOCCsWEfE5\nfvw477//Pu+++y47d+4MtDdr1oyuXbvStm1bmjZtyqWXXnre/Zw8eZINGzawePFi5s+fz7Jly0hM\nTASgUqVKDBgwgPvvv5+iRYtma39E5MIU+DLofCde/uWXX5g1axaffvopa9asCbR3796d559/nqZN\nm+ZUmSIiAceOHeP111/nzTff5OjRowBUq1aNfv360adPHypWrJip/e/du5fPPvuMsWPHBj74FilS\nhIEDB/LEE09QuHDhTPdBRDJGgS+D0nqljbVr1/LBBx8wceLEwHRJ165defXVVzXiJyI5Ij4+nrFj\nx/K3v/2NgwcPAtC2bVueeeYZOnTokOWLzxITE5k3bx6vvfZa4OLtZcuW5cUXX6Rfv35ERERk6euJ\nyIUp8GVQei+ttm/fPkaPHs17773HqVOniIiI4OGHH2bYsGGUKFEiGysVkbxs8eLFPProo2zcuBHw\nBb2///3vtG3bNkdePyYmhkGDBrF69WoAmjdvzgcffECjRo1y5PVFxEeBL4Myei3dAwcO8PzzzzN2\n7FgSExMpUaIE//jHP7j77rsxy/DPQUQkiaNHjzJo0CA++ugjAC6//HJee+01brrpphz/XeOcY+rU\nqTz55JPs2bOHiIgInnjiCV588UUtahPJIQp8GZTRwHfO+vXreeKJJ1i8eDEAHTt25IMPPqBKlSpZ\nVaKI5FGzZ8+mf//+7Nmzh8jISJ577jkGDhzIRRddFNK6jh8/zvPPP88777xDYmIidevWZdKkSTRu\n3DikdYnkBQp8GZTZwAe+T70TJ07kiSee4MiRIxQuXJhXX32Vv/71rxrtE5F0+/3333n00UcZP348\nAC1atGDcuHHUrVs3tIUls3r1au6++242b95MgQIFePHFFxk4cKCO7RPJRgp8GZQVge+cffv28cgj\njzB9+nQAunXrxscff0ypUqWyZP8i4n1r1qzh9ttvJzY2losuuogRI0bw6KOPhm2IOnXqFIMHD+ad\nd94BICoqis8++4xy5cqFuDIRb1Lgy6CsDHznTJ06lQcffJCjR49Svnx5Jk6cyHXXXZelryEi3pKY\nmMjo0aN59tlniYuLo379+nz22WfUr18/1KWlybx58+jbty/79++nfPnyfP755zm2oEQkL8ls4NOF\nZLNQr169WL9+PW3btmXv3r1cf/31DB48mPj4+FCXJiJh6Pjx49x0000MGjSIuLg4Hn30Ub799ttc\n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\n9dVXqf4eVOBT4Atrq1atcj179nRmluSP++zZs11CQkKoy5MckpiY6ObOnZvkQ4CZuW7durmlS5eG\nujyRTImPj3eTJ092derUCby/K1eu7N566y134sSJUJcnYeTIkSPu73//uytdunTgvVK/fn03c+bM\nC37gVeBT4MsVfvrpJzdgwABXuHDhJFfuGDVqlM5m72GHDx92r7/+epIrYxQqVMg99NBDujqGeE58\nfLybMmWKq1u3buD9Xrx4cffMM8+4PXv2hLo8CaHdu3e7gQMHBhZjAK5p06Zu2rRpaR78UOBT4MtV\njh496kaNGuUqV66cZLr31ltv1ZSeRyQmJrqlS5e6O++8M8m0bYUKFdyIESO0kEc8LyEhwU2fPt21\natUqye+5e+65x/3www+hLk9y0MqVK92dd97pIiMjA++Fa6+91i1YsCDdf+8yG/jC/jx82cXMXF7t\neziIj49nzpw5fPjhh8yZM+dcCKdGjRr069eP22+/ncsuuyzEVUp67NmzhylTpjBu3Dh+/PFHAMyM\nDh068MADD9CtWzcKFCgQ4ipFctZ//vMfRo8ezcyZMwO/59q1a0f//v3p2bMnkZGRIa5QstqZM2f4\n/PPPeeedd1i92ne113z58tGzZ0+GDBnClVdemaH9mhkuE+fhU+CTkPv1118ZN24c48aNC1yqzcxo\n164dd9xxBzfffDPFihULcZWSkuPHjzNjxgw+/fRTvv7668AftHLlynHvvfdy3333cfnll4e4SpHQ\n27ZtG2+88Qbjx4/n5MmTAJQpU4Z+/frxwAMPULVq1dAWKJkWGxvLP//5T8aOHcvBgwcBKFGiBPfd\ndx/9+/fP9M9YgS+DFPjCT3x8PHPnzuWTTz5h9uzZnDlzBoDIyEi6du1K7969ueGGGyhSpEiIK83b\nTp48ybx585g6dSqzZ88OXPYnMjKSLl26cOedd2o0TyQVx48f59NPP+X999/nhx9+AP43Et6nTx+6\nd+9OoUKFQlylpNXvv//OtGnT+Pjjj1m2bFmgvVGjRjz66KPcdtttXHzxxVnyWgp8GaTAF96OHTsW\nGDlatGhRYOQoMjKS6667jp49e9KtWzfKli0b4krzhkOHDvHll1/yxRdfEB0dneTajldffTV33nkn\nN998M8WLFw9hlSK5h3OO//znP4wZM4apU6dy9uxZAIoUKcLNN9/MXXfdRbt27ciXL6SXvJcUJCQk\n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\nKVasGMWKFaNo0aIUK1aMMmXKUL58eSpUqEDx4sU9H+guRIEvgxT4REREJLfIbODTsj0RERERj1Pg\nExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERER\nj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4R\nERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4\nBT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExEREfE4BT4RERERj1PgExER\nEfE4BT4RERERjwvbwGdmr5rZJjP73symm9mlQc8NNbNY//MdgtqbmNkGM9tqZm+EpnIRERGR8BK2\ngQ+IBuo55xoBscBQADOrC/QC6gA3AO+Zmfm/532gn3OuJlDTzDrmfNkiIiIi4SVsA59zbqFzLtH/\ncCVQyX//RmCKcy7eObcdXxhsbmblgCLOudX+7SYCPXKyZhEREZFwFLaBL5l7gTn++xWBnUHP7fa3\nVQR2BbXv8reJiIiI5Gn5Q/niZrYAKBvcBDjgWefcl/5tngXinHOfhaBEERERkVwvpIHPOXf9+Z43\ns75AZ+CaoObdwGVBjyv521JrT9Xw4cMD96OiooiKirpw0SIiIiLZLCYmhpiYmCzbnznnsmxnWcnM\nOgGjgaudc4eD2usCnwJX4ZuyXQDUcM45M1sJPAasBr4C3nLOzUtl/y5c+y4iIiISzMxwztmFt0xZ\nSEf4LuBtIBJY4F+Eu9I595Bz7kczmwr8CMQBDwUlt4eB8cBFwJzUwp6IiIhIXhK2I3zZTSN8IiIi\nkltkdoQvt6zSFREREZEMUuATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER\n8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+AT\nERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGP\nU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhER\nERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgFPhERERGPU+ATERER8TgF\nPhERERGPC9vAZ2Yvmtl6M1tnZvPMrFzQc0PNLNbMNplZh6D2Jma2wcy2mtkboalcREREJLyYcy7U\nNaTIzAo75373338UqOuc629mdYFPgWZAJWAhUMM558xsFfCIc261mc0B3nTOzU9l/y5c+y4iIiIS\nzMxwzllGvz9sR/jOhT2/S4BE//0bgSnOuXjn3HYgFmjuHwEs4pxb7d9uItAjp+oVERERCVf5Q13A\n+ZjZS8DdwFGgvb+5IrAiaLPd/rZ4YFdQ+y5/u4iIiEieFtIRPjNb4D/m7tztB//XbgDOueecc5Xx\nTeE+GspaRURERHKrkI7wOeeuT+Omk4GvgOH4RvQuC3qukr8ttfZUDR8+PHA/KiqKqKioNJYjIiIi\nkn1iYmKIiYnJsv2F86KN6s65bf77jwJtnXO9ghZtXIVvynYB/1u0sRJ4DFiNLyC+5Zybl8r+tWhD\nREREcoXMLtoI52P4XjGzmvgWa+wA/grgnPvRzKYCPwJxwENBye1hYDxwETAntbAnIiIikpeE7Qhf\ndtMIn4iIiOQWnj0ti4iIiIhkDQU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T\n4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+EREREY9T4BMRERHxOAU+ERER\nEY9T4BMRERHxOAU+EREREY9T4BMRERHxOAW+PCYmJibUJYSE+p23qN95i/qdt+TVfmeWAl8ek1f/\no6jfeYv6nbeo33lLXu13ZinwiYiIiHicAp+IiIiIx5lzLtQ1hISZ5c2Oi4iISK7knLOMfm+eDXwi\nIiIieYWmdEVEREQ8ToFPRERExOPyXOAzs05mttnMtprZ4FDXk5XMbJyZ7TezDUFtxc0s2sy2mNl8\nMysa9NxQM4s1s01m1iE0VWeemVUys0VmttHMfjCzx/ztnu67mRU0s1Vmts7f72H+dk/3+xwzy2dm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#zt = 64, z = 16, theta=0\n", + "plot_flight_path(64, 16, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cool! Note that the plot title tells us what the calculated value of $C$ was for our input conditions. We have a value of $C$ between $0$ and $\\frac{2}{3}$ and our path is trochoidal, like we announced it would be.\n", + "\n", + "* For negative values of $C$, the resultant flight path consists of a series of loops. Let's try it out!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUqZMGcLCwrjpppvo0KHDX9arWLEigwYNytZ77Nu3j/Xr1zNlyhQAWrRoQfPmzalcuTKffvop999/\nP2PHjj3nNo4cOUKBAgWSP4+KiiI2NjZT75/ZfYTz28/0nGv/05Kdfd2zZw/Lli1j5cqVrFixggkT\nJvD888+nu34w9nPy5MnMmDGDN998M9vbyOz3Pzs0tSoiInleo0aN+O9//0u9evWIjIykQ4cOvPXW\nW+zbty9o7xEdHU3t2rWTPy9XrhxfffUVy5Yto3HjxpneRsqyGhcXR4kSJTL12tT72LJlS4YMGcKY\nMWOSj0PLSent/7nWz+q+zps3j/bt29OrVy+6du3K7t27adWqVY7uZ6dOnfjggw+46aabsnUbuqx8\n/7NDI3IiIpKjQuXWXa+99hr79u1j2LBhgG9a7pJLLvnTOimn4lLKzFRczZo1+e6775I/DwsLIzEx\nkWXLlnHq1CnmzJnD4sWLOX36NJ9//nma26lUqRIrVqxI/vzQoUM0aNAgW/v41ltvcd1119GgQQO6\nd+/OxIkTg7Kf6Ulv/9OTnX3dtWsX1atXB3xnvLZt25bx48fnyH5+8cUXvPrqqyxevJjo6GguueQS\nPvnkkwzPxE1t6dKlxMXFZer7ny3W2nz58O26iIgEQ6j/m/raa6/Z5557zlpr7fr16+2iRYtsmzZt\n7Pfffx+09zh9+rRt0qRJ8ufNmjWzv/7665/WGThwoH3ppZeSP9+yZYtNSkpK/vzkyZO2du3ayZ/X\nrVvX7tu3z1pr7ebNm/+0bmqp97FPnz52586d1lpr27Rpcx57lrYxY8bYHj16JH9+rv1PvZ/WZm9f\nR48ebUePHm2ttbZt27Z2x44dtm/fvjmyn3PmzEn+eiYlJdmyZcvar776Kt39CUj9dUkp9fc/Len9\nXfIv/0ufMTZEflPKbcYYm1/3PSNnz55l8+bN7Nixg507d7J3715OnDjBmTNnKF26dPJBpiIiAend\n6DsULFmyhMOHD1OsWDFefPFFrr/+erp27crUqVN56qmngvpeX375JYsXL8ZaS7Vq1ejSpUvyc9Om\nTWPQoEEYY+jfvz8dO3akQYMGfPDBB9SvXz95vQkTJrB9+3astVSsWDF5G9WrV+edd97hxhtvzNQ+\n7t27l2effZbLLruMtm3b8sUXXwRtP999910+/vhjdu3aRY8ePejXrx/R0dHp7n9a+5mdfT1+/DjP\nP/88tWvXplatWjRp0oQ+ffrw3HPP5ch+jhw5koSEBHbs2EGVKlV44IEHzrk/6X1dIO3vf1rS+7vk\nX/6XA05V5ITjx4/z7bffMnfuXJYtW8batWuJj49Pc93atWuzdu3aXE4oIqEulItcWiZNmkT58uUp\nV64cZcuWdR0nU5KSkliwYEGmL2ExbNgwWrRoQfXq1enRoweTJ0/O4YTBk5V99fJ+pkVFLpPye5E7\nfvw4M2bMYNKkScybN4+EhIQ/PV+hQgUqVapEuXLlKF26NEWLFuWCCy6gVKlSdOrUyVFqEQlVXity\nn332GWfPnqVRo0bnvNZZKPn444+5+eabKViwYKbWP3ToEB9++CHFixenVq1aNG3aNIcTBk9W9tXL\n+5kWFblMyq9FbsOGDbzzzjuMGzeOuLg4AMLDw2nSpAmtWrWiRYsW1K9fP0euki0ieZfXipwXnTx5\nksKFC7uOkSvy076mpiKXSfmtyK1evZoXXniB2bNnJy9r0aIFXbp0oWPHjiF3+xcR8RYVOZHgyGqR\n0+VH8rjt27fz5JNPJt/CpFChQnTv3p2+fftSo0YNx+lERETkfKjI5VHx8fEMHjyYwYMHc/r0aQoU\nKECfPn146qmnKFWqlOt4IiIiEgQqcnnQmjVr6Nq1K+vWrQOgc+fOvP7665QpU8ZxMhEREQkm3aIr\nD0lMTGTIkCE0atSIdevWUblyZRYsWMDEiRNV4kRERPIgjcjlEYcOHeKuu+7i66+/BuDBBx/kjTfe\nyLdn/YiIiOQHKnJ5wPr167nlllvYunUrpUqVYuzYsdx0002uY4lIPlK+fPm/3M9SRLIuq9c11NSq\nx82ePZsmTZqwdetWGjRowIoVK1TiRCTXBW6z5IXH8OHDk0vnI488wtmzZ51nyu7j+PHjtG/fHoCI\niAjGjx/vPJMe5/fYvn17lv7uqch52Pjx4+nQoQOxsbF06tSJRYsWeeZWMyIiLgwaNIg+ffpgreX1\n11/n7bffJiLCu5NT0dHRzJw5k8cff5yEhAS6devG6NGjXceSXKQi51EjRoygW7duJCYmMmDAACZO\nnEihQoVcxxIRCVmvvfYazz77LMYY/vOf//Dkk0+6jhQU4eHhDB06lNdeew1rLffffz/Dhw93HUty\nie7s4EFDhw5N/gfojTfe4IknnnCcSEQktI0cOZKHHnoIYwwTJkygc+fOriPliLfffpvHHnsM8O1z\n7969HSeSYNEtulLxapH7z3/+Q+/evTHG8N5779GrVy/XkUREQtqkSZO4++67sdby/vvvc//997uO\nlKNSltaPP/6Yjh07uo4kQaAil4oXi9yUKVPo3Lkz1lpGjBjBgw8+6DqSiEhIW7BgAX/7299ISEhg\nyJAhPPXUU64j5YpXX32VAQMGEBUVxZw5c7j++utdR5LzpCKXiteK3Ny5c2nbti0JCQm8+uqrPPvs\ns64jiYiEtG3bttGoUSMOHTrEY489xptvvuk6Uq6x1vLII48wbNgwoqOjWbp0KdWrV3cdS86Dilwq\nXipyv/zyC40bN+bYsWM8/vjjvPHGG7pek4jIOcTGxtKsWTPWrVvHTTfdxOzZswkPD3cdK1clJSVx\n1113MW3aNKpUqcLSpUu58MILXceSbFKRS8UrRe7IkSM0adKETZs2cdttt/HJJ58QFqaTjUVE0mOt\n5a677uLjjz+matWq/PDDDxQvXtx1LCdOnjxJ8+bN+fHHH2ndujX//e9/812hzSvSK3JqBCEsMTGR\nTp06sWnTJurUqcO4ceNU4kREMjB69Gg+/vhjihQpwueff55vSxxA4cKFmTlzJiVLluTLL7/k+eef\ndx1JgkytIIQNGjSIL7/8kosvvpjPP/+cIkWKuI4kIhLSNmzYwCOPPALAe++9R0xMjONE7pUvXz55\nNmfw4MF88803riNJEKnIhahFixbx4osvAjBhwoQs33tNRCS/iY+P56677iIuLo7u3bvTpUsX15FC\nxrXXXssLL7yAtZauXbty4MAB15EkSFTkQtChQ4fo3LkzSUlJPPPMM7Rq1cp1JBGRkPfqq6+ybt06\nKleuzLBhw1zHCTnPPfccLVq0YM+ePdx777144ThxyZhOdghBnTp1YsqUKTRt2pQFCxYQGRnpOpKI\nSEhbs2YNDRs2JCEhgYULF9KiRQvXkULSzp07qVu3LkePHmXcuHF07drVdSTJJJ3s4BGffvopU6ZM\noXDhwkyYMEElTkQkAwkJCdx7770kJCTQp08flbhzKFeuHG+99RYAjzzyCHv37nWcSM6XilwIOXTo\nUPLdGoYMGULFihUdJxIRCX0jRoxg1apVlC9fnkGDBrmOE/K6d+9O69atOXLkCH379nUdR86TplZD\nSPfu3Rk3bhzXXnst8+bN06VGREQycODAAapUqcKxY8f47LPPuOWWW1xH8oQdO3ZQq1YtYmNjmT17\n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\nli5dyh133MG0adNCqiilnFIdNWoU9913n+tIkgs0tZoPXHnllTzxxBNYa+nevbtu3yUikg0RERFM\nmjSJ6Ohopk+fzujRo11HSpZ6SrVnz56uI4ljGpHLY06fPs2VV17Jhg0bPHGwrohIqJo4cSJ33303\nBQsWZOXKlVSvXt11JCZNmkSXLl2Ijo7mp59+oly5cq4jSS5Jb0RORS4PWr16NY0bN+bs2bPMmTOH\nm266yXUkERFP6tatG+PHj6du3br88MMPFChQwFmWnTt3UrduXY4ePaop1XxIU6v5SP369Xn55ZcB\nuPfeezl06JDjRCIi3jR8+HAqVarEmjVreOqpp5zlSExMpFu3bhw9epT27dtrSlWSqcjlUU8++STN\nmzdnz5499O7dW/diFRHJhujoaCZPnkxkZCTDhg3j448/dpLj9ddfZ8GCBVxyySV88MEHIXXyhbil\nqdU8bNu2bdSpU4fY2FjGjBlD9+7dXUcSEfGkYcOG8fDDD1OkSBGWL19OtWrVcu29ly9fTrNmzUhI\nSNDhMvmYplbzoQoVKjBs2DAAHnroIX7++WfHiUREvKlv377cddddxMbG0rFjx1y78HpsbCxdunQh\nISGBRx55RCVO/kIjcnmctZZu3boxYcIEateuzdKlSylYsKDrWCIinhMbG0ujRo34+eef6dKlC+PH\nj8/xKc577rmHMWPGULt2bZYtW+b0ZAtxSyNy+ZQxhhEjRhATE8O6det47LHHXEcSEfGkIkWKMH36\ndAoXLszEiRMZOXJkjr7fRx99xJgxYyhQoACTJk1SiZM0aUQun/jxxx9p0qQJ8fHxTJkyhX/84x+u\nI4mIeNLkyZPp3LkzERERfPPNN1xzzTVBf4+1a9fSuHFjTp8+zYcffsg999wT9PcQb9GIXD5Xr149\n3nrrLQDuv/9+fv31V8eJRES8qVOnTvTr14+EhATuuOMOduzYEdTtHz9+nL///e+cPn2ae+65RyVO\nzkkjcvmItZY777yTTz75hNq1a/P9999TuHBh17FERDwnISGB9u3b8+WXX1KnTh0WL15MkSJFznu7\n1lo6derE1KlTqV27Nj/88AOFChUKQmLxOo3ICcYYPvjgg+Tj5e6//35dX05EJBsiIiKYMmUKMTEx\nrF27lh49epCUlHTe2x0xYgRTp06lSJEiTJs2TSVOMqQil88ULVqUmTNnUqRIESZPnszbb7/tOpKI\niCcVL16czz//nGLFijF9+vTkO+pk18KFC3n00UcBGD16NFWrVg1GTMnjNLWaT3366afccccdhIeH\n8yGE+i0AACAASURBVPXXX9OyZUvXkUREPGnOnDm0a9cOay0TJ06kc+fOWd7Gzp07adiwIQcOHODx\nxx9n6NChOZBUvExTq/Int99+O8888wyJiYnceeed7Nq1y3UkERFPatOmDW+++Sbgu+7bggULsvT6\nU6dO0aFDBw4cOMCNN97I4MGDcyKm5FEakcvHEhMTadOmDXPnzqV+/fosWrRIJz+IiGTTI488wjvv\nvEPx4sVZsmQJ1atXz/A11lq6dOnC5MmTqVixIsuXL6dEiRK5kFa8RiNy8hfh4eFMnjyZypUrs3r1\narp16xaUg3VFRPKjN998kw4dOnD06FHatGnD3r17M3zN0KFDmTx5MkWKFOHzzz9XiZMsU5HL5y66\n6CJmzZpFsWLF+PTTTxkwYIDrSCIinhQeHs7EiRNp3LgxO3bsoF27dsTGxqa7/syZM3n66acBGD9+\nPDVr1sytqJKHqMgJ1apV45NPPiE8PJxBgwYxduxY15FERDypUKFCfP7551SsWJFVq1Zxxx13cObM\nmb+st3z5cjp37oy1lldeeYUOHTo4SCt5gY6Rk2TvvfceDz74IJGRkXzzzTe0aNHCdSQREU/atGkT\nzZs358CBA9x5551MmjSJ8PBwAHbs2EHjxo3Zt28f99xzDx988AHG/OXQJ5E/Se8YORU5+ZPAwbol\nSpRg8eLFVKtWzXUkERFPWrVqFddddx3Hjx+nV69evPfeexw/fpyrr76a9evXc/311zNnzhyioqJc\nRxUPUJFLRUUubQkJCdx2223Mnj2b8uXLs2TJEi677DLXsUREPGnhwoW0bt2a06dP8/jjj7NmzRq+\n/vprqlevzpIlSyhevLjriOIRKnKpqMil7+TJk9xwww0sXbqUunXrsmDBAooVK+Y6loiIJ82ePZtb\nb701+aoApUqVYunSpVxxxRVug4mn6PIjkmmFCxdm9uzZxMTEsGbNGm6//Xbi4+NdxxIR8aR27dpx\n0UUXJX9+0003qcRJ0KjISZpKlizJ//73Py699FLmzZsXtBtCi4jkN4MHD+bAgQPJn48bN46RI0c6\nTCR5iYqcpKtChQrMmTOH6OhopkyZwsMPP4ymo0VEMm/UqFE8++yzGGOYOnUqw4YNA+Chhx7i/fff\n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\nnfuBvr+KXDIqcpLRXL9+nY0bN7J69Wo2btzIkSNH7nm8YMGCNGrUiKeffhofHx9q1qypk9zTIZfL\nxaFDh9zF7bvvvuPcuXP3PKdYsWL4+vri6+tL8+bNdUhdJB2LiooiIiKCyMhI+vbt+8DfR0UuGRU5\nyehOnz7Nt99+y8aNG9m4cSMnT5685/Hs2bNTu3ZtfHx88PHxoW7duhQvXlwzYtPYxYsXCQ8Pd99+\n+OEH9yXd7nrooYdo2LAhDRs2pEmTJjzxxBP6dxLJZFTkklGRk8zEWsvx48cJDQ1l27ZthIWF3XMt\nwruKFClCzZo177mVKVNGpSEFWGs5e/Yse/bsYe/evezdu5ft27ffc57jXcWLF6dBgwY0atSIRo0a\nUalSJf0biGRyKnLJqMhJZnf58mXCw8MJCwsjLCyMnTt3Eh0d/ZvneXt7U6VKFapUqULlypXdH4sV\nK6ZycR9RUVEcPnyYQ4cOsX//fndxu3Tp0m+emydPHmrXrk29evWoV68edevWpWTJkg6kFpH0TEUu\nGRU5kXtZa4mMjGTXrl3u286dO7l48eLvPt/b25uKFSvy2GOP8eijj/LYY4+5b0WLFs3QJc9aS1RU\nFJGRkURGRnL8+HGOHDnCoUOHOHTo0O8WNoACBQpQrVo1qlevTrVq1ahZsyaVK1fW7GIR+UMqcsmo\nyIn8MWst58+fZ//+/Rw4cOCej5cvX77v1+XKlYtSpUpRokQJSpYsSYkSJdz3ixcvTuHChSlcuDD5\n8uVLd4UvNjaW8+fPc+7cud98PH36tLu8xcTE3Pd75M2bl4oVK7pvTz75JNWrV6dkyZLp7r9XRDyD\nilwyKnIiD+5uwTt69Cg///wzP//8M8eOHXPfv98eqeSyZcvmLnWFCxfG29ubvHnzki9fvns+5s2b\nlxw5cpAtWzb3LXv27GTLlo2sWbPicrlwuVzcuXPHfd/lchEbG0tMTAwxMTHcvHnTfT8mJobo6Ggu\nX77M5cuX+fXXX933r1+//qeye3t7U6ZMGcqUKUPp0qUpX748FStWpEKFCpo0IiIpTkUuGRU5kdRz\n9epVTp8+zenTpzlz5gxnzpxx3z979iyXLl0iKiqKGzduOB31N7y8vHj44YcpVqwYxYoVo2jRou77\nxYsXp2zZspQuXRpvb2+no4pIJqIil4yKnIjzbt68yaVLl7h06RIXL17kypUrXL9+nWvXrnHt2jX3\n/evXrxMbG0tcXBxxcXH33L9z5w5eXl54eXmRJUuWez5my5aN3Llzkzt3bnLlynXP/fz581OgB62D\n5wAABfpJREFUQAH3rWDBghQoUIB8+fJpQV0RSXdU5JJRkRMRERFPcb8ipz87RURERDyUipyIiIiI\nh0q3Rc4YM8EYc9AYs8cY8/+MMf9IHC9tjIkxxuxKvM1I8jU1jTH7jDFHjDFTnUsvIiIikvrSbZED\n1gFVrLXVgaPAqCSP/WStrZl4eyXJ+Eygv7W2PFDeGOObhnkzhU2bNjkdQdIhbRfye7RdyO/RdpGy\n0m2Rs9ZusNa6Ej/9Hkh6zZrfztowpiiQz1q7PXFoPtAhdVNmPvoFlN+j7UJ+j7YL+T3aLlJWui1y\nyfQDVif5vEziYdVvjTH1E8dKAKeTPOd04piIiIhIhuToBf6MMeuBh5MOARYYba39KvE5o4E4a+2i\nxOecBR6x1l42xtQEvjTGVE7L3CIiIiLpQbpeR84Y0wcYADS11t6+z3O+BYaRUPC+tdZWShzvDjSy\n1g68z9el3/9wERERkWR+bx05R/fI/SfGmJbACKBh0hJnjCkM/GqtdRljHgUeB45Za6ONMVeMMXWB\n7cDzQOD9vv/v/c8QERER8STpdo+cMeYokB24e/Xt7621rxhjOgHvArGAC/iXtXZV4tfUAv4N5ARW\nWWsHp3lwERERkTSSbouciIiIiPxnnjJrVRxmjGlpjDmUuNhygNN5JO0YY+YYYy4YY/YlGStgjFln\njDlsjFlrjMmf5LFRxpijiQt6P+NMakltxpiSxpiNxpj9xpgIY8ygxHFtG5mYMSaHMSbcGLM7cbt4\nJ3Fc20Uq0R45+UPGGC/gCNCMhEkl24Hu1tpDjgaTNJG4xM91YL619snEsQ+AS9baCYnFvoC19p+J\nM8hDgDokrP24AShn9UKT4SSu3VnUWrvHGJMX2Am0B/qibSNTM8bkttbGGGOyAFuBQUBntF2kCu2R\nkz+jLnDUWnvCWhsHfEbCC7ZkAtbaLcDlZMPtgXmJ9+fxf4tvtwM+s9bGW2sjSbgqS920yClpy1p7\n3lq7J/H+deAgCW/E2jYyOWttTOLdHCRMqrRou0g1KnLyZ5QATiX5XIstSxFr7QVIeEMHiiSOJ99W\nzqBtJcMzxpQBqpNwFZ6HtW1kbsYYL2PMbuA8sD7xikvaLlKJipyIpAQdBsmkEg+rLgUGJ+6ZS74t\naNvIZKy1LmttDRL20NY1xlRB20WqUZGTP+MM8EiSz0smjknmdcEY8zC4z5X6JXH8DFAqyfO0rWRg\nxpisJJS4Bdba5YnD2jYEAGvtVWAT0BJtF6lGRU7+jO3A48aY0saY7EB3YIXDmSRtmcTbXSuAPon3\n/YHlSca7G2OyG2PKkrBg9w9pFVLS3FzggLV2WpIxbRuZmDGm8N0ZqcaYXEALEs6f1HaRStLtlR0k\n/bDW3jHGvAasI6H8z7HWHnQ4lqQRY8wioDFQyBhzEngHGA98YYzpB5wAugJYaw8YYz4HDgBxwCua\nfZYxGWOeBnoBEYnnQ1ngTeAD4HNtG5lWMWBe4moHXsASa+0qY8z3aLtIFVp+RERERMRD6dCqiIiI\niIdSkRMRERHxUCpyIiIiIh5KRU5ERETEQ6nIiYiIiHgoFTkRERERD6UiJyIiIuKhVOREREREPJSK\nnIiIiIiHUpETERER8VAqciIiIiIeSkVORERExENldTqAiIinM8a8CBQGKgALgNJAEeAJYKS19oyD\n8UQkAzPWWqcziIh4LGPMAGCftTbcGFMHWA/0AW4Aa4DW1tq1DkYUkQxMe+RERP6eQtba8MT7jwB3\nrLVfGmNyAY2ttZsdzCYiGZz2yImIpBBjTCBQylrb0eksIpI5aLKDiEjKaQJscjqEiGQeKnIiIg/I\nGONljGluEhQBqpCkyBljRjoWTkQyBRU5EZEH9xKwDigHdAVigNMAxph2wI/ORRORzEDnyImIPCBj\nTDVgBHAI2Av8A2gKRALHrbULnUsnIpmBipyIiIiIh9KhVREREREPpSInIiIi4qFU5EREREQ8lIqc\niIiIiIdSkRMRERHxUCpyIiIiIh5KRU5ERETEQ6nIiYiIiHgoFTkRERERD6UiJyIiIuKh/j8YT825\n8zlOaAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,numpy.pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can play around with the input values and see what kind of behavior results. Just note that any value of $C > \\frac{2}{3}$ will result in $\\cos \\theta > 1$, which doesn't exist. Python will probably throw a few errors if you hit that condition, but just try again!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The last case is $C = 0$. Take another look at Equation (16) and plug in $C = 0$, what should happen? It looks like it will just reduce to \n", + "\n", + "$$R = 3z_t$$\n", + "\n", + "It's a constant radius of curvature! In fact, this solution is a series of semi-circles, with a cusp between them. One way to force $C = 0$ that we can figure out from Equation (15), is to make:\n", + "\n", + "\n", + "$$z = 3z_t\\ \\ \\ ,\\ \\ \\ \\theta = 0$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\npZeYNm0a1atXp1mzZpx11lkVUfZWef/99xk5ciQ33ngjAMOHD+eLL75g7dq1tGjRgpNOOmmz70/7\nsZa2vuL6l+txJv29WeX8nVxRklQ2/H/q/9x3332xT58+sX///t9pP++88+LcuXNjjDG2a9cuzpkz\np8j3r1ixInbs2HHT88MOOywuXbq0/AreBvn5+fH444+Pv/rVr2KMMc6fPz/ec889m14///zz4zff\nfFPs+7flWCdMmBAff/zxeO+998avv/56K49g80pbX3H9S7Of4n6Xsu1FZhqnRCVJKqVrrrmGE088\n8Ttts2fPZuHChbRo0QKAUaNG0bJlyyLf/+abb9KuXbtNzzt06MA///nP8it4GwwbNoxu3bptev7l\nl18yZswY1q9fD0C9evXYbrvtin3/1h7r559/zpNPPsl5551HixYteP7557fhKIpX2vqK61/e59Qp\nUUlSlTNr1iz+/Oc/f2c9rI2PQwgcdthh9OrVq1T7fOONN2jYsCGDBg3i66+/pn79+px77rlF9v3i\niy9o1KjRpueNGjVi5syZW308xdnW41y2bBnVqlVjxx13ZNWqVQAceOCB5Ofn88Mf/pALLriAY445\nhpo1axa7j6091p///OfcdNNNAHz66adUr169XI6ztPUV13+HHXYo13NqYJMklYkQilzvs9Q2/oW7\nNSZNmsSAAQNo3rw51apV4yc/+Qm9e/f+Xr899tiDu+66a1vK/J7Fixczbdo0hgwZAsCRRx7Jj370\nI9q0afO9vl9//TXbb7/9pufbbbcd33zzTYk+p6THCNt+nH//+9/52c9+xlNPPfWd9htvvJGBAwdy\n/fXX87vf/W6z+9iaY/3Pf/7DO++8w7vvvsvkyZMZNGgQt956a7H9t+U4S1vf5vpv7TktCadEJUmV\nxsEHH8yrr77KD37wA2rWrEnv3r154IEHWLx4cbl/dv369TnggAM2PW/RogWjRo0qtm/BYLpmzRoa\nN25cos8pfIxdu3blt7/9LU8++STvvvvuth1EAe+88w6HHnro99pnzpzJuHHjGDVqFC+//DK33347\nb7/9drH72ZpjfeONNzjhhBO44IILOOuss1i4cCHHHHNMuRxnaesrrv+2nNOScIRNklQmtmVkrCzd\neeedLF68mIcffhjITKc1bdr0O30KTqEVtC1Tou3atWP8+PGbnlerVo28vLwi++65555Mnjx50/Nl\n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\nSZISMm/ePPr160d+fj633norJ5xwQtIlSZVKoiNsIYTRIYQpBbap2Z89AWKMv4gxtiAzBXp5krVK\nkor27bffcsopp7B06VKOPfZYbrvttqRLkiqdREfYYoxHl7DrYOBVYACZEbXdC7y2W7atSAMGDNj0\nuGvXrnTt2rWUVUqSihNj5IILLmDSpEm0atWKwYMHU7169aTLknLC2LFjGTt2bIn6pvmmgzYxxs+y\njy8Hjowx9i1w08GhZKZCR+NNB5KUiPvuu4/rrruOunXrMnHiRNq3b590SVLO2txNB2m+hm1gCGFv\nMjcbzAUuAogxfhxCGAp8DKwHLjGVSVLFe+2117jhhhsA+Otf/2pYk8pRakfYyoIjbJJUPj755BMO\nPfRQVqxYwW233fady08kbZ3NjbAZ2CRJpbJs2TIOO+wwPvvsM/r06cPzzz9PtWqpXSVKyhkGNklS\nmVi7di1HH300b731FgceeCBvvvkm9erVS7osqVLIyYVzJUnpEmPkZz/7GW+99RbNmjVj+PDhhjWp\nghjYJEklcscdd/D0009Tt25dXnnlFZo3d81yqaI4JSpJ2qJBgwZx1llnEULgpZdeomfPnkmXJFU6\nTolKkrba6NGj6d+/PwAPPPCAYU1KgCNskqRivf/++3Tu3JlvvvmG6667jnvuuSfpkqRKy7tEJUml\nNmfOHDp16sSiRYvo168fgwYNcvkOqRwZ2CRJpfLll19y5JFH8sknn3DUUUcxYsQIatWqlXRZUqVm\nYJMkldjKlSvp1q0b7733Hu3bt+fNN9+kYcOGSZclVXredCBJKpE1a9bQq1cv3nvvPfbcc09Gjhxp\nWJNSwMAmSQJgw4YNnH766YwbN45mzZoxevRodtlll6TLkoSBTZIE5OXl0b9/f15++WUaN27MqFGj\naN26ddJlScoysElSFZefn89FF13EoEGDqFu3LiNGjKBdu3ZJlyWpAAObJFVhMUauvPJKHnvsMWrX\nrs2rr77KoYcemnRZkgoxsElSFRVj5Prrr+eRRx5hu+2248UXX6RLly5JlyWpCAY2SaqCYozccsst\n3HfffdSoUYNhw4ZxzDHHJF2WpGLUSLoASVLFijFy8803M3DgQKpXr86QIUM44YQTki5L0mYY2CSp\nCokxcuONN3L33XdvCmsnn3xy0mVJ2gIDmyRVETFGbrjhBu69915q1KhhWJNyiIFNkqqAGCNXX301\nDz74IDVq1GDo0KH06dMn6bIklZCBTZIquby8PC688EIef/xxatasydChQ+ndu3fSZUkqBQObJFVi\n69ev5+yzz2bIkCFsv/32vPDCC/zkJz9JuixJpWRgk6RK6ttvv+W0007j5Zdfpn79+rzyyit07tw5\n6bIkbQUDmyRVQitXrqRPnz688cYb7LDDDowcOZKDDz446bIkbSUDmyRVMosXL6ZHjx6899577LLL\nLowcOZL27dsnXZakbWBgk6RKZPbs2RxzzDF89tlntGnThpEjR7LHHnskXZakbeRXU0lSJfHhhx9y\n+OGH89lnn3HggQcyfvx4w5pUSRjYJKkSGD16NEceeSSLFi2iW7dujB07lqZNmyZdlqQyYmCTpBz3\n5JNP0qNHD/773//St29fRowYQYMGDZIuS1IZMrBJUo6KMfKrX/2K/v37s2HDBm644QaeffZZtt9+\n+6RLk1TGvOlAknLQunXruOCCC3jqqaeoVq0aDz/8MJdccknSZUkqJwY2ScoxS5cu5aSTTuKtt96i\nTp06DBkyhJ49eyZdlqRyZGCTpBzy8ccf07NnT2bNmkWzZs0YPnw4HTt2TLosSeXMa9gkKUeMHDmS\nTp06MWvWLA466CAmTZpkWJOqCAObJKVcjJH777+fHj16sHLlSk455RTefPNNmjVrlnRpkiqIgU2S\nUmz16tWcddZZXHvtteTn5/OLX/yC5557jjp16iRdmqQK5DVskpRSc+fOpU+fPrz//vvUrVuXp556\nipNPPjnpsiQlwMAmSSn0z3/+k759+7J06VL23HNPXnzxRfbff/+ky5KUEKdEJSlF8vPzueuuu+je\nvTtLly7l2GOPZdKkSYY1qYozsElSSnz99deceOKJ3HzzzZuuV3v11VfZYYcdki5NUsKcEpWkFHjv\nvfc45ZRTmD17NjvssANPP/00xx9/fNJlSUoJR9gkKUExRh5++GE6derE7NmzOeigg3jvvfcMa5K+\nw8AmSQn56quvOOmkk7jiiitYt24dF110EePHj6dVq1ZJlyYpZZwSlaQETJw4kX79+jFv3jwaNmzI\nn//8Z0499dSky5KUUo6wSVIF2rBhA7fffjudO3dm3rx5HHroobz//vuGNUmb5QibJFWQ2bNnc9ZZ\nZzFhwgQArr/+eu644w5q1qyZcGWS0i71I2whhGtDCPkhhMYF2m4KIcwMIUwPIRyTZH2StCUxRp56\n6ik6dOjAhAkTaNasGaNHj+buu+82rEkqkVSPsIUQdgOOBuYWaNsX6AvsC+wGjAkh7BVjjMlUKUnF\nW7p0KRdffDHPP/88ACeffDJ/+tOfaNKkScKVScolaR9hewC4vlDbicCQGOOGGOMcYCZwSEUXJklb\n8uKLL9KuXTuef/556tWrxxNPPMHf/vY3w5qkUkttYAsh9ALmxxinFnqpOTC/wPMF2TZJSoWvv/6a\ns846iz59+rBkyRK6dOnChx9+yLnnnksIIenyJOWgRKdEQwijgaYFm4AI/AK4mcx0qCTljFdeeYUL\nL7yQhQsXUrt2bQYOHMhll11GtWqp/fexpByQaGCLMRYZyEII+wOtgA9D5p+juwHvhRAOITOi1qJA\n992ybUUaMGDApsddu3ala9eu21q2JH3PkiVLuPLKKxkyZAgAnTp14sknn2TvvfdOuDJJaTV27FjG\njh1bor4hF67VDyHMBjrGGL8OIewHPAMcSmYqdDRQ5E0HIQTvRZBUrmKMPPPMM1x11VUsW7aM2rVr\nc/vtt3PllVdSvXr1pMuTlENCCMQYi7xuItV3iRYQyUyXEmP8OIQwFPgYWA9cYiqTlITZs2dz6aWX\n8o9//AOA7t2786c//Yk99tgj4cokVTY5McK2tRxhk1Qe1q1bx3333cdvfvMb1qxZQ6NGjbj//vu9\nqUDSNqkMI2ySlArjxo3j4osvZvr06QD069eP+++/n1122SXhyiRVZt62JEklsGjRIs455xy6du3K\n9OnT2WuvvRg9ejSDBw82rEkqdwY2SdqMjdOfe++9N3/961+pVasWAwYMYMqUKXTv3j3p8iRVEU6J\nSlIxRo0axZVXXsmMGTMAOOGEE3jggQdo06ZNwpVJqmocYZOkQj799FN69+7Nsccey4wZM9hrr714\n9dVXGT58uGFNUiIMbJKUtWzZMq644gratWvHSy+9RN26dRk4cCBTp06lR48eSZcnqQpzSlRSlbd2\n7VoeeeQRbr/9dpYvX04IgfPPP5/f/OY37LrrrkmXJ0kGNklVV15eHoMHD+aXv/wlc+bMATKL3953\n3320b98+2eIkqQADm6QqJ8bIq6++ys0338zUqVMB2G+//bjnnns47rjjXPxWUup4DZukKuWtt96i\nc+fO9OzZk6lTp7L77rvzxBNPMGXKFHr06GFYk5RKjrBJqhImTpzIbbfdxpgxYwBo0qQJv/jFL7jo\noovYfvvtE65OkjbPwCapUvv3v//NbbfdxsiRIwFo0KABV199Nddccw0NGjRIuDpJKhkDm6RKafz4\n8dxxxx289tprANSvX58rr7ySa665hh122CHh6iSpdAxskiqNGCOjRo3ijjvu4K233gKgbt26XHHF\nFVx77bU0adIk4QolaesY2CTlvLy8PF588UUGDhzI5MmTAWjUqBFXXHEFV1xxhUFNUs4zsEnKWatX\nr+bJJ5/k/vvv5/PPPwdgp5124pprruGSSy7xGjVJlYaBTVLOWbJkCY8++iiPPvooy5YtA6B169Zc\nc801nHfeedSpUyfhCiWpbBnYJOWM9957j4ceeohnn32WdevWAXDwwQdz/fXXc9JJJ1G9evWEK5Sk\n8mFgk5Rq69ev54UXXuChhx5iwoQJAIQQ6NmzJ9dddx1HHnmki91KqvQMbJJSaf78+Tz22GM89thj\nLFy4EMisoXb++edz2WWXscceeyRcoSRVHAObpNTIy8tj1KhR/PGPf+SVV14hPz8fgLZt23L55Zdz\n9tlnU69evYSrlKSKZ2CTlLg5c+bw5JNP8uSTTzJ37lwAatasyamnnspFF11Ely5dnPaUVKUZ2CQl\nYvXq1bzwwgv85S9/4Y033tjU3rp1ay688EL69+/PzjvvnGCFkpQeBjZJFSY/P59x48YxaNAgnn/+\neVauXAnA9ttvz8knn8x5551H165dqVatWsKVSlK6GNgklasYI1OnTmXQoEEMHjyYBQsWbHrt4IMP\n5vzzz+e0006jUaNGCVYpSelmYJNULqZNm8bQoUMZOnQoM2bM2NTeqlUrzjzzTM444wzatm2bYIWS\nlDsMbJLKRIyRjz76iGHDhjF06FCmT5++6bXGjRtz2mmnceaZZ9KpUydvIJCkUjKwSdpqeXl5TJw4\nkRdffJEXX3yRWbNmbXqtcePG9OnTh759+9KtWzdq1qyZYKWSlNsMbJJKZcWKFYwePZoRI0YwfPhw\nli5duum1nXbaiZ49e9K3b1+OOuooQ5oklREDm6TNijEybdo0RowYwYgRI5gwYQIbNmzY9Pqee+5J\n79696d27N506dfL7PCWpHBjYJH3PggULeP311xkzZgxjxozhP//5z6bXqlevTufOnenRowfHH388\n7dq185o0SSpnBjZJLF68mDfffJM333yTN954g48//vg7rzdt2pTjjjuOHj16cPTRR7sEhyRVMAOb\nVMXEGJkzZw4TJ07kzTffZNy4cXzyySff6VO3bl26du1K9+7d6d69u6NokpQwA5tUya1atYp3332X\nt99+m7fffpt//etfLF68+Dt96tSpw+GHH06XLl3o0qULhx56KNttt11CFUuSCjOwSZXI6tWr+eCD\nD3j33XeZPHky7777LtOnTyc/P/87/Zo0aUKnTp340Y9+RJcuXTjooIO8o1OSUszAJuWg/Px85syZ\nw5QpU5gyZQpTp05lypQpzJw5kxjjd/pWr16dDh060KlTp01bmzZtnOKUpBxiYJNS7JtvvuHzzz/n\nk08+YcaMGUyfPp0ZM2bwySefsGbNmu/1r169Ou3ateOggw7ihz/8IQcddBDt27endu3aCVQvSSor\nBjYpQWvWrOGLL75g3rx5zJ8/nzlz5vD5559v2pYsWVLse3fddVcOOOAA2rdvv2lr27YttWrVqsAj\nkCRVBAObVMa+/fZbli1bxldffcWyZcv48ssvWbRo0Xe2//znP3zxxRd8+eWXm91XrVq1aN26Nfvs\nsw9t27albdu27Lvvvuyzzz4urSFJVYiBTVXe119/zauvvkp+fj55eXmbtvz8fDZs2MDatWv59ttv\nv7OtWrWKlStX8t///nfTzxUrVvDVV18VOVVZnBo1arDbbrvRokULdt99d1q0aMGee+65aWvevDnV\nqlUrx6OXJOWCUPgC5cokhBAr8/GpbEyZMoUOHTqU2f5q1qxJkyZNaNKkCY0bN2bHHXdk1113ZZdd\ndtm0NW3alN13352mTZsayCRJAIQQiDEWeUeYI2yq8ho3bswZZ5xB9erVqVat2nd+Vq9ene233/57\nW506dWjQoAH169f/zs/GjRtTt25d78CUJJUpR9gkSZJSYHMjbM7FSJIkpZyBTZIkKeUMbJIkSSln\nYJMkSUq51Aa2EMJtIYQvQgjvZbefFHjtphDCzBDC9BDCMUnWKUmSVN5SG9iy7o8xdsxurwGEEPYF\n+gL7AscBvw8pWUNh7NixSZegbeD5y12eu9zm+cttnr+KkfbAVlQQOxEYEmPcEGOcA8wEDqnQqorh\nH9rc5vnLXZ673Ob5y22ev4qR9sB2WQjhgxDCYyGEhtm25sD8An0WZNskSZIqpUQDWwhhdAhhSoFt\navZnT+D3wB4xxh8Ai4D7kqxVkiQpKTnxTQchhJbA8Bhj+xDCjUCMMf42+9prwG0xxn8X8b70H5wk\nSVJWzn2XaAhhlxjjouzTk4CPso9fBp4JITxAZiq0DfBOUfso7qAlSZJySWoDG3B3COEHQD4wB7gQ\nIMb4cQhhKPAxsB64xC8MlSRJlVlOTIlKkiRVZWm/SzQnhBDuzi7i+0EIYVgIoUGB11zkN+VCCD8J\nIcwIIXwaQvh50vVo80IIu4UQ3gghTMveqHRFtn2HEMKoEMInIYSRBe4sV8qEEKplF0R/Ofvcc5cj\nQggNQwh/y/6dNi2EcKjnr2IY2MrGKKBd9o7WmcBNACGE/UjpIr/KCCFUAx4BjgXaAf1CCG2TrUpb\nsAG4JsbYDugEXJo9ZzcCY2KM+wBvkP09VCpdSeaylo08d7njQWBEjHFfoAMwA89fhTCwlYEY45gY\nY3726b+A3bKPe5HSRX61ySHAzBjj3BjjemAImcWZlVIxxkUxxg+yj78BppP5nTsReCrb7SmgdzIV\nanNCCLsBPYDHCjR77nJAdvboyBjjEwDZv9tW4PmrEAa2snceMCL72EV+06/wOfoCz1HOCCG0An5A\n5h9KTWOMiyET6oCdk6tMm/EAcD1Q8AJqz11uaA0sDSE8kZ3S/n8hhDp4/iqEga2EtrDI78Y+twDr\nY4zPJliqVCWEEOoBzwNXZkfaCt9B5R1VKRNCOB5YnB0h3dzlIZ67dKoBdAQejTF2BFaRmQ71d68C\npHlZj1SJMR69uddDCOeSGeY/qkDzAmD3As93y7YpPRYALQo89xzlgBBCDTJh7ekY40vZ5sUhhKYx\nxsUhhF2AJclVqGIcAfQKIfQAagP1QwhPA4s8dznhC2B+jHFy9vkwMoHN370K4AhbGQgh/ITMEH+v\nGOPaAi+9DJweQtguhNCazSzyq8RMAtqEEFqGELYDTidz3pRufwE+jjE+WKDtZeDc7ONzgJcKv0nJ\nijHeHGNsEWPcg8zv2hsxxrOA4XjuUi877Tk/hLB3tunHwDT83asQrsNWBkIIM4HtgGXZpn/FGC/J\nvnYTcD6ZRX6vjDGOSqZKFScbuB8k8w+Yx2OMAxMuSZsRQjgCeBOYSmbqJQI3k/nH0FAyo9pzgb4x\nxuVJ1anNCyF0Aa6NMfYKITTGc5cTQggdyNwwUhOYBfQHquP5K3cGNkmSpJRzSlSSJCnlDGySJEkp\nZ2CTJElKOQObJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElK\nOQObJElSytVIugBJyhUhhAuAHYF9gKeBlsDOwP7ADTHGBQmWJ6kSCzHGpGuQpNQLIfwMmBJj/HcI\n4WBgNHAusAp4DegRYxyZYImSKjFH2CSpZJrEGP+dfdwCyIsxvhhCqA10jTG+lWBtkio5R9gkqZRC\nCA8Bu8cY+yRdi6SqwZsOJKn0ugFjky5CUtVhYJOkLQghVAshdA8ZOwPtKBDYQgg3JFacpCrBwCZJ\nW3YhMArYC+gLrAa+AAgh9AI+Sq40SVWB17BJ0haEEDoA1wMzgA+BBsBRwBxgdoxxUHLVSaoKDGyS\nJEkp55SoJElSyhnYJEmSUs7AJkmSlHIGNkmSpJQzsEmSJKWcgU2SJCnlDGySJEkpZ2CTJElKOQOb\nJElSyhnYJEmSUu7/A9i2e0jPCtaoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(16,48,0.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks an awful lot like a quarter circle. And what's the radius of the arc? It's $$r = 48 = 3z_t.$$\n", + "\n", + "We can also get a semi-circle out of our simulated trammel by changing to another configuration where $C$ is (near) zero. Here's one example:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nvS8Z0/tyPr0nGdP7kjG9LznDb4/STXNNdhERERGvZozBXsZBG357lK6IiJyvQoUKxMTEOB1DxG+V\nL1+e/fv3e3y9GuETEZFU7lEEp2OI+K3M/g1e7gif9uETERER8XEqfCIiIiI+ToVPRERExMep8ImI\niIj4OBU+ERERkcu0du1aEhISOHv2LOvWrXM6znl0WhYREZF0Tp06xbhx4wgLC+PPP//k2Wef/dfj\nW7duJTIyksGDB2e6jsWLF7Nz504CAwO56qqr6Ny5c07HzpZt27Yxc+ZMJkyYkLrsYtufXl7Z1uzI\n6P3JSEREBDExMZQuXZp33nkHAGstxYsXJyAgIPXI22bNmjF37twcz52eCp+IiEg6Tz75JCNHjiQs\nLIyqVavywAMPUL58ecD1S3z48OHUrl07068/efIkL730Eps3bwagbt263HvvvZQoUSJX8mfV//3f\n/7F+/XqKFSv2r+UX2v70LmdbN2zYwI8//siJEyfo2rXreTmcltn7k5GhQ4fSokULypYtS2BgIAD7\n9+/nrbfe4o477iAgIIBFixZx991353TsDGlKV0REJI1ffvmFw4cPExYWBsDKlSv/VXYWLFhA48aN\nL7iOtWvXUqVKldT7t956K6tXr86ZwJfhmWeeoXXr1v9adrHtTy+727pv3z7ef/99nnjiCcLCwpg/\nf342tyLnZPT+ZCY4OJirr746tewB5M+fn7Zt21KhQgWKFi1KcHAwlStXzqm4F6QRPhER8Tk///wz\n77777r9OYpvyuTGG22+/nVatWmX4tV9++SWhoaF8+OGHnDhxgiJFitClSxcA4uLiCAgIoGTJkpw6\ndSrT1//111//NSpUrFgx9uzZ47kNdLuc7czMhbY/I9nd1ueff54XXngBgN27d/+rKKWXE9vpadHR\n0VhriYuL44YbbqBVq1aULVs29fHJkyfz9NNPO5ZPhU9ERLLEmGyf5P882b2ax8aNGxk1ahTlypUj\nICCAFi1a0KZNm/OeV7FiRcaMGZOt14iNjWXnzp3MmTMHgPr163PnnXdy/fXXs3DhQrp3784HH3xw\nwXWcOHGC/Pnzp97Ply8f8fHxWXr9rG4jXN52ZuZC25+R7Gzrb7/9RnR0NJs3b2bTpk18+OGHDB8+\nPNPn58R2elq3bt2oUaMGANWrV6dhw4aEhoYCrvcoLi6OkJAQx/Kp8ImISJ5x2223sWzZMt566y12\n7dpFmzZteO211+jUqRNXXnmlR16jSJEiVKtWLfV+WFgYK1eu5Pjx49SpUyfL6zh+/Hjq/TNnzlCm\nTJksfW36bWzUqBHjxo3jyiuvpFq1atSsWfPSNugSZbb9mRW+7Gzrl19+yf3330+PHj04ffo0gwYN\nolmzZjm+na+++ioJCQn/WpYyShgREXHBqeuLufXWW1M/L168OFFRUanTwXPnznVsKjeFCp+IiGSJ\nt1xjd/To0cTGxvLGG28ArunA9GUv7RRgWlmZAqxSpQrr169PvR8QEEBSUhLR0dGcPn2a5cuX89VX\nX5GQkMCnn36a4Xquu+46Nm3alHo/Li6O8PDwbG3ja6+9RuPGjQkPDyciIoJZs2Z5ZDszk9n2ZyY7\n23rw4MHUArR48WLuvfdeZs6cmePbOWjQoIs+JztmzZrFZ599lpo5Pj7+X1PUX375JY899liOvHaW\nWWv98ubadBERScvb/28cPXq0HTp0qLXW2p07d9p169bZe+65x3799dcee42EhAR7++23p96/4447\n7N69e//1nFGjRtkXX3wx9f6+fftscnJy6v1Tp07ZatWqpd6/9dZbbWxsrLXW2j179vzrueml38a+\nffvaAwcOWGutveeeey5jyzL2/vvv2y5duqTev9D2p99Oa7O3rVOnTrVTp0611lp777332piYGNuv\nX78c3c7sSv/+WHv++7B+/Xq7Zs0aa6218fHxtkKFCvbUqVOpj1evXt2uWrUqS6+X2b9B9/Js9x4d\npSsiInnChg0bqFatGs2bN6dJkyYsXLiQa665hkaNGnH77bd77HVCQkIYNWoUI0aMYPjw4fTp04fr\nrrsu9fGPP/6YxYsXs3jx4tQjSx944AG+++671OcULFiQQYMG8Z///IeXX36ZgQMHUrp0aQBatmzJ\nqlWrsryNwAUPaLgcb775JtOmTSMqKooXX3yRv/7664Lbn347s7utDz74INu3b2fq1KkMHz6csLAw\nkpOTc2w7syuj9wfOfx/q1avHwYMHmThxIkOHDmXOnDkULFgw9fESJUpQrly5XM+flrFeMkSf24wx\n1l+3XUQkM2mPgswLZs+eTfny5QkLC+Oaa65xOk6WJCcns2bNmoue2iXFG2+8Qf369alcuTJdunTh\no48+yuGEnnMp25qXt9OTMvs36F6e7SOnVPhERCRVXit8ixcvJjExkdtuu+2ydrjPTfPmzaNly5YU\nKFAgS8+Pi4tj+vTpFCtWjKpVq1K3bt0cTug5l7KteXk7PUmFz8NU+EREzpfXCl9edOrUKQoVKuR0\njFzhT9vqKSp8HqbCJyJyPhU+EWflVOHTQRsiIiIiPk6FT0RERMTHqfCJiIiI+DgVPhEREREfp8In\nIiIi4uN0LV0REUlVvnz5865XKiK5J6fOJ6nTsoiIiIh4OZ2WRUREREQuSIVPRERExMep8ImIiIj4\nOBU+ERERER+nwiciIiLi41T4RERERHycCp+IiIiIj1PhExEREfFxKnwiIiIiPk6FT0RERMTHqfCJ\niIiI+DgVPhEREREfp8InIiIi4uNU+ERERER8nAqfiIiIiI9T4RMRERHxcSp8IiIiIj5OhU9ERETE\nx6nwiYiIiPg4FT4RERERH6fCJyIiIuLjVPhEREREfJwKn4iIiIiPU+ETERER8XEqfCIiIiI+zicL\nnzGmhTHmR2PMbmPM807nEREREXGSsdY6ncGjjDEBwG7gLuAwsBF42Fr7Y7rnWV/bdhEREfFNxhis\ntSa7X++LI3y1gT3W2hhrbSIwB2jtcCYRERERx/hi4SsHHExz/1f3MhEREZELWrlyJXXq1OHXX391\nOopH+WLhExEREcmWqVOnEh0dzdChQ52O4lG+uA/f7cAoa20L9/3BgLXWjkv3PDty5MjU+40aNaJR\no0a5GVVERES8zM8//0zlypX5+++/OXz4MGXLlnUkR1RUFFFRUan3X3zxxcvah88XC18g8BOugzZ+\nA6KBjtbaXemep4M2RERE5DwtWrQgMjKSuXPn0qFDB6fjADpo4zzW2iSgH7AS2AnMSV/2RERERDLT\noEEDANauXetwEs8JcjpATrDWrgBudDqHiIiI5D1169YFYNOmTQ4n8RyfG+ETERERuRw33ugaM9q3\nb5/DSTzH5/bhyyrtwyciIiIZsdZSqFAhzpw5wx9//EFoaKjTkbQPn4iIiIgnGWO47rrrAN8Z5VPh\nExEREUmnYsWKAPzyyy8OJ/EMFT4RERGRdMqUKQPAkSNHHE7iGSp8IiIiIumULl0aUOETERER8Vkq\nfCIiIiI+rlSpUgAcPXrU4SSeocInIiIikk7RokUB+OuvvxxO4hkqfCIiIiLpFC5cGID4+HiHk3iG\nCp+IiIhIOoUKFQLg1KlTDifxDBU+ERERkXQ0wiciIiLi4zTCJyIiIuLjChQoAMCZM2ccTuIZKnwi\nIiIi6QQGBgKQnJzscBLPUOETERERSScgwFWRkpKSHE7iGSp8IiIiIulohE9ERETEx2mET0RERMTH\naYRPRERExMedO3cOgKCgIIeTeIYKn4iIiEg6f//9NwD58uVzOIlnqPCJiIiIpHP27FkAQkJCHE7i\nGSp8IiIiIulohE9ERETEx6nwiYiIiPg4FT4RERERH5eyD58Kn4iIiIiP+uuvvwAoUqSIw0k8Q4VP\nREREJJ0///wTgNDQUIeTeIZfF77ExESnI4iIiIgXUuHzISnDtSIiIiJpqfD5kJMnTzodQURERLyQ\nCp8PSflmioiIiKSlwudDjh8/7nQEERER8UJ//PEHoMLnE44cOeJ0BBEREfFCKR2hVKlSDifxDBU+\nERERkXRiY2MBuPLKKx1O4hkqfCIiIiLppBS+MmXKOJzEM/y68KV8M0VERETS0gifD9EIn4iIiKR3\n6tQp4uPjCQkJoWjRok7H8Qi/Lnwa4RMREZH00o7uGWMcTuMZfl34Dh8+7HQEERER8TK///474DvT\nueDnhe/QoUOcO3fO6RgiIiLiRQ4cOABAWFiYw0k8x68LX1JSkkb5RERE5F9iYmIAKF++vMNJPMev\nCx/80+JFREREAPbv3w+o8PmUlBYvIiIiAv90gwoVKjgbxIP8vvBphE9ERETS0pSuD9IIn4iIiKSw\n1qrw+aJ9+/Y5HUFERES8RFxcHKdOnaJo0aIUK1bM6Tge4/eFb/fu3U5HEBERES/x008/AVCpUiWH\nk3iWXxe+oKAgDhw4wJkzZ5yOIiIiIl4gpfDdeOONDifxLL8ufBUrVgRg7969DicRERERb6ARPh+U\n8s3UtK6IiIiARvh8kgqfiIiIpKXC54NSvpkp31wRERHxX+fOnUs9e8cNN9zgcBrP8uvCd/PNNwOw\nY8cOh5OIiIiI0/bt20diYiJhYWEUKlTI6Tge5deFr1q1agDs3LmTc+fOOZxGREREnLRt2zbgn37g\nS/y68IWGhhIWFkZCQoKO1BUREfFz27dvB+DWW291OInn+XXhA7jllluAf77JIiIi4p9SRvhU+HyQ\nCp+IiIjAP4UvpRv4EhU+9zf1+++/dziJiIiIOOXEiRMcPHiQ/Pnz+9wRuqDCl1r4vvvuO4eTiIiI\niFNSZvqqVq1KYGCgw2k8z+8LX6VKlShUqBAHDhzgyJEjTscRERERB2zduhXwzf33II8WPmPMSGPM\nr8aYLe5bizSPvWCM2WOM2WWMaXaxdQUGBlKzZk0ANm7cmIOpRURExFt9++23ANSuXdvhJDkjTxY+\nt/+z1oa7bysAjDGVgQ5AZeAe4C1jjLnYim677TZAhU9ERMRfRUdHA1CnTh2Hk+SMvFz4MipyrYE5\n1tpz1tr9wB7golVdhU9ERMR/HTt2jJ9//pkCBQpQpUoVp+PkiLxc+PoZY74zxkw1xoS6l5UDDqZ5\nziH3sgtKGb6Njo7GWuvxoCIiIuK9Ukb3atasSVBQkMNpcobXFj5jzOfGmO1pbt+7P7YE3gIqWmur\nA78D/72c16pQoQIlSpTg2LFjxMTEeCK+iIiI5BG+Pp0L4LU11lp7dxaf+i6wxP35IeCaNI9d7V6W\noVGjRqV+ft111xEXF8c333xDhQoVLimriIiI5F0phc+bDtiIiooiKirKY+szeXEK0xhTxlr7u/vz\np4HbrLWdjDE3A7OAOrimcj8HbrAZbKQx5l+LX3nlFYYNG0bfvn158803c2U7RERExFlJSUmUKFGC\nP//8k/3791O+fHmnI2XIGIO19qIHombGa0f4LuJVY0x1IBnYD/QEsNb+YIyZB/wAJAJ9Mip7Galf\nvz4Aa9euzYm8IiIi4oV27NjBn3/+SVhYmNeWPU/Ik4XPWvvYBR4bA4y51HXWrl2bfPnysWPHDk6c\nOEHx4sUvK6OIiIh4v3Xr1gHQoEEDh5PkLK89aCO35c+fn9tuuw1rLV999ZXTcURERCQXpMzsqfD5\nkZRp3ZS2LyIiIr7LWqvC549U+ERERPzHnj17iI2NpXTp0lSqVMnpODlKhS+NevXqERAQwMaNG/nr\nr7+cjiMiIiI5KGV0r379+mThSqx5mgpfGqGhodx2222cO3dOR+uKiIj4uFWrVgHQqFEjZ4PkAhW+\ndO6+23W+588//9zhJCIiIpJTkpOTUwtfs2bNHE6T81T40mnatCmgwiciIuLLtm7dSlxcHOXLl+eG\nG25wOk6OU+FLp27duhQqVIgffviBw4cPOx1HREREcsDKlSsB18yer++/Byp858mXLx8NGzYE/pnb\nFxEREd+SMpPnD9O5oMKXoZT9+FLav4iIiPiOU6dOsX79eowxNGnSxOk4uUKFLwPNmzcHIDIykqSk\nJIfTiIiIiCdFRUWRmJhIzZo1KVGihNNxcoUKXwZuuukmKlasyLFjx/j222+djiMiIiIetGTJEgDu\nu+8+h5PkHhW+DBhjuP/++wFYunSpw2lERETEU6y1qb/bW7Zs6XCa3KPCl4mUwpfyV4CIiIjkfVu3\nbuXQoUNcddVVhIeHOx0n16jwZaJhw4YULlyYHTt2sH//fqfjiIiIiAekDOS0bNnSL07HkkKFLxP5\n8uVLPXhD07oiIiK+IW3h8ycqfBeQ8sPw6aefOpxERERELtehQ4fYvHkzBQoU8JvTsaRQ4buA++67\nj8DAQL788kvi4uKcjiMiIiKXYdGiRYDrZMsFChRwOE3uUuG7gJIlS9K4cWOSkpI0yiciIpLHffzx\nxwC0b9/e4SS5T4XvIh588EHgnx8SERERyXt+//131q5dS758+WjVqpXTcXKdCt9FtGnThoCAAFat\nWsWJEyecjiMiIiLZsHDhQqy1NGvWjNDQUKfj5DoVvosoXbo0DRs2JDExUefkExERyaNSZuo6dOjg\ncBJnqPBlwQMPPADA/PnzHU4iIiIilyo2Ntavp3NBhS9L2rVrhzGGFStWcPz4cafjiIiIyCVYsGAB\nycnJfjudCyp8WVKmTBnuuusuEhMTNconIiKSx8yaNQvw3+lcUOHLskcffRSADz/80OEkIiIiklX7\n9u1jw4YNFCxYkLZt2zodxzEqfFnUrl07ChQowLp163RtXRERkTwiZaCmXbt2FC5c2OE0zrnkwmeM\nCc+JIN6uSJEitGnTBvhnaFhERES8l7WWmTNnAtC5c2eH0zgrOyN8VYwxT6VdYIwZY4xp7aFMXivt\ntK611uE0IiIiciHffvst+/btS90X359dcuGz1s4EahtjhqRZ9gLQ0xjTyZPhvM3dd99NqVKl+PHH\nH9m0aZPTcUREROQCUkb3OnXqRGBgoMNpnJWdKd2+wH4g0hjzZJqHPgTGeyiXVwoODqZTJ1ennT59\nusNpREREJDMJCQnMmTMH0HQuZG9KdzSw0Vq7GdhljHnUvbwocMxjybxU165dAZg9ezanT592OI2I\niIhkZOHChRw/fpwaNWpQvXp1p+M4LjuF73PgWgBr7edAkjGmJVAJaOPBbF6pWrVq1KlTh5MnT+qc\nfCIiIl5q6tSpAHTv3t3hJN4hO4XvMSDUGFMMwFr7EXAFUMFa+4snw3mrlB+elB8mERER8R579+5l\n9erVFCxYMHVXLH+XnYM2TltrR1pr/0iz7ANgpjFmsEfTeamHHnqIwoULs27dOn766Sen44iIiEga\nKQMyHTp08NtLqaXnsRMvW2s/Ad7z1Pq8WeHChXn44YcBmDZtmsNpREREJEViYiLvv/8+oOnctDx6\npQ1rbaxlxzmzAAAgAElEQVQn1+fNunXrBriO1k1ISHA4jYiIiAAsWbKE2NhYbr75ZurWret0HK+h\nS6tlU+3atQkPDycuLo65c+c6HUdERESAN998E4AePXpgjHE4jfdQ4csmYwz9+vUD4I033tCVN0RE\nRBy2Y8cOVq9eTaFChejSpYvTcbyKCt9lePjhhylRogSbN28mOjra6TgiIiJ+LWV0LyIiQgdrpKPC\ndxkKFCiQui/fG2+84XAaERER/3XixInUS6mlzMDJP1T4LlOvXr0ICAhg3rx5xMb6zTErIiIiXuW9\n997j9OnTNG3alMqVKzsdx+uo8F2mChUq0LJlSxITE3nnnXecjiMiIuJ3kpKS+N///gdA//79HU7j\nnYy/HmxgjLGe2vbVq1fTpEkTSpUqRUxMDAUKFPDIekVEROTiFi1aRNu2balQoQJ79+4lMDDQ6Uge\nZ4zBWpvtw441wucBjRo1Ijw8nKNHj6buPyAiIiK5Y/z48QA8/fTTPln2PEEjfB7y0Ucf0alTJypV\nqsSuXbsICFCXFhERyWlfffUVd955J8WLF+fAgQMULlzY6Ug5QiN8XuLBBx8kLCyM3bt3s2TJEqfj\niIiI+IWU0b0+ffr4bNnzBBU+DwkKCuLpp58GYMKECQ6nERER8X0//vgjn376KSEhITpY4yJU+Dyo\na9euFCtWjPXr1/PNN984HUdERMSn/fe//8VaS0REBFdeeaXTcbyaCp8HFSlShN69ewPwyiuvOJxG\nRETEdx0+fJgZM2ZgjOHZZ591Oo7XU+HzsKeeeooCBQqwdOlStm7d6nQcERERnzR+/Hj+/vtv2rVr\nR6VKlZyO4/VU+DysdOnS9OrVC4D//Oc/DqcRERHxPbGxsUyePBmAYcOGOZwmb1DhywEDBw4kJCSE\nhQsXsmPHDqfjiIiI+JT//ve/JCQk0Lp1a6pXr+50nDxBhS8HlC1blm7dugEwevRoh9OIiIj4jqNH\nj6ZeRm348OEOp8k7VPhyyPPPP09wcDBz587lp59+cjqOiIiIT3jttdc4ffo09913HzVr1nQ6Tp6h\nwpdDrrnmGrp06UJycjIvvfSS03FERETyvLi4ON544w1Ao3uXSoUvBw0dOpTg4GA++ugjvv/+e6fj\niIiI5Gnjxo0jPj6e5s2bU6dOHafj5CkqfDmofPny9OrVC2ut/hIRERG5DIcPH04d3dO5bi+dCl8O\nGzJkCAULFmTx4sVER0c7HUdERCRPevnll0lISKB9+/bady8bVPhyWJkyZRgwYADgmuIVERGRS7Nv\n3z6mTp1KQEAAL7/8stNx8iSvLXzGmAeMMTuMMUnGmPB0j71gjNljjNlljGmWZnm4MWa7MWa3MWZi\n7qfO2MCBAwkNDWXVqlWsXr3a6TgiIiJ5yqhRozh37hyPPfYYlStXdjpOnuS1hQ/4HmgLrEm70BhT\nGegAVAbuAd4yxhj3w28DXa21lYBKxpjmuZg3U8WLF2fgwIEADB48mOTkZIcTiYiI5A3ff/89s2bN\nIjg4mJEjRzodJ8/y2sJnrf3JWrsHMOkeag3Msdaes9buB/YAtY0xZYAi1tqN7ufNANrkWuCLGDBg\nAGXLliU6Opp58+Y5HUdERCRPGDhwINZaevXqRYUKFZyOk2d5beG7gHLAwTT3D7mXlQN+TbP8V/cy\nr1C4cOHU/Q4GDx5MQkKCw4lERES8W2RkJJGRkYSGhupsF5fJ0cJnjPncvc9dyu1798eWTubKKV26\ndKFq1arExMSkHlouIiIi5zt37hzPPvss4DrosVSpUg4nytuCnHxxa+3d2fiyQ8A1ae5f7V6W2fJM\njRo1KvXzRo0a0ahRo2zEybrAwEAmTJhAixYteOWVV3j88ccpWbJkjr6miIhIXjR9+nR27txJhQoV\n6N+/v9Nxcl1UVBRRUVEeW5+x1npsZTnBGLMaeM5au9l9/2ZgFlAH15Tt58AN1lprjPkGeBLYCCwD\nJllrV2SyXuvUtrdo0YLIyEj69+/PpEmTHMkgIiLirf766y+uv/56jhw5wty5c+nQoYPTkRxnjMFa\nm/64hizz2n34jDFtjDEHgduBpcaY5QDW2h+AecAPwGdAnzTNrS8wDdgN7Mms7Dlt/PjxBAQE8Pbb\nb7Nr1y6n44iIiHiVsWPHcuTIEerWrcuDDz7odByf4PUjfDnFyRE+gJ49ezJlyhSaNm3KypUr+efM\nMiIiIv5r3759VKlShbNnz7Jhwwbq1q3rdCSv4LMjfL7ulVdeoXjx4qxatYpPPvnE6TgiIiJeYcCA\nAZw9e5bHHntMZc+DNMLnoLfffps+ffoQFhbGrl27KFiwoKN5REREnLR06VJatmxJ0aJF+emnnyhT\npozTkbyGRvjysB49elC9enUOHDjA2LFjnY4jIiLimISEhNRrz7/44osqex6mET6HffXVV9x5552E\nhITwww8/ULFiRacjiYiI5LqXX36ZESNGULVqVbZu3UpQkKNnjvM6GuHL4+rVq0fnzp05e/Ys/fv3\nxxtKqIiISG7av38/o0ePBuDNN99U2csBKnxe4NVXXyU0NJTPPvuM+fPnOx1HREQk11hr6d27NwkJ\nCXTs2JGGDRs6HcknaUrXS7zzzjv06tWLMmXKsGvXLooVK+Z0JBERkRw3Z84cOnbsSLFixdi1a5f2\n3cuEpnR9RPfu3alXrx6///47gwcPdjqOiIhIjjtx4kTqgRrjx49X2ctBGuHzIjt37qRGjRokJiay\nfv166tWr53QkERGRHNO9e3emTp1KgwYNWL16NQEBGofKjEb4fEiVKlUYNGgQ4Dply99//+1wIhER\nkZyxZs0apk6dSr58+XjnnXdU9nKY3l0vM3ToUK6//np++OEHxowZ43QcERERj0tISKBnz54ADBky\nhJtuusnhRL5PU7peaM2aNTRq1IigoCA2btxI9erVnY4kIiLiMYMGDWL8+PHcdNNNfPfdd4SEhDgd\nyetpStcHNWzYkH79+nHu3Dm6dOlCYmKi05FEREQ8YsOGDUyYMIGAgADef/99lb1cosLnpcaMGcO1\n117Ltm3bUk9GKSIikpedPn2aLl26YK1l0KBB1KlTx+lIfkNTul4sKiqKxo0ba2pXRER8wjPPPMNr\nr71GlSpV2Lx5s0b3LoGmdH1Yo0aN/jW1q6N2RUQkr1q/fj0TJ04kMDBQU7kOUOHzcmPGjKFixYps\n27aNUaNGOR1HRETkksXHx6dO5b7wwgvUqlXL6Uh+R1O6ecD69etp2LAh1lqioqJo0KCB05FERESy\nrFu3bkybNo1bbrmFjRs3ki9fPqcj5Tma0vUDd955Jy+88ALWWjp37swff/zhdCQREZEsWbBgAdOm\nTSN//vzMnj1bZc8hKnx5xMiRI7nttts4cOAAffv2dTqOiIjIRR06dIju3bsDrmvlVqlSxeFE/ktT\nunnI7t27qVGjBqdPn2bWrFl06tTJ6UgiIiIZSk5OplmzZnzxxRfce++9LF26FGOyPSPp9zSl60cq\nVarE66+/DkDv3r3Zv3+/s4FEREQy8dprr/HFF19QqlQppk+frrLnMI3w5THWWtq3b88nn3xC7dq1\nWbdunfaHEBERr7Jx40bq1atHYmIiS5Ys4f7773c6Up6nET4/Y4xh6tSphIWFER0dzeDBg52OJCIi\nkuqPP/6gQ4cOJCYm0q9fP5U9L6ERvjzqm2++oX79+pw7d47FixfTqlUrpyOJiIifSzsLVbNmTb76\n6iudYNlDNMLnp26//XbGjh0LQJcuXYiJiXE4kYiI+LtJkybxySefULRoUebNm6ey50U0wpeHWWtp\n1aoVS5cu5fbbb2ft2rUEBwc7HUtERPxQdHQ0d955J4mJicyfP5/27ds7HcmnaITPjxljeP/997nm\nmmv45ptvGDhwoNORRETEDx0/fpyHHnqIxMREnnzySZU9L6QRPh/w9ddf07BhQxITE3V+PhERyVVJ\nSUncd999REZGUqtWLdavX6+p3BygET6hbt26qefn69atG9u3b3c4kYiI+IsRI0YQGRlJyZIlmT9/\nvsqel9IIn4+w1vLEE0/w/vvvU7FiRTZt2kTx4sWdjiUiIj7sk08+oV27dgQEBPD555/TpEkTpyP5\nLI3wCeD6QXjrrbcIDw/n559/5pFHHiEpKcnpWCIi4qN27drFY489BsCrr76qsuflVPh8SIECBVi4\ncCElSpRg+fLljBw50ulIIiLig/7880/atm1LfHw8Dz/8MM8884zTkeQiNKXrg1atWkXz5s1JTk7m\no48+4uGHH3Y6koiI+IikpCRat27NsmXLuOWWW9iwYQOFChVyOpbP05SunKdp06a89tprADz++ONE\nR0c7nEhERHzFoEGDWLZsGSVKlOCTTz5R2csjNMLno6y19OrViylTplCmTBk2btzI1Vdf7XQsERHJ\nw6ZOnUr37t0JDg5m1apVNGjQwOlIfuNyR/hU+HxYYmIizZo1IyoqivDwcNauXau/xEREJFtWr15N\ns2bNOHfuHNOmTeOJJ55wOpJf0ZSuZCo4OJj58+dz3XXXsWXLFiIiIkhOTnY6loiI5DF79uyhffv2\nnDt3jueee05lLw9S4fNxJUqUYOnSpYSGhrJgwQIGDx7sdCQREclD4uLiuP/++zlx4gQtW7Zk7Nix\nTkeSbFDh8wM33XQT8+fPJygoiPHjx/Pmm286HUlERPKAM2fO0KpVK3bv3s0tt9zCrFmzCAwMdDqW\nZIMKn59o2rQpU6dOBeDJJ59k0aJFDicSERFvlpSUxKOPPsqGDRu4+uqr+eyzzyhSpIjTsSSbVPj8\nSEREBC+99BLWWjp27MjXX3/tdCQREfFC1lqefvppFi5cSGhoKCtWrKBcuXJOx5LLoKN0/Yy1lh49\nejB16lRKlCjB119/zQ033OB0LBER8SITJkxg4MCB5MuXj8jISBo1auR0JL+n07Jkk78WPoBz587R\nqlUrli9fzrXXXsv69eu56qqrnI4lIiJeYPbs2TzyyCMAulqTF9FpWeSSBQUFMW/ePGrVqsUvv/xC\n8+bNOX78uNOxRETEYcuWLSMiIgKA8ePHq+z5EBU+P1W4cGGWL1/OTTfdxI4dO7jvvvs4deqU07FE\nRMQh69at44EHHuDcuXMMHDiQZ5991ulI4kGa0vVzv/76K/Xq1ePAgQM0a9aMTz/9lJCQEKdjiYhI\nLtqyZQuNGzfm5MmTdO/enXfeeQdjsj17KDlAU7pyWa6++mo+//xzSpUqxcqVK+ncuTNJSUlOxxIR\nkVzy008/0aJFC06ePEmHDh14++23VfZ8kAqfUKlSJSIjIylatCgff/wx3bt31yXYRET8QExMDHff\nfTdHjx6lRYsWzJw5UydW9lEqfAJAjRo1WLp0KQUKFOC9996jV69eKn0iIj7swIEDNG7cmIMHD1Kv\nXj0WLFhAvnz5nI4lOUSFT1LVr1+fpUuXkj9/ft5991369euH9nMUEfE9v/76K40bN+aXX36hdu3a\nLFu2jIIFCzodS3KQCp/8S5MmTVIP3Hj77bcZMGCASp+IiA85dOgQjRs35ueff6ZWrVpERkYSGhrq\ndCzJYSp8cp67776bRYsWkS9fPt544w2eeeYZlT4RER9w+PBhmjRpwt69ewkPD2flypUUK1bM6ViS\nC1T4JEMtWrRg4cKFBAcHM3HiRAYNGqTSJyKSh/322280adKE3bt3U716dT7//HOKFy/udCzJJSp8\nkqn77ruP+fPnExQUxIQJE3juuedU+kRE8qDffvuNu+66i59++olbbrmFVatWccUVVzgdS3KRCp9c\nUKtWrZg3bx7BwcH83//9H3369NHRuyIieUhMTAwNGjRg165dVKtWjS+++IISJUo4HUtyma60IVny\n2Wef0b59exISEujcuTPTp08nKCjI6VgiInIBu3fvpmnTphw8eJDw8HAiIyMpWbKk07EkGy73Shsq\nfJJlq1evpmXLlpw6dYr27dsze/ZsnbNJRMRLbd++nWbNmhEbG0u9evVYtmyZjsbNw3RpNck1jRs3\n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\nvMsjiwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_flight_path(64,16,-numpy.pi/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is so nice. We have reproduced the trajectories that Lanchester found more than a hundred years ago, painstakingly drawing them by hand with a contraption called a \"trammel.\" It must have taken him days!\n", + "\n", + "Here is how the different phugoid curves are drawn in von Kármán's book, _Aerodynamics_ (1957). He never says _how_ he drew them, but we're guessing by hand, also. We did pretty good!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/vonKarman-phugoids.png)\n", + "\n", + "#### Figure 4. Phugoid curves in von Kármán (1957)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next notebook of this series, we'll look at the differential equation that arises when you consider small perturbations on the horizontal phugoid, and we'll learn to numerically integrate that to get the flight paths." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Lanchester, F. W. _Aerodonetics_, D. van Nostrand Company: New York, 1909. On the public domain. [Get it from Google Books](http://books.google.com/books?id=6hxDAAAAIAAJ&pg=PP1#v=onepage&q&f=false).\n", + "\n", + "2. Milne-Thompson, L. M. _Theoretical Aerodynamics_, Dover 2012 reprint of the revised 1966 edition. [Read on Google Books](http://books.google.com/books?id=EMfCAgAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see section 18.5)\n", + "\n", + "3. Sinha, N. K. and Ananthkrishnan, N. _Elementary Flight Dynamics with an introduction to Bifurcation and Continuation Methods_, CRC Press, 2013. [Read on Google Books](http://books.google.com/books?id=yXL6AQAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false) (see chapter 5)\n", + "\n", + "4. von Kármán, T. _Aerodynamics_, Dover 2004 reprint of the 1957 2nd edition. (see pages 149–151)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "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 = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/01_02_Phugoid_Oscillation.ipynb b/lecture_22/01_phugoid/01_02_Phugoid_Oscillation.ipynb new file mode 100644 index 0000000..eb6283b --- /dev/null +++ b/lecture_22/01_phugoid/01_02_Phugoid_Oscillation.ipynb @@ -0,0 +1,949 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth. Partly based on David Ketcheson's pendulum lesson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Oscillation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome back! This is the second IPython Notebook of the series _\"The phugoid model of glider flight\"_, the first learning module of the course [**\"Practical Numerical Methods with Python.\"**](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about)\n", + "\n", + "In the first notebook, _\"Phugoid Motion\"_, we described the physics of an aircraft's oscillatory trajectory, seen as an exchange of kinetic and potential energy. This analysis goes back to Frederick Lanchester, who published his book _\"Aerodonetics\"_ on aircraft stability in 1909. We concluded that first exposure to our problem of interest by plotting the flight paths predicted by Lanchester's analysis, known as _phugoids_.\n", + "\n", + "Here, we will look at the situation when an aircraft is initially moving on the straight-line phugoid (obtained with the parameters $C=2/3$, $\\cos\\theta=1$, and $z=z_t$ in the previous analysis), and experiences a small upset, a wind gust that slightly perturbs its path. It will then enter into a gentle oscillation around the previous straight-line path: a _phugoid oscillation_.\n", + "\n", + "If the aircraft experiences an upward acceleration of $-d^2z/dt^2$, and we assume that the perturbation is small, then $\\cos\\theta=1$ is a good approximation and Newton's second law in the vertical direction is:\n", + "\n", + "$$\\begin{equation}\n", + "L - W = - \\frac{W}{g}\\frac{d^2 z}{dt^2}\n", + "\\end{equation}$$\n", + "\n", + "In the previous notebook, we saw that the following relation holds for the ratio of lift to weight, in terms of the trim velocity $v_t$:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{L}{W}=\\frac{v^2}{v_t^2}\n", + "\\end{equation}$$\n", + "\n", + "This will be useful: we can divide Equation (1) by the weight and use Equation (2) to replace $L/W$. Another useful relation from the previous notebook expressed the conservation of energy (per unit mass) as $v^2 = 2 gz$. With this, Equation (1) is rearranged as:\n", + "\n", + "$$\\begin{equation}\n", + "\\frac{d^2z}{dt^2} + \\frac{gz}{z_t} = g\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Look at Equation (3) for a moment. Does it ring a bell? Do you recognize it?\n", + "\n", + "If you remember from your physics courses the equation for _simple harmonic motion_, you should see the similarity! \n", + "\n", + "Take the case of a simple spring. Hooke's law is $F=-kx$, where $F$ is a restoring force, $x$ the displacement from a position of equilibrium and $k$ the spring constant. This results in the following ordinary differential equation for the displacement:\n", + "\n", + "$$\\begin{equation}\n", + " \\frac{d^2 x}{dt^2}= -\\frac{k}{m}x\n", + "\\end{equation}$$\n", + "\n", + "which has the solution $x(t) = A \\cos(\\omega t- \\phi)$, representing simple harmonic motion with an angular frequency $\\omega=\\sqrt{k/m}=2\\pi f$ and phase angle $\\phi$.\n", + "\n", + "Now look back at Equation (3): it has nearly the same form and it represents simple harmonic motion with angular frequency $\\omega=\\sqrt{g/z_t}$ around mean height $z_t$. \n", + "\n", + "Think about this for a moment ... we can immediately say what the period of the oscillation is: exactly $2 \\pi \\sqrt{z_t/g}$ — or, in terms of the trim velocity, $\\pi \\sqrt{2} v_t/g$.\n", + "\n", + "_This is a remarkable result!_ Think about it: we know nothing about the aircraft, or the flight altitude, yet we can obtain the period of the phugoid oscillation simply as a function of the trim velocity. For example, if trim velocity is 200 knots, we get a phugoid period of about 47 seconds—over that time, you really would not notice anything if you were flying in that aircraft.\n", + "\n", + "Next, we want to be able to compute the trajectory of the aircraft for a given initial perturbance. We will do this by numerically integrating the equation of motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare to integrate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to integrate the differential equation and plot the trajectory of the aircraft. Are you ready?\n", + "\n", + "The equation for the phugoid oscillation is a second-order, ordinary differential equation (ODE). Let's represent the time derivative with a prime, and write it like this:\n", + "\n", + "$$\\begin{equation}\n", + "z(t)'' + \\frac{g \\,z(t)}{z_t}=g\n", + "\\end{equation}$$\n", + "\n", + "There's a convenient trick when we work with ODEs: we can turn this 2nd-order equation into a system of two 1st-order equations. Like this:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z'(t) &=& b(t)\\\\\n", + "b'(t) &=& g\\left(1-\\frac{z(t)}{z_t}\\right)\n", + "\\end{eqnarray}$$\n", + "\n", + "Are you following? Make sure you are following the derivations, even if it means writing the equations down in your own notes! (Yes, the old-fashioned paper way.)\n", + "\n", + "Another way to look at a system of two 1st-order ODEs is by using vectors. You can make a vector with your two independent variables, \n", + "\n", + "$$\\begin{equation}\n", + "\\vec{u} = \\begin{pmatrix} z \\\\ b \\end{pmatrix}\n", + "\\end{equation}$$\n", + "\n", + "and write the differential system as a single vector equation:\n", + "\n", + "\\begin{equation}\n", + "\\vec{u}'(t) = \\begin{pmatrix} b\\\\ g-g\\frac{z(t)}{z_t} \\end{pmatrix}\n", + "\\end{equation}\n", + "\n", + "If you call the right-hand-side $\\vec{f}(\\vec{u})$, then the equation is very short: $\\vec{u}'(t) = \\vec{f}(\\vec{u})$—but let's drop those arrows to denote vectors from now on, as they are a bit cumbersome: just remember that $u$ and $f$ are vectors in the phugoid equation of motion.\n", + "\n", + "Next, we'll prepare to solve this problem numerically." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initial value problems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's step back for a moment. Suppose we have a first-order ODE $u'=f(u)$. You know that if we were to integrate this, there would be an arbitrary constant of integration. To find its value, we do need to know one point on the curve $(t, u)$. When the derivative in the ODE is with respect to time, we call that point the _initial value_ and write something like this:\n", + "\n", + "$$u(t=0)=u_0$$\n", + "\n", + "In the case of a second-order ODE, we already saw how to write it as a system of first-order ODEs, and we would need an initial value for each equation: two conditions are needed to determine our constants of integration. The same applies for higher-order ODEs: if it is of order $n$, we can write it as $n$ first-order equations, and we need $n$ known values. If we have that data, we call the problem an _initial value problem_.\n", + "\n", + "Remember the definition of a derivative? The derivative represents the slope of the tangent at a point of the curve $u=u(t)$, and the definition of the derivative $u'$ for a function is:\n", + "\n", + "$$u'(t) = \\lim_{\\Delta t\\rightarrow 0} \\frac{u(t+\\Delta t)-u(t)}{\\Delta t}$$\n", + "\n", + "If the step $\\Delta t$ is already very small, we can _approximate_ the derivative by dropping the limit. We can write:\n", + "\n", + "$$\\begin{equation}\n", + "u(t+\\Delta t) \\approx u(t) + u'(t) \\Delta t\n", + "\\end{equation}$$\n", + "\n", + "With this equation, and because we know $u'(t)=f(u)$, if we have an initial value, we can step by $\\Delta t$ and find the value of $u(t+\\Delta t)$, then we can take this value, and find $u(t+2\\Delta t)$, and so on: we say that we _step in time_, numerically finding the solution $u(t)$ for a range of values: $t_1, t_2, t_3 \\cdots$, each separated by $\\Delta t$. The numerical solution of the ODE is simply the table of values $t_i, u_i$ that results from this process." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discretization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to execute the process described above and find the numerical solution of the ODE, we start by choosing the values $t_1,t_2,t_3 \\cdots t_n$—we call these values our *grid* in time. The first point of the grid is given by our _initial value_, and the small difference between two consecutive times is called the _time step_, denoted by $\\Delta t$. The solution value at time $t_n$ is denoted by $u_n$.\n", + "\n", + "Let's build a time grid for our problem. We first choose a final time $T$ and the time step $\\Delta t$. In code, we'll use readily identifiable variable names: `T` and `dt`, respectively. With those values set, we can calculate the number of time steps that will be needed to reach the final time; we call that variable `N`. \n", + "\n", + "Let's write some code. The first thing we do in Python is load our favorite libraries: NumPy for array operations, and the Pyplot module in Matplotlib, to later on be able to plot the numerical solution. The line `%matplotlib inline` tells IPython Notebook to show the plots inline." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy \n", + "from matplotlib import pyplot\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, initialize `T` and `dt`, calculate `N` and build a NumPy array with all the values of time that make up the grid." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100.0\n", + "dt = 0.02\n", + "N = int(T/dt)+1\n", + "t = numpy.linspace(0.0, T, N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have our grid! Now it's time to apply the numerical time stepping represented by Equation (10)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Write the code above using the NumPy function `arange()` instead of `linspace()`. If you need to, read the documentation for these functions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enter a question mark followed by any function, e.g., `?numpy.linspace`, into a code cell and execute it, to get a help pane on the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The approximate solution at time $t_n$ is $u_n$, and the numerical solution of the differential equation consists of computing a sequence of approximate solutions by the following formula, based on Equation (10):\n", + "\n", + "$$u_{n+1} = u_n + \\Delta t \\,f(u_n).$$\n", + "\n", + "This formula is called **Euler's method**.\n", + "\n", + "For the equations of the phugoid oscillation, Euler's method gives the following algorithm that we need to implement in code:\n", + "\n", + "\\begin{align}\n", + "z_{n+1} & = z_n + \\Delta t \\, b_n \\\\\n", + "b_{n+1} & = b_n + \\Delta t \\left(g - \\frac{g}{z_t} \\, z_n \\right).\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To apply the numerical solution method, we need to set things up in code: define the parameter values needed in the model, initialize a NumPy array to hold the discrete solution values, and initialize another array for the elevation values." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# initial conditions\n", + "z0 = 100. #altitude\n", + "b0 = 10. #upward velocity resulting from gust\n", + "zt = 100.\n", + "g = 9.81\n", + "\n", + "u = numpy.array([z0, b0])\n", + "\n", + "# initialize an array to hold the changing elevation values\n", + "z = numpy.zeros(N)\n", + "z[0] = z0 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should pay attention to a couple of things: (1) See how there is a dot after the numbers used to define our parameters? We just want to be explicit (as a good habit) that these variables are real numbers, called \"floats.\" (2) We both _created_ and _initialized_ with zeros everywhere the solution vector `z`. Look up the documentation for the handy NumPy function `zeros()`, if you need to. (3) In the last line above, we assign the _initial value_ to the first element of the solution vector: `z[0]`.\n", + "\n", + "Now we can step in time using Euler's method. Notice how we are time stepping the two independent variables at once in the time iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-loop using Euler's method\n", + "for n in range(1,N):\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make sure you understand what this code is doing. This is a basic pattern in numerical methods: iterations in a time variable that apply a numerical scheme at each step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the code is correct, we have stored in the array `z` the position of the glider at each time. Let's use Matplotlib to examine the flight path of the aircraft.\n", + "\n", + "You should explore the [Matplotlib tutorial](http://matplotlib.org/users/pyplot_tutorial.html) (if you need to) and familiarize yourself with the command-style functions that control the size, labels, line style, and so on. Creating good plots is a useful skill: it is about communicating your results effectively. \n", + "\n", + "Here, we set the figure size, the limits of the vertical axis, the format of tick-marks, and axis labels. The final line actually produces the plot, with our chosen line style (continuous black line)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAncAAAEZCAYAAAD13APVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYVUf+P/D3iNhjB0TFgg1FBWOvoIJUr4qoaCyRrEnW\nElP8JvmlbEjZJJtkN+4mm0SNRgQ0FgSUqiAoWAIqNmxRsYAiigUVpN35/QHXJYTOuXfOOffzeh4e\n8N5zZ97kRvkwM2eGcc5BCCGEEELUoZHoAIQQQgghRDpU3BFCCCGEqAgVd4QQQgghKkLFHSGEEEKI\nilBxRwghhBCiIlTcEUIIIYSoCBV3hBBCCCEqYrDijjE2gTG2izGWwRjTMsYWVXJNX8bYTsbYfcbY\nE8bYMcaYTbnnmzLGvmOM3WGMPWaMhTHGuhjqeyCEEEIIkTtDjty1BHAKwEoA+QD+sHsyY6wngIMA\nLgOYCMAWwPsAHpe7bDUALwA+AMYDaA0gnDFGI5CEEEIIIQCYiBMqGGOPACzjnG8q99hmACWc8wVV\nvKYNgGwAL3LOt5Q91hXANQBunPM9+k9OCCGEECJvshjxKht58wRwjjEWzRjLZowlM8Zml7tsKABT\nAM+KOM55BoBzAMYYNDAhhBBCiEzJorgDYA6gFYD3AEQDcAKwBUAQY8y97JpOKB3Zy6nw2tsALAwV\nlBBCCCFEzhqLDlBGV2SGcs5Xl319ijE2DMByAJFiYhFCCCGEKItciru7AIoBnK3w+HkAc8q+zgJg\nwhjrUGH0rhOAAxUbZIwZfjEhIYQQQkg9cc6ZFO3IorjjnBcyxlIA2FR4qi+Aq2VfHwNQBGAKSqds\ndTdU2AA4VEW7+ohLDMDPzw9+fn6iY5B6oPdO2ej9UzZ6/5SLMUnqOgAGLO4YYy0B9Cn7YyMA3Rlj\n9gByOOc3AHwFYBtjLBFAPEq3Q5kDYBoAcM4fMsbWA/iKMZYN4B6AfwE4CSDWUN8HIYQQQoicGfKG\niuEAjpd9NAPwcdnXHwMA5zwMwMsAVqF0P7xlABZwzqPKtfE6gBAAWwEkAcgFMJXTEB0hhBBCCAAD\njtxxzhNQQzHJOfcH4F/N84UAXiv7ICrm6OgoOgKpJ3rvlI3eP2Wj948AgjYxNgTGGA3oEUIIIUQR\nGGOS3VAhl33uCCGEEEKIBKi4I4QQQghRESruCCGEEEJUhIo7QgghhBAVoeKOEEIIIURFqLgjhBBC\nCFERKu4IIYQQQlSEijtCCCGEEBWh4o4QQgghREWouCOEEEIIUREq7gghhBBCVISKO0IIIYQQFaHi\njhBCCCFERai4I4QQQghRESruCCGEEEJUhIo7QgghhBAVoeKOEEIIIURFqLgjhBBCCFERKu4IIYQQ\nQlSEijtCCCGEEBWh4o4QQgghREWouCOEEEIIUREq7gghhBBCVISKO0IIIYQQFaHijhBCCCFERQxW\n3DHGJjDGdjHGMhhjWsbYomquXVN2zVsVHm/KGPuOMXaHMfaYMRbGGOui//SEEEIIIcpgyJG7lgBO\nAVgJIB8Ar+wixpg3gOEAblZyzWoAXgB8AIwH0BpAOGOMRiAJIYQQQgA0NlRHnPMoAFEAwBjbWNk1\njLHuKC3gJgOIrvBcGwC+AF7knMeVPbYAwDUATgD26Cs7IYQQQohSyGbEizHWGMAWAJ9yzi9UcslQ\nAKYoV8RxzjMAnAMwxiAhCSGEEEJkTjbFHYCPAWRzztdU8XwnACWc85wKj98GYKHXZIQQQgghCmGw\nadnqMMYcASwCYF/xKcOnIYQQQghRLlkUdwAcAFgCuMXYs3rOBMA/GGMrOefdAGQBMGGMdagwetcJ\nwIHKGvXz83v2taOjIxwdHaVPTgghhBBSRwkJCUhISNBL24zzSm9a1SvG2CMAyzjnm8r+bAbArPwl\nAGIAbAawjnP+e9kNFdkovaFiS9nruqL0hgpXzvneCn1wEd8bIYQQQkhdMcbAOZdkxtJgI3eMsZYA\n+pT9sRGA7owxewA5nPMbAO5UuL4IQBbn/HcA4Jw/ZIytB/AVYywbwD0A/wJwEkCsgb4NQgghhBBZ\nM+QNFcMBHC/7aIbSGyiOl32urdcBhADYCiAJQC6AqTRERwghhBBSSsi0rCHQtCwhhBBClELKaVk5\nbYVCCCGEEEIaiIo7QgghhBAVoeKOEEIIIURFqLgjhBBCCFERKu4IIYQQUidJSUnw9fWFvb09Bg4c\niLlz5yIqKgp0I6M80N2yhBBCDC4/Px9hYWFISUlBYWEhBgwYgBkzZqBTp06io5FqPHjwAK+88gpS\nUlKwYsUKjB8/HqampkhOTsZ3332Hjh07wt/fH1ZWVqKjKg7dLUsIIQAyMzMRFhaGrVu3IjU1FSUl\nJaIjkRpwzrFx40b06NED/v7+MDMzQ69evXD48GH0798f//d//4f8/HzRMUklbty4gTFjxsDMzAxp\naWl44403MGzYMNjZ2WHJkiVITU3F5MmTMWbMGJw5c0Z0XKNGI3fE6GVlZSEvLw+dO3dGs2bNRMch\ntXD+/Hm89dZb+O233zBy5Ei0aNECp0+fRnFxMf72t79hwYIFKHdONZGJ4uLiZ0XAxo0bYW9v/4fn\ns7OzsWzZMqSnpyMiIgIWFhaCkpKKcnJyMG7cOCxevBhvv/12tddu3rwZq1atwsGDB9GzZ08DJVQ+\nGrkjpIHy8vLw97//HT169ICtrS0mTZqEDh06QKPR4MiRI6LjkWps3LgR48ePh4uLCzIyMhAREYHt\n27fj/Pnz2LhxI/71r3/B29sbeXl5oqOSckpKSuDj44Pbt2/j4MGDfyrsAMDc3Bzbtm2Dp6cnHBwc\nkJOTIyApqaikpATe3t7w9PSssbADgHnz5uHdd9+Fp6cnHj9+bICEpCIq7uqJc46YmBjMnDkTlpaW\naNWqFQYOHIi3334b169fFx2PVOP48eMYNGgQTp8+jdDQUNy9exdXr15FVlYWPDw84OXlhVWrVtEU\nnwz985//xMcff4zExES89tprfxppHTduHJKTk9GiRQs4OzvjyZMngpKSit5++23k5OQgNDQULVu2\nrPI6xhj8/Pwwbdo0aDQaFBQUGDAlqcznn38OAPjyyy9r/ZrXXnsNI0aMwJtvvqmvWKQ6nHNVfpR+\na/qRlZXFp06dym1sbPjPP//Mr169yh8+fMiPHj3K33rrLd6hQwe+evVqrtVq9ZaB1E9MTAzv2LEj\n3759e5XX5OTk8MmTJ/Np06bxgoICA6Yj1QkKCuLdunXjGRkZNV6r1Wr5iy++yD08PHhRUZEB0pHq\nhISEcGtra56Tk1Pr15SUlPBp06bxN998U4/JSE2OHTvGzc3Na/X3rqKHDx/yHj168PDwcD0kU5+y\nukWaGkiqhuT2oa/i7sKFC9za2pq/++67Vf7gv3TpEre3t+e+vr68uLhYLzlI3SUnJ3MzMzOemJhY\n47UFBQV82rRpfN68ebykpMQA6Uh1UlNTeceOHfmpU6dq/ZrCwkI+efJk/sEHH+gxGanJrVu3uIWF\nBT948GCdX3v37l3etWtXHhMTo4dkpCYlJSV85MiRfP369fVuIy4ujnfv3p3n5eVJmEydqLgTVNxd\nv36dW1lZ8XXr1tV47ePHj/nEiRP5kiVLaARPBjIzM7mlpSUPCwur9Wvy8vL4mDFj+KeffqrHZKQm\neXl5fMCAATwgIKDOr7116xbv1KkTT0hI0EMyUhve3t78vffeq/frIyMjubW1NRUHAqxdu5aPGTOm\nwb/gent7848//liiVOpFxZ2A4u7Ro0d84MCB/Ouvv671a3Jzc/mwYcP4l19+KWkWUjclJSXcycmJ\n+/n51fm1GRkZ3MLColajfUQ/3nrrLT5nzpx6/5IUHh7Oe/bsScWBAPv27eM9evRo8H/7mTNn8g8/\n/FCiVKQ2njx5wi0tLfnRo0cb3NbVq1d5hw4d6jW1a0ykLO5oK5Raeumll6DVarFhw4Y6bbFw48YN\nDB8+HNu2bcOECRMky0Nqb/Xq1dixYwcSEhLQuHHjOr8+PDwcK1asQFpaGlq0aKGHhKQqZ8+ehaOj\nI9LS0mBmZlbvdmbNmoUBAwbg448/ljAdqU5xcTGGDBkCPz8/zJw5s0FtZWRkwM7ODqdOnUKXLl0k\nSkiq88033+DIkSPYsWOHJO2tWrUKhYWF+M9//iNJe2ok5VYoVNzVwvbt2/H+++/j+PHjaNWqVZ1f\nHxUVhVdffRVpaWn1ej2pv5s3b2Lw4ME4fPgw+vTpU+925s6dix49euCLL76QMB2pDucczs7O0Gg0\neO211xrUVkZGBuzt7ZGcnAxra2uJEpLqbNiwAf7+/khISJBkz8F33nkHDx8+xE8//SRBOlKdR48e\noXfv3ti3bx9sbW0lafP27dvo378/Tp8+TQV6Fai4qwWpirsHDx5gwIABCAkJwciRI+vdzqJFi9Cu\nXTusXr26wZlI7c2bNw89e/bE3//+9wa1c+vWLQwePBj79+/HgAEDJEpHqrN79268++67OHHiBExN\nTRvc3ieffILff/8dAQEBEqQj1SkqKoKNjQ1++eUXyWYscnJy0K9fPxw5cgS9e/eWpE1SuX/84x84\nefIkNm/eLGm7q1atQkFBAb777jtJ21ULKu5qQaribsWKFSgsLMSaNWsa1E5OTg5sbW0RERGBoUOH\nNjgXqVlSUhLmzZuHc+fOVbuvVm3985//RGJiIkJDQyVIR6rDOcfQoUPxt7/9DdOnT5ekzdzcXPTp\n00fS0QhSuY0bN8Lf3x/x8fGStvvJJ5/gypUr2Lhxo6Ttkv8pLCxEz549ERkZCTs7O0nbzsrKQv/+\n/XHp0iV06NBB0rbVQMriTviND/r6gAQ3VJw8eZKbm5vzu3fvNrgtzjlfs2YNd3R0pLtnDUCr1XIH\nBwe+YcMGydrMy8vjXbt25YcOHZKsTVK5kJAQbm9vL/nfla+//prPmDFD0jbJHxUXF/PevXvz+Ph4\nydvOycnh7dq1o4X5ehQQEMAnT56st/YXLVrEv/jiC721r2Sgu2UNU9xNnTqVr169usHt6BQVFXEb\nGxseEREhWZukcrGxsbxPnz6Sb2D7888/cwcHByrQ9Uir1XJ7e3seGhoqedt5eXncwsKCp6WlSd42\nKRUcHMxHjx6tt/Zfe+01/n//9396a9+YabVaPmTIEL3+jEpNTeVdunThhYWFeutDqaQs7uj4sSr8\n9ttvSE1NxSuvvCJZm40bN8aXX36Jd955B1qtVrJ2yR9xzvHhhx/io48+qtfdsdVZtGgRMjIycPDg\nQUnbJf8TExMDrVYLjUYjedvNmzfHsmXL8M9//lPytkmpf//731i5cqXe2n/jjTewfv165Obm6q0P\nY3XgwAHk5eXB1dVVb33Y29ujT58+kt2FSypHxV0VPvzwQ3z44Yd/OruyoTQaDZo1a4awsDBJ2yX/\nc+DAAeTk5MDHx0fyths3boxVq1bhH//4h+Rtk1KrV6/GG2+8IckdlpVZunQpQkJCcOvWLb20b8xO\nnDiBy5cvw8vLS2999OjRA05OTvjll1/01oexWrt2LZYuXYpGjfRbGqxYsYLuetYzuqGiEocOHcL8\n+fNx4cIFSe7SqygkJASff/45kpOT9fYDzJhNmzYNbm5uePXVV/XSfn5+PqytrbF3714MHDhQL30Y\nq7Nnz2LSpEm4evWq5L9Ylbd8+XK0bt362YHoRBq+vr7o3bs33nvvPb32k5CQgKVLlyItLY3+DZXI\nvXv3YG1tjStXrqB9+/Z67auwsBDdunXDgQMH0LdvX732pSRS3lBBI3eV+Oabb/Dmm2/qpbADSouP\nJ0+eIDY2Vi/tG7OLFy/i8OHDWLhwod76aN68OVasWIFvvvlGb30Yq//85z949dVX9VrYAcDKlSvx\n888/o6CgQK/9GJOcnByEhITg5Zdf1ntfDg4O0Gq1SEpK0ntfxiIwMBAeHh56L+wAoEmTJliwYAE2\nbNig976MFY3cVXDp0iWMHj0aV69elWT7jKps2rQJ/v7+iIuL01sfxmjp0qXo0KEDPv30U732c+/e\nPfTq1Qu///47OnbsqNe+jIXuv+m5c+fQqVMnvffn5OSEl156CXPnztV7X8bgu+++w5EjRxAUFGSQ\n/lavXo2UlBSD9admnHMMHjwY3333HRwdHQ3S5/nz5zFx4kRcv35dbwMpSkMjd3q0evVqvPzyy3ot\n7ADAx8cHZ8+exdmzZ/XajzG5f/8+tmzZgmXLlum9r/bt22P69On0m6eEgoKC4OrqapDCDgBeffXV\nBu9fSf5nw4YN8PX1NVh/CxcuREREBO7evWuwPtUqOTkZT58+hYODg8H6tLGxQa9evRAZGWmwPo0J\nFXfl3Lt3D0FBQVi+fLne+2rSpAlefvllfP/993rvy1gEBgYatDhYunQpfvrpJ5SUlBikPzXjnGP9\n+vX4y1/+YrA+p02bhgsXLuDcuXMG61OtUlNTcf/+fUycONFgfbZv3x5Tp06lkTsJ+Pv7Y/HixQZf\nv+jr60s3xuiJwYo7xtgExtguxlgGY0zLGFtU7rnGjLF/MMZOMsYeM8ZuMsaCGGNWFdpoyhj7jjF2\np+y6MMaYZIfU+fv7w8PDA5aWllI1Wa1XXnkFW7ZswcOHDw3Sn5pxzrFu3TosWbLEYH0OHz4c7du3\nR0xMjMH6VKvjx48jNzfXoMWBqakpfH19sXbtWoP1qVYbNmzA4sWL9X6XZUULFy6k4+QaqKioCNu3\nbxeyPGHmzJmIj4/HgwcPDN632hnyb2JLAKcArASQD4BXeG4IgM/KPk8DYAUgmjFmUu661QC8APgA\nGA+gNYBwxliDvw/OOdauXSvpvnY16dy5M1xcXODv72+wPtUqOTkZeXl5BlsvorN06VL8+OOPBu1T\njX7++Wf4+voavDh46aWXEBQUhKKiIoP2qyZPnz7Fli1b8OKLLxq870mTJuHmzZs0+toAe/fuRZ8+\nfdCzZ0+D992mTRs4OTlh586dBu9b7Qz2LynnPIpz/gHnPBiAtsJzDznnUzjn2znnv3POUwC8AqA/\nABsAYIy1AeALYBXnPI5zngpgAYDBAJwami8pKQmMMYwbN66hTdXJsmXL8OOPP0KtN7YYytq1a7Fk\nyRKDFwezZ89GYmIisrKyDNqvmuTl5WHr1q1CigNra2v07dsX0dHRBu9bLXbv3g07Ozt0797d4H2b\nmJhg3rx5CAwMNHjfarF582bMmzdPWP9z587F5s2bhfWvVnJec9em7PP9ss9DAZgC2KO7gHOeAeAc\ngDEN7WzNmjV4+eWXDb7mYNy4cSgpKcFvv/1m0H7VJDc3Fzt37hRSHLRq1QrTp0+nf5waICQkBKNG\njULXrl2F9L9gwQKa2muAX3/9VWhxsGDBAgQGBtKpP/WQl5eH8PBwzJo1S1gGDw8PHDt2jDYVl5gs\nizvGWBMA/wSwi3N+s+zhTgBKOOc5FS6/DcCiIf3l5OQgPDwcCxYsaEgz9cIYw+LFi2lRaQNs374d\njo6OsLBo0P8G9bZo0SKaWm+AzZs3Y/78+cL6nz17NmJiYmjdTz3k5uYiNjYWM2bMEJbBzs4Obdq0\nQWJiorAMSrV7926MGjVK2L+dQOm+oRqNBtu2bROWQY2kPXhTAoyxxgACUbqezrMhbfn5+T372tHR\nscr1WEFBQfDw8ECHDh0a0l29LVy4EIMGDcK3336LFi1aCMmgZEFBQQbZ/qQqDg4OePjwIU6cOAF7\ne3thOZTo7t27OHjwILZu3SosQ7t27eDk5IQdO3YY9G5dNdi1axcmTJhgkI1vqzN//nxs3rzZoFt5\nqMHmzZtlsc/jvHnz8NFHH+n1TGI5SkhIQEJCgn4a55wb/APAIwALK3m8MYDtAM4CMK/w3CSUrtXr\nUOHxNAAfVdIWr61hw4bxPXv21Pp6fXBzc+MBAQFCMyhRRkYGb9euHc/Pzxea44MPPuCvv/660AxK\n9OOPP/I5c+aIjsFDQkL4+PHjRcdQHA8PDx4YGCg6Br9y5Qo3MzPjRUVFoqMoxsOHD/lzzz3HHzx4\nIDoKLyws5O3bt+c3btwQHUWosrpFkjpLNtOyjDFTAFsBDAQwkXOeXeGSYwCKAEwp95quKL3h4lB9\n+z1//jwyMzMxadKk+jYhCZqarZ8tW7bAy8tL78dV1WTRokXYvHkziouLheZQmi1btshi5MDd3R1p\naWnIyMgQHUUx7t27h8TEREybNk10FPTs2fPZWaWkdiIjIzF+/Hi0adOm5ov1zNTUFJ6enggNDRUd\nRTUMuc9dS8aYPWPMvqzf7mV/tirb7mQ7gJEA5pVezjqVfTQDSu+oBbAewFeMscmMsSEAAgCcBFDv\nQ1oDAwMxd+5cmJiY1HyxHmk0Gpw4cYJ+uNRRYGAgXnjhBdEx0Lt3b/To0QPx8fGioyjGjRs3cObM\nGbi6uoqOgiZNmmDq1KkIDg4WHUUxdu7cCRcXF7Rq1Up0FACAt7c3duzYITqGYoSEhAhdK1mRl5cX\nbYkiIUOO3A0HcLzsoxmAj8u+/hhAVwAaAJYoHaG7We5jdrk2XgcQgtIRviQAuQCmlg1n1plWq0VQ\nUJCQGykqatq0KWbMmCF07ZHSpKWl4e7du7JZZzN79mx6/+pg69atmDFjBpo2bSo6CgBg1qxZ2L59\nu+gYivHrr7/Cx8dHdIxnvL29sXPnTjoxphaePn2KmJgYaDQa0VGemTJlCo4dO0bHyUnEkPvcJXDO\nG5V9mJT72pdzfq2Sx3Ufm8q1Ucg5f41z3pFz3pJzPo1znlnfTIcOHULLli1hZ2cnzTfZQD4+Pvj1\n119Fx1CMoKAgzJs3z+B721Vl9uzZCA0NRWFhoegoiiCXKVkdZ2dnnD17FpmZ9f4nxWjk5OQgJSVF\nFqOuOr1794alpSWSkpJER5G92NhY2NnZwdzcXHSUZ5o3bw5nZ2fs3r1bdBRVkMdPRUECAgIwf/58\ng+9tV5WJEyfixo0b+P3330VHkT3OufD9tSqysrJCv379EBtb71UCRiM9PR03btww+Iki1aGp2doL\nDw/H5MmTZXd3P03N1o7cpmR1aGpWOkZb3BUWFmLHjh2yKg5MTEwwe/ZsGr2rhdTUVJiYmMhm1FVn\n9uzZtF9TLYSEhECj0Qhf61oRTc3WjlyLg1mzZiE4OJg2NK5GcXExdu3ahenTp4uO8iceHh7Yv38/\nHj16JDqK4hltcRcXFwcbGxt069ZNdJQ/8PHxwZYtW+g4shrs2LEDM2fOlM2oq463tzd27dqFgoIC\n0VFkLSQkBF5eXqJj/ImzszPS0tJw8+bNmi82Unl5edi3bx88PDxER/mTvn37ol27dkhJSREdRbaS\nkpLQrVs39OjRQ3SUP2nTpg3Gjh2LqKgo0VEUz2iLu+3btws9cqUqo0ePRl5eHk6fPi06imxxzhEc\nHIyZM2eKjvInXbp0wcCBAxETEyM6imxlZWXhzJkzmDx5sugof9K0aVN4enrS1Gw1YmJiMGLECOEb\nF1dFo9Fg165domPIllxHXXU0Gg3Cw8NFx1A8oyzuioqKEBYWJsuRA8YY3VhRg7S0NDx9+hTDhg0T\nHaVSc+bMoam9aoSFhcHV1VU2d8lW5OXlhbCwMNExZCs0NFSWU3o6VNxVjXMu2ylZHQ8PD0RFRdFd\nzw1klMVdfHw8+vTpI7spWR1vb28EBwfT1GwVdKN2cpuS1Zk2bRoiIyNRVFQkOoosyXVKVsfZ2RnJ\nycl01mwliouLER4eLouNi6syYsQIZGdn48qVK6KjyM6FCxdQUlICW1tb0VGq1K1bN1haWiI5OVl0\nFEUzyuJOrlOyOkOHDkV+fj7OnTsnOoos6dbbyVXXrl3Rq1cv2i2/Eg8ePMChQ4fg5uYmOkqVWrZs\nCQcHB0RGRoqOIjsHDhyAtbU1rKysREepkomJCTw9PWlLjUpERUXB1dVVtr8Y63h6etLUbAMZXXFX\nXFyM0NBQWRcHjDHMmDGDbgmvxMWLF5GTk4PRo0eLjlKt6dOn01E6lQgPD4ejo6NsTjWoyrRp02hq\nrxKhoaGyXq+lQ1OzlYuOjpb1L1Y6Hh4eVNw1kNEVd/v370ePHj1keadQebTfT+WCg4Ph5eUlm42L\nq6Ir7mhq/Y/kPiWr4+npiZiYGNqQuhzOOcLCwmQ9Javj5OSElJQU3L9/X3QU2cjLy8OhQ4dkeSNT\nRaNGjUJmZiZu3LghOopiyfsnpB7IfUpWZ9y4ccjIyEB6erroKLIi9ylZnf79+6N58+Y4fvy46Ciy\nkZ+fj9jYWEydOlV0lBp16tQJNjY2SEhIEB1FNs6ePYtGjRphwIABoqPUSDe1Hh0dLTqKbMTHx2Po\n0KFo3bq16Cg1MjExgZubGyIiIkRHUSyjKu5KSkoQEhKiiOLAxMQE06ZNQ0hIiOgosnHjxg1cu3YN\n48ePFx2lRrqpdZqa/Z/4+HjY2dmhQ4cOoqPUCk3t/VFkZCTc3Nxkv15Lh96/P1LKlKwOTc02jFEV\nd4cOHYKlpSV69eolOkqt0NTsH0VERMDNzQ2NGzcWHaVWaN3dH0VERMhy49uq6Nbd0dR6qcjISLi7\nu4uOUWuenp6Ijo6mu9bL6G6mUAoXFxccOHAAeXl5oqMoklEVd0pZL6IzadIkpKWlISsrS3QUWdi9\ne7cipvR0Ro4cibt37+LSpUuiowjHOVdccde/f380bdoUqampoqMIl5ubi2PHjmHixImio9Sa7hf5\nQ4cOiY4i3KVLl5Cfn4/BgweLjlJr7dq1w/PPP4/4+HjRURTJaIo7JS0G1mnatCnc3d1pQ1UAT548\nQWJiIlxcXERHqbVGjRpBo9HQ+4fSjacByHp/rYoYY/T+lYmNjcXo0aPRsmVL0VHqxN3dnY6ygnK2\nQKnIw8OD1t3Vk9EUdxcuXEB+fj6GDBkiOkqd0JYopeLi4jB8+HC0adNGdJQ6mTZtGk3N4n9Tskr7\n4TJ16lT64QLlTcnquLm5UXEH5U3J6ri4uNBRjvVkNMXdrl27oNFoFPfDxcXFBYcPH8ajR49ERxFq\n9+7d8PT0FB2jziZNmoSTJ0/i3r17oqMIpbQpWZ2xY8fi8uXLRr00gnOOqKgoRRZ3I0aMQEZGBjIy\nMkRHESau8kVnAAAgAElEQVQ/Px9JSUlwdnYWHaXOBg0ahPz8fFraUg9GU9wpbUpW57nnnsPo0aOx\nZ88e0VGE0Wq1CA8PV9R6O51mzZph4sSJRr0lw/3793HixAlFrdfSMTU1hZOTk1G/f6dOnULz5s3R\np08f0VHqzMTEBC4uLkb9/h04cAB2dnZo27at6Ch1xhij0bt6MoriLjs7G2lpaXB0dBQdpV40Go1R\nH6Vz/PhxtG3bFr179xYdpV6Mfd1ITEwMJkyYgObNm4uOUi/u7u5G/f4pdUpWx83NzaiPklPqlKyO\nsRfn9WUUxV1ERAScnZ3RtGlT0VHqxdPTExERESgpKREdRQilTsnqeHh4IDo6GsXFxaKjCKHUKVkd\nNzc3xMbGGu2WGkqdktVxcXHBvn37jPa0EaXtb1eRs7MzDhw4gIKCAtFRFMUoijvdejul6t69Ozp3\n7owjR46IjiKEUqdkdbp06YLu3bvj8OHDoqMYXElJCaKjoxVd3HXq1Mlot9TQTak7ODiIjlJv5ubm\n6Nu3r1G+f+np6bh//z7s7e1FR6m3Dh06wMbGBgcPHhQdRVFUX9zl5+dj3759iv7hApTetWeMU7OZ\nmZm4evUqxowZIzpKg3h6ehrlbuvJycmwtLREt27dREdpEHd3d6Oc2tu7dy/Gjx+v2Cl1HWOdmtVN\nycr9LO6auLq60rq7OlL2O14LcXFxGDJkCNq3by86SoMY61E64eHhcHV1VcypFFUx1nV34eHhiv/F\nCjDedXdKX2+nY6xboih9SlaHbqqoO9UXd0qfktUZNmwY7t+/j8uXL4uOYlBKn5LVGT58OO7cuYP0\n9HTRUQxK6evtdIYPH47bt2/j2rVroqMYjFarVU1xMHz4cGRlZeHGjRuioxhMQUEB9u/fr8gtUCoa\nMWIErl27hlu3bomOohiqLu60Wi12796tyC1QKmrUqBE8PDyMamo2Ly8P+/fvV9SpFFVp1KiR0Y3+\nZGRk4MaNGxg1apToKA1mYmICV1dXoxr9SU1NRdu2bWFtbS06SoOZmJhgypQpRvX+JSYmYsCAAejQ\noYPoKA3WuHFjODk5GfWWYHWl6uIuJSUF7du3R69evURHkYSxbYkSFxeHoUOHol27dqKjSEJ317Ox\niIyMhIuLi+Kn1HWMbd2dWqZkdYxtalYto646tCVK3ai6uFPLlKyOk5MTUlJS8ODBA9FRDEItU7I6\nzs7OOHjwIB4/fiw6ikGoZUpWx8XFBQkJCXj69KnoKAah9C1QKnJxcUF8fLzRbImi9P3tKnJxccHe\nvXuNdkuwujJYcccYm8AY28UYy2CMaRljiyq5xo8xlskYy2OMxTPGBlR4vilj7DvG2B3G2GPGWBhj\nrEtVfaqtuGvRogUmTJhgFL+9cM4RHh6u6P3tKmrdujVGjBiBuLg40VH07unTp4iPj1fVD5f27dtj\n8ODB2L9/v+goenf37l2kpaVh/PjxoqNIxszMDP369UNSUpLoKHp3/fp1ZGdnY9iwYaKjSMbKygoW\nFhY4fvy46CiKYMiRu5YATgFYCSAfAC//JGPsHQBvAlgOYDiAbAB7GWOtyl22GoAXAB8A4wG0BhDO\nGKv0+7hz5w5Gjhwp8bchlrFsiXL8+HG0atUKffv2FR1FUsayJcr+/fsxaNAgVaz3Kc9Ypmb37NkD\nR0dHxW78XhVjmZqNjo7GlClTFL8FSkU0NVt7BnvnOedRnPMPOOfBALTln2OMMQCvA/iCcx7COU8D\nsAjAcwDmlV3TBoAvgFWc8zjOeSqABQAGA3CqrE9PT0/V/c/t6emJqKgo1e+Wr7YpWR3dujvOec0X\nK5jaRl11jKW4U9uUrI6xFHdRUVGqWm+nQ1ui1F6tKp+yKdK/VfJ4e8bYPgly9ARgAeDZrTCc86cA\nDgDQ7V47FIBphWsyAJwrd80fqGlKVqdLly6wtrZW/W7dSj9yrCq9e/dG69atVT21wDlX3Xo7HTs7\nO+Tl5eHixYuio+iN7lQRNRYHw4YNw+3bt1W9JUphYSHi4+NVsctARRMmTMDJkyeNZt15Q9R2WMsB\nwOuMsR2MsfJblTcB4ChBjk5ln29XeDy73HOdAJRwznMqXHMbpYXhnzg5VTqgp3hqn5q9efMmrly5\ngrFjx4qOohdq39D4/PnzKCoqwqBBg0RHkRxjTPWjd0ePHoWFhYXiTxWpjDFsiXLo0CH06dMHZmZm\noqNIrnnz5hg7dqxRrFtuqLrMWToB6AEgiTHWWT9xKlXv+auvvvoKfn5+8PPzQ0JCgoSRxNKdVqHW\nqb2IiAi4uLjA1NRUdBS9UPu6O92oXelqC/VRe3Gu1ilZHbVPzap1SlbH1dVVNevuEhISntUofn5+\n0jbOOa/xA6Vr5MwBNAewFUAmgGEoHU3T1qaNCu09ArCw3J+ty/oYWuG6CAC/lH09qeyaDhWuSQPw\nUSV9cLXSarW8a9eu/Ny5c6Kj6MXUqVN5UFCQ6Bh6U1hYyNu2bctv3bolOopeODo68l27domOoTe5\nubm8VatW/NGjR6Kj6MXw4cP5vn37RMfQm9u3b/PWrVvzgoIC0VH0YvDgwfzQoUOiY+jNuXPnuJWV\nFddqtaKjSK6sbqlTPVXVR53uNuCc56P0TtW1ABIAzK5fSfkn6QCyAEzRPcAYawZgHIBDZQ8dA1BU\n4ZquAGzKXWMUGGOYOnWqKs+azc/PR0JCgqq20KjI1NQUU6ZMUeXU3sOHD3H06FFMmjRJdBS9ee65\n5zBy5EhVTg1lZ2fj4sWLql0SAQDm5ubo27evKtctZ2ZmIiMjAyNGjBAdRW/69esHxhjOnTsnOoqs\n1flW0rIC82MALwL4oravY4y1ZIzZM8bsy/rtXvZnq7KKdTWAdxhjMxhjAwFsROkI3+ayfh8CWA/g\nK8bYZMbYEAABAE4CiK3r96F0al13t2/fPgwZMgTt27cXHUWv1Do1u2fPHowbNw4tW7YUHUWv1Do1\nGxMTg8mTJ6NJkyaio+iVWqdmo6Oj4ezsDBMTE9FR9IYxBldXV7prtga1Le4mAbhf/gHO+Q4AIwEs\nrmUbwwEcL/toBuDjsq8/LmvvKwDfAvgvgBSU3iQxhXP+pFwbrwMIQenUcBKAXABTy4pDozJx4kSc\nOnUKd+/eFR1FUrt371blFigVubm5IS4uDgUFBaKjSEqtW6BUpLupQm3/9ERGRqp6vZaOm5ubatZt\nlRcdHa3qWQ8d2u+uZkxt/zjpMMZUX/N5eXlh+vTpWLhwoegokuCcw8rKCnFxcejXr5/oOHo3duxY\n+Pn5wdnZWXQUSWi1WnTq1AnJycno0aOH6Dh6xTlHnz59EBwcDDs7O9FxJFFcXAwLCwucOnUKXbpU\nefCPKpSUlMDc3BwnT55E165dRceRRHFxMczMzHDu3Dl06tSp5hco2MOHD9G1a1dkZ2ejefPmNb9A\nAYqKitCkSRNwziW5E01dO/waGbVNzZ44cQLNmzdX3akUVVHb1GxKSgrMzMxUX9gB6twS5bfffoOV\nlZXqCzvgf1uiqGn058iRI+jZs6fqCzsAaNOmDezt7VV1FGB8fLyk7VFxp2AeHh7Yu3evaqb2dFOy\nat1CoyIPDw/s3r1bNVN7at24uCpqW3cXGRmp6i1QKlLburuoqCijmJLVUdOWKEDpemUpUXGnYObm\n5hgwYIBqfnsxlvV2OoMGDUJxcTHOnz8vOookIiIijGK9nY6DgwNOnTqFe/fuiY4iCWMr7lxcXBAX\nF6eaoxzVvr9dRWo7ikzq74WKO4VTy5YoN2/exKVLlzBu3DjRUQyGMaaaqdmbN28iPT0dY8ZUehKg\nKjVr1gwODg6S/8YtQmZmJq5fv45Ro0aJjmIwFhYW6N27Nw4dUv5OWllZWUhPT8fo0aNFRzGY559/\nHjk5Obh27ZroKA128+ZNZGZmStomFXcKp1t3p/SpPbWfSlEVtRR3kZGRmDJlCho3biw6ikGpZWo2\nOjraKN8/tUzNRkdHY/LkyUb1/jVq1AjOzs6qGL3bs2eP5MelUnGncLa2tjAxMcHp06dFR2mQ8PBw\no5qS1Zk4cSJSU1MVP7VnbOvtdNzd3REdHY2SkhLRURokIiLCqKZkddRS3Kn9yLiqqGXdXUxMjOS7\nJtBWKCqwcuVKmJmZ4YMPPhAdpV7y8/NhYWGBq1evqn7z4spoNBrMnTsXc+fOFR2lXgoKCmBubo7L\nly+jY8eOouMY3KBBg7Bu3TrFTmkWFhbCzMwMv//+O8zNzUXHMSjdlihK3v5FtwVKWloaOnc25LHv\n4t2+fRv9+vXDnTt3FDvrU1JSAgsLC5w4cQJWVla0FQr5H41Go+gtUYzlVIqqKH1qdv/+/bC1tTXK\nwg6A4rdESUpKgo2NjdEVdkDplijOzs6KHv05fPgwevbsaXSFHVC6btLa2hpHjhwRHaXeUlJSYGlp\nKfl+i1TcqcD48eNx8eJF3Lp1S3SUetm9e7dR3WVZkW5qr7i4WHSUejHWKVkdpRd3xnaXbEVKn5o1\ntrtkK1L6UWT6OlWEijsVaNKkCaZMmaLIhd2cc6Ndb6fTtWtXdOvWDYcPHxYdpc4450a3BUpFY8aM\nweXLlxX7y1VkZKRRF+eurq6K3hLF2ItzpR9Fpq/inIo7lVDq1KzuVApjOG6sOkqdmr148SIKCgow\nePBg0VGEMTU1VezUXnp6OnJycvD888+LjiKMbmpPib9c6bawGTlypOgowowePRqXLl1Cdna26Ch1\ndvfuXZw/fx5jx46VvG0q7lTCzc0N8fHxyM/PFx2lToztVIqqeHp6KnLkNTw8HO7u7kb//il1SxTd\nqEGjRsb9o8DV1VWRU7PGuoVNeU2aNIGjoyP27t0rOkqd7dmzB46OjmjatKnkbRv332gVad++PYYM\nGYK4uDjRUeokJCQE06ZNEx1DuOHDh+POnTtIT08XHaVOjH29pI6rqytiY2MVN7Vn7FN6Okpdd0fv\nXymlrrvT13o7gIo7VdFoNIo6rSI9PR2ZmZlGdSpFVRo1agR3d3dFjf7cvXsXqampkm++qUQWFhbo\n27cvkpKSREeptby8PBw4cEDy/bWUaNSoUbh+/Tpu3rwpOkqtFRUVIS4uDi4uLqKjCKc7ikyr1YqO\nUmtarRYxMTFU3JGa6U6rUMr/4KGhodBoNDAxMREdRRY8PT0VtW4yIiICTk5OaN68uegosqC0u2Zj\nY2MxdOhQtGvXTnQU4Ro3bgwnJydFrZs8ePAg+vTpAwsLC9FRhOvZsyfatm2LEydOiI5Sa6mpqWjX\nrh169uypl/apuFORvn37okOHDopZGLxz507MmDFDdAzZmDJlCg4fPoyHDx+KjlIroaGhmD59uugY\nsuHh4aGo4jwsLIyWRJSjtKnZyMhIo94CpSKlTc3qewsbKu5UxtvbG8HBwaJj1Oj27ds4ffo0Jk+e\nLDqKbDz33HNwcHBQxNRsXl4e9u3bZ9RbaFQ0dOhQPHr0COfPnxcdpUYlJSUIDw+n4q4cpa2bpOLu\nj1xdXRU1cq7P9XYAFXeq4+3tjR07dkDuR6/t2rULrq6uaNasmegosuLl5YWdO3eKjlGjvXv3Ytiw\nYUZ7qkhlGjVqhOnTpyM0NFR0lBr99ttvsLCw0NuUkBJZWlqiV69eilg3eeXKFdy5cwcjRowQHUU2\nJk6ciFOnTuHu3buio9To/v37OHXqFBwcHPTWBxV3KmNra4sWLVogJSVFdJRq0ZRs5aZOnYq9e/ci\nLy9PdJRq0ZRs5ZRS3NGUbOWU8v7t2rULnp6etF65nGbNmmHSpEmKGL2Ljo7GhAkT9Dq4QcWdyjDG\nMHPmTOzYsUN0lCo9fPgQBw8epCmFSnTs2BHDhg3Dnj17REepUnFxMU3pVcHR0REXL15EZmam6CjV\nouKuctOmTUNYWJjsZz7o/aucUjbz3717NzQajV77oOJOhXTr7uT6D1RkZCQmTJiA1q1bi44iS3Kf\nmj106BCsrKzQrVs30VFkx9TUFO7u7rLekujChQt49OiRUZ9KUZWBAwfCxMQEJ0+eFB2lSvfu3cOx\nY8doC6JKeHh4YO/evSgoKBAdpUpFRUWIjo7W+/6gVNypkL29PQDI9rbwHTt2wMvLS3QM2Zo+fTrC\nw8NRWFgoOkqlaOPp6k2fPh0hISGiY1QpLCwMGo3G6E+lqAxj7NnonVxFRkZi4sSJaNGihegosmNu\nbo4BAwZg//79oqNUKSkpCb169ULnzp312g/97VYhxtizGyvkJjc3F7GxsbTerhpdunRBv379kJCQ\nIDrKn2i1WgQHB8Pb21t0FNlydXXFkSNH8ODBA9FRKkVTetWT+7o7ev+qp9vvVa527dql9ylZgIo7\n1dKtu5Pb1GxYWBgcHBxo49QaeHl5yXJLmyNHjqB169awtbUVHUW2WrVqJdstbbKyspCWloaJEyeK\njiJbY8aMQUZGBq5evSo6yp8UFBRg7969dORfNXTFndx+9gEA5/zZeer6RsWdSg0fPhwFBQWyWzvy\n66+/wsfHR3QM2fPy8kJoaChKSkpER/mDbdu2Yfbs2aJjyN6MGTNkOfoTHBwMT09PvRxUrhaNGzeG\np6enLNdNxsfHw9bWFubm5qKjyJatrS0aNWqE06dPi47yJ+fOnUNhYSHs7Oz03hcVdyrFGMMLL7yA\noKAg0VGeycnJQVJSkkGGpJWuV69esLKyQnx8vOgoz2i1Wmzfvp2Ku1qYOnUq9uzZI7stbbZv345Z\ns2aJjiF7cp2a1a2XJFVjjMl2alZ3lyxjTO99yaq4Y4w1Zox9zhi7whjLL/v8KWPMpMJ1foyxTMZY\nHmMsnjE2QFRmOXvhhRewefNm2Yz+7Ny5Ey4uLmjVqpXoKIowb948bNmyRXSMZw4dOoSOHTvCxsZG\ndBTZMzMzw8iRI2U1NZuVlYUTJ07QQfO14OzsjKNHj+LevXuiozxTUlKCkJAQzJw5U3QU2dNoNLK8\nKWbXrl0GmZIFZFbcAXgPwCsAVgDoB2AlgKUA/p/uAsbYOwDeBLAcwHAA2QD2MsaoYqhgwIABsLCw\nkM2dQ1u3bqUp2TqYM2cOQkJC8PTpU9FRAJS+fzRqV3s+Pj749ddfRcd4RjclS6fC1KxFixZwdnaW\n1ehdYmIiOnfujN69e4uOInsTJkzAlStXcO3aNdFRnrl16xbOnj0LR0dHg/Qnt+JuOIBdnPMIzvl1\nzvluAOEARgIAKx3LfB3AF5zzEM55GoBFAJ4DME9UaDmbP38+AgMDRcfArVu3cOzYMdq4uA66dOkC\nOzs7WRxmXlJSgh07dtCUXh3MmDEDsbGxyM3NFR0FAE3J1tWcOXNkVZxv27aN3r9aMjU1xfTp02V1\nU1pISAg8PDwMtt5VbsVdFIBJjLF+AFA23ToRgG5uoycACwDPtu/nnD8FcADAGMNGVQYfHx+EhoYi\nPz9faI7AwEB4eXmhefPmQnMozbx587B582bRMXDgwAF06tQJffv2FR1FMdq1awcHBwdZTA/RlGzd\neXh44LfffsOdO3dER0FJSQmCg4OpuKsDuW0HZuhfrmRV3HHOfwAQBOAcY6wQwBkAGznnP5Vd0qns\n8+0KL80u9xwpp3Pnzhg6dCjCw8OFZeCc45dffsGLL74oLINSzZw5E3v27BE++uPv74+FCxcKzaBE\ncpmaDQ4OhoeHB03J1kHLli3h7u4ui9GfAwcOoEuXLjQlWweTJ0/GhQsXcOPGDdFRcPv2baSmpmLK\nlCkG61NWxR1j7DUAiwH4ABgCYCGAZYwx31q8/E+b2vj5+T37kOOGsIYyf/58+Pv7C+s/JSUFRUVF\nGDdunLAMStW+fXs4OjoKPfHg8ePHCAsLw7x5tPKhrjQaDZKSkpCTkyM0R2BgIF544QWhGZRILlOz\ntAVR3ZmamkKj0ciiOA8NDYW7u/ufZq4SEhL+UKdIinMumw+UjsitqPDY+wB+L/vaGoAWwNAK10QA\n+KXCY5yUevz4MW/Xrh2/ceOGkP5fffVV/tlnnwnpWw22bdvGJ06cKKx/f39/7unpKax/pZs1axZf\ns2aNsP4vXLjALSwseFFRkbAMSpWfn8/btm3LMzMzhWUoLi7m5ubm/NKlS8IyKFVERAQfO3as6Bh8\n8uTJPDg4uMbryuoWSeopWY3cAWAoLd7K05Y9DgDpALIAPBvbZIw1AzAOwCFDBFSili1bYu7cudiw\nYYPB+87Pz8e2bdtoSq8BNBoNTp8+jcuXLwvpn6ZkG2bBggVCR84DAgIwb948NG7cWFgGpWrWrBk0\nGo3QtVtxcXGwsrJCr169hGVQKicnJ5w9exaZmZnCMty5cwcpKSlwdXU1aL9yK+5CAbzLGHNnjPVg\njM0A8AaAEKCspAVWA3iHMTaDMTYQwEYAjwCIX3UuY0uWLMHPP/9s8D3vQkJCMHToUFhZWRm0XzVp\n2rQpFixYIKQ4v379Ok6cOGGwvZnUyM3NDVeuXMGFCxcM3rdWq0VAQAAV5w3g4+Mj9KYmf39/LFq0\nSFj/StakSRNoNBps27ZNWIbg4GC4ubmhRYsWBu1XbsXdGwC2AvgvgLMAvgGwFqVTswAAzvlXAL4t\nuyYFpXfPTuGcPzF4WgWxt7dHp06dEBMTY9B+f/jhB7z66qsG7VONXnrpJWzcuBHFxcUG7dff3x+z\nZ8+mhfgN0LhxYyxYsAC//PKLwftOTExE69atDXLckVo5Ozvj+vXrOHfunMH7zs3NRXh4OO0P2gAL\nFixAQECAsP4DAgIwf/58g/crq+KOc/6Ec76Kc96Tc96Cc96Lc/4B57ywwnUfc847c86bc84ncs7P\nisqsJEuWLMHatWsN1t+JEydw7do1Oi5HAra2tujWrRuio6MN1mdxcTHWrl2LV155xWB9qtXixYux\nadMmgxfnmzZtwsKFCw1y3JFaiSzOg4ODMXHiRJiZmRm8b7VwdHREdnY2zpw5Y/C+L1++jEuXLgnZ\ngkhWxR3Rr7lz5yIpKQnp6ekG6e+///0v/vrXv9JaH4m89NJLWLduncH6Cw8Ph5WVFezt7Q3Wp1r1\n798f3bt3N+jI+cOHD7Fz504howZqs3jxYgQEBAgrzkn9mZiYYP78+UJG7wIDAzFnzhyYmpoavG8q\n7oxIq1at8NJLL+Hf//633vu6f/8+duzYgb/85S9678tYzJ07FwcPHsSVK1cM0t+PP/6IpUuXGqQv\nY+Dr64uff/7ZYP1t2rQJU6ZMQadOtAVoQ9nY2KBnz54GHTm/evUqTp8+DQ8PD4P1qVYLFixAYGCg\nQdecc84REBCABQsWGKzP8qi4MzIrVqzApk2b8ODBA732s3btWnh6esLc3Fyv/RiTli1bwtfXF99/\n/73e+7p06RJSU1Ph7e2t976Mxdy5c3HgwAGDnHfJOcdPP/2Ev/71r3rvy1gsXrzYoFOz69atwwsv\nvGCw46rUzNbWFpaWloiPjzdYn0eOHEHjxo0xbNgwg/VZHhV3RqZr165wd3fX6/Refn4+Vq9ejbff\nfltvfRir5cuXY+PGjXo/seK7776Dr68v3UghoVatWmHRokX44Ycf9N5XYmIiOOdwcHDQe1/GYs6c\nOdi3bx9u3bql974KCwuxfv16uhlNQgsXLjTojgPr16/Hiy++KGy9KyvdXUR9GGNcrd9bQ6WmpmLq\n1Km4dOmSXn54//DDD4iKisLu3bslb5sAs2fPxrhx4/Daa6/ppf27d++ib9++OHPmDDp37qyXPozV\n5cuXMXLkSFy/fl2vWyP4+PhgzJgxevt/xFgtXboU5ubm0p8mUMGvv/6KtWvXYt++fXrtx5jcv38f\n1tbWuHDhgt5nlB48eICePXvi/PnzsLCwqPXrGGPgnEtSDdLInREaMmQInn/+eb3cOVtUVISvv/4a\n7733nuRtk1Jvvvkmvv32WxQVFeml/e+//x4zZ86kwk4PevXqhTFjxiAoKEhvfaSnpyM2NpbOctaD\n5cuXY82aNSgoKNBrPz/++CNNqUusXbt28PLyMsjoXWBgIFxcXOpU2ElOqqMu5PYBOn6sWsePH+eW\nlpb8yZMnkra7Zs0aPmnSJEnbJH/m5OTEf/75Z8nbffz4MTczM+MXLlyQvG1SKjY2ltvY2PDi4mK9\ntL9s2TL+7rvv6qVtwrmzszMPCAjQW/snT57klpaWvLCwUG99GKuUlBTevXt3vf3d45xzrVbLbW1t\neXx8fJ1fCxUfP0YMZMiQIRg9erSk63+ePHmCjz/+GP/4xz8ka5NU7qOPPsJnn30m+ejd999/D0dH\nR/Tt21fSdsn/TJo0CW3atNHLgeZ37txBUFAQTcfq0WuvvYZ///vfukEEyX311VdYuXKlkO0z1G7Y\nsGEwNzdHVFSU3vpITExEcXGx8PWutObOiJ07dw4TJkxAWlqaJGsQPvvsM5w5cwa//vqrBOlITZyd\nnTFnzhzJtpu5f/8++vbti6SkJPTr10+SNknlIiMj8e677+LEiRNo1Ei637Hff/993Llzx6CblRsb\nrVaLAQMG4L///S8mT54sadtXr17F0KFDceXKFbRp00bStkkpf39/BAQEIDY2Vi/tazQauLu71+tm\nGCnX3FFxZ+RWrVqF+/fvY/369Q1q59q1axg2bBiOHDlCB1wbSHJyMmbMmIHz58/jueeea3B777zz\nDu7fv0+FgQFwzjF8+HC899578PLykqTNrKws2Nra4vjx4+jevbskbZLKBQYGYu3atdi/f7+kd0Ou\nWLECLVq0oNkPPSosLESvXr0QEhIi+TYlZ8+exaRJk5Ceno7mzZvX+fVU3NUCFXe1k5ubi/79+2Pb\ntm0YO3ZsvdrgnMPT0xNjx46lGykMbNGiRbC0tMSXX37ZoHYuXbqEUaNG4cSJE+jatatE6Uh1oqKi\n8Prrr+PMmTOSTMEtX74cpqam+PbbbyVIR6pTXFyM/v37Y926dXB0dJSkzczMTAwePBhnzpyBpaWl\nJG2Syq1evRqJiYmSL43w9fWFtbU1Pvjgg3q9XsriTviND/r6AN1QUWshISHc2tqaP3z4sF6vDwgI\n4F7gdXEAAA/jSURBVAMHDuQFBQUSJyM1uXnzJu/QoQM/f/58vdvQarXcycmJf/311xImI7Xh6urK\nV69e3eB2Ll68yDt06MCzs7MlSEVqY+PGjXz8+PFcq9VK0t6SJUv422+/LUlbpHq6G8fOnTsnWZvX\nrl3j7dq14zk5OfVuAxLeUEEjdwQAsGTJEhQUFMDf379O0wy6dXuxsbGws7PTY0JSle+//x4BAQE4\nePBgvc7xDQgIwDfffIOjR4/SIm4DO3v2LBwdHZGWllbvw+E553B2doabmxveeustiROSqhQXF+P5\n55/H3/72twaf5HLhwgWMGzcOFy9eRLt27SRKSKrz+eef48SJE9i2bZsk7fn6+qJz58747LPP6t0G\njdzRyJ3kHj16xAcPHsy//PLLWr/m7t273MbGRi9bcpDaKykp4VOmTOF+fn51fu2FCxd4x44d+fHj\nx/WQjNTGqlWruLe3d71HgAIDA7mdnR0vKiqSOBmpSVxcHO/evTvPy8urdxtarZa7uLjwb775RsJk\npCZPnjzhXbp04UeOHGlwW2lpadzMzIw/ePCgQe1AwpE74UWYvj6ouKu7jIwMbmVlxdesWVPjtffv\n3+fDhw/n77zzjgGSkZpkZGTwzp0785CQkFq/Jjc3l9vZ2fEffvhBj8lITfLz83n//v15UFBQnV+b\nnp7OzczMeHJysh6Skdrw8vLiH3zwQb1fv3nzZj5o0CDa106A9evX83HjxjVoal2r1XIPDw9JlrVQ\ncUfFnd78/vvv3Nramr/zzjtVrqFLS0vj/fr142+88YZk601IwyUnJ/OOHTvyxMTEGq/Nz8/nkyZN\n4q+88gq9hzJw9OhR3rFjR3769OlavyY/P5+PGjWK1koKdvPmTW5ubs5/++23Or/21q1bvFOnTvzQ\noUN6SEZqUlxczO3t7fnGjRvr3UZwcDDv37+/JGvOqbij4k6vbt++zTUaDbexseHr1q3j6enpPCcn\nhx8+fJgvW7aMd+zYka9fv150TFKJmJgY3rFjRx4cHFzlNbdv3+Zjxozh8+bN0+tO7aRuAgMDeY8e\nPXhmZmaN1xYXF3Nvb28+a9YsXlJSYoB0pDrbtm3jvXv35vfu3av1a4qLi/nkyZP5hx9+qMdkpCbH\njx/nZmZm/ObNm3V+7YMHD3jXrl15QkKCJFmkLO7ohgpSKc459u7di7Vr1+Lw4cN4/PgxrK2tMXXq\nVPz1r3+lW/VlLCUlBT4+Phg5ciTeffddDBo0CIwx5ObmYtOmTfj000/xyiuvwM/PT9INdEnDffXV\nV1izZg1iYmLQu3fvSq/Jz8/HokWLkJOTg8jISDRt2tTAKUlldNvaREVF1XhjEuccb7zxBk6dOoW9\ne/fCxMTEQClJZd5//30cP34c4eHhtX4vOOeYPXs2LCws8P3330uSg/a5qwUq7ogxe/z4Mb799lus\nW7cOeXl5aNWqFbKzs+Hu7o733nsPzz//vOiIpApr1qzBBx98gE8++QS+vr7PijfOORITE7F8+XIM\nHDgQGzZsQLNmzQSnJTolJSWYMWMGGGPYunVrle8N5xzvv/8+IiIisH//frRt29bASUlFRUVFcHJy\nwvjx42t9t+u//vUvBAQE4PDhw5L9PaTirhaouCOk9AdJVlYW8vLyYGVlhSZNmoiORGrh1KlTWLVq\nFVJTUzFmzBg0b94cJ0+eRHFxMT755BP4+PhIejICkUZhYSEWLVqES5cuYdOmTejfv/8fnr99+zaW\nLVuGzMxMhIWFSXLsI5FGdnY2Ro0ahZUrV2LlypXVXhsQEID33nsPSUlJkp4GQ8VdLVBxRwhRuuvX\nryMlJQUFBQXo168fhgwZQlPpMsc5x08//YQPP/wQEyZMwIQJE9CkSROkpKQgNDQUL7/8Mvz8/Op1\nPBXRr2vXrmHSpEnw9vbGZ5999qfp9ZKSEnzxxRdYu3YtoqKiYGtrK2n/VNzVAhV3hBBCRHn06BGC\ng4Nx9OhRFBUVwdbWFrNmzaL1yjKXnZ0NX19fXLlyBa+//jrGjx+PRo0a4fDhw/jPf/6DNm3aIDAw\nEF26dJG8byruaoGKO0IIIYTUle6Gwg0bNuDYsWPQarWws7PDokWLoNFo9LYkgoq7WqDijhBCCCFK\nIWVxR4s3CCGEEEJUhIo7QgghhBAVkV1xxxizZIz5M8ayGWP5jLE0xtiECtf4McYyGWN5jLF4xtgA\nUXkJIYQQQuREVsUdY6wtgIMAOAB3ADYAlgPILnfNOwDeLHt8eNlzexljrQwemBBCCCFEZmR1QwVj\n7HMA4znn46t4ngG4CeA/nPMvyh5rhtICbxXnfG25a+mGCkIIIYQogppvqJgOIJkxtpUxdpsxlsoY\nW1bu+Z4ALADs0T3AOX8K4ACAMYaNSgghhBAiP3Ir7qwBLAVwCcAUAP8G8GW5Aq9T2efbFV6XXe45\nQgghhBCj1Vh0gAoaAUjmnL9f9ueTjLE+AJYB+G8Nr6U5WEIIIYQYPbkVdzcBnK3w2HkA3cq+zir7\nbAEgo9w1FuWee8bPz+/Z146OjnB0dJQoJiGEEEJI/SUkJCAhIUEvbcvthoogAFac8wnlHvsUwAzO\n+cCyGyoyAXxX4YaK2yi9oWJdudfRDRWEEEIIUQQ131DxLYBRjLH3GGO9GWOzAKxA2ZRsWbW2GsA7\njLEZjLGBADYCeARgs6DMhBBCCCGyIauROwBgjLkD+BxAPwDXAHzPOf++wjUfAXgFQDsARwAs45yf\nrXANjdwRQgghRBGkHLmTXXEnFSruCCHk/7d3vyF31nUcx98fNTMsTRJcqVmCGRakhZGxrIT2oJ5E\nT6wIzQf2xz9ZEdRmVJAZiPhvGRakSVJkD0xNBia4Cq2mYgbTsUpHWW13mkxzs83t24PrutvxuN33\nqTXPdX69X3Bxn+u6fuc+v3tfzjmf/a4/P0mzouXDspIkSdoLhjtJkqSGGO4kSZIaYriTJElqiOFO\nkiSpIYY7SZKkhhjuJEmSGmK4kyRJaojhTpIkqSGGO0mSpIYY7iRJkhpiuJMkSWqI4U6SJKkhhjtJ\nkqSGGO4kSZIaYriTJElqiOFOkiSpIYY7SZKkhhjuJEmSGmK4kyRJaojhTpIkqSGGO0mSpIYY7iRJ\nkhpiuJMkSWqI4U6SJKkhhjtJkqSGDDbcJVmeZGeSlWPbv5Lkz0m2JLkzyQnT6qMkSdLQDDLcJXkb\ncDbwW6BGtn8e+CxwHnAyMAf8NMlLp9FPSZKkoRlcuEtyKHADcBbwxMj2AJ8Gvl5VN1XVWuBM4GXA\nh6fRV+07q1evnnYX9F+ydrPN+s026ycYYLgDvg38qKp+BmRk+2uBI4Db5zdU1TPAz4G3v6A91D7n\nB9TssnazzfrNNusngAOm3YFRSc4GjmXXSFyN7F7S/9w09rQ54FX7uGuSJEkzYTDhLsnxwNeApVW1\nY34zzx2925NavIkkSVL7UjWMXJTko8C1wI6RzfvTBbcdwBuBdcDJVXXfyPNuA+aq6qyx3zeMP0yS\nJGkCVTXJgNaiBjNyB9wErBlZD3AdsB64GPgdsBFYBtwHkOQgYCnwufFf9r/6B5IkSZolgwl3VbUZ\n2Dy6LckW4ImqerBfvwJYkWQdXdj7IvAU8P0XuLuSJEmDNJhwtwfFyPl0VXVJkpcAVwOHAb8CllXV\n01PqnyRJ0qAM5pw7SZIk7b0h3uduryU5J8kjSbYmuTfJ0mn3Sc/VTy93T5LNSeaS3JLkDbtp53Rz\nA+dUgbMnySuTXN+/97YmWZvk1LE21m+AkhyQ5OIkD/e1ezjJV5PsP9bO+k1ZklP777ZH+8/IM3fT\nZsE6JXlxkpVJ/pbkH0luTnLkYq/dXLhLcjpwBXARcCJwN7AqydFT7ZjGvRP4BnAKcBrwLHBHksPm\nGzjd3PA5VeDsSfJy4C66er0XeD1dneZG2li/4VoBfBw4HzgeuAA4B1g+38D6DcbBdJ+NFwBbGbtt\n24R1ugL4APBB4B3AIcBPkiyc36qqqQX4NfCtsW3rgYun3TeXBet2MF3Ae1+/HuCvwPKRNgcBTwIf\nm3Z/XQrgUOD3dEH9TuAqazf8he7uA79YYL/1G/AC3ApcN7bteuBW6zfche7izzNG1hetU/8Z+0/g\nQyNtjqK7PdyyhV6vqZG7JAcCb2ZkirLe7ThF2dAdQjeSPD+fsNPNDZ9TBc6m9wNrkvwwyaYk9yc5\nd2S/9Ru2VcBp/Y3/6Q/jvRu4rd9v/WbDJHV6C/CisTaPAg+xSC2HfrXsf+pwuhsf726KsiXPb64B\nuRK4H/hlv+50cwPmVIEz7Vi6w3iX0Y3inQSsTEJVXY31G7Sq+maSo4CHkjxL9z1+UVVd0zexfrNh\nkjotAXZU1eNjbTbRBcM9ai3caQYluYzufyFLqx93XoSXeE+RUwXOvP2ANVV1Yb/+QJLjgHPpbjO1\nEOs3ZUk+BZxFdw7WWrpwfmWSDVV17SJPt36zYa/r1NRhWeAxumPR44n2CLpj2xqYJJcDpwOnVdWG\nkV0b+5+7q+VGNE2n0I2Sr02yPcl24FTgnCTb6N6HYO2G6i/Ag2Pb1gGv7h/73hu2C+nOIb+xqtZW\n1Q10o7DzF1RYv9kwSZ02AvsnecVYmyUsUsumwl1VbaObmmzZ2K730F01qwFJciW7gt36sd2PsGu6\nufn289PNWcvpuoluruc39cuJwL3AD/rHo1MFAtZuYO6iu0J21OuADf1j33vDFmDn2Lad7Bo5t36z\nYZI63QdsH2tzFN37d8FatnhY9jLge0nW0P3xn6BLudcs+Cy9oJJcDXyE7uTuzUnmzz94qqqerqpy\nurlhKqcKnHWXA3cnWQHcSHdY73z6kR/fe4P3Y+ALSR6hG4E9CfgM3RWz1m9AkhwMHNev7gcck+RE\n4PGq+tNidaqqzUm+A1ySZA74O13GeQC4Y8EXn/blwfvokuNP0qXiZ4B76M4Nmnq/XJ5To510h9B3\nji1fGmv3ZbrDSFvpbrdxwrT77rLbev77VijWbvgL3f3tftPXZh1w3m7aWL8BLnS3jbq0/47bAvyB\n7r6uB1q/YS3Au0a+20a/766dtE7AgcBVdKe7PA3cDBy52Gs7/ZgkSVJDmjrnTpIk6f+d4U6SJKkh\nhjtJkqSGGO4kSZIaYriTJElqiOFOkiSpIYY7SZKkhhjuJEmSGmK4k6QJJVmdZOW0+yFJCzHcSZIk\nNcTpxyRpAkm+C5wxtvk1VfXHKXRHkvbIcCdJE0hyCLAKeAhY0W9+rKp2Tq9XkvR8B0y7A5I0C6rq\nySTbgC1VNTft/kjSnnjOnSRJUkMMd5IkSQ0x3EnS5Lbh6SySBs5wJ0mT2wC8NckxSQ5Pkml3SJLG\nGe4kaXKX0o3ePQhsAo6ebnck6fm8FYokSVJDHLmTJElqiOFOkiSpIYY7SZKkhhjuJEmSGmK4kyRJ\naojhTpIkqSGGO0mSpIYY7iRJkhpiuJMkSWrIvwCdhWYS6i+zlAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4)) #set plot size\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z, 'k-');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Explore and think" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try changing the value of `v` in the initial conditions. \n", + "\n", + "* What happens when you have a larger gust? \n", + "* What about a smaller gust? \n", + "* What happens if there isn't a gust (`v = 0`)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equation for phugoid oscillations is a 2nd-order, linear ODE and it has an exact solution of the following form:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "z(t) = A \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + B \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $A$ and $B$ are constants that we solve for using initial conditions. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our numerical solution used the initial conditions:\n", + "\n", + "$$\\begin{eqnarray}\n", + "z(0) = z_0 \\\\\n", + "b(0) = b_0\n", + "\\end{eqnarray}$$\n", + "\n", + "Applying these to the exact solution and solving for $A$ and $B$, we get:\n", + "\n", + "$$\\begin{equation}\n", + "z(t) = b_0 \\sqrt{\\frac{z_t}{g}} \\sin \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + (z_0-z_t) \\cos \\left(\\sqrt{\\frac{g}{z_t}} t \\right) + z_t\n", + "\\end{equation}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already defined all of these variables for our numerical solution, so we can immediately compute the exact solution. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pro tip:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The expression is a bit long —if you don't feel like scrolling left and right, you can insert a line break in the code using a backslash '\\' _(without any trailing spaces)_ and Python will treat the next line as a continuation of the first." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the exact solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot our exact solution! Even better, we can plot _both_ the numerical solution *and* the exact solution to see how well Euler's method approximated the phugoid oscillations.\n", + "\n", + "To add another curve to a plot, simply type a second `pyplot.plot()` statement. We also added a legend using the format\n", + "\n", + "```Python\n", + "pyplot.legend([\"line 1\",\"line 2\"])\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nXZ3JngAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10,4))\n", + "pyplot.ylim(40,160) #y-axis plot limits\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase font size for ticks\n", + "pyplot.xlabel('t', fontsize=14) #x label\n", + "pyplot.ylabel('z', fontsize=14) #y label\n", + "pyplot.plot(t,z)\n", + "pyplot.plot(t, z_exact)\n", + "pyplot.legend(['Numerical Solution','Analytical Solution']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks like pretty good agreement, but what's happening towards the end? We'll come back to this. For now, re-run the previous steps with a different timestep, say $dt=0.01$ and pay attention to the difference.\n", + "\n", + "Euler's method, like all numerical methods, introduces some errors. If the method is *convergent*, the approximation will get closer and closer to the exact solution as we reduce the size of the step, $\\Delta t$. The error in the numerical method should tend to zero, in fact, when $\\Delta t\\rightarrow 0$—when this happens, we call the method _consistent_. We'll define these terms more carefully in the theory components of this course. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compare the two solutions, we need to use a **norm** of the difference, like the $L_1$ norm, for example.\n", + "\n", + "$$ E = \\Delta t \\sum_{n=0}^N \\left|z(t_n) - z_n\\right|$$\n", + "\n", + "The $L_1$ norm is the sum of the individual differences between the exact and the numerical solutions, at each mesh point. In other words, $E$ is the discrete representation of the integral over the interval $T$ of the (absolute) difference between the computed $z$ and $z_{\\rm exact}$:\n", + "\n", + "$$ E = \\int \\vert z-z_\\rm{exact}\\vert dt $$\n", + "\n", + "We check for convergence by calculating the numerical solution using progressively smaller values of `dt`. We already have most of the code that we need. We just need to add an extra loop and an array of different $\\Delta t$ values to iterate through. \n", + "\n", + "You should read the documentation for the function [enumerate](https://docs.python.org/2/library/functions.html#enumerate) and make sure you understand how we're using it below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Warning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cell below can take a little while to finish (the last $\\Delta t$ value alone requires 1 million iterations!). If the cell is still running, the input label will say `In [*]`. When it finishes, the `*` will be replaced by a number." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# time-increment array\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001, 0.0001])\n", + "\n", + "# array that will contain solution of each grid\n", + "z_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " N = int(T/dt)+1 # number of time-steps\n", + " ### discretize the time using numpy.linspace() ###\n", + " t = numpy.linspace(0.0, T, N)\n", + "\n", + " # initial conditions\n", + " u = numpy.array([z0, b0])\n", + " z = numpy.empty_like(t)\n", + " z[0] = z0\n", + " \n", + " # time loop - Euler method\n", + " for n in range(1,N):\n", + " ### compute next solution using Euler method ###\n", + " u = u + dt*numpy.array([u[1], g*(1-u[0]/zt)])\n", + " z[n] = u[0] # store the elevation at time-step n+1\n", + " \n", + " z_values[i] = z.copy() # store the total elevation calculation grid i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculate the error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical solutions for each $\\Delta t$ in the array `z_values`. To calculate the error corresponding to each $\\Delta t$, we can write a function! " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_error(z, dt):\n", + " \"\"\"Returns the error relative to analytical solution using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array of float\n", + " numerical solution.\n", + " dt : float\n", + " time increment.\n", + " \n", + " Returns\n", + " -------\n", + " err : float\n", + " L_{1} norm of the error with respect to the exact solution.\n", + " \"\"\"\n", + " N = len(z)\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " z_exact = b0*(zt/g)**.5*numpy.sin((g/zt)**.5*t)+\\\n", + " (z0-zt)*numpy.cos((g/zt)**.5*t)+zt\n", + " \n", + " return dt * numpy.sum(numpy.abs(z-z_exact))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: in the last line of the function, we perform an 'array operation': \n", + "\n", + "`z - z_exact`\n", + "\n", + "We are *not* subtracting one value from another. Instead, we are taking the difference between elements at each corresponding index in both arrays. Here is a quick example:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 2, 1])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = numpy.array([1, 2, 3])\n", + "b = numpy.array([4, 4, 4])\n", + "\n", + "b - a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we iterate through each $\\Delta t$ value and calculate the corresponding error. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "error_values = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " ### call the function get_error() ###\n", + " error_values[i] = get_error(z_values[i], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember, *if* the method is convergent then the error should get smaller as $\\Delta t$ gets smaller. To visualize this, let's plot $\\Delta t$ vs. error. If you use `pyplot.plot` you won't get a very useful result. Instead, use `pyplot.loglog` to create the same plot with a log-log scale. This is what we do almost always to assess the errors of a numerical scheme graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnEAAAGTCAYAAABH6UQsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VPW9//H3RymkUn+itSK2ttZc29raFvfWKowVRYjW\nKtp69eFCL1q3ANpfvVa4JmlpvS6914L7Cqh1QUWWAAYTBvcdtbVupVKXumsV/RFA+Pz+yMQmIctM\n8p05y7yej8c8yjlzZvKZd0/ww5zPOcfcXQAAAEiWjaIuAAAAAIWjiQMAAEggmjgAAIAEookDAABI\nIJo4AACABKKJAwAASCCaOAAAgASiiQMAAEigVDRxZjbIzB41s2Vm9oyZnRZ1TQAAAMVkabhjg5lt\nJKm/uzeb2SaSnpG0h7u/HXFpAAAARdEv6gJCcPf1kppzi5+VtLrNMgAAQOqk4nCqJJnZZmb2lKSX\nJU1195VR1wQAAFAsqTic2paZbSVpiaRD3P2vUdcDAABQDLH4Js7MhpnZXDN71czWm9lxnWxzipm9\nZGarzOwxM9u7s/dy97ckZSUNLXLZAAAAkYlFEydpoKSnJU2QtEpSu68Hzeynki6SNEUtzdkDkhaa\n2ba557cys01zf95M0j659wMAAEil2B1ONbOVkk5195lt1j0s6Ul3/3mbdS9Ius3dzzazPSRdIcnU\n0gD+b9vXAwAApE3sz041s/6SdpF0foenGiTtJUnu/oiknfN8v3h1rQAAAN1wd+tsfVwOp3ZnS0kb\nS3qzw/q3JG3dmzd097weNTU1eW/b29f2tF13z3f1XMf1nW3Xcd1xxx3X689a7DwLeV3oPPNZl6Qs\nS5VnIevLJc9S/K6TZ+/z7M26UmTZlzz5XQ+XZSGvzWe7QnLrThKauMhkMpmiv7an7bp7vqvnOq7v\nbLu+fLbe6u3PLOR1ofPMZ12Ssiz0tb3Ns5D15ZJnKX7XO1tHnvk915d1xRbnvzvZN3u3XaF5dqnY\nXW+hD0krJR3bZrm/pLWSxnTY7hJJS3rx/l5TU+NLlixx/EtNTU3UJaQGWYZFnmGRZzhkGRZ5trdk\nyRKvqanxllat854m9t/EufsaSY9LOqDDU/ur5SzVgtXW1kbyL4A4I49wyDIs8gyLPMMhy7DIs71M\nJqPa2tput4nFiQ1mNlDSDrnFjSR9xcyGSnrX3V+R9D+SrjezR9TSuJ2klnm4y6OoFwAAIGqxaOIk\n7S6pKfdnl1SXe0yX9DN3v9XMPi9psqQhkv4kaXSuwQMAACg7sbtOXLGZmZfbZwYAAMlkZvIEX2Ik\nuNraWmWz2ajLAAAA6FQ2m+1xJq5smzgGKNujqQ2HLMMiz7DIMxyyDIs828vnxIaybOIAAACSjpk4\nAACAmGImDgAAIGXKsonjxIYNkUc4ZBkWeYZFnuGQZVjk2V4+JzbE5TpxJdVTKAAAAFHKZDLKZDKq\nq6vrchtm4gAAAGKKmTgAAAKpr6/XyJEjlclkNHLkSNXX10ddEsoUTRwkMYsQElmGRZ5hkWff1NfX\na8KECWpoaNDSpUvV0NCgCRMm0MgFwL5ZuLJs4jixAQDQG1OnTtXy5cvbrVu+fLmmTZsWUUVIq3xO\nbGAmDgCAPGUyGS1dunSD9cOHD+fLARQFM3EAAASwdu3aTtdXVFSUuBKAJg45/AsyHLIMizzDIs/e\ne+211/Tiiy9qq622are+srJS1dXVEVWVHuybhSvL68QBAFCIDz74QKNGjdIvfvEL7bTTTpo2bZre\neOMNbb311qqurlZVVVXUJaIMMRMHAEA31qxZo1GjRmnHHXfUtGnTZNbpeBJQFN3NxNHEAQDQhfXr\n1+uYY47RqlWrNGvWLG288cZRl4Qyw4kNHXCJkQ2RRzhkGRZ5hkWehfnVr36lFStW6MYbb9yggSPL\nsMizPe6d2gXunQoA6Mm0adM0Z84c3X///frsZz8bdTkoM9w7tRMcTgUA9OT222/X+PHjdf/992u7\n7baLuhyUMWbi2qCJAwB057777tNhhx2mu+66SzvvvHPU5aDMMROHHjGLEA5ZhkWeYZFn95599lmN\nGTNGN9xwQ48NHFmGRZ6Fo4kDAEDSP/7xD40aNUrnn3++DjjggKjLAXrE4VQAQNn78MMPNWzYMB1x\nxBGaNGlS1OUAn2Imrg2aOABAW2vWrFFVVZUqKyt12WWXcTFfxAozcR1wnbgNkUc4ZBkWeYZFnu25\nu8aNG6dNNtlEF198cUENHFmGRZ7tcZ24LnCdOACAJE2aNEkvvviiGhsb1a9fWf4nETHFdeI6weFU\nAIAkXXrppbrooov0wAMPaMstt4y6HKBT3R1O5Z8dAICyc+edd2rKlCm67777aOCQWGU5E4cNMYsQ\nDlmGRZ5hkaf0wAMP6IQTTtDcuXO1/fbb9/p9yDIs8iwcTRwAoGw8//zzOuywwzRz5kzttttuUZcD\n9AkzcQCAsvDGG2/o+9//vs455xyNHTs26nKAvHCJEQBAWVu5cqVGjx6tsWPH0sAhNWjiIIlZhJDI\nMizyDKsc81y7dq2OOOII7bbbbvqv//qvYO9bjlkWE3kWjiYOAJBa7q4TTjhB/fr106WXXsrdGJAq\nZTkTV1NT8+lF9AAA6TV58mQ1NDRoyZIlGjhwYNTlAHnLZrPKZrOqq6vj3qmtOLEBANKrvr5eU6dO\n1erVq/X222/rvffe01NPPaWtttoq6tKAXuHEBvSIWYRwyDIs8gwrzXnW19drwoQJamho0NKlS/WX\nv/xF/fv316OPPlqUn5fmLKNAnoWjiQMApMLUqVO1fPnydutefvllTZs2LaKKgOLicCoAIBUymYyW\nLl26wfrhw4fzLQ8Si8OpAIDUW7t2bafrKyoqSlwJUBo0cZDELEJIZBkWeYaV1jxfeOEFPffccxo8\neHC79ZWVlaquri7Kz0xrllEhz8L1i7oAAAD6YsWKFRoxYoQuuOACDR48WNOmTVNzc7MqKipUXV2t\nqqqqqEsEioKZOABAYr322msaNmyYTj/9dJ122mlRlwMEx0wcACB13nzzTe233376+c9/TgOHskQT\nB0nMIoRElmGRZ1hpyfPdd9/V/vvvryOPPFJnnnlmJDWkJcu4IM/C0cQBABLlgw8+0IEHHqiRI0eq\npqYm6nKAyDATBwBIjI8++kgjR47U0KFDdfHFF3NDe6RedzNxNHEAgERYtWqVDjroIH3lK1/R1Vdf\nrY024mAS0o8TG9AjZhHCIcuwyDOspOa5Zs0aHX744dpqq6101VVXxaKBS2qWcUWehYv+tyACtbW1\n7CwAkBCffPKJ/v3f/12f+cxnNHPmTG288cZRlwQUXTabVW1tbbfbcDgVABBb69at03HHHad33nlH\nc+bM0YABA6IuCSip7g6ncscGAEAsubtOOukkvfrqq1qwYAENHNBBWR5OxYY4vBwOWYZFnmElJU93\n18SJE/XnP/9Z8+bN0yabbBJ1SRtISpZJQZ6F45s4AECsuLvOPvts3XvvvWpqatKmm24adUlALDET\nBwCIlSlTpujmm29WNpvVlltuGXU5QKSYiQMAJMLvf/97zZw5U0uXLqWBA3rATBwkMYsQElmGRZ5h\nxTnPyy67TBdffLEaGxs1ZMiQqMvpUZyzTCLyLBzfxAEAIjdjxgz97ne/09KlS7XttttGXQ6QCMzE\nAQAidcstt+j0009XU1OTvvGNb0RdDhArzMQBAGJp7ty5Gj9+vBYvXkwDBxSImThIYhYhJLIMizzD\nilOeDQ0NGjdunOrr6/Wd73wn6nIKFqcs04A8C8c3cQCAklu6dKmOPvpo3Xnnndptt92iLgdIJGbi\nAAAl9dBDD+nggw/WzTffrP322y/qcoBY624mjsOpAICSWbZsmQ455BDNmDGDBg7oI5o4SGIWISSy\nDIs8w4oyz2eeeUajR4/WpZdeqtGjR0dWRyjsm2GRZ+Fo4gAARffiiy/qgAMO0AUXXKAxY8ZEXQ6Q\nCqmYiTOzbSVdL+kLkj6R9Bt3v62LbZmJA4AS+vvf/65hw4Zp8uTJOuGEE6IuB0iU7mbi0tLEbS1p\nK3d/2swGS3pc0g7uvqqTbWniAKBEXnvtNQ0fPlzjx4/X+PHjoy4HSJzUn9jg7m+4+9O5P78p6R1J\nW0RbVbIwixAOWYZFnmGVMs+33npLI0aM0Lhx41LZwLFvhkWehUtFE9eWme0qaSN3fy3qWgCgXL33\n3ns64IADdMQRR+iss86KuhwglVJxOLWVmW0h6R5J49z9oS624XAqABTRhx9+qBEjRmifffbRhRde\nKLNOjwQByEPsD6ea2TAzm2tmr5rZejM7rpNtTjGzl8xslZk9ZmZ7d3h+gKTZks7tqoEDABTXxx9/\nrKqqKu266640cECRxaKJkzRQ0tOSJkhaJandV2Vm9lNJF0maImmopAckLcydlSpr+VtiuqQmd7+x\ndGWnB7MI4ZBlWOQZVjHzbG5u1o9//GNVVlbqkksuSX0Dx74ZFnkWLhZNnLsvdPfJ7n67pPWdbHKG\npOvc/Rp3f97dx0t6XdLJued/IOknkg4xs2W5x7dKUz0AYM2aNTr88MO1xRZb6JprrtFGG8XiPy9A\nqvWLuoCemFl/SbtIOr/DUw2S9pIkd79P0sb5vufxxx+v7bbbTpI0aNAgDR06VJlMRtK//iXAMst9\nWW4Vl3qSvtwqLvUkfblVqPfbe++9dfTRR+v999/XxIkTtfHGG8fq8xZruXVdXOpJ+nLrurjUE+Xv\nZzab1YoVK9ST2J3YYGYrJZ3q7jNzy9tIelXSsFyz1rrdOZKOcvdvFPj+nNgAAIGsX79exx9/vN58\n803NmTNHFRUVUZcEpErsT2xA9Dr+Cx29R5ZhkWdYIfN0d5188sn6+9//rtmzZ5ddA8e+GRZ5Fi72\nh1PVcuHedZIGd1g/WC1zcQCAEnN3nXHGGXrqqae0ePFibbLJJlGXBJSd2B9Oza17SNJT7v7zNute\nkDTL3ScV+P5eU1OjTCbT7jg8ACB/kydPVn19vZqamrT55ptHXQ6QOtlsVtlsVnV1dfG+d6qZDZS0\nQ27xfkn/LWmepHfd/RUz+4labnB/ilouL3KSpLGSvuXurxT4s5iJA4A++O1vf6s//vGPymaz+sIX\nvhB1OUCqJWEmbndJT+QeFZLqcn+ukyR3v1XSREmTJS1Ty1mpowtt4NA1ZhHCIcuwyDOsvuZ50UUX\nafr06br77rvLvoFj3wyLPAsXi5k4d8+qh4bS3S+TdFlJCgIAbOCKK67QRRddpHvuuUdDhgyJuhyg\n7MXicGopMRMHAIWbOXOmJk2apGw2q8rKyqjLAVIvMTNxpcRMHAAUZtasWRo/fryampq04447Rl0O\nUFaSMBOHiDGLEA5ZhkWeYRWa5/z583Xaaadp0aJFNHAdsG+GRZ6Fi8VMHAAgfhYvXqyf/exnmj9/\nvr773e9GXQ6ADjicCgDYwL333qvDDjtMd9xxh/bZZ5+oywHKFodTO6itreVrWwDowiOPPKIxY8bo\npptuooEDIpLNZlVbW9vtNmXbxHFmans0teGQZVjkGVZPeT755JM6+OCDde2112rEiBGlKSqh2DfD\nIs/2MpkMTRwAID/PPvusRo0apYsvvlgHHXRQ1OUA6AEzcQAA/fWvf1Umk9G5556rY445JupyAOQw\nEwcA6NLLL7+sESNG6JxzzqGBAxKEJg6SmEUIiSzDIs+wOub5+uuva7/99tPEiRN14oknRlNUQrFv\nhkWehSvLJo6zUwFAevvttzVixAiNHTtWEydOjLocAG3kc3YqM3EAUIbef/99/fCHP1RVVZWmTJkS\ndTkAutDdTBxNHACUmZUrV2r//ffXXnvtpd///vcy6/S/DwBigBMb0CMOL4dDlmGRZxj19fUaOXKk\nvv3tb+vLX/6yNt98cxq4PmLfDIs8C8e9UwEg5err6zVhwgQtX77803UvvviiFixYoKqqqggrA9AX\nHE4FgJQbOXKkGhoaOl2/aNGiCCoCkC8OpwJAGVu1alWn65ubm0tcCYCQyrKJ4xIjGyKPcMgyLPLs\nm7Vr1+r555/v9LmKiooSV5Mu7JthkWd7+VxipGybuEwmE3UZAFBUn3zyiY4++mh9+ctf1vbbb9/u\nucrKSlVXV0dUGYCeZDIZrhPXETNxAMrBJ598omOOOUb//Oc/NXv2bDU2NmratGlqbm5WRUWFqqur\nOakBSACuE9cGTRyAtFu3bp2OPfZYvf3225o7dy6HTYEE48QG9IhZhHDIMizyLMy6des0duxYvfnm\nm5ozZ84GDRx5hkOWYZFn4bhOHACkxPr16zVu3Di9+uqrmj9/vj772c9GXRKAIuJwKgCkwPr163XC\nCSdo+fLlqq+v18CBA6MuCUAA3R1O5Zs4AEi49evX66STTvr0Lgw0cEB5KMuZOK4TtyHyCIcswyLP\n7rm7Tj31VP3lL39RfX29Pve5z3W7PXmGQ5ZhkWd7+Vwnriy/iespFABIAnfXaaedpqeeekqLFi3S\npptuGnVJAALJZDLKZDKqq6vrchtm4gAggdxdEyZM0MMPP6yGhgZtttlmUZcEoAiYiQOAFHF3nXHG\nGXrwwQe1ePFiGjigTJXlTBw2xCxCOGQZFnm25+765S9/qXvuuUcNDQ0aNGhQQa8nz3DIMizyLBzf\nxAFAQri7zjrrLDU2NqqxsVGbb7551CUBiBAzcQCQAO6uSZMmacGCBWpsbNTnP//5qEsCUALMxAFA\ngrm7zjnnHM2fP19NTU00cAAkMROHHGYRwiHLsMhTqqur0+zZs9XY2Kgtt9yyT+9FnuGQZVjkWTi+\niQOAGPvNb36jW2+9VUuWLNEXvvCFqMsBECNlORNXU1Pz6UX0ACCufve73+n666/XkiVLtPXWW0dd\nDoASymazymazqqur63ImriybuHL7zACS57zzztO1116rbDarIUOGRF0OgIh0d2IDM3GQxCxCSGQZ\nVjnmeeGFF+rqq69WU1NT8AauHPMsFrIMizwLx0wcAESovr5eU6dO1erVqzVgwABtu+22nx5G+eIX\nvxh1eQBijMOpABCR+vp6TZgwQcuXL/90Xb9+/XTllVdq7NixEVYGIC44nAoAMTR16tR2DZwkffLJ\nJ7rlllsiqghAktDEQRKzCCGRZVhpznP16tWdrm9ubi7az0xznqVGlmGRZ+Fo4gAgIgMGDOh0fUVF\nRYkrAZBEzMQBQEROPfVUXXHFFVq3bt2n6yorK/WHP/xBVVVVEVYGIC64dyoAxMyVV16p+fPn6/LL\nL9dtt92m5uZmVVRUqLq6mgYOQF44nApJzCKERJZhpTHPK6+8UlOmTFFTU5PGjRunRYsWKZvNatGi\nRUVv4NKYZ1TIMizyLBxNHACU0FVXXfVpA1dZWRl1OQASjJk4ACiRq6++Wr/+9a/V1NSkf/u3f4u6\nHAAJwEwcAETsmmuuUV1dHQ0cgGA4nApJzCKERJZhpSHPa6+9VrW1tWpqatIOO+wQaS1pyDMuyDIs\n8ixcWTZxtbW17CwASuK6665TTU2NGhsbI2/gACRHNptVbW1tt9swEwcARTJ9+nRNnjxZTU1N+trX\nvhZ1OQASiHunAkCJzZgxQ5MnT1ZjYyMNHICioImDJGYRQiLLsJKY54wZMzRp0iQ1Njbq61//etTl\ntJPEPOOKLMMiz8JxdioABDRz5kydffbZsWzgAKQLM3EAEMj111+vs846S3fffbd23HHHqMsBkAJc\nJw4AiuyGG27Qf/7nf9LAASgZZuIgiVmEkMgyrCTkeeONN+rMM8/U3XffrW9+85tRl9OtJOSZFGQZ\nFnkWrscmzsz6m9kEM/t2KQoCgCT54x//qF/+8pdavHhx7Bs4AOmS10ycmTVLOsDd7yl+ScXFTByA\nUG666Sb94he/0OLFi/Wtb30r6nIApFCI68Q9K2n7cCUBQLLdfPPNOuOMM9TQ0EADByAS+TZx50g6\nx8y+U8xiEB1mEcIhy7DimOctt9yi008/XYsXL9ZOO+0UdTkFiWOeSUWWYZFn4fI9O/VMSQMlLTOz\nlyS9Lqn1mKRJcncfVoT6ACBWbr31Vk2cOFENDQ2Ja+AApEu+M3FZtTRtnR6TVUsTt2/AuoqGmTgA\nvTVr1iyNHz9ed911l77zHQ5MACi+7mbiuNgvAOSBBg5AFEKc2ICUYxYhHLIMKw553nbbbaqurtai\nRYsS38DFIc+0IMuwyLNweTdxZraNmf3ezB4zs7+Z2aNmdoGZbV3MAgEgSrfffrtOO+003XXXXfru\nd78bdTkA8Kl8Z+K+Juk+SYMk3S/pTUlbS9pL0vuS9nb3F4tYZ4/MbLak4ZIa3f2IbrbjcCqAvNxx\nxx065ZRTtGjRIg0dOjTqcgCUoT7PxOUapJ0k7e/uK9qs/4qkxZKecfdDw5TbO2Y2XNKmko6jiQPQ\nV7Nnz9bJJ5+shQsXauedd466HABlKsRM3L6SzmnbwEmSu/9dUk3u+Ui5+1JJH0VdR1IxixAOWYYV\nRZ5pbuDYP8Mhy7DIs3D5Xieuv6SVXTz3Ue55AEi8O++8UyeddFIqGzgA6ZLv4dQHJX0oaZS7r2+z\nfiNJ8yUNcve9ilZlnswsI+lUDqcC6I05c+boxBNP1MKFC7XLLrtEXQ4ABDmcWidphKRnzezXZnay\nmdVJekbSAbnn+1LgMDOba2avmtl6Mzuuk21OMbOXzGxV7gzZvTt5K7ozAL0yd+5cnXjiiVqwYAEN\nHIBEyKuJc/dFkqrUckh1kqRLJE3OLVe5+119rGOgpKclTZC0Sh2aMTP7qaSLJE2RNFTSA5IWmtm2\nHd6nqztKoAfMIoRDlmGVIs958+bphBNOUH19vXbdddei/7wosX+GQ5ZhkWfhepyJM7PPSBot6U/u\nvpuZDZS0uaT33f3jEEW4+0JJC3M/b3onm5wh6Tp3vya3PN7MDpR0sqSzc6+7W9J3JA00s1ckHe7u\nD4eoD0B6zZs3T//xH/+h+vp67bbbblGXAwB5y+fEhk8kzZI0UtLfco1bkOYtH2bWX9Iuks7v8FSD\nWq5TJ0ly9xH5vufxxx+v7bbbTpI0aNAgDR06VJlMRtK//iXAMst9WW4Vl3qSvtwq9Pufe+65Ou+8\n89TQ0KDdd989Np83qXmW23LrurjUk/Tl1nVxqSfK389sNqsVK1aoJ/me2PCcpBp3v6XHjfvIzFaq\n5eSEmbnlbSS9KmmYu9/XZrtzJB3l7t8o8P05sQGA6uvrNXbsWM2fP1977LFH1OUAQKdCnNhwvqRJ\nZrZVuLIQJx3/hY7eI8uwipHnggULNHbsWM2bN6/sGjj2z3DIMizyLFy+14nbV9IWkv5mZg9Jel0d\nTj5w92MD19bqHUnrJA3usH5wrg4AyNvChQt1/PHHa+7cudpzzz2jLgcAei3fw6kr1NK0tX6d1/ZF\nJsnd/atBCupwODW37iFJT7n7z9use0HSLHefVOD7e01NjTKZTLvj8ADSb9GiRTr22GM1d+5cfe97\n34u6HADoUjabVTabVV1dXd/unVpsuTNed8gt3i/pvyXNk/Suu79iZj+RdL2kU9RyeZGTJI2V9C13\nf6XAn8VMHFCG7rrrLh1zzDGaM2eOvv/970ddDgDkpU8zcWY2wMyeMLMDwpf2qd0lPZF7VKjl4sFP\n5P5X7n6rpIlquTbdMrWclTq60AYOXWMWIRyyDCtEnq0N3J133ln2DRz7ZzhkGRZ5Fq7HmTh3X21m\nX1XLpUaKwt2z6qGhdPfLJF1WrBoApFNDQ8OnDdxee0V+d0AACCbfmbhZkpa7+1nFL6m4mIkDysfi\nxYt19NFHa/bs2frBD34QdTkAkLdgM3Fmto+kG9Vy0d/Z6vzs1L/1veTiYyYOKA933323jjrqKN1x\nxx3ae+/ObrUMAPEX4jpxSyV9SdLpku6R9KKkv7Z5vBigTkSIWYRwyDKs3uRJA9c19s9wyDIs8ixc\nvteJ+1lRqwCAQBobG3XUUUfp9ttvp4EDkGp9vsSImW0saTN3fy9MScXF4VQgvZqamnTkkUfqtttu\n07Bhw6IuBwD6rFeHU83sPTPbpc2ymdlcM9u+w6a7S3o7TKmlUVtby9e2QMrQwAFIk2w2q9ra2m63\n6W4mbpDaH27dWNJBufUdddohxlVtbS1npnZAUxsOWYaVT55LlizRkUceqVmzZtHA9YD9MxyyDIs8\n28tkMj02cfnOxAFALGWzWf3kJz/RrFmzNHz48KjLAYCS6XImzszWS/qeuz+SW+4naY2k3dz9iTbb\nfU/SA+6e75mukWImDkiPpUuX6vDDD9ett96qfffdN+pyACC4EJcYAYBYaW3gbrnlFho4AGWppybu\nS2a2fe5khu07rsut/2JxS0QpMIsQDlmG1Vme99xzjw4//HDdfPPN+uEPf1j6ohKM/TMcsgyLPAvX\n00zcbZ2su7MYhZRS64kNnNwAJM+9996rMWPG6Oabb9Z+++0XdTkAUBStt93qTnczcccX8LPc3WcU\nsH1kmIkDkuu+++7ToYceqptuukkjRoyIuhwAKLruZuL6fLHfpKGJA5Lp/vvv16GHHqobb7xR+++/\nf9TlAEBJcGIDesQsQjhkGUZ9fb1GjhypoUOHas8999To0aN1ww030MD1EftnOGQZFnkWjuvEAYid\n+vp6TZgwQcuXL/903ZAhQ7R27doIqwKAeOFwKoDYGTlypBoaGjpdv2jRoggqAoBocDi1A+6dCsTb\n6tWrO13f3Nxc4koAIBp9vXdqanHv1A3R1IZDln23atWqTtdXVFSUuJL0Yf8MhyzDIs/28rl3alk2\ncQDi68EHH9Rzzz2nIUOGtFtfWVmp6urqiKoCgPhhJg5AbDz44IM65JBDNHPmTK1bt07Tpk1Tc3Oz\nKioqVF1draqqqqhLBICS4jpxbdDEAfHUtoE78MADoy4HAGKBExvQI2YRwiHLwnXXwJFnWOQZDlmG\nRZ6Fo4kDEKmHHnqIb+AAoBc4nAogMg899JB+9KMfacaMGRo1alTU5QBA7HA4tQOuEwdEjwYOALrG\ndeK6wHXiNkRTGw5Z9qyQBo48wyLPcMgyLPJsj+vEAYgdvoEDgDCYiQNQMjRwAFAYZuIARI4GDgDC\noomDJGYDqrmDAAASaUlEQVQRQiLLDbU2cNOnTy+4gSPPsMgzHLIMizwLRxMHoKjaNnCjR4+OuhwA\nSA1m4gAUDQ0cAPQNM3EASo4GDgCKiyYOkphFCIkspYcffjhYA0eeYZFnOGQZFnkWjiYOQFAPP/yw\nDj74YL6BA4AiK8uZuJqaGmUyGe7aAATW2sBdd911qqqqirocAEisbDarbDarurq6LmfiyrKJK7fP\nDJQCDRwAhMeJDegRswjhlGOWxWzgyjHPYiLPcMgyLPIsHE0cgD7hGzgAiAaHUwH0Gg0cABQXh1MB\nBPfII4/QwAFAhGjiIIlZhJDKIctHHnlEBx10kK699tqiN3DlkGcpkWc4ZBkWeRaOJg5AQdo2cAcd\ndFDU5QBA2WImDkDeaOAAoLSYiQPQZzRwABAvNHGQxCxCSGnMMsoGLo15Rok8wyHLsMizcDRxALrV\nehYq38ABQLwwEwegSxxCBYBoMRMHoGA0cAAQbzRxkMQsQkhpyDJODVwa8owT8gyHLMMiz8KVZRNX\nW1vLzgJ0IU4NHACUq2w2q9ra2m63YSYOwKceffRRVVVV0cABQEwwEwegR48++ijfwAFAgtDEQRKz\nCCElMcvWBu7qq6+OXQOXxDzjjDzDIcuwyLNwNHFAmWvbwB188MFRlwMAyBMzcUAZo4EDgHhjJg7A\nBmjgACDZaOIgiVmEkJKQZZIauCTkmSTkGQ5ZhkWehaOJA8rMY489lpgGDgDQNWbigDLy2GOPqaqq\nSldddZV+9KMfRV0OAKAHzMQBoIEDgJShiYMkZhFCimOWSW7g4phnkpFnOGQZFnkWjiYOSLkkN3AA\ngK4xEwekGA0cACQbM3FAGaKBA4B0o4mDJGYRQopDlq0N3JVXXpn4Bi4OeaYJeYZDlmGRZ+Fo4oCU\nadvAHXLIIVGXAwAoklTMxJnZQZIuVEtTep67X9PNtszEIbVo4AAgXbqbiUt8E2dm/SQ9IykjaaWk\nJyR9z93f62J7mjikEg0cAKRP2k9s2EPSM+7+urt/JGmBpAMirilxmEUIJ4osH3/88dQ2cOybYZFn\nOGQZFnkWLg1N3DaSXmuz/KqkL0ZUC1Byjz/+uEaPHp3KBg4A0LU0HE4dIynj7tW55f8ryd39911s\nz+FUpAYNHACkW6wPp5rZMDOba2avmtl6Mzuuk21OMbOXzGyVmT1mZnu3efofav/N25fU/ps5IJVo\n4ACgvEXexEkaKOlpSRMkrZLU7msyM/uppIskTZE0VNIDkhaa2ba5TR6VtJOZbWNmn5N0oKS7SlR7\najCLEE4psiynBo59MyzyDIcswyLPwkXexLn7Qnef7O63S1rfySZnSLrO3a9x9+fdfbyk1yWdnHv9\nJ5J+IWmJpGWSLnT390tUPlBy5dTAAQC61i/qArpjZv0l7SLp/A5PNUjaq3XB3edJmpfv+x5//PHa\nbrvtJEmDBg3S0KFDlclkJP3rXwIss9yX5Vah3/+KK67QWWedpenTp+uQQw6JzedNap7lutwqLvUk\ndbl1XVzqSfpy67q41BPl72c2m9WKFSvUk1id2GBmKyWd6u4zc8vbqOVs02Hufl+b7c6RdJS7f6MX\nP4MTG5BITzzxhEaNGsU3cABQRmJ9YgPioeO/0NF7xciytYG74ooryq6BY98MizzDIcuwyLNwcW/i\n3pG0TtLgDusHq2UuDki9tg3cj3/846jLAQDERKwPp+bWPSTpKXf/eZt1L0ia5e6TevEzvKamRplM\npt1xeCCOaOAAoDxls1lls1nV1dXF996pZjZQ0g65xfsl/bdaTlJ4191fMbOfSLpe0ilqubzISZLG\nSvqWu7/Si5/HTBwSgQYOABD3mbjd1XLT+ickVUiqy/25TpLc/VZJEyVNVsslRPaSNLo3DRy6xixC\nOCGypIH7F/bNsMgzHLIMizwLF/klRtw9qx6aSXe/TNJlJSkIiBgNHAAgH5EfTi01ZuIQZ60N3OWX\nX65DDz006nIAABFJxExcqTETh7iigQMAdBT3mTjEALMI4fQmSxq4rrFvhkWe4ZBlWORZOJo4IGI0\ncACA3uBwKhAhGjgAQHc4nNpBbW0tX9sicsuWLdPo0aNp4AAAG8hms6qtre12m7Jt4jgztT2a2nDy\nyXLZsmUaNWqULr30Uhq4HrBvhkWe4ZBlWOTZXiaToYkD4qZtA3fYYYdFXQ4AIKGYiQNKiAYOAFAI\nZuKAGKCBAwCEVJZNHCc2bIg8wuksSxq43mPfDIs8wyHLsMizvXxObIj83qlR6CkUICQaOABAoVpv\nD1pXV9flNszEAUXU2sBdcsklGjNmTNTlAAAShpk4IAI0cACAYqKJgyRmEUKor6/XyJEjNXToUO21\n117ad999aeACYN8MizzDIcuwyLNwZTkTB4RWX1+vCRMmaPny5Z+uGzx4sCoqKiKsCgCQZszEAQGM\nHDlSDQ0Nna5ftGhRBBUBANKAmbgOuMQIQlu9enWn65ubm0tcCQAgDbh3ahe4d+qGaGr7ZsCAAZ2u\n53Bq37FvhkWe4ZBlWOTZHvdOBUpk/PjxqqysbLeusrJS1dXVEVUEAEg7ZuKAQOrr6zVt2jQ1Nzer\noqJC1dXVqqqqirosAECCdTcTRxMHAAAQU5zYgB4xixAOWYZFnmGRZzhkGRZ5Fo4mDgAAIIE4nAoA\nABBTHE7tgOvEAQCAOOM6cV3gOnEboqkNhyzDIs+wyDMcsgyLPNvjOnEAAAApxUwcAABATDETBwAA\nkDI0cZDELEJIZBkWeYZFnuGQZVjkWTiaOAAAgARiJg4AACCmmIkDAABIGZo4SGIWISSyDIs8wyLP\ncMgyLPIsHE0cAABAApXlTFxNTY0ymQx3bQAAALGUzWaVzWZVV1fX5UxcWTZx5faZAQBAMnFiA3rE\nLEI4ZBkWeYZFnuGQZVjkWTiaOAAAgATicCoAAEBMcTgVAAAgZWjiIIlZhJDIMizyDIs8wyHLsMiz\ncDRxAAAACcRMHAAAQEwxEwcAAJAyNHGQxCxCSGQZFnmGRZ7hkGVY5Fk4mjgAAIAEYiYOAAAgppiJ\nAwAASJmybOJqa2s59t4BeYRDlmGRZ1jkGQ5ZhkWe7WWzWdXW1na7Tb/SlBIvPYUCAAAQpUwmo0wm\no7q6ui63YSYOAAAgppiJAwAASBmaOEhiFiEksgyLPMMiz3DIMizyLBxNHAAAQAIxEwcAABBTzMQB\nAACkDE0cJDGLEBJZhkWeYZFnOGQZFnkWjiYOAAAggZiJAwAAiClm4gAAAFKGJg6SmEUIiSzDIs+w\nyDMcsgyLPAtHEwcAAJBAzMQBAADEFDNxAAAAKUMTB0nMIoRElmGRZ1jkGQ5ZhkWehUtNE2dms83s\nPTObFXUtAAAAxZaamTgzGy5pU0nHufsR3WzHTBwAAEiEspiJc/elkj6Kug4AAIBSSE0Th75hFiEc\nsgyLPMMiz3DIMizyLBxNHCRJTz75ZNQlpAZZhkWeYZFnOGQZFnkWLpImzsyGmdlcM3vVzNab2XGd\nbHOKmb1kZqvM7DEz27vDc8vM7Akzq2jzMobdeumf//xn1CWkBlmGRZ5hkWc4ZBkWeRYuqm/iBkp6\nWtIESavUofkys59KukjSFElDJT0gaaGZbStJ7n6pu+/s7ru4e3Pbl4Yssi9f7eb72p626+75rp7r\nuL6z7aL42rq3P7OQ14XOM591Scqy0Nf2Ns9C1pdLnqX4Xe9sHXnm91xf1hVbnP/uZN/s3XaF5tmV\nSJo4d1/o7pPd/XZJ6zvZ5AxJ17n7Ne7+vLuPl/S6pJO7ek8zu1vSrZJGm9krZrZnX+uMw//ZpWri\nVqxY0W0dIcT5L6KunuvNX0RxzrLQ18bhL/a05BmXJo48wzVxpciyqzpCv47f9XCvLWUTF/klRsxs\npaRT3X1mbrm/pI8lHZlr8lq3u1jSTu6e6ePP45ArAABIjK4uMdKv1IXkYUtJG0t6s8P6tyRt3dc3\n7yoIAACAJOHsVAAAgASKYxP3jqR1kgZ3WD9YLXNxAAAAZS92TZy7r5H0uKQDOjy1v1rOUgUAACh7\nkczEmdlASTvkFjeS9BUzGyrpXXd/RdL/SLrezB5RS+N2klrm4S6Pol4AAIC4ieTsVDPLSGrKLbr+\ndX236e7+s9w2J0s6U9IQSX+SdLq731fiUgEAAGIp8kuMIBnMbIWkD9RyXb/33H2/aCtKPjPbRNKz\nkm51919GXU9SmdkgSYvVcmShv6TL3P3iaKtKptwF1a+X9AVJn0j6jbvfFm1VyWZmsyUNl9To7kdE\nXU8SmdlBki5Uy5G789z9mohLig2aOOTFzF6S9C13/39R15IWZvZbSZWSXnb3M6OuJ6nMbCNJ/d29\nOdcYPyNpD3d/O+LSEsfMtpa0lbs/bWaD1TKfvIO7r4q4tMQys+GSNpV0HE1c4cysn1p+pzOSVkp6\nQtL33P29KOuKi9id2IBY4xp7gZjZDpK+LmmhyLVP3H19m9vvfVbSaknN3bwEXXD3N9z96dyf31TL\n1QK2iLaqZHP3pZI+irqOBNtD0jPu/rq7fyRpgTY88bFs0cQhXy7pXjN7xMyOirqYFLhA0llRF5EW\nZraZmT0l6WVJU919ZdQ1JZ2Z7SppI3d/LepaUNa2kdR2H3xV0hcjqiV24njHBsTTD9z99dzhlrvN\n7E/u/qeoi0oiMztE0gvu/lcz2zvqetLA3T+Q9F0z20rSEjNrcPe/Rl1XUpnZFpJmSBoXdS0oe8x8\ndYNv4lLIzIaZ2Vwze9XM1pvZcZ1sc4qZvWRmq8zssbbNRO65ZWb2hJlVSJK7v5773zfU8nX2LqX6\nPFErQp57SjoyN2d4gaQTzGxy6T5RtIqxf7Zy97ckZSUNLfoHiYFiZGlmAyTNlnSuuz9Uuk8TvSLu\nm2XbiPQ1U0n/UPtv3r6k9t/MlTWauHQaKOlpSRMkrVKHv0DM7KeSLpI0RS3/sXtA0sLcmWly90vd\nfWd336V1WNzMNs299nOSfijpzyX7NNELmqe7n+3uX3b3r0r6v5KucvcpJfw8UQu9f27VZv/cTNI+\nufcvB6GzNEnTJTW5+42l+xixETTPti8tRfEx1adMJT0qaScz2yb3358DJd1Votrjz915pPihlrN5\nju2w7mFJV3RY94Kk33XxHl+V9GTu8SdJ1VF/riTn2WG74ySdH/XnSnKeknaXtCy3fy7r+H7l8giU\n5d5que3hE7ksl6nlrPTIP18S88w9f7ektyR9LOkVSXtG/dmSlqmkgyU9L+lFSeOi/hxxejATV2bM\nrL9aDoWe3+GpBkl7dfYad39JZXJ4qlC9ybMtd59RjLqSqpf756OSdi5yaYnTyyzvk7RxkUtLpN7+\nrrv7iGLWlWT5Zuru8yTNK2FpicHh1PKzpVr+kn6zw/q31HJrMxSGPMMiz3DIMizyDI9M+4gmDgAA\nIIFo4srPO2qZeRncYf1gSa+XvpzEI8+wyDMcsgyLPMMj0z6iiSsz7r5GLbfS6XjF6/3VclYQCkCe\nYZFnOGQZFnmGR6Z9x4kNKWRmAyXtkFvcSNJXzGyopHfd/RVJ/yPpejN7RC2/KCepZf7g8ijqjTvy\nDIs8wyHLsMgzPDItsqhPj+UR/qGWGwWvzz3WtfnztW22OVnSS2q5x+SjkvaOuu64PsiTPOP6IEvy\njPuDTIv7sFyAAAAASBBm4gAAABKIJg4AACCBaOIAAAASiCYOAAAggWjiAAAAEogmDgAAIIFo4gAA\nABKIJg4AACCBaOIAAAASiCYOAApkZgPM7AUz+0HUtQAoXzRxAFC4EyVtLmlKdxuZ2cZm9pyZbVOa\nsgCUE5o4ACiAmW0i6euSzpY03MxGdLP5rpK2cPd/lKQ4AGWFJg4ACnOKpEskXStpuaTfdLPtvpKa\nSlEUgPJDEwcAeTKz/yPpi+7+rLuvk1QnaU8zO6jDdj82s/+VdLqkz5nZ/5rZ1yMoGUCKmbtHXQMA\nJIKZ/UrSLe7+t9yySfqTpDXuvkuHbftLek/SLu7+QsmLBZB6fBMHAHkwsy0kbd7awEmSt/wr+BxJ\nQ81sTIeX/EDShzRwAIqFJg4A8lMt6Q8dV7r7HZKekFSX+2au1f6SsqUpDUA5ookDgB6Y2WBJ/d39\ntS42+S9J35R0VJt1I5Rr4sxsbzMbUNQiAZQdZuIAoAe5kxQelPRWN5tNl7RG0o7uvs7MPpa0l6Tn\nJE109/OKXiiAskITBwDdMLOtJb0kKZ9v0lzSz9x9hpldKGmtpLclXeHuHxexTABliCYOAAAggZiJ\nAwAASCCaOAAAgASiiQMAAEggmjgAAIAEookDAABIIJo4AACABKKJAwAASCCaOAAAgAT6/wsNBajn\noDeVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.figure(figsize=(10, 6))\n", + "pyplot.tick_params(axis='both', labelsize=14) #increase tick font size\n", + "pyplot.grid(True) #turn on grid lines\n", + "pyplot.xlabel('$\\Delta t$', fontsize=16) #x label\n", + "pyplot.ylabel('Error', fontsize=16) #y label\n", + "pyplot.loglog(dt_values, error_values, 'ko-') #log-log plot\n", + "pyplot.axis('equal') #make axes scale equally;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the kind of result we like to see! As $\\Delta t$ shrinks (towards the left), the error gets smaller and smaller, like it should." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We calculated the error for several different timestep sizes using two nested `for` loops. That worked, but whenever possible, we like to re-use code (and not just copy and paste it!). \n", + "\n", + "Create a function that implements Euler's method and re-write the error analysis cell to use your function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/01_03_PhugoidFullModel.ipynb b/lecture_22/01_phugoid/01_03_PhugoidFullModel.ipynb new file mode 100644 index 0000000..87184de --- /dev/null +++ b/lecture_22/01_phugoid/01_03_PhugoidFullModel.ipynb @@ -0,0 +1,943 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, I. Hawke. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Full phugoid model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the third IPython Notebook of the series on the _phugoid model of glider flight_, our first learning module of the course [\"Practical Numerical Methods with Python\"](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about). In the first notebook, we described the physics of the trajectories known as phugoids obtained from an exchange of potential and kinetic energy in an idealized motion with no drag. We gave you a neat little code to play with and plot various phugoid curves.\n", + "\n", + "In the second notebook, we looked at the equation representing small perturbations on the straight-line phugoid, resulting in simple harmonic motion. This is a second-order ordinary differential equation, and we solved it numerically using **Euler's method**: the simplest numerical method of all. We learned about convergence and calculated the error of the numerical solution, comparing with an analytical solution. That is a good foundation!\n", + "\n", + "Now, let's go back to the dynamical model, and take away the idealization of no-drag. Let's remind ourselves of the forces affecting an aircraft, considering now that it may be accelerating, with an instantaneous upward trajectory. We use the designation $\\theta$ for the angle, and consider it positive upwards." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "In lesson 1, we wrote the force balance in the directions perpendicular and parallel to the trajectory for a glider in _equilibrium_. What if the forces are _not_ in balance? Well, there will be acceleration terms in the equations of motion, and we would have in that case:\n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Recall, from our first lesson, that the ratio of lift to weight is known from the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynam-ically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The initial value problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to visualize the flight trajectories predicted by this model, we are going to need to integrate the spatial coordinates, which depend on both the forward velocity (tangential to the trajectory) and the trajectory angle. The position of the glider on a vertical plane will be designated by coordinates $(x, y)$ with respect to an inertial frame of reference, and are obtained from:\n", + "\n", + "\\begin{align}\n", + "x'(t) & = v \\cos(\\theta) \\\\\n", + "y'(t) & = v \\sin(\\theta).\n", + "\\end{align}\n", + "\n", + "Augmenting our original two differential equations by the two equations above, we have a system of four first-order differential equations to solve. We will use a time-stepping approach, like in the previous lesson. To do so, we do need *initial values* for every unknown:\n", + "\n", + "$$\n", + "v(0) = v_0 \\quad \\text{and} \\quad \\theta(0) = \\theta_0\\\\\n", + "x(0) = x_0 \\quad \\text{and} \\quad y(0) = y_0\n", + "$$\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve with Euler's method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know how to apply Euler's method from the previous lesson. We replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "Alright, we know where this is going. At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we've learned before, the system of differential equations can also be written as a vector equation:\n", + "\n", + "$$u'(t) = f(u)$$\n", + "\n", + "where\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix}.\n", + "\\end{align}\n", + "\n", + "It's a bit tricky to code the solution using a NumPy array holding all your independent variables. But if you do, a function for the Euler step can be written that takes any number of simultaneous equations. It simply steps in time using the same line of code:\n", + "\n", + "```Python\n", + "def euler_step(u, f, dt):\n", + " return u + dt * f(u)\n", + "```\n", + "\n", + "This function can take a NumPy array `u` with any number of components. All we need to do is create an appropriate function `f(u)` describing our system of differential equations. Notice how we are passing a _function_ as part of the arguments list to `euler_step()`. Neat!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### And solve!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we start by loading the modules and libraries that we need for this problem. We'll need a few transcendental functions, including the $\\log$ for a convergence study later on. And remember: the line `%matplotlib inline` is a magic function that tells Matplotlib to give us the plots in the notebook (the default behavior of Matplotlib is to open a pop-up window). In addition, we are importing the module `rcParams` to define notebook-wide plotting parameters: font family and size. Here we go!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log, ceil\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set things up to start our numerical solution: the parameter \n", + "values and the _initial values_. You know what the acceleration of gravity is: 9.8 m/s$^2$, but what are good values for $C_D/C_L$, the inverse of the aerodynamic efficiency? Some possible values are given on a table in the Wikipedia entry for [lift-to-drag ratio](http://en.wikipedia.org/wiki/Lift-to-drag_ratio): a modern sailplane can have $L/D$ of 40 to 60, depending on span (and, in case you're interested, a flying squirrel has $L/D$ close to 2).\n", + "\n", + "For the _trim velocity_, the speed range for typical sailplanes is between 65 and 280 km/hr, according to Wikipedia (it must be right!). Let's convert that to meters per second: 18 to 78 m/s. We'll pick a value somewhere in the middle of this range.\n", + "\n", + "Here's a possible set of parameters for the simulation, but be sure to come back and change some of these, and see what happens!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 30.0 # trim velocity in m s^{-1} \n", + "C_D = 1/40 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = v_t # start at the trim velocity (or add a delta)\n", + "theta0 = 0 # initial angle of trajectory\n", + "x0 = 0 # horizotal position is arbitrary\n", + "y0 = 1000 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll define a function `f()` to match the right-hand side of Equation (15), the full differential system in vector form. This function assumes that we have available the parameters defined above. If you re-execute the cell above with different parameter values, you can just run the solution without re-executing the function definition." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the code defining function `f(u)` with the differential equations, and convince yourself that it's right!\n", + "\n", + "\\begin{align}\n", + "u & = \\begin{pmatrix} v \\\\ \\theta \\\\ x \\\\ y \\end{pmatrix} & f(u) & = \\begin{pmatrix} - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\ - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v \\\\ v\\cos\\theta \\\\ v\\sin\\theta \\end{pmatrix} \\nonumber\n", + "\\end{align}\n", + "\n", + "Now, Euler's method is implemented in a simple function `euler_step()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equations.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After defining a final time for the solution, and the time step $\\Delta t$, we can construct the grid in time using the NumPy function [`linspace()`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html). Make sure you study the decisions we made here to build the time grid: why do we add 1 to the definition of `N`, for example?\n", + "\n", + "Look at the code below, and make sure you understand the following aspects of it.\n", + "\n", + "* The NumPy array `u` contains the solution at every time-step, consisting of the velocity, angle and location of the glider. \n", + "* The first element of the array `u` is set to contain the initial conditions. \n", + "* In the `for`-loop, the function `euler_step()` is called to get the solution at time-step $n+1$. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 100 # final time\n", + "dt = 0.1 # time increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u = numpy.empty((N, 4))\n", + "u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values\n", + "\n", + "# time loop - Euler method\n", + "for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to plot the path of the glider, we need the location (`x`, `y`) with respect to time. That information is already contained in our NumPy array containing the solution; we just need to pluck it out. \n", + "\n", + "Make sure you understand the indices to `u`, below, and the use of the colon notation. If any of it is confusing, read the Python documentation on [Indexing](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 3.00000000e+01 -1.11022302e-17 6.00000000e+00 1.00000000e+03]\n", + "[ 1000. 1000. 1000. ..., 1000. 1000. 1000.]\n", + "[ 3.00000000e+01 -1.11022302e-17 6.00000000e+00 1.00000000e+03]\n" + ] + } + ], + "source": [ + "# get the glider's position with respect to the time\n", + "print u[2]\n", + "x = u[:,2]\n", + "y = u[:,3]\n", + "print y\n", + "u[2]=euler_step(u[1],f,dt)\n", + "print u[2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to plot the path of the glider and get the distance travelled!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvgAAAI3CAYAAADunC+CAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XucHFWd/vHnIcglIKDcUSPRFUFcZWcEBBV10Yigs+AF\nVhQh0XVXCT8XNVEXNfGyuokiCnhdIyq4I96IrLdF8Ua8gTMoixpERFgVgYACMlw0+f7+ONWmUunq\nmeqE1JnO5/16zWtmuupUneqnp+db1VWnHBECAAAAMBi2aLsDAAAAADYeCnwAAABggFDgAwAAAAOE\nAh8AAAAYIBT4AAAAwAChwAcAAAAGCAU+AAAAMEAo8AEAAIABQoEPAAAADBAKfExrtp9k+z22x2zf\naPte27fb/qXtL9tebPuptrestHuy7TWVr1ldlv9k2zfb/lzDfk1p+eit3+cfm47t+9leaPty23+y\nPWH7miK36t/AA7u0P8L2LbbP3cj92r/L+oc25jruC7a3t/0j27+yvXfb/Rkkth9ke3nxWriwYdtn\nFf9Tbixe41fZfpftXafY/sW2v1W81v9k+39tL7K9XX9bs86yZ9g+xfYPbf/R9m3Fa+jU6v++mvbb\n2n6D7Z/YvsP2rbYvsT13Q/uG9lDgY1qy/VDb35T0bUmPlfSfkp4v6XGSni3pfZIeIulNki6WdJPt\nvy8t4lJJj5Y0p/g9alb1XEk7Szra9gMadHGqy89G8c9mje1vtN2Xkn6f//uM7V8Xz9OL2+5LJs6T\n9B+SbpE0IulJkj4m6YGSTpN0dDFf3d/AsZIeIOl421ttxH5drfQ3eOAk6++ptKOwutsOSoPlbDfF\nHY2h4uuhkp7e7/qwLtuvkPRTpf8PjV4Lts+UdKHSa/olkp6s9BqfL+lK23/bo+0M258v5p+QdJyk\np0n6qtL/p8ttP6jh5pSXv52kSyS9V9IvlP4Gj5L0v5JOl/Rd2/fv0X4PSZdLerPS/8qnK/0v/aOk\nZbYvtD2j3/6hPZPu2QG5sX2g0pvj9pJeFBH/1WW2b9t+r6T3KL0J7yhpj87EiLhL0s9s3znJ6j4o\n6QBJ34mIP0y1jw2Wj946z/+KJs//fSw0DXbYNgXbs5WKgZB0UkT8ppg0VuyQ/UTSdZMs5ixJ+0j6\nckTcu7H6VizrZxvjCOlGNtlr53tKO007S+KTqw1UvEbPU9ppeoek50h6TIP285X+h6yU9JSIuLuY\ndJnt6yWdK+nLtveLiD91WcQSpZ3cb0k6KiI6+f/A9h8lvVXSf9seLk1r4uOSHi/p3Ig4sfT4Ctur\nJc1T2v5/6LJtVtpxeYSkt0XEotLki21fJOlZkt4t6ZV99A0t4gg+phXbu0v6gqSdJL2mpriXJEXE\nGqU3pR/2u76I+FlEHBYRb+h3Gehf6fn/t7b7gq4eUXy/t1TcS5Ii4lUR8eXJFhARl0fEEyPi7fdJ\nD6eZiPhLRLw4Io6KiFvb7s8AOFJpp+qAiHiLpD9rijvotneU9JZi/reWintJUkR8UulTgb0kva5L\n+4dL+n9F+9O6FPDvlPQHpU+hX9JgmzrLP0xph2W10qdlVacV055l+2ldpr9Y6VPv25V2fqo677sv\nt/3Ipv1DuyjwMd28RelI/P9JOnuymYs31NPv604NCLfdAUw7nVNq/txqL+5brvm5reWgmc8WO5BX\n9dH2uUoHk1YrHVjq5vNKeZ7UZdqJSmdK3BgR369OLD5l+mLRvnGBL+mfiu8/qu5gF8u/UekTIdUs\n/yVKOx9fre68FO1/pPS/doa6bx8yRoGPacP2TkpvMiHp0w0+zvwfScsk/bLBuh5aOu+2c97sYTXz\nbmf7rbZX2r7L9k22v2j7KQ3W9/ziAq6bbN9TXMj1Vdsn2N6iMu+JlQsHVxePP8v2RV734sZJz6fv\nnHsv6Y3FQ0+pWX7XC4dtP8H2BbZ/b/svxeO/Ki1/P6eLnb9VbN+9tv9g+7u2X2n7fl369Nhu66rp\n/06232z7x04XiN1p+2rby2z3/Cje9sNsv8/pgrk7nS6e+6XtT9s+qXx6h+1ri+dpltI/5I+VnyPb\nH+2y/D1sL3W6oO5PXntx3ZLi06jq/OdUtvkbtrew/a9OF83dVpq2yOs/R6ttv6m0vG6ZrdfPpmyf\nXDwXnaJn+0ofzpzCMqZ8EaztHYrn7Grbdxev8f+xPdJlOavrllMs63G2v1AsY8L2FU7nZ3ftn9Jp\nRlLK/ObKep4zhe3crljObaXlXFZZzquKeS+rbMuZlWWtN714bs6wfX3xGv6p7VfZdtFmJ9vvLabf\nZftntk+ZQr9f6LXvJ/fYvsHpPeq4ydrmpChy+3Vk8X1lREzUzHNZ8X3PLq+7zqcHP+qxjk77g2zv\n3LB/RxTLv6zHPJcpveaeWX7Q6bz8J1T60Kv9UQ37hrZFBF98TYsvpY8i1ygdTXneRlrmQ0vLnFV6\nfEtJjyq+OtMP69J+V0lXFvNcrPSG/neSjlf66Pa0bssvtd9K0meLeS5ROmJ0oKR/VLpQd42kiyRt\nU2qzQ9GvE0vLfpWkFUrnWQ4pnZq0WtI3pvAc7FIs733F8n4oab/S9j+qmG/b4venldb7GqUC6B+L\n7T5R0p8k/aq0/F8X835W6Z/MkNI5qV8slvN9Sdt2eV6q6+r2/D1W0m+VjiC/U9LhShd5LlQqqP4s\n6eU12328pLuUPiJ/TfG8HyZpgaSbO89Faf6/Kfr0m6I/ry8/R5L2rCz/cKUL1SYkLZJ0cPH15mK9\nt0p6cqXNnqUsVkv6pqQLJJ0j6amSDpL0kaJvZxfz/qqYd7TIbZfS8jqZvbfIZajazz7/bnYqlvsv\nRV/+VHnN7F6ad/9Shg/skvFwafpQl3XtpXTB7BpJX5b0jOK1doLSTvt5pfaHFMvcqtR+u9L01xev\nt38o1jtP0qpi+usr671fsayRLsvvfG0/hefKXbbzeZXlPKCYd3bx+/8U851ZWVZ1+jlKf/cnF9k+\nR9JVpdfH9sVzdkKx/hO19rW9sKa/MyV9qZjn68UyD5T0Qkk/Lh6/UNKWG/P9fVN9KRWsqyVdOIV5\nfzHZvEoXcndyPan0+BZKf/vr5Vhp/6xS+6c02I69Su1e1WO++aX59i49fmjp8ef0aP+uYr57JN2v\n7fz4mvpX6x3gi6+pfklaXHpD+ruNtMyuBX5lnl4Ffucf4XclzahMe6BSMdirQP1AMf2bklyZNkPS\neNH2/V3aPrm07O9X33yLImDSAr80/6JieT3bVJ6zayTtUJn+Ia1b4F8r6fM1y/pksZx3Ns2n9Pyu\nljSvS9vHFdP+LOmQyrQnSrq3mHZQTdt7JI13mXZtsdwX93iOHqF0XmvXf55KI2msUdq5mN0ji3sl\nvbcybUtJd0h6Y/H7a4t5b5G0dU1/fiHpPzfG30xluUcV6769xzxdC/zS9HIB3q3A/3Yx/Wtdpu1e\nbPdUl/8rVYpypZ3NNUo7XOsVMJP1v8Fz1XM7K/N+Rj0Kw2J65/VxRGXafsW0P0v6L0mPrkx/dun1\nsl6RrnTR6BpJX+wy7X6Sfl70bWkfz8F/Srqhz69fbqTXbJMC/+5i3mU95tm9lOsbS4/v0e3xLu0P\nLs13QoPtePxU2mnte81qSU8qPf6P3R7v0v61pfkesjEy4GvTfHGKDqaT8njDd7TWi4LTaD7PVPqI\n9N8jYnV5eqQL5N7Xo/0jJb1MNRdgFct7p9IRwHnuPd7y0oiongf9AqU38fvS2RFxe+WxBUoFdMcZ\nSgVrNx9S2r4X9bHuBSqO7kbEeqedRDp/9OtKR9JeW5n8LqUdqC9GxKU1bb/VR5863qp09PSKiPh8\nl+Wfr/QJzw7FvHUs6W2Vtn+R9Eilo/JSOv3sHqWj6sevtwD7GZIerh6vxVzZfqrSJzKhLs9TpNMv\nPthgkR+N9Uc6ubj4vqOk2uEOM/XriPhq+YGI+LlSQbyF0qc5V1bafE3p+dxJldFkilNMXlhMX+/C\n9uI95t1Kr8tXuMfwizV2krRbn19TGm9+Y3E6dbBzjcl656eXlKftUPr5/jXzTLX9ZDZ0+fd1/9Ay\nCnygfyOln79VM88lPdo/X+kf5d1Kp+N007kw7H5Kp4/U+W71gYi4NSJu6tFmY+i23tsj4nel38+M\niP+taX998X03Nx/nvjM8Y6/neKXSc/yUzgO2H6J0qouUdgDqnCxpvXOzJ+M0lvtI0bdey7+o6NvR\nrr8ZzdURcXP1wYj4XWfHKiJWKZ3+5Jr+vkLSpRHx46lvRTY6f2N/VpfXWqFX/lXrnQsdEXconUoh\nlYbSnSbGah6/qW56pIspOzvle1YmH1t8/2NEXFGz7M570rZKp3lMWUQ8PyJm9Pm1Y5N1AZs7xsHH\ndFIudHoeSbB9s9LRorKIiI15I51HFd9XRf0FWL/v0f6xxfdtJN1VXBNXFVo7pFuvO+GuVwRuIpOu\ntyh4X6p0Lu/+Srl0e+/ZXumUlUk5Xfz6MKXnZp7tk+pmLebZ3vYDIo2lXz5q+avuzaSI+KUaXJhd\n8gilTKPX8pVO9ZFSofQIpVMfqqaa6/uVjrwO2T6o86lEsTNzpKbvCBidv7HfVj8hK+n1N1Z1S83j\ndynlsE2DZbUtVL89fym+TzZ968rjnfeknWzXjYw01fekaS0i/mz7XqWDK71eF+Vp5U8z76iZZ6rt\nJ7Ohy7+v+4eWUeBjOikfUdpH6fz0Ok9UOgVDSkdiX66Nf3Oizk7GXT3m6TV8YOeI1I1KF2RONnRe\n7WgQ1dN7NqG6okvSX8eR/qbSzaquUvrY/+da+49iL6Uj2VKzoQPLR/M+pCkMmVpaZ7ltr+z6NdXl\nl3cK645O9nx+OyLi+7Z/orTz8gqt/UToX5R2mj4zleVkaEP/xqqm9HxOI2s2cHpV53V4rdK5+pP9\nTd7QcPnTzfVKp7f1Oj2oPO3/Sj/fpPTp7NZ9tp9K37otY6rLb9r+L2q2M42WUeBjOvmG0j/zLZU+\nGv5U3YxRGvPY9n11mkqnYJzZY571hoAs6Qybt01x3uwgWqxU3N+qdCHXqvJE93+n39tKP98dET/r\ns+22fa5/qsvv9dooT7utdq6pe7/Szs7zbZ+qdIRunqSPxEa8Q+wmtqF/Y2im8zrc6r54T7L9n0qj\nxvTjzoj4m43Znym4Qmn0rL17zFOe9teDUBGxxvbPlEZ8mmr7ulMZ1xMRv7N9i9JgA1NZ/h0R8evK\nuqIyT6/2V3W5zgsZ4xx8TBsR8UdJH1U6qnScu4yfvol1isqdXRovvaLXOb2d8bV3tL1b3Uy2D7T9\nEncZN30a+HulfyLfrxb3GyIi7tTa01/27TWv7eNtH1t66Celnx/Wo939ijHMm96U6GqtPeJcu/zS\ntImizYb6pFKBto3SDWyeqzQEapOLUHPT+Rvby/aMmnmm23nzOev8bezV4z1Ntg8p3pMe2HD50+Yi\n20LnTsz72q7byTyw+H5DRFQ/Vf6y0v+rx/VYR6f9pRFRd0pVna9Mcfmhtdsi6a/XnnSua+nV/nFF\n+y827BtaNm0LfNuHOt2cpvYGOBhIiyX9TqlweWPvWe9z5TsbPrVmnl4XxnaGupN6H9X6oNKIKf0e\n7Z6qznm56xS0to+zPdznMjvvMXVF8t59LleSzi+We5jt7bvNYPtvlcZJ/+vzG+mOj98v2j69x/K/\nqfSRdLXQWe95sj27eJ4eUBwt/8IUlv90pX+cFxQj42yQ4jqQTxTrfbnSqWlfiYjrezbMW+dv7H5K\no+l00+tvbGMoZ1PO/Am2j94IyzmgeO3k8P/4/OL7ZDc2+pjSCF/VEYl6moYX2X5O6V4WM5TundDN\nMUp/x+d0mfZxpdx3t31IdWJxkOqoov1H+uhfp82Bth/UZfm7ae2F0N1ucPcRFTfBsl29HkPF+/4s\npVPbPt5H/9CiHN5QGrG9je3TlcZGfoSmeF617YOd7rZ5U3H3wittn1ZcADhZ22cVbX/ndBfFG5zu\nwvkfdUdVi7sLLnW68+JdRdtzbe/TaIOxjmJYvKOVTvn4N9uv7DV/Ufg9qtc8G9CXH2ntEZp/qx5h\ntL2L0k1G6tpfpVS8W9Jp3Y6G2Z6n9BHvmV2G99vYOudX/rUfth+sdAOlfu9ieInS9j2puOCzqvb5\nmYJ3KY2Dv62kt1cnFnm8V2ms8CWVya9R+sd7lO3Hd2n7DKV/jJ/o8ryv9zwpXeA6qrVDz71J6RSZ\nR9teb6hS2y9QuuD4NtUPIdqP9xffZyvdpbLntQm2H+O1d0Xt9WlDKyLiW0rv9Zb0hup023sqXcB9\nXypf+1LO/HRJb5nqQiLiHq09Baa8nNdJ+nBEND1ffqOLiMu1didxcbdhMG3/P6XTVt41jU/9mpKI\nuE3pQJIlvdH2Ohej2n6h0o2ufqv132MUEdcovQdZ0tu67MQtVHot/FhdCnCnu4BfXdQPT+6y/O8o\n7YRsIenfu2zCvyvtnPx3RHQb0etcpfsC7KDKsKjFJ5dvV6qx3l8+7RXTRL8D6LfxpfSR9kqlj+YP\n1yQ3KCq1O17p3O0VSv+0Z0s6Vekf/w8kzaxpt4XSXuutkl6tVCjOUro99E+Kdf99l3Z7KN0A6DZJ\nL1a6Wc/TlS4uvFNdbpjEV+PXwkOVjrCuVnqD+n9KR/Ieq1TYnKg0PvitxTw3Snpzqf1MpQJrTul1\n9PTisZlK5/nvr8pdCovHdiwtZ1elcxlXK10jcJRSQf7CIu9PdFn+dqX291O6Gc1qpdM05irdkXKO\nUrH2Z6Wbad2vS9/nlpa9f/G11wY8pw9WOrXkz8W2HiTp08XfyQGl56Tbc7Z3zTL31No72V6rVIwd\nVDxPFypdAFpd1paVnHvdKGz/0vI/XfxtDiuN///Dou8n1vTtWKXTY27V2jvZPlnpTrOdj6+36dJu\nQdGnHysdVT5K6eK1yyrzPbVY9oRSIfj44ustxfO8SpX3guL19Ogi+85dhTvZ7thtO7r07+Ki7dVT\nmLdzp+C/qMFdKiU9oOjTK7T2Tradfj68mGf74vfOjaRWK/1t7q904eFWxc8HlqYfWzx2/9K6HqR0\ngfZqSV8tMu7cNfkqpcK/251y3WP5WxfzPLJ4vjvvE/9aXX8x37eL6cuK5Z1S/L644d/Yx4t2X1T6\nOzhB6X/Cx4rpDyv68z9Fn88r+vOQ0t9ot+l7VNp33pOWlrdnKturdIrXBcX0nxV9HCqe948Ur5XP\nStpiU73fb+hXsd37l56bzs0F13nN9mj/3uL5+IHSxccHKhXEdytdaPy3PdrOUCrCVyudUvN0pfeB\ndxWP/ULSg2ravqn02j2vZp7tlN6rVhevh8OU3pc+VrT9QfX1XGm/h9bevOwMpbs1P614ja5W+hRt\n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\nouXLl68z30UXXaSRkZH12p988slatmzZOo+Nj49rZGREq1atWufxRYsWacmSJes8dv3112tkZEQr\nV657vfBZZ5213tGEiYkJjYyMrDdW7+joqObOnbte34477rhpvR2nnHLKQGxHxyBtx0Me8pCB2I5B\nyaO8HaeccspAbIc0GHlUt6Pzvjbdt6NsULZj5cqVA7Ed0zmP0dHRv9Zis2fP1gEHHKBTTz11veXk\nwg1HnsyK7TVKI9bMjojru0zfQtItSufFz+l2cyzb35H0BEmvjoj3FI89rMdqvy1pL0kvlHRp8diN\nEXFn0fZMpTHuPxkRJ3RZ3zylcfWviIgDarZrSNLY2NiYhoaGenQFAAAAbRgfH9fw8LAkDUfEeNv9\nKRvoI/jFxbGfVxoG8/DqdNs7KA2PuUbS50rtflX3JekvxWy/Kz1+Z2mxnym+P6WmW09X2in59IZs\nGwAAANDNQBf4hbdLulfSXNv3r0ybL2lrpbvc/t/GWFlEXCLpm5L2sr3OzayKTwaOlrRK0tkbY31o\nR/XjQeSDbPJFNnkjn3yRDZqadgW+7V1s7267fI77bsVju1fnL25Q9VJJu0j6iu1Dbc+2/Wqli2gv\nk9TzJCrb25XW2blYd+fisV26NHmRpOskfdj2Sbb3tj1H0peUPi04triLLqaphQsXtt0F1CCbfJFN\n3sgnX2SDpqbdOfi2r9XaC13XmSQpIqLraDm2D5L0eqXz7beXdK2k/5L0zoi4d5J1LpK0SOnUmqrr\nImK9c/aL03/eIOkYSQ9WGpXnYklvi4irJlkf5+Bn7vrrr2dUg0yRTb7IJm/kky+yyVPO5+BPuwJ/\nc0CBDwAAkLecC/xpd4oOAAAAgHoU+AAAAMAAocAH+lC9+QbyQTb5Ipu8kU++yAZNUeADfZiYmGi7\nC6hBNvkim7yRT77IBk1xkW2GuMgWAAAgb1xkCwAAAGCToMAHAAAABggFPtCHVatWtd0F1CCbfJFN\n3sgnX2SDpijwgT7Mmzev7S6gBtnki2zyRj75Ihs0RYEP9GHx4sVtdwE1yCZfZJM38skX2aApCnyg\nD4xulC+yyRfZ5I188kU2aIoCHwAAABggFPgAAADAAKHAB/qwbNmytruAGmSTL7LJG/nki2zQFAU+\n0Ifx8axuWIcSsskX2eSNfPJFNmjKEdF2H1Bhe0jS2NjYGBfWAAAAZGh8fFzDw8OSNBwRWe2FcQQf\nAAAAGCAU+AAAAMAAocAHAAAABggFPtCHkZGRtruAGmSTL7LJG/nki2zQFAU+0If58+e33QXUIJt8\nkU3eyCdfZIOmGEUnQ4yiAwAAkDdG0QEAAACwSVDgAwAAAAOEAh/ow/Lly9vuAmqQTb7IJm/kky+y\nQVMU+EAfRkdH2+4CapBNvsgmb+STL7JBU1xkmyEusgUAAMgbF9kCAAAA2CQo8AEAAIABQoEPAAAA\nDBAKfKAPc+fObbsLqEE2+SKbvJFPvsgGTVHgA32YM2dO211ADbLJF9nkjXzyRTZoilF0MsQoOgAA\nAHljFB0AAAAAmwQFPgAAADBAKPCBPqxYsaLtLqAG2eSLbPJGPvkiGzRFgQ/0YenSpW13ATXIJl9k\nkzfyyRfZoCkuss0QF9nmb2JiQjNnzmy7G+iCbPJFNnkjn3yRTZ64yBYYMLzR5ots8kU2eSOffJEN\nmqLABwAAAAYIBT4AAAAwQCjwgT4sWLCg7S6gBtnki2zyRj75Ihs0RYEP9GHWrFltdwE1yCZfZJM3\n8skX2aApRtHJEKPoAAAA5I1RdAAAAABsEhT4AAAAwAChwAf6sHLlyra7gBpkky+yyRv55Its0BQF\nPtCHhQsXtt0F1CCbfJFN3sgnX2SDpijwgT6cffbZbXcBNcgmX2STN/LJF9mgKQp8oA8MWZYvsskX\n2eSNfPJFNmiKAh8AAAAYIBT4AAAAwAChwAf6sGTJkra7gBpkky+yyRv55Its0BQFPtCHiYmJtruA\nGmSTL7LJG/nki2zQlCOi7T6gwvaQpLGxsTENDQ213R0AAABUjI+Pa3h4WJKGI2K87f6UcQQfAAAA\nGCAU+AAAAMAAocAH+rBq1aq2u4AaZJMvsskb+eSLbNAUBT7Qh3nz5rXdBdQgm3yRTd7IJ19kg6Yo\n8IE+LF68uO0uoAbZ5Its8kY++SIbNDVtC3zbh9q+yvYa29zDGZsUoxvli2zyRTZ5I598kQ2amnYF\nvu1tbJ8u6duSHiFpSuN82j7Y9gW2b7I9YftK26fZ3qpm/q1sv9D2Z21fb/se27fb/pHtRbZ3nGR9\nO9heavtq23fZ/p3tc23v03ijAQAAgCmaVgW+7YdJ+rGkYyQd0aDd8ZJWSNpV0tGS9pe0TNIiSd+x\nPbNLsyslnStpe0lzJT1S0jMk/axo97+2H16zvj0kXS7pnyW9VdK+kk6U9DhJl9s+bKp9BwAAAJqY\nVgW+UmH+dUn7R8TFU2lQ7BQsk3SzpGdGxPci4tqIOEOpUD9I0hldmu4q6QeSjoyIiyPi1xHx/Yh4\nsaTPSXqwpI/VrPZcSXtLellEfCIirouIr0k6Uuk5/4zt+09tk5GjZcuWtd0F1CCbfJFN3sgnX2SD\npqZbgf/FiJgfEXc1aHOapK0knRMRd1SmvU/SPZLm2X5wZVpI+nhErOmyzA8V3w+1vWd5gu0nSjpc\n0u8i4vx1FhhxraQLJO0iaX6DbUBmxsezumEdSsgmX2STN/LJF9mgKUdM6RT2LNleo1SIz46I67tM\n30LSKkk7SprT7ai/7e9IeoKkV0fEe0qP31/Snd0KfNv7Kp2qE5IeExE/LU17r6RTJH0yIk7o0nae\npI9IuiIiDqjZriFJY2NjY1xYAwAAkKHx8XENDw9L0nBEZLUXNt2O4De1j6Sdip9X1syzUpIlHVh+\nMCLuqDl6L0mdo/Z3S/plZdrBSoV/r/VJ0v62t66ZBwAAAOjLoBf45Ytgf18zzw1d5p3MUcX3ZRFx\nT806J1vfFpJmN1gnAAAAMKlBL/B3KL6vjojVNfNMFN97DnvZYXs3pVF1rpf0ph7rrLtOYKL085TW\nCQAAAEzVoBf4G5VtS/qo0kW7x0bEH1vuEloyMjLSdhdQg2zyRTZ5I598kQ2aGvQC//bi+wzbM2rm\n6YyBf9sUlvd+SX8v6eiIuHSSdW47yfqmuk5kaP58BkHKFdnki2zyRj75Ihs0NegF/jWln/eomadz\nwew1NdMlSbbPkPQiSUdNMgZ/ZzmTrW+NpF/3WueRRx6pkZGRdb4OOeQQLV++fJ35Lrrooq579yef\nfPJ6Y+eOj49rZGREq1atWufxRYsWacmSJes8dv3112tkZEQrV657vfBZZ52lBQsWrPPYxMSERkZG\ntGLFinUeHx0d1dy5c9fr23HHHTett2POnDkDsR0dg7QdExMT6zw2XbdjUPIob8ecOXMGYjukwcij\nuh2d97Xpvh1lg7IdX/jCFwZiO6ZzHqOjo3+txWbPnq0DDjhAp5566nrLycXmMEzmLUrnxTcaJrM0\n3ZI+KOlYpZtefX+SPp2pNMY9w2QCAAAMKIbJbEkxzOXnlYbBPLw63fYOSsNjrlG6O211+haSPiHp\nOZIOrxb3tj9mu7rczxTfn1LTracr7ZR8esobAgAAAEzRQBf4hbdLulfS3OLmVWXzJW2tdJfb/ytP\nsL2lUhH+NElPrdkze7KkB5UfiIhLJH1T0l62j6ss82GSjla6+dbZfW8RWlf9GA/5IJt8kU3eyCdf\nZIOmpl2Bb3sX27vbLp/jvlvx2O7V+SPiGkkvlbSLpK/YPtT2bNuvlrRY0mWS1jmJqjhyv1zpyP1f\nJJ1j+7Lql9aeT1/1IknXSfqw7ZNs7217jqQvKX1acGxE3F7TFtPA6Oho211ADbLJF9nkjXzyRTZo\natqdg2/7Wkmzuk2SFBHRdbQc2wdJer3S+fbbS7pW0n9JemdE3FuZd0dJf1A6lWYycyPiE13Wt4Ok\nN0g6RtKDi+VdLOltEXFVrwVyDj4AAEDecj4Hf8u2O9BURPR199diWMtjpjjvbdrATzeKI/QLiy8A\nAABgk5h2p+gAAAAAqEeBDwAAAAwQCnygD91ukoE8kE2+yCZv5JMvskFTFPhAH8p3fEReyCZfZJM3\n8skX2aCpaTeKzuaAUXQAAADylvMoOhzBBwAAAAYIBT4AAAAwQCjwgT6sWLGi7S6gBtnki2zyRj75\nIhs0RYEP9GHp0qVtdwE1yCZfZJM38skX2aApLrLNEBfZ5m9iYkIzZ85suxvogmzyRTZ5I598kU2e\nuMgWGDC80eaLbPJFNnkjn3yRDZqiwAcAAAAGCAU+AAAAMEAo8IE+LFiwoO0uoAbZ5Its8kY++SIb\nNEWBD/Rh1qxZbXcBNcgmX2STN/LJF9mgKUbRyRCj6AAAAOSNUXQAAAAAbBIU+AAAAMAAocAH+rBy\n5cq2u4AaZJMvsskb+eSLbNAUBT7Qh4ULF7bdBdQgm3yRTd7IJ19kg6Yo8IE+nH322W13ATXIJl9k\nkzfyyRfZoCkKfKAPDFmWL7LJF9nkjXzyRTZoigIfAAAAGCAU+AAAAMAAocAH+rBkyZK2u4AaZJMv\nsskb+eSLbNAUBT7Qh4mJiba7gBpkky+yyRv55Its0JQjou0+oML2kKSxsbExDQ0Ntd0dAAAAVIyP\nj2t4eFiShiNivO3+lHEEHwAAABggFPgAAADAAKHAB/qwatWqtruAGmSTL7LJG/nki2zQFAU+0Id5\n8+a13QXUIJt8kU3eyCdfZIOmKPCBPixevLjtLqAG2eSLbPJGPvkiGzRFgQ/0gdGN8kU2+SKbvJFP\nvsgGTVHgAwAAAAOEAh8AAAAYIBT4QB+WLVvWdhdQg2zyRTZ5I598kQ2aosAH+jA+ntUN61BCNvki\nm7yRT77IBk05ItruAypsD0kaGxsb48IaAACADI2Pj2t4eFiShiMiq70wjuADAAAAA4QCHwAAABgg\nFPgAAADAAKHAB/owMjLSdhdQg2zyRTZ5I598kQ2aosAH+jB//vy2u4AaZJMvsskb+eSLbNAUo+hk\niFF0AAAA8sYoOgAAAAA2CQp8AAAAYIBQ4AN9WL58edtdQA2yyRfZ5I188kU2aIoCH+jD6Oho211A\nDbLJF9nkjXzyRTZoiotsM8RFtgAAAHnjIlsAAAAAmwQFPgAAADBAKPABAACAAUKBD/Rh7ty5bXcB\nNcgmX2STN/LJF9mgKQp8oA9z5sxpuwuoQTb5Ipu8kU++yAZNMYpOhhhFBwAAIG+MogMAAABgk6DA\nBwAAAAYIBT7QhxUrVrTdBdQgm3yRTd7IJ19kg6Yo8IE+LF26tO0uoAbZ5Its8kY++SIbNDVtL7K1\nfaikcyQ9QtLeEXF9y13aaLjINn8TExOaOXNm291AF2STL7LJG/nki2zyxEW2G5HtbWyfLunbSsX9\nlPZQbB9s+wLbN9mesH2l7dNsbzVJuz1sf9D2dbbvLr5/wPaek7Tbqlj+lcX6birWf9CUNxbZ4o02\nX2STL7LJG/nki2zQ1LQq8G0/TNKPJR0j6YgG7Y6XtELSrpKOlrS/pGWSFkn6ju2ufzm2HyXpSknP\nlvRKSY+U9K/FMq6wvW9Nu+2K9b1J0keK9R0jaXdJ37X9j1PtOwAAANDElm13oKH9JX1d0oKIuMv2\npA2KnYJlkm6W9MyIuKOYdIbtbST9u6QzJP1zpd0MSZ+T9ABJh0bED4tJ19m+UamA/6ztx0TEmspq\n3ytpWNK/RcR7iseutf1MSVdJ+qjtH0TErxtsOwAAADCpaXUEX9IXI2J+RNzVoM1pkraSdE6puO94\nn6R7JM2z/eDKtOOVjtj/sFTcS5Ii4nuSfiBpP0nHlafZniXppGK576+0u03SRyVtI+n1DbYBmVmw\nYEHbXUANsskX2eSNfPJFNmiq7wLf9qziKPcmEw2vCLa9hdKpMZL0jS7Lu13SZUrPw/Mqk5+ndH7/\nxTWL/7okq1LgS3pusbyxLjsUnXaS9FxP5SMIZGnWrFltdwE1yCZfZJM38skX2aCpDTmCf62kfTZW\nR+4j+0jaqfh5Zc08K5UK9QMrjx88hXaqaRdTaPcASX9TMw8yd8opp7TdBdQgm3yRTd7IJ19kg6Y2\npMC3pJcXp6Tk6uGln39fM88N1XmLi2R3m2K7PYpz+avrrGtXfvzhNfMAAAAAfdnQc/DnSbrG9hds\nz9kYHdrIdii+r46I1TXzTBTfd+zSTpLqzvefKP3crW3XdsUFufd0aQcAAABssA0t8J+kVOTvKumr\ntn9h+1TbO03SDpjWVq6sOwMLbSObfJFN3sgnX2SDpjZkmMxvS7o1Is6VdK7tv5P0CklvlfRW26OS\nPtDynb1uL77PsD2j5ih+Zwz827q0k6Rta5ZdHju/W9uu7YoLf7dWOk//tm7zdBxxxBHaaque9+FC\nS2655RbtvPPObXcDXZBNvsgmb+STL7LJ07333tt2F2r1XeBHxFMrv18u6Z9sv1ppmMh/URp+8lKl\n4Sg/HRGb+pm4pvTzHpJ+22WePavzRsSdtm9S+mRij5pld9r9PiLurqxzqEe7PSrz1rr55pt7TUbL\nfvvbbi8n5IBs8kU2eSOffJENmtjoN7oqhp480/aHJX1I0gmSDpL0btvLJH0wIq7b2Out8Qulo+Q7\nSNpX3Qv8fZWOpl9WefxSSUcV07vpPN6t3bFTaPdHSb+s67gk7brrrhzBBwAAyNC9996b7cHYjV7g\n254t6eWS5kp6YOdhSTdJOlHSa2xfKGlRRFy5sddfFhFrbH++6Mvhqoxpb3sHpWEu1yjdtbbsM5Ke\nVbR7Y5fFP01px+DTlcc/J2mppGHb9+8yFv7TO/NNNq7/V7/6VQ0NDfWaBQAAAC0YHx/X8PBw293o\nakNudLXa9qNKvx9l+8uSrpb0akk7S/qLpPMlPTkiHi3pIUpHt3eRdJntIzak81P0dkn3Sppr+/6V\nafOVzoc/JyL+rzJtVOkTgINtP748wfahkh6vNKb9p8rTik8nPl4s9xWVdjspXZR8j6R3bMA2AQAA\nAF1t6Dj4u9p+re1fSbpQ0hHFMn+jdNT7IRHxgoi4RJIiYnVEXBART5Z0ulLx3Wyl9i62d7ddPpd9\nt+Kx3avzR8Q1kl6qtFPxFduH2p5dXCuwWOkUm1O7tPuL0l1pb5X0OdvH2H6o7edI+qykVZKeVwx7\nWfVKSeOS3mL7VcX6niDpK0qfarwkIq5tuu3Ix5IlS9ruAmqQTb7IJm/kky+yQVMbeorOxUqFvpVO\nV/mapPdL+u+awrfsAnUprKfgMkmdm2t1TnH5YakPM6oNIuI827+Q9HpJyyVtr3Qn3jdLemfdxb8R\n8VPbj5G0SNJ7lG5+dZOkL0h6S0TcUNPuT0VBv0DSSyS9TdKdkr4r6QkRcWnTjUZeJiYmJp8JrSCb\nfJFN3sgnX2SDpjzJaeD1De1OAf8HSR9TGhKz50WjpbY7KRW9J0QEN3uqsD0kaWxsbIxz8AEAADJU\nOgd/uOVh4dezoUfwF0h6X2WYyKk4V2mEmuoINAAAAAA2wIYW+F/po7iX0mg620riMycAAABgI+r7\nItuI2CIiftZn21sj4rcR8Yd+1w+0adWqVW13ATXIJl9kkzfyyRfZoKkNGUUH2GzNmzev7S6gBtnk\ni2zyRj75Ihs0RYEP9GHx4sVtdwE1yCZfZJM38skX2aApCnygD4xulC+yyRfZ5I188kU2aIoCHwAA\nABggFPgAAADAAKHAB/qwbNmytruAGmSTL7LJG/nki2zQFAU+0Ifx8axuWIcSsskX2eSNfPJFNmjK\nEdF2H1Bhe0jS2NjYGBfWAAAAZGh8fFzDw8OSNBwRWe2FcQQfAAAAGCAU+AAAAMAAocAHAAAABggF\nPtCHkZGRtruAGmSTL7LJG/nki2zQFAU+0If58+e33QXUIJt8kU3eyCdfZIOmGEUnQ4yiAwAAkDdG\n0QEAAACwSVDgAwAAAAOEAh/ow/Lly9vuAmqQTb7IJm/kky+yQVMU+EAfRkdH2+4CapBNvsgmb+ST\nL7JBU1xkmyEusgUAAMgbF9kCAAAA2CQo8AEAAIABQoEPAAAADBAKfKAPc+fObbsLqEE2+SKbvJFP\nvsgGTVHgA32YM2dO211ADbLJF9nkjXzyRTZoilF0MsQoOgAAAHljFB0AAAAAmwQFPgAAADBAKPCB\nPqxYsaLtLqAG2eSLbPJGPvkiGzRFgQ/0YenSpW13ATXIJl9kkzfyyRfZoCkuss0QF9nmb2JiQjNn\nzmy7G+iCbPJFNnkjn3yRTZ64yBYYMLzR5ots8kU2eSOffJENmqLABwAAAAYIBT4AAAAwQCjwgT4s\nWLCg7S6gBtnki2zyRj75Ihs0RYEP9GHWrFltdwE1yCZfZJM38skX2aApRtHJEKPoAAAA5I1RdAAA\nAABsEhT4AAAAwAChwAf6sHLlyra7gBpkky+yyRv55Its0BQFPtCHhQsXtt0F1CCbfJFN3sgnX2SD\npijwgT6cffbZbXcBNcgmX2STN/LJF9mgKQp8oA8MWZYvsskX2eSNfPJFNmiKAh8AAAAYIBT4AAAA\nwAChwAf6sGTJkra7gBpkky+yyRv55Its0BQFPtCHiYmJtruAGmSTL7LJG/nki2zQlCOi7T6gwvaQ\npLGxsTENDQ213R0AAABUjI+Pa3h4WJKGI2K87f6UcQQfAAAAGCAU+AAAAMAAocAH+rBq1aq2u4Aa\nZJMvsskb+eSLbNAUBT7Qh3nz5rXdBdQgm3yRTd7IJ19kg6Yo8IE+LF68uO0uoAbZ5Its8kY++SIb\nNEWBD/SB0Y3yRTb5Ipu8kU++yAZNUeADAAAAA4QCHwAAABggFPhAH5YtW9Z2F1CDbPJFNnkjn3yR\nDZqiwAf6MD6e1Q3rUEI2+SKbvJFPvsgGTTki2u4DKmwPSRobGxvjwhoAAIAMjY+Pa3h4WJKGIyKr\nvbDN5gi+7QfZfo/tn9uesP1H29+3/TLbrmmzq+032x6zfZPtu21fZ/sTth8zyfr2sP3BYv5Ouw/Y\n3vO+2UIAAABgMynwbT9R0pWSTpC0VNJ+kp4g6UeSPijpAtszKm0eJennkt4g6euSnibpUZJeL+nv\nJf3I9kjN+h5VrO/Zkl4p6ZGS/lXS0ZKusL3vRt5EAAAAQJK0ZdsduK/Zvr+kz0naQdKxEfG50uRT\nbD9I0j9IWijpHaVp75D0AEnnRcRrS4//yvZNki6S9J+2vxQRq0vrm1Gs7wGSDo2IHxaTrrN9o6QV\nkj5r+zERsWajbiwAAAA2e5vDEfxjJe0q6eZKcd9xliRLeo3t+5Ue/5vi+w+6tPl+8X0XSdVTdY5X\nOmL/w1JxL0mKiO8Vy9tP0nFNNgJ5GRnp+uENMkA2+SKbvJFPvsgGTW0OBf4Bxfdf1Uy/uvi+k6Sn\nlh7/iVLh/6gubfYv/XxXZdrzJIWki2vW9/ViuRT409j8+fPb7gJqkE2+yCZv5JMvskFTm0OB3zm3\nfnXN9InSzweUfl6odA7+y2z/s+3tbW9h+2BJnQFpr5b0i8ryDi6+r6xZX+fxAyftObI1Z86ctruA\nGmSTL7LJG/nki2zQ1MCfgy/pmuL73jXTy4//dYSbiPiN7cdKepmkt0j6gNJOwgylI/S/knRc+Tx6\n29tJ2q2Y/vua9d1QfN/D9jYRcXeTjQEAAAB62RyO4H9eqTDfy/bhXaafVPp5u84PtrdWGmHnLEkX\nKo268xhJ8ySdLulJEfGTyrJ2KP1cPXWno/yJwY5T6D8AAAAwZQNf4EfEtZJOK379sO3DJMn2zrYX\nKBXsNxbT7yw1Pa+Y9smI+KeI+H5E/DwiPibpU5J+bvukTbENyM/y5cvb7gJqkE2+yCZv5JMvskFT\nA4tAQK4AACAASURBVF/gS1JELFW6qPU2Sd+0fa9SUf9sSXOUzrWXpJslyfbDJT1X6VSb07ssb1zS\npZI+avuo0qTbSz9vW9OdmaWfb2u8McjC6Oho211ADbLJF9nkjXzyRTZoarMo8CUpIj4bEUNKp8U8\nXNIOEXFYMXTlbsVsVxTfh0pN6y6W7ewU/EtpHXdKuqn4dY+adp3z/H8/2fn3Rx55pEZGRtb5OuSQ\nQ9bbk7/ooou6DqF18skna9myZes8Nj4+rpGREa1atWqdxxctWqQlS5as89j111+vkZERrVy57lNw\n1llnacGCBes8NjExoZGREa1YsWKdx0dHRzV37tz1+nbcccdN6+04//zzB2I7OgZpO17wghcMxHYM\nSh7l7Tj//PMHYjukwcijuh2d97Xpvh1lg7Idu+yyy0Bsx3TOY3R09K+12OzZs3XAAQfo1FNPXW85\nuXBEtN2HVtneRtIflI7W7xkRt9l+vqTzJa2RNDMi7u3S7gylu9T+JCL+rvT4hZKOkvT2iHhjl3Zv\nUbo77oURcXRNn4YkjY2NjWloaKjbLAAAAGjR+Pi4hoeHJWm4OLsjG5vFEXzbh9h+ZM3kIyVtLenT\nEdE5ZaYz9KUl7VPTrrO86mg5nynadbugV5KeprQz8enJ+g0AAAA0tVkU+JKWSnp/9cFiWMu3SLpV\n0us7jxej43RO13lll3b7K527H5I+W5k8qrSDcLDtx1faHSrp8Uqn/Xyqz20BAAAAam0uBb4kPcX2\nB2w/xvZDbR8t6RJJu0t6ZkTcUJn/RZJWSZpn+922/9b2rOL0nS8qHaX/vKSPlhtFxF+ULtC9VdLn\nbB9TrO85SjsDqyQ9rzx+PqafbufvIQ9kky+yyRv55Its0NTmcKMrSXqv0g2m5igV7iHp10rj2787\nIm6tNoiIK20/WtKrJD1T0j9J2kqpcL9c0usi4vxqu6LtT20/RtIiSe9Ruoj3JklfkPSWLjsTmGa4\nq2C+yCZfZJM38skX2aCpzf4i2xxxkS0AAEDeuMgWAAAAwCZBgQ8AAAAMEAp8oA/VG2cgH2STL7LJ\nG/nki2zQFAU+0IelS5e23QXUIJt8kU3eyCdfZIOmuMg2Q1xkm7+JiQnNnDmz7W6gC7LJF9nkjXzy\nRTZ54iJbYMDwRpsvsskX2eSNfPJFNmiKAh8AAAAYIBT4AAAAwAChwAf6sGDBgra7gBpkky+yyRv5\n5Its0BQFPtCHWbNmtd0F1CCbfJFN3sgnX2SDphhFJ0OMogMAAJA3RtEBAAAAsElQ4AMAAAADhAIf\n6MPKlSvb7gJqkE2+yCZv5JMvskFTFPhAHxYuXNh2F1CDbPJFNnkjn3yRDZqiwAf6cPbZZ7fdBdQg\nm3yRTd7IJ19kg6Yo8IE+MGRZvsgmX2STN/LJF9mgKQp8AAAAYIBQ4AMAAAADhAIf6MOSJUva7gJq\nkE2+yCZv5JMvskFTFPhAHyYmJtruAmqQTb7IJm/kky+yQVOOiLb7gArbQ5LGxsbGNDQ01HZ3AAAA\nUDE+Pq7h4WFJGo6I8bb7U8YRfAAAAGCAUOADAAAAA4QCH+jDqlWr2u4CapBNvsgmb+STL7JBUxT4\nQB/mzZvXdhdQg2zyRTZ5I598kQ2aosAH+rB48eK2u4AaZJMvsskb+eSLbNAUBT7QB0Y3yhfZ5Its\n8kY++SIbNEWBDwAAAAwQCnwAAABggFDgA31YtmxZ211ADbLJF9nkjXzyRTZoigIf6MP4eFY3rEMJ\n2eSLbPJGPvkiGzTliGi7D6iwPSRpbGxsjAtrAAAAMjQ+Pq7h4WFJGo6IrPbCOIIPAAAADBAKfAAA\nAGCAUOADAAAAA4QCH+jDyMhI211ADbLJF9nkjXzyRTZoigIf6MP8+fPb7gJqkE2+yCZv5JMvskFT\njKKTIUbRAQAAyBuj6AAAAADYJCjwAQAAgAFCgQ/0Yfny5W13ATXIJl9kkzfyyRfZoCkKfKAPo6Oj\nbXcBNcgmX2STN/LJF9mgKS6yzRAX2QIAAOSNi2wBAAAAbBIU+AAAAMAAocAHAAAABggFPtCHuXPn\ntt0F1CCbfJFN3sgnX2SDpijwgT7MmTOn7S6gBtnki2zyRj75Ihs0xSg6GWIUHQAAgLwxig4AAACA\nTYICHwAAABggFPj4/+3de7hkVXnn8e/LnUYaCCIXlYsooiiD3SpBGEBuCpm0GBmINwR8Rn0GDDix\ncRSjaLzR0Th5QCFGYjQoJgi2l4mKF6K0JAJ9mFGEjsjNUUBoUEAO0tC95o+1iq6urn3OqUP32av3\n+X6ep546Z+9au1bt39l13tq199qahiVLlrTdBTUwm3qZTd3Mp15mo1FZ4EvTsGjRora7oAZmUy+z\nqZv51MtsNCpPsq2QJ9nWb3x8nDlz5rTdDQ1hNvUym7qZT73Mpk6eZCt1jG+09TKbeplN3cynXmaj\nUVngS5IkSR1igS9JkiR1iAW+NA0LFy5suwtqYDb1Mpu6mU+9zEajssCXpmHXXXdtuwtqYDb1Mpu6\nmU+9zEajmjWj6ETEU4GFwMuA3YAVwI3AZ4C/Sw0rIiI2Ad4MnAA8F9gK+HVp+/2U0kca2u0FvAc4\nDNgO+BVwGfCBlNIDk/TVUXQkSZIq5ig6LYuIg4DrgdcDi4DnAAcC1wIXAF+OiI2HtHsycA3wVuB8\n4MXAPsDZwP7AByNirXUYEYcC1wHzgBOBvYG/BN4CLI2IHdfpC5QkSZKKTdruwPoWEVsDlwJzgeNT\nSpf2zX5r2bP/CuBM4MN97QL4emk3L6V0f1+7WyLiMfKHhTX2/EfENsAl5dejU0q3l58/GxErgM8D\nnyN/kyBJkiStU7NhD/7xwA7APQPFfc+5QABvj4hN+6a/kbzH/kMDxT0AKaWLUkq7DDm058+A7YHF\nfcV9zxeBO4AjIuKA6b0c1WDZsmVtd0ENzKZeZlM386mX2WhUs6HA36/c39Iw/6Zyvy3w0r7pbyLv\nnf/miM93XGn3vcEZ5cNAb/oJIy5XFTnzzDPb7oIamE29zKZu5lMvs9GoZkOB3zu2fmXD/PG+n/cD\niIi5wHzg98B9EXFWRFwXEcsj4raI+Kdhe+AjYg75GH2Apo/by8jfGLxoxNehipx33nltd0ENzKZe\nZlM386mX2WhUs6HAv7nc794wv3/6zuV+X3IR/hiwBHg5+Rj9g4B3Ai8BroyINw0saw9Wr9O7Gp7v\nznK/5+RdV60csqxeZlMvs6mb+dTLbDSq2VDgX0bee79LRBw+ZP5JfT9vVe53KPdbAzsCR6SUvp1S\nWpZSuhg4mnwYzrkR8Zy+9nP7fn64oT+9bwy2mfpLkCRJkqam8wV+SulW4Kzy66ci4mCAiNg+IhYC\np5DHtQd4qNzP6TUHPp1SemRgmdcD3yWPQvSW9dh9SZIkaSSdL/ABUkqLyCe13g9cUYar/DXwx8BR\n5ItWAdxT7vv3vt/QsNil5MN4Xtw3rf8CVls2tOt9eFhrZB5tOM4555y2u6AGZlMvs6mb+dTLbDSq\nWVHgA6SUvpRSmkc+NGZPYG5K6eCU0lXAU8rDflzu7+xrel/DIh8s99v1TbuV1ePi79TQrnec/80N\n8x93zDHHsGDBgjVuBxxwAIsXL17jcZdffjkLFixYq/2pp57KhRdeuMa0sbExFixYwPLly9eY/t73\nvnetN5Bf/OIXLFiwYK3huc4991wWLly4xrTx8XEWLFjAkiVL1ph+8cUXc/LJJ6/VtxNOOGGDfh3j\n4+OdeB09XXodY2NrXkxwQ30dXcmj/3WMj4934nVAN/IYfB2997UN/XX068rr+NKXvtSJ17Eh53Hx\nxRc/Xovtscce7LfffrztbW9bazm1iLWHcZ9dImIL4DfkwnznlNL9EfGkMm0j4MSU0ueHtPs4cDrw\no5TSAX3Tf0weSedNKaULh7T7HPBa4NyU0hkNfZoHLF26dCnz5s17wq9RkiRJ69bY2Bjz588HmJ9S\nGpvs8TNpVuzBj4gDIuLZDbOPATYH/rl3QauU0u/Ix9gD/KeGdvuQPxT8cGD6JeRDd9Y6obdcHfew\nvsdJkiRJ69SsKPCBRcAnBydGxFbA+8mH4bxzYPaHyIX6SeVx/e2eRy7gHxmy3HOBe4FXRMRuA/Ne\nDewCfDelNPjBQJIkSXrCZkuBD3BoRJwfEftGxG4RcSxwJXkYzKNTSv3H3ZNS+gHwbmB74FsRcVBE\nPD0iXgF8BVgBvCGldMtAu98Cx5dfvxERR0bE7hFxMnAB+Yq6J67PF6r1b/BYQdXDbOplNnUzn3qZ\njUY1Wwr8vwEuJY+Y80PgJ+Q99/8CPDuldM2wRimlD5U2vyWPp38TeQ/9D4AXpZSGHmaTUroCeAEw\nBnyWPErPWeQCf15KqekiWNpAnHLKKW13QQ3Mpl5mUzfzqZfZaFSz/iTbGnmSbf3GxsbMplJmUy+z\nqZv51Mts6uRJtlLH+EZbL7Opl9nUzXzqZTYalQW+JEmS1CEW+JIkSVKHWOBL0zB4JT7Vw2zqZTZ1\nM596mY1GZYEvTcPYWFXn0qiP2dTLbOpmPvUyG43KUXQq5Cg6kiRJdXMUHUmSJEkzwgJfkiRJ6hAL\nfEmSJKlDLPClaViwYEHbXVADs6mX2dTNfOplNhqVBb40DaeddlrbXVADs6mX2dTNfOplNhqVo+hU\nyFF0JEmS6uYoOpIkSZJmhAW+JEmS1CEW+NI0LF68uO0uqIHZ1Mts6mY+9TIbjcoCX5qGiy++uO0u\nqIHZ1Mts6mY+9TIbjcqTbCvkSbaSJEl18yRbSZIkSTPCAl+SJEnqEAt8SZIkqUMs8KVpOPnkk9vu\nghqYTb3Mpm7mUy+z0ags8KVpOOqoo9rughqYTb3Mpm7mUy+z0agcRadCjqIjSZJUN0fRkSRJkjQj\nLPAlSZKkDrHAl6ZhyZIlbXdBDcymXmZTN/Opl9loVBb40jQsWrSo7S6ogdnUy2zqZj71MhuNypNs\nK+RJtvUbHx9nzpw5bXdDQ5hNvcymbuZTL7OpkyfZSh3jG229zKZeZlM386mX2WhUFviSJElSh1jg\nS5IkSR1igS9Nw8KFC9vughqYTb3Mpm7mUy+z0ags8KVp2HXXXdvughqYTb3Mpm7mUy+z0agcRadC\njqIjSZJUN0fRkSRJkjQjLPAlSZKkDrHAl6Zh2bJlbXdBDcymXmZTN/Opl9loVBb40jSceeaZbXdB\nDcymXmZTN/Opl9loVBb40jScd955bXdBDcymXmZTN/Opl9loVBb40jQ4ZFm9zKZeZlM386mX2WhU\nFviSJElSh1jgS5IkSR1igS9NwznnnNN2F9TAbOplNnUzn3qZjUZlgS9Nw/j4eNtdUAOzqZfZ1M18\n6mU2GlWklNrugwZExDxg6dKlS5k3b17b3ZEkSdKAsbEx5s+fDzA/pTTWdn/6uQdfkiRJ6hALfEmS\nJKlDLPClaVi+fHnbXVADs6mX2dTNfOplNhqVBb40DaecckrbXVADs6mX2dTNfOplNhqVBb40DWef\nfXbbXVADs6mX2dTNfOplNhqVBb40DY5uVC+zqZfZ1M186mU2GpUFviRJktQhFviSJElSh1jgS9Nw\n4YUXtt0FNTCbeplN3cynXmajUVngS9MwNlbVBevUx2zqZTZ1M596mY1GFSmltvugARExD1i6dOlS\nT6yRJEmq0NjYGPPnzweYn1Kq6lOYe/AlSZKkDrHAlyRJkjrEAl+SJEnqEAt8aRoWLFjQdhfUwGzq\nZTZ1M596mY1GZYE/gog4PSJWRcTKtvuidp122mltd0ENzKZeZlM386mX2WhUs2YUnYh4KrAQeBmw\nG7ACuBH4DPB3aZIVERG7Az8B5gCklDae5PF7Ae8BDgO2A34FXAZ8IKX0wCRtHUVHkiSpYo6i07KI\nOAi4Hng9sAh4DnAgcC1wAfDliJiwYAc+BSwHYgrPdyhwHTAPOBHYG/hL4C3A0ojYcVovRJIkSZrE\nJm13YH2LiK2BS4G5wPEppUv7Zr+17Nl/BXAm8OGGZZwEHAy8CvjaJM+3DXBJ+fXolNLt5efPRsQK\n4PPA58jfJEiSJEnr1GzYg388sANwz0Bx33Muea/82yNi08GZZW/7x4CPkL8FmMyfAdsDi/uK+54v\nAncAR0TEAVN/CarN4sWL2+6CGphNvcymbuZTL7PRqGZDgb9fub+lYf5N5X5b4KVD5n8CuAv44BSf\n7zggAd8bnFGO8+9NP2GKy1OFzjnnnLa7oAZmUy+zqZv51MtsNKrZUOD3jq1vGvlmvO/n/fpnRMQr\ngWOBN6aUHp3siSJiDrBP+XVZw8OWkb8xeNFky1O9dthhh7a7oAZmUy+zqZv51MtsNKrZUODfXO53\nb5jfP33n3g/lWPrzgE+klP59is+1B6vX6V0Nj7mz3O85xWVKkiRJUzYbCvzLyHvvd4mIw4fMP6nv\n5636fv5r4FHgXSM819y+nx9ueEzvG4NtRliuJEmSNCWdL/BTSrcCZ5VfPxURBwNExPYRsRA4Bfh1\nmf9QmXc4ufB/c0rpoZntsSRJkjR9nR8mEyCltCgibiHvjb+iXIl2I+Aq4CjgA8BTgHsiYkvymPdf\nSCl9a2BRk42B338Bqy0bHjOn3N8/wXK2ALjxxhsneTq15eqrr2ZsrKprWqgwm3qZTd3Mp15mU6e+\nOm2LNvsxzKy5km1PRDyJfGXZe1NK42Xa9eSLX72CXKRfAfweWDXYnFygJ1YfapOA56aUfllOsn2w\nTD84pfTDIc//LvIHin9LKR3Y0MfXkMfLlyRJUt1em1L6Qtud6Dcr9uD3Syn9Dvhd7/eI2IJ8wusj\nwJXkwv5ZDc2fCny//Lwvq/fo31GWPR4RPyWPpLM3sFaBX6Yn4JoJuvkt4LXAbaU/kiRJqssW5MFa\nBo/4aN2sKPDLRaXuSyn9x5DZxwCbA59LKfUOmxk6Zn45tAd4/Nj+YS4BngccDlw40D6Aw/oeN1RK\n6V6gqk+CkiRJWstVbXdgmFlxiE5EXAmsSCkdPjB9K+BHwE7A81NKdw5r3/f43YBbydes2rjhMduS\nL541h3zozu19814DXAR8J6V01BN4SZIkSdJQnR9Fp8+hEXF+ROwbEbtFxLHkQ3J2BI6eqLiPiO0i\nYkfyibi9aTuWW//QmKSUfgscX379RkQcGRG7R8TJwAXkbwdOXMevTZIkSQJmzx7848hF93xykZ7I\nx7d/FfjrlNJ9k7S/Aji4YfZnU0qnDGmzF/Ae8iE52wG/Io/J/4GU0gODj5ckSZLWhVlR4EuqS0S8\nBPgM+YT23VNKv2i5S+pjPpK0YZtNh+hsECLi5RFxeUTcGxG/i4ilEXFqOUFXT0BEvCEiVk1y27eh\n7f4R8eWIuDsixiPi+og4KyI2m+Q5d4qICyLi9oj4fbk/PyJ2Xj+vsm4RsUVEfIw8GtWzyN+mTaXd\njK7/iNisLP/68nx3l+d/8ZRf7AZo1Hwi4pApbFMLJmi/V0RcFBF3RMTDEfHziFg0eOjjkHZzy+Nu\nKu3uiIh/LN+cdk5EPD0i/iIilkTEfRGxIiLuioj/HRGvmqSt2856NJ1s3G5mTuRDqU+JiEsj4rby\ntzweEf9R/r6bRk2c8fUc2akRcW3k+u/eyPXgy6b14lNK3iq5Ae8gj72/GNgPeCbw4b5pG7Xdxw35\nBryBPETqDQ23nwJ7DWn3GuBRYAnwEmAP4G3ACuDfgTkNz/dcYDn58Kxjgd2AVwJ3AvcAe7e9TmZ4\n/T8DWEY+D+Xw8ne9Eth1knYzuv6BrYCryUPnnlGe70DySAmPAn/a9rqsJR/gkJLDRNvUSxvaHkq+\nevgNwBElnzeQr0VyE7BjQ7udgJvJFws8sbQ7ErixLO/gttflOs7l4LKOx4GzgXklqz8pea0CLmpo\n67ZTYTZuNzOa0bUlhwuBA4Cnl5w+WqY/CLyk7fUMbEw+bHwl8EFy/TcP+Frp58KRX3vbK9/b4+H+\n5xLij4GNB+b9bZn3zrb7uSHfysb5vRHbPAN4mHytg60H5r2z5PK3Q9ptXDbolcD+A/NeUtpdzyz6\n0Ab8MXAesGX5fSoF5Iyvf+DTpd07BqZvA9xF/me+e9vrs5J8DgFumcZzbUMuFB8CdhuY9+ry3N9q\naPvt0q8TBqbvUf5Wfj34t7Ih38gXYFwF/Pch83YuhcRK4I0D89x26s3G7WbmMroG+ErDvM+UdXZ5\n2+sZeHdZ7vkD0zcp29tKhnwQmfC1t73yvT0e4ndLgP9tyLy9SvC/ATZvu68b6o3pFfgXllw+OGTe\n3LLBPgo8bWDe60tmVzUs96qy3Fe3vV5mcP3HwO9TKSBndP0DuwKPlUJk2Jvwh2gojDb02zTzmW6h\n8hdl+Z8f1g/gl+W5DxiYd1Bp9/8alvuF0q4zO0PIReQK4EkN8y8aVnC47VSdjdvNzGV0BEO+mS/z\nTivr5f+0uZ6BLVn9YXDYUQRvGvZ3NNnNY/ArEBFPJm/wAN8bnJ9S+hn5D2oucPQMdm1Wi4iNyF9L\nw/BcHiDvHdgIOG5g9nHk45e/27D475DfKE5YJ53dAKTyTjVVLa3/V5XlLU0pPdjQDuBVEd06L2bU\nfJ6gXj7Dcu2fPpjPfy33/9qw3C5uV18H/iDlq7AP88ty/we9CW47M2bkbJ4gt5sRpZS+U2qoYQ4g\nr8/LB6bP9Hp+ObA1cEdDX3vbzksjYvuGZa/FAr8OLyRn8WhK6eaGxywr9y+amS511txyQtQ1EfHr\niPhlRHwnIt4cEZsOPHYvYNvy8zKGW0beYAdz2X8K7RjSTqu1sf73J7+xT9ZuO/IxkoLNIuL0iLiq\nnEx2R0RcGRFvj3wxwTVExBxgn/LrdHKdSj77RMTmo72MOqWUVk5QQEI+FATy4Z09bjszYJrZ9Ljd\ntCAiNiknz34c+FPgUvIe+978NtbzhNtcSukW8jdFG5OPy58SC/w67Fnu75ngMXeS/6D2nOAxmtw8\n4A/J1yg4hPx19G+A84ErI2Kbvsf2r+u7GpbXu0Da448tb869i6JN1m6niNhiyr2fXdpY/73lNLXr\nn+62mO1C3iP1UfLJuceRjxldBIxFvgJ4vz1Y/b9nyrkO/D5Zu43K83RaRGxMPoEvAZ/sm+W207IJ\nsulxu5lhEfEF8gngy4A/Ao5NKR2fUnqk72FtrOc9yX8nTe0gH7s/7DkbbTLVB2q96g259PAEjxkv\n99tM8BhN7Abgz1NKH++btgy4IiK+Qj7J8O/JXzXD6lxWppRWNixzWC79Q2g1ZTre9/M2wO8n6fts\n1Mb6n3BbTCmtiohHgM1wW4R8CMLZ5OO8+zO6KiJWAG8FvsSae7pGyWdwHU/2XjmYa9e9kTxqxydS\nSkv7prvttK8pG3C7acsZ5PW+K/A64CsRcQnwppTS/eUxbazn9VIDugdfs0ZK6ZqB4r7f+8r9sRHR\n+b1L0rqQUro5pfT+hiLyg+STxuZFxOEz3LXOi4hnAn8F/BD485a7oz6TZeN2046U0t0ppZ+V4/JP\nAj5GPm7+8g6dF/I4C/w6PFDut5zgMXPK/f0TPEbT93/Jb6qQx22G1blsXL5uHWZYLg/0/dyU6Zy+\nn810uDbW/4TbYjl5sXfspLlNIKV0N6tPMjywb9Yo+Qyu48neK2fFdhX5YlOXAz8DjkkprRh4iNtO\nS6aQzYTcbmbU+8jHtr+Q/A0+tLOe10sNaIFfh96JtTtM8JidycdoNZ2Eqyeg7ElZXn7tjXjQv653\namjaO4nq8cemlB4C7p5iu7tSSh6eM1wb67+3nKZ2/dPdFifXO6a0fxSRW1l9hdwp5zrw+2TtVgG3\nTa2LG5aI2IU8ws2dwBENI9a47bRgitlMhdvNDCgnSN9Wfj2g3Lexnm8mn2PZ1A5gx4bnbGSBX4el\n5MA3neDwkL3L/TUz06VuiYgtIuKPIqJp79LGwJPLr78t9z9j9aflvddqtHp6Yu1crp5CO4a002pt\nrP+ryW+0k7X7LfDzhsfMGmWbmmgIwN4/rN42RUppnHylTpherlPJ56dd/OBcTrz8PrmAPLLvuOFB\nbjszbIRs3G5mSETsXEbIm+jwm4fK/WbQ2nqecJuLiGeU/q0CxhqWvRYL/AqklO4hvzFAPpt+DRGx\nF/A08iWVvzmDXeuSHcmXfG4alvL55CGoIF/CnZTSKuAy8gY7LJe5ZXmryENt9bukqV1xBPkN4p+n\n/ApmmZbW/6VlefMjYush7Y7sPW6Gx42v1deA/zJsRrm+x9PKr/82MLsxn/LP+LC+xw22g3wZ+WF6\no5Z0bruKiGcBPwBuIh/6Md437/kR8Y3e7247M2uUbAq3m5mxF3mEvKE7TiNik/IYWPND50yv528C\nvwN2KfXesHYAV6SU7m1Y9tpGuSqWt/V6tbWDyW+OP2bgEuDAp8jHh7+r7X5uqDdgt7J+L2yYf1mZ\n/y8D0/ckjxJxJ2tf7v1dpc2nhixvE/IIPSuBPxyY17vc+08Hs55NN6Z2pdQZX/+svgLoOwamb0se\nquxhYI+2118l+awCvtMw7+Nl/k9Y+yq529J8KfjXMOTy8X3ze1f9HrwU/DNYfSn4uW2vv3WcxT7A\nHeV9atMh8w8lj5jTP81tp95s3G5mJptDyjr5aMP8d5b5DwBPaXM9s/rquecPTN+kbG8rgQNHev1t\nB+BtrT+2lcBXgRcAzwI+UkL/6rA3VG9TXrdPK+t2JfAP5EtK70oeE//zrP5w9ZQhbV9HvqT7kvIP\nbg/yyAgrgB8BWzU85z7lTeJX5KtK7gb8SflncDfwnLbXSws5PJn8bcpOrC4gX1im7djQZkbXP/Ak\n8levjwD/ozzfgeS9aY8Cr2l7PdaST1kfK8l7JA8r63g/4G9YfZxp02XiX0r+B3oDeQ/V7sDJ5H+2\nPwd2ami3M3AL+RCUk0q7o4Aby/IOaXs9ruNMen/HK4Hryt/m4G0ZA0Vkaeu2U2E2bjczls+BZX0+\nBnyGvCN1d/L//0+WDMaBV7a9nslHEHy99OlD5IvBze+b9o6RX3/bAXhbK+SXkc/Av498SM5SvvsK\nxAAAA0ZJREFU4FQGPsl7m9a6fSb5Alc/KG/KK4B7gSuB04EtJmj7YuDL5Z9b7xi9s4DNJnnOnYEL\ngNvJn95vJ39luHPb66OlDG5l9Qet/tuqwX+Cba5/8vGOZ5XnGS9/L4uBF7e9DmvKp6zfhcC3yXuK\nHyEfN3wN8G5g20meby/gInLh+HD5x7mISfYkkseNXkQ+JOLh0v4fgWe3vQ7XQyanN2QyeHusob3b\nTmXZuN3MaEb7AeeQP2QuJ//ff5C8Q+/jwJ61rGfyYUGnkuu+B8l14OXAy6bz2qMsVJIkSVIHeJKt\nJEmS1CEW+JIkSVKHWOBLkiRJHWKBL0mSJHWIBb4kSZLUIRb4kiRJUodY4EuSJEkdYoEvSZIkdYgF\nviRJktQhFviSJElSh1jgS5IkSR1igS9JkiR1iAW+JEmS1CEW+JIkSVKHWOBLkiRJHWKBL0lapyLi\niohYNXBbOcH8lRFxcJt9lqQuscCXJK1rJwH7AbcCCVgK7Dsw/4wy7/XA84FrZrSHktRhkVJquw+S\npA6KiIOAfwUC+J8ppb8q03cGrgP+KaV0ens9lKRussCXJK03EfFh4B3AY8BhwFXAFcC2wItSSita\n7J4kdZIFviRpvYmITYEfkQ/ZuRP4KvAGcnH/0zb7JkldZYEvSVqvIuK5wLXA5mXSGSmlc1vskiR1\nmifZSpLWq5TSDcD7ycfiA9zWXm8kqfss8CVJ61VEBHA08Ci5yP90ROzYbq8kqbss8CVJ69uZ5GEy\nDwTuAJ4MfLbVHklSh1ngS5LWm4h4AfA+4NSU0rXA68jj3x8ZEWe02jlJ6ihPspUkrRcRsTn5IlfX\npZRe3zf9/cC7gd8D+6eUftJSFyWpk9yDL0lapyJih4h4HvC/gF2AT0bENmXeHOAy4GZgC+CLEfH8\niNi9pe5KUue4B1+StE5FxHuB95IPxek5OaX0uYg4hHyhq8F/Pt9PKR02U32UpC6zwJckSZI6xEN0\nJEmSpA6xwJckSZI6xAJfkiRJ6hALfEmSJKlDLPAlSZKkDrHAlyRJkjrEAl+SJEnqEAt8SZIkqUMs\n8CVJkqQOscCXJEmSOsQCX5IkSeoQC3xJkiSpQyzwJUmSpA6xwJckSZI65P8DXKXSJgIKEn0AAAAA\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualization of the path\n", + "pyplot.figure(figsize=(8,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'x', fontsize=18)\n", + "pyplot.ylabel(r'y', fontsize=18)\n", + "pyplot.title('Glider trajectory, flight time = %.2f' % T, fontsize=18)\n", + "pyplot.plot(x,y, 'k-', lw=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grid convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's study the convergence of Euler's method for the phugoid model. In the previous lesson, when we studied the straight-line phugoid under a small perturbation, we looked at convergence by comparing the numerical solution with the exact solution. Unfortunately, most problems don't have an exact solution (that's why we compute in the first place!). But here's a neat thing: we can use numerical solutions computed on different grids to study the convergence of the method, even without an analytical solution.\n", + "\n", + "We need to be careful, though, and make sure that the fine-grid solution is resolving all of the features in the mathematical model. How can we know this? We'll have a look at that in a bit. Let's see how this works first.\n", + "\n", + "You need a sequence of numerical solutions of the same problem, each with a different number of time grid points.\n", + "\n", + "Let's create a NumPy array called `dt_values` that contains the time-increment of each grid to be solved on. For each element `dt_values[i]`, we will compute the solution `u_values[i]` of the glider model using Euler's method. If we want to use five different values of $\\Delta t$, we'll have five solutions: we put them in an array ... but each one is also an array! We'll have an array of arrays. How meta is that?\n", + "\n", + "We have one more trick up our sleeve: `enumerate()`. To get all the numerical solutions—each with its value of $\\Delta t$—done in one fell swoop, we will loop over the elements of the array `dt_values`. Within the loop, we need to access both `dt_values[i]` and the index `i`. It turns out, `enumerate()` is a built-in Python function that will give us consecutive `index, value` pairs just like we need. \n", + "\n", + "Read the code below carefully, and remember: you can get a help pane on any function by entering a question mark followed by the function name. For example, add a new code cell below and type: `?numpy.empty_like`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), we compared our numerical result to an analytical solution, but now we will instead compare numerical results from different grids. \n", + "\n", + "For each solution, we'll compute the difference relative to the finest grid. You will be tempted to call this an _\"error\"_, but be careful: the solution at the finest grid is _not the exact_ solution, it is just a reference value that we can use to estimate grid convergence.\n", + "\n", + "To calculate the difference between one solution `u_current` and the solution at the finest grid, `u_finest`, we'll use the $L_1$-norm, but any norm will do.\n", + "\n", + "There is a small problem with this, though. The coarsest grid, where $\\Delta t = 0.1$, has 1001 grid points, while the finest grid, with $\\Delta t = 0.001$ has 100001 grid points. How do we know which grid points correspond to the same location in two numerical solutions, in order to compare them? \n", + "\n", + "If we had time grids of 10 and 100 steps, respectively, this would be relatively simple to calculate. Each element in our 10-step grid would span ten elements in our 100-step grid. \n", + "\n", + "Calculating the _ratio_ of the two grid sizes will tell us how many elements in our fine-grid will span over one element in our coarser grid.\n", + "\n", + "Recall that we can _slice_ a NumPy array and grab a subset of values from it. The syntax for that is\n", + "\n", + "```Python\n", + "my_array[3:8]\n", + "```\n", + "\n", + "An additional slicing trick that we can take advantage of is the \"slice step size.\" We add an additional `:` to the slice range and then specify how many steps to take between elements. For example, this code\n", + "\n", + "```Python\n", + "my_array[3:8:2]\n", + "```\n", + "\n", + "will return the values of `my_array[3]`, `my_array[5]` and `my_array[7]`\n", + "\n", + "With that, we can write a function to obtain the differences between coarser and finest grids. Here we go ..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = ceil(N_fine/N_current)\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that the function has been defined, let's compute the grid differences for each solution, relative to the fine-grid solution. Call the function `get_diffgrid()` with two solutions, one of which is always the one at the finest grid. Here's a neat Python trick: you can use negative indexing in Python! If you have an array called `my_array` you access the _first_ element with\n", + "\n", + "`my_array[0]`\n", + "\n", + "But you can also access the _last_ element with \n", + "\n", + "`my_array[-1]`\n", + "\n", + "and the next to last element with\n", + "\n", + "`my_array[-2]`\n", + "\n", + "and so on. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dt = 0.1\n", + "dt = 0.05\n", + "dt = 0.01\n", + "dt = 0.005\n", + "dt = 0.001\n" + ] + } + ], + "source": [ + "# compute difference between one grid solution and the finest one\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " print('dt = {}'.format(dt))\n", + "\n", + " ### call the function get_diffgrid() ###\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to create a plot of the results! We'll create a *log-log* plot with the Matplotlib function [`loglog()`](http://matplotlib.org/api/pyplot_api.html?highlight=loglog#matplotlib.pyplot.loglog). Remember to skip the difference of the finest-grid solution with itself, which is zero." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIiElpKUiIh\nZGatzGyLmZ1Sibanm9nPkhGXSLIpSYmE0/1AE+APlWj7Z6BHYsMRCYaSlEjImNmPgM3ANKCnmZ1X\nTtss4GLgv5IUnkhSaasOkZAxs/HAEOAYIhsdvu3u/1ZG27bAB8Cx7r41eVGKJId6UiIhYmYXA/90\n9x3uvgp4DuhoZpeXaJdjZi8CfwO2AE+Y2ejkRyySWOpJiYSImU0C/t3d90RfHwusAv7H3Q8b9jOz\nmcB6dx+U3EhFkkM9KZGQMLNuwJv7ExSAu39FZHvuc8zsmhLtawA/BRYkNVCRJFJPSiQEohMgXnT3\n60s51xBYDWwHznD3oujxC4D3gObuvjmZ8Yoki3pSIuFwAzCptBPu/i2RqehtgJsOOtWRyDCgEpSk\nLSUpkYCZWW2go7u/UU6zMcAaYLiZ1Y0e60h0qM/MapvZgwkNVCQANYMOQES4DXAzu7OCdp8CXYhM\nTx8BNAdmRc/dCbyYsAhFAqKalEiAor2itUCzSr7Fga+BVkA3oDewFHjL3RcmJEiRAClJiYhIaKkm\nJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIioaUkJSIi\nofX/ARE7ZqFnKYAXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# log-log plot of the grid differences\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel('$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='-', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Order of convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The order of convergence is the rate at which the numerical solution approaches the exact one as the mesh is refined. Considering that we're not comparing with an exact solution, we use 3 grid resolutions that are refined at a constant ratio $r$ to find the *observed order of convergence* ($p$), which is given by:\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "p = \\frac{\\log \\left(\\frac{f_3-f_2}{f_2-f_1} \\right) }{\\log(r)}\n", + "\\end{equation}\n", + "$$\n", + "\n", + "where $f_1$ is the finest mesh solution, and $f_3$ the coarsest. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is p = 1.014\n" + ] + } + ], + "source": [ + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values2 = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values2 = numpy.empty_like(dt_values2, dtype=numpy.ndarray)\n", + "\n", + "diffgrid2 = numpy.empty(2)\n", + "\n", + "for i, dt in enumerate(dt_values2):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + "\n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values2[i] = u\n", + " \n", + "\n", + "#calculate f2 - f1\n", + "diffgrid2[0] = get_diffgrid(u_values2[1], u_values2[0], dt_values2[1])\n", + "\n", + "#calculate f3 - f2\n", + "diffgrid2[1] = get_diffgrid(u_values2[2], u_values2[1], dt_values2[2])\n", + "\n", + "# calculate the order of convergence\n", + "p = (log(diffgrid2[1]) - log(diffgrid2[0])) / log(r)\n", + "\n", + "print('The order of convergence is p = {:.3f}'.format(p));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See how the observed order of convergence is close to 1? This means that the rate at which the grid differences decrease match the mesh-refinement ratio. We say that Euler's method is of *first order*, and this result is a consequence of that." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paper airplane challenge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose you wanted to participate in a paper-airplane competition, and you want to use what you know about the phugoid model to improve your chances. For a given value of $L/D$ that you can obtain in your design, you want to know what is the best initial velocity and launch angle to fly the longest distance from a given height.\n", + "\n", + "Using the phugoid model, write a new code to analyze the flight of a paper airplane, with the following conditions:\n", + "\n", + "* Assume $L/D$ of 5.0 (a value close to measurements in Feng et al. 2009)\n", + "* For the trim velocity, let's take an average value of 4.9 m/s.\n", + "* Find a combination of launch angle and velocity that gives the best distance.\n", + "* Think about how you will know when the flight needs to stop ... this will influence how you organize the code.\n", + "* How can you check if your answer is realistic?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Feng, N. B. et al. _\"On the aerodynamics of paper airplanes\"_, AIAA paper 2009-3958, 27th AIAA Applied Aerodynamics Conference, San Antonio, TX. [PDF](http://arc.aiaa.org/doi/abs/10.2514/6.2009-3958)\n", + "\n", + "* Simanca, S. R. and Sutherland, S. _\"Mathematical problem-solving with computers,\"_ 2002 course notes, Stony Brook University, chapter 3: [The Art of Phugoid](https://www.math.sunysb.edu/~scott/Book331/Art_Phugoid.html). (Note that there is an error in the figure: sine and cosine are switched.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/01_04_Second_Order_Methods.ipynb b/lecture_22/01_phugoid/01_04_Second_Order_Methods.ipynb new file mode 100644 index 0000000..dfe6da7 --- /dev/null +++ b/lecture_22/01_phugoid/01_04_Second_Order_Methods.ipynb @@ -0,0 +1,1187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth, C.D. Cooper. Partly based on content by David Ketcheson, also under CC-BY." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid model: bonus!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_The phugoid model of glider flight_ has been such a fun problem to showcase the power of numerical solution of differential equations, we thought you'd enjoy a bonus notebook. The previous lessons were:\n", + "\n", + "* [Phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) —Lays the groundwork for our fun problem, with some context, a little history and a description of the physics of phugoids: curves representing the trajectory of a glider exchanging potential and kinetic energy, with no drag.\n", + "* [Phugoid oscillation](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) —Develops the simple harmonic motion of an aircraft experiencing a small perturbation from the horizontal trajectory: our opportunity to introduce Euler's method, and study its convergence via an exact solution.\n", + "* [Full phugoid motion](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) —The full model takes into account the force of drag and results in a system of two nonlinear equations. We obtain the trajectories using Euler's method in vectorized form, introduce grid-convergence analysis and finish with the paper-airplane challenge!\n", + "\n", + "That is a fantastic foundation for numerical methods. It's a good time to complement it with some theory: the first screencast of the course uses Taylor series to show that _Euler's method is a first-order method_, and we also show you graphical interpretations. Many problems require a more accurate method, though: second order or higher. Among the most popular higher-order methods that we can mention are the _Runge-Kutta methods_, developed around 1900: more than 100 years after Euler published his book containing the method now named after him!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Euler's method is a first-order method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this screencast, we use a Taylor series expansion to analyze Euler's method and show that it incurs a truncation error of first order. We also use a graphical interpretation to motivate the _modified_ Euler method, which achieves second order." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('6i6qhqDCViA')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Second-order methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notebook on phugoid oscillation (lesson 2) included a study of the accuracy obtained with Euler's method, using the exact solution for the simple harmonic motion. We made a _convergence plot_ and saw that as $\\Delta t$ gets smaller, the error also gets smaller. \n", + "\n", + "We could have drawn a line with a slope equal to 1 on that log-log plot, and you would have seen that it was parallel to the convergence line. A slope equal to 1 on a log-log convergence plot is an indication that we have a first-order method: the error scales as ${\\mathcal O}(\\Delta t)$. \n", + "\n", + "In lesson 3, using the full phugoid model (which is nonlinear and does not have an exact solution), we did a _grid-convergence study_ with three different grids, and obtained the _observed_ order of convergence—it was very close to 1, indicating a slope of 1 on a log-log plot.\n", + "\n", + "Another way to look at an ${\\mathcal O}(\\Delta t)$ method is to say that the error scales _linearly_ with the step size, or that they are proportional:\n", + "\n", + "$$ e \\propto \\Delta t.$$\n", + "\n", + "where $e$ stands for the error. To get more accuracy, we could use a _second-order_ method, in which the error is ${\\mathcal O}(\\Delta t^2)$. In general, we say that a method is of order $p$ when the error is proportional to $(\\Delta t)^p$.\n", + "\n", + "In the screencast titled \"Euler's method is a first-order method,\" we used a graphical interpretation to get an idea for improving it: by estimating an intermediate point, like the **midpoint**, we can get a better approximation of the area under the curve of $u^\\prime$. The scheme has two steps and is written as:\n", + "\n", + "\\begin{align}\n", + "u_{n+1/2} & = u_n + \\frac{\\Delta t}{2} f(u_n) \\\\\n", + "u_{n+1} & = u_n + \\Delta t \\,\\, f(u_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "This method is known as the *explicit midpoint method* or the *modified Euler method*, and it is a second-order method. Notice that we had to apply the right-hand side, $~f(u)$, twice. This idea can be extended: we could imagine estimating additional points between $u_{n}$ and $u_{n+1}$ and evaulating $~f(u)$ at the intermediate points to get higher accuracy—that's the idea behind Runge-Kutta methods." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Runge-Kutta methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the modified Euler method, we improve the accuracy over Euler's method by evaluating the right-hand side of the differential equation at an intermediate point: the midpoint. The same idea can be applied again, and the function $f(u)$ can be evaluated at more intermediate points, improving the accuracy even more. This is the basis of the famous *Runge-Kutta (RK) methods*, going back to Carl Runge and Martin Kutta. The modified Euler method corresponds to _second-order_ Runge-Kutta.\n", + "\n", + "Here's a bit of historical coincidence that will blow your mind: Carl Runge's daughter Iris—an accomplished applied mathematician in her own right—worked assiduously over the summer of 1909 to translate Lanchester's _\"Aerodonetics.\"_ She also reproduced his graphical method to draw the phugoid curves (Tobies, 2012)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phugoid model with 2nd-order RK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compute the motion of a glider under the full phugoid model using the second-order Runge-Kutta method. We'll build on the _paper airplane challenge_ of lesson 3 now, and look for the horizontal distance that the plane travels until the moment it touches the ground. \n", + "\n", + "As usual, let's start by importing the libraries and modules that we need, and setting up the model parameters. We also set some default plotting formats using the [`rcParams`](http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rcParams) module. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from math import sin, cos, log\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the paper-airplane challenge of lesson 3, we suggested an $L/D=5.0$ as a realistic value for paper airplanes, according to experiments, and a trim velocity of 4.9 m/s. Let's start with those values, but you could experiment changing these a bit. _What do you think will happen if you make $L/D$ higher?_" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among the initial parameters that we suggest for your first experiment, we are starting with a velocity a little higher than the trim velocity, launch the paper airplane with a negative initial angle, and take the initial height to be 2 meters—all sound like reasonable choices.\n", + "\n", + "Now, we can define a few functions to carry out the computation:\n", + "* The right-hand side of the phugoid model from [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb),\n", + "* One step of the Euler's method that we learned in [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb), and\n", + "* Differences with respect to a fine grid, as in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])\n", + "\n", + "\n", + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)\n", + "\n", + "\n", + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = int(numpy.ceil(N_fine/N_current))\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we also need to define the function `rk2_step()` that computes the next time step using the *modified Euler* method of equations $(1)$ and $(2)$, above, otherwise known as 2nd-order Runge-Kutta or RK2. This function will be called over and over again within the time loop." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def rk2_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using 2nd-order Runge-Kutta.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at the next time step.\n", + " \"\"\"\n", + " u_star = u + 0.5*dt*f(u)\n", + " return u + dt*f(u_star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we first need to set up the time discretization, then initialize arrays to save the solution and we are set to go! The only difference this time is that we are using _both_ Euler's method and 2nd-order Runge-Kutta to get a solution, to compare the two. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "\n", + "# set initial conditions\n", + "u_euler = numpy.empty((N, 4))\n", + "u_rk2 = numpy.empty((N, 4))\n", + "\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_euler[0] = numpy.array([v0, theta0, x0, y0])\n", + "u_rk2[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "\n", + "# use a for loop to call the function rk2_step()\n", + "for n in range(N-1):\n", + " \n", + " u_euler[n+1] = euler_step(u_euler[n], f, dt)\n", + " u_rk2[n+1] = rk2_step(u_rk2[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can get the position of the glider in time, according to both Euler's method and the 2nd-order Runge-Kutta method, by extracting the appropriate portions of the solution arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x_euler = u_euler[:,2]\n", + "y_euler = u_euler[:,3]\n", + "x_rk2 = u_rk2[:,2]\n", + "y_rk2 = u_rk2[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### How far will it fly before touching the ground?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the $y$-axis measures the vertical coordinate with respect to the ground, negative values of $y$ don't have any physical meaning: the glider would have hit the ground by then! To find out if there are any negative $y$ values we can use the handy function [`numpy.where`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html). This function returns the **indices** of the elements in an array that match a given condition. For example, `numpy.where(y_euler<0)[0]` gives an array of the indices `i` where `y_euler[i]<0` (the `[0]` is necessary as `numpy.where` returns an array, which in this case contains a single line). If no elements of the array match the condition, the array of indices comes out empty. \n", + "\n", + "From the physical problem, we know that once there is one negative value, the glider has hit the ground and all the remaining time-steps are unphysical. Therefore, we are interested in finding the _first_ index where the condition applies, given by `numpy.where(y_euler<0)[0][0]`—do read the documentation of the function if you need to! " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_euler = numpy.where(y_euler<0.0)[0]\n", + "if len(idx_negative_euler)==0:\n", + " idx_ground_euler = N-1\n", + " print ('Euler integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_euler = idx_negative_euler[0]\n", + " \n", + "idx_negative_rk2 = numpy.where(y_rk2<0.0)[0]\n", + "if len(idx_negative_rk2)==0:\n", + " idx_ground_rk2 = N-1\n", + " print ('Runge-Kutta integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_rk2 = idx_negative_rk2[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Do Euler and RK2 produce the same solution?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An easy way to compare the numerical results obtained with the Euler and 2nd-order Runge-Kutta methods is using [`numpy.allclose`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html). This function compares each element of two arrays and returns `True` if each comparison is within some relative tolerance. Here, we use the default tolerance: $10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the x-values close? False\n", + "Are the y-values close? False\n" + ] + } + ], + "source": [ + "# check to see if the paths match\n", + "print('Are the x-values close? {}'.format(numpy.allclose(x_euler, x_rk2)))\n", + "print('Are the y-values close? {}'.format(numpy.allclose(y_euler, y_rk2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hmmm, they do differ. Maybe $10^{-5}$ is too tight a tolerance, considering we're using a somewhat coarse grid with first- and second-order methods. Perhaps we can assess this visually, by plotting the glider's path? Study the code below, where we are plotting the path twice, taking a closer look in the second plot by \"zooming in\" to the beginning of the flight." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+eWXL1nerVu3i92pp06dMq1atTKNGzc2x9PpOsjI4cOHjYiY0qVLZysHb3mznwlAdyrQBfgFKOFF\n2RbAH8BB3IdmAAAgAElEQVT6VK/tWN2pu+z3T6Szbo6+L6WC3d69e02FChXMlClT/lm4caMxVata\nP4PF6tXGtGqVbpfuuHHjzI033mhOnTqV46q8PYdpd6qfrVixgh07djB69GhmzJgR8KcbBGIOoHr1\n6rF79252797tSP0qYxcuXCA+Ph4R4ZZbbvFY5tChQzRu3JiCBQuyaNEiChYsmOV6VtkDgDt06JCj\neEOBiNwLDAXijDGH7GWtRaRXqjIlxZ57xxiz0BhT1hhzY8oLSLml7Ul72bOBziPQ3HI+cEse4Hwu\nf/31Fy1atOC+++7jgQce+OeDqlXh55+tn17yey5168KXX6bbpTtkyBCqVatG79690x2q4mvaiPOz\npC1bWNysGU888USOHswbzHLlykXr5s2Z/9lnToei0ti/fz99+vRh7969DBo0iFq1anks16NHDzZs\n2MDIkSMvn0jTC8YYXnzxRWJiYhgxYkROww5qItIZmAG8CTQXkXvtRl0boLRdpgGwD5ia0abS/FQq\nrJw5c4a2bdvSpEkThg8ffnmBXKE14ktEeO2119iwYQMzZswITKXeXK4L9RdOdUecPGmOFi9uRleu\n7Mpu1NT233CDeaJ2bUdjyPZ+HjXKGOtm8ktfo0b5tnx6n/tASndqVFSUKVWqlClVqpTJly+fERFT\nu3Zt88MPP3hcL6U7tU6dOkZETJkyZcz27duzXP/kyZNNdHS0+fbbb3OaSqa82c/4sTsVOAokYXWF\npn4lASPtMjWAI3joIgVKATuB/fY6h+33ddKpL+dfmlJBJikpydx1112mY8eOrvv9uHnzZlOsWDGz\nfv36bG/D23OY4w2sQLycOgkeu+su80FUlNmxY4cj9QfS6aefNq/nzm3+/vtvx2II5192nsbEnT59\n2owYMcKIiGnVqpXHaWBSGnErVqwwvXv3NiJirr76avPbb795XffHH39soqOjzWeffeaTXDLjdCMu\n0K9wPq6Vew0fPtw0aNDAnDlzxhprtnix0yFlz4ULxniY2uTtt982VapUMadPn87WZr09h2l3qp8k\nfvghJz//nB969qRixYqOxRGo8Q55O3TgvyIsWbTIkfrV5fLmzcuzzz5LXFwcCxYs4PXXX0+3rIgw\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(10,6))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler[:idx_ground_euler], y_euler[:idx_ground_euler], 'k-', label='Euler')\n", + "pyplot.plot(x_rk2[:idx_ground_rk2], y_rk2[:idx_ground_rk2], 'r--', label='RK2')\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_rk2[idx_ground_rk2-1]))\n", + "pyplot.legend();\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler, y_euler, 'k-', label='Euler')\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From far away, the Euler and RK2 methods seem to be producing similar answers. However, if we take a closer look, small differences become evident. Keep in mind that we are solving the same equation and both methods will converge to the same solution as we refine the grid. However, they converge to that solution at different rates: RK2 gets more accurate faster, as you make $\\Delta t$ smaller." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid-convergence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), we want to do a grid-convergence study with RK2, to see if we indeed observe the expected rate of convergence. It is always an important step in a numerical solution to investigate whether the method is behaving the way we expect it to: this needs to be confirmed experimentally for every new problem we solve and for every new method we apply!\n", + "\n", + "In the code below, a `for`-loop computes the solution on different time grids, with the coarsest and finest grid differing by 100x. We can use the difference between solutions to investigate convergence, as before." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for-loop to compute the solution on different grids\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once those runs are done, we compute the difference between each numerical solution and the fine-grid solution." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# compute diffgrid\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "for i, dt in enumerate(dt_values):\n", + "\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we plot!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nicaKFSu44YYbWLVqFR9//HHU4UgBmUymza7Dqqy9lhRJb+kkfdpm0qUpfxdffDGTJk3iuOOO449/\n/GPU4VQs6bkLe/aaiEjNNDc3M2XKFMyMa665JupwpEJq6RSR9JaOSByMGDGCX/3qV5x++un86le/\nijocKYFaOiISW4cffji9e/fm6quvjjoUCYGKToql+VmBJEhL/i666CKam5vp27dv1KGEJi25y6cq\nRcfMZlfjviKSTttsU9FEW6kjpeynE2QTt0nu3rWSwOqBmfn48eM1ZVpEpAQtU6YnTJgQfMFPbeKm\niQQiIuWodCLB+8BRwODcayjwMnAHMILspm1H5/77DmAx2U3fpM6luV85CZKav08++YR7772XjRsT\ntcDJpyQ1d6UopaP0L+7+RMsbM5tEdhO3+/NcO93MTia7idvvQopRRFLkrrvu4vzzz+f444/noYce\nijocCZk2cStC3WsitbVmzRoGDhzIkiVLuOeee/j2t78ddUgSQNjP6ewCFJsk0BXYKcB9RSTlbrnl\nFpYsWcLBBx/Mt771rajDkSrQJm4pluZ+5SRIWv7ef/99Jk6cCMA111xDu3axn4tUUNJyV44gk98v\nAR4nu4nbUmAp2WnSPYCewCqgIawARSQdpk6dygcffMBRRx3FMcccE3U4UiWB1l4zs32AnwDHAZ1z\nh1cDTcA4d58bWoQR0piOSO1s2rSJe+65h/32249DDjkk6nCkAsXGdLSJWxF6OFREpHShPBwahJmd\n4e6xXw426S2dpO/pkXTKX3wlPXdRrDJ9Q5XuKyIiMVbKMjiNwM7uPir3vpnia7EZ0NvdO4QVZFSS\n3tIREamGisZ0zOxtYEdgF3dfa2brgafb+MzD3b1ToGjriIqOSPW4O8OHD+dLX/oSF154IZ06xf5X\nhuRUWnR6AB3d/c3c+6Xu3rONr2nzmjhIetFJer9y0sU9fzNnzuS4445jp512YuHChXTtGvuF6UsW\n99y1paIxHXdf1lJwcjqa2VQz+1qRL/t+uUGKSHps2rSJyy+/HIAxY8akquCkXZC11zYB04Hr3P2V\nqkRVJ5Le0hGJyvTp0znjjDPo3bs38+bNU9dawoT6nI6ZLXP3HqFEVudUdETCt379evbdd1+am5u5\n4447OPfcc6MOSUIW9pTpV8ysVxsfeFeA+0qNpXn9pySIa/5WrFhB79692X///TnzzDOjDicScc1d\n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\nzP8H50NbGbioopAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot using the matplotlib function loglog()\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel(r'$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.xlim(1e-4,1)\n", + "pyplot.ylim(1e-4,1)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='--', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is looking good! The difference relative to our fine-grid solution is decreasing with the mesh size at a faster rate than in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), but *how much faster?* When we computed the observed order of convergence with Euler's method, we got a value close to 1—it's a first-order method. Can you guess what we'll get now with RK2?\n", + "\n", + "To compute the observed order of convergence, we use three grid resolutions that are refined at a constant rate, in this case $r=2$. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 1.983\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " ### call rk2_step() ###\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Probably you're not too surprised to see that the observed order of convergence is close to $2$. Because we used a second-order method! This means that the numerical solution is converging with the grid resolution twice as fast compared with Euler's method in [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb), or in other words, the error scales as ${\\mathcal O}(\\Delta t^2)$. That is a lot faster! However, we are paying a price here: second-order Runge-Kutta requires more computations per iteration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Challenge task" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How much longer does it take to get the solution with RK2, compared to Euler's method? Run the same solution (same time grid, same parameters), but find a way to *time* the calculation with Python, and compare the runtimes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multi-step methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The screencast *\"Euler's method is a first-order method\"* motivated graphically an idea to get increased accuracy: using intermediate points between $u_{n}$ and $u_{n+1}$ and evaluating the right-hand side of the differential equation at those intermediate points. The idea is to somehow get a better approximation using more data from the function $f(u)$.\n", + "\n", + "Another way to bring more information about $f(u)$ into the numerical solution is to look at time data $t\\lt t_{n}$. For example, we can involve in the calculation of the solution $u_{n+1}$ the known solution at $u_{n-1}$, in addition to $u_{n}$. Schemes that use this idea are called _multi-step methods_.\n", + "\n", + "\n", + "A classical multi-step method achieves second order by applying a _centered difference_ approximation of the derivative $u'$:\n", + "\n", + "$$ u'(t) \\approx \\frac{u_{n+1} - u_{n-1}}{2\\Delta t}.$$\n", + "\n", + "Isolate the future value of the solution $u_{n+1}$ and apply the differential equation $u'=f(u)$, to get the following formula for this method:\n", + "\n", + "$$ u_{n+1} = u_{n-1} + 2\\Delta t \\, f(u_n),$$\n", + "\n", + "This scheme is known as the **leapfrog method**. Notice that it is using the right-hand side of the differential equation, $f(u)$, evaluated at the _midpoint_ between $u_{n-1}$ and $u_{n+1}$, where the time interval between these two solutions is $2\\Delta t$. Why is it called \"leapfrog\"? If you imagine for a moment all of the _even_ indices $n$ of the numerical solution, you notice that these solution values are computed using the slope estimated from _odd_ values $n$, and vice-versa.\n", + "\n", + "Let's define a function that computes the numerical solution using the leapfrog method:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def leapfrog_step(unm1, u, f, dt):\n", + " \"\"\"Returns the solution time-step n+1) using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " unm1 : array of float\n", + " solution at time-step n-1.\n", + " u : array of float\n", + " solution at time-step n.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at time-step n+1.\n", + " \"\"\"\n", + " return unm1 + 2.0*dt*f(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But wait ... what will we do at the _initial_ time step, when we don't have information for $u_{n-1}$? This is an issue with all multi-step methods: we say that they are _not self-starting_. In the first time step, we need to use another method to get the first \"kick\"—either Euler's method or 2nd-order Runge Kutta could do: let's use RK2, since it's also second order.\n", + "\n", + "For this calculation, we are going to re-enter the model parameters in the code cell below, so that later on we can experiment here using the leapfrog method and different starting values. At the end of this notebook, we'll give you some other model parameters to try that will create a very interesting situation!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude\n", + "\n", + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# set initial conditions\n", + "u_leapfrog = numpy.empty((N, 4))\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_leapfrog[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "# first step using RK2\n", + "u_leapfrog[1] = rk2_step(u_leapfrog[0], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have all the required information to loop in time using the leapfrog method. The code cell below calls the leapfrog function for each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# use a for loop to call the function leapfrog_step()\n", + "for n in range(1,N-1):\n", + " \n", + " u_leapfrog[n+1] = leapfrog_step(u_leapfrog[n-1], u_leapfrog[n], f, dt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like before, we extract from the solution array the information about the glider's position in time and find where it reaches the ground." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get the glider position in time\n", + "x_leapfrog = u_leapfrog[:,2]\n", + "y_leapfrog = u_leapfrog[:,3]\n", + "\n", + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_leapfrog = numpy.where(y_leapfrog<0.0)[0]\n", + "\n", + "if len(idx_negative_leapfrog)==0:\n", + " idx_ground_leapfrog = N-1\n", + " print ('The glider has not reached the ground yet!')\n", + "else:\n", + " idx_ground_leapfrog = idx_negative_leapfrog[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the glider's trajectory with both the leapfrog and RK2 methods, we find that the solutions are very close to each other now: we don't see the differences that were apparent when we compared Euler's method and RK2." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nz6bl5ZdTu3btDKbcO/nLlrHoxBMpW7069WbMgAMO8B1JpMTQiVMhFaYeE2WJLxNZKlasmNAJVCXt\ndUlUmLKUZGaGVaoEL7/MotataTtoEPuMHOk71i7t2LGDhfPmwQMPkHPyyaw85xzm3XtvZAvUqP+e\naHwlg4pUEQ8uv/xyAF544QU2bNjgOY1IMZix/003sWr0aCrVqQPAokWLWLp0qedg/2vx55+z9YQT\n2DJhAsycSaUePbjgwgt9xxKR3dDhfhFPmjdvzowZM3jyySd3Fq2SXUry4f5dcc7RqlUrunfvzmWX\nXZaGZImbN28eBx10ENWqVQNg+LXXctTFF3NSs2Zec4mUZDrcL5IFrrzySgAee+wx9EeURMXmzZtp\n06YNPXv2BMDl5/P4gw+yZcuWjGd58sknue+++3Y+7vHooypQRbKIitQMClOPibLEl8ksF1xwAbVr\n12bBggW8//77XrPsibJIoipUqMDdd99NqVKlAPho6FC63HorZQcNgm+/Zfv27Wn7o2zJ4sW82LMn\nDBoEwB133LHL651GfR5pfNkt6uNLlIpUEU/Kli3LFVdcAcCjjz7qOY1IelRq2ZIlw4Zha9bAUUex\nqmlThrVtC+vXF/tr79ixg1defhlmzYKbbuKIM87guJEjWVe5MgC1a9fm3nvvLfb3ERE/1JMq4tH3\n33/PwQcfzLZt21i2bBmHH36470iSBPWkJumnn3iyQwfO3rqVOtdeC927c+ONN9KoUSO6desGwKxZ\nszjooIOoWbMmACtWrKBGjRpUjhWegwcP5oorrqBy5co455hdrhyN69ShTJcucOGFvL9mDc1btKBc\nuXKpzS4iKaGeVJEsccABB9ClSxecczz22GO+44ik13770WfGDA749FPo3h2AadOmkZubu/Mpq889\nFzvrLOjaFS6+mJUnncSmDh3giy8AePPNN/n000+B4M3us1tuYdGbb8K990KTJrQ5/XQVqCIRoSI1\ng8LUY6Is8fnIcs011wDw3HPPsb7QIdCS/rrsSpiySPJycnIoXbr0zscTJkygWaGTmb5o3ZqtffpA\nhw7QqROLjz6anzp02Hk90xtuuGHnXlaAy+++m8Z7cUOMqM8jjS+7RX18iSq956eISDodd9xxtGzZ\nkmnTpjF8+HCuvvpq35FEMqborUhvKXJDgCu6dPmfx+eee27aM4lIOKgnVSQExowZwwUXXMARRxzB\n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\nB0lEQVTo/D9EAVodDt65OwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(11,8))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls='-', lw=2)\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_leapfrog[idx_ground_leapfrog-1]), fontsize=18);\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_leapfrog[:idx_ground_leapfrog], y_leapfrog[:idx_ground_leapfrog], color='k', ls=':', lw=2)\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about the observed order of convergence? We'll repeat the process we have used before, with a grid-refinement ratio $r=2$ ... here we go:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The order of convergence is alpha = 2.186\n" + ] + } + ], + "source": [ + "# check convergence rate\n", + "r = 2\n", + "h = 0.001\n", + "\n", + "dt_values = numpy.array([h, r*h, r**2*h])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " u[1] = rk2_step(u[0], f, dt)\n", + " for n in range(1, N-1):\n", + " u[n+1] = leapfrog_step(u[n-1], u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + " \n", + "# calculate the order of convergence\n", + "alpha = (log(get_diffgrid(u_values[2], u_values[1], dt_values[2])) \n", + " - log(get_diffgrid(u_values[1], u_values[0], dt_values[1]))) / log(r)\n", + "\n", + "print('The order of convergence is alpha = {:.3f}'.format(alpha))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have numerical evidence that our calculation with the leapfrog method indeed exhibits second-order convergence, i.e., the method is ${\\mathcal O}(\\Delta t^2)$. _The leapfrog method is a second-order method_. Good job!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### But chew on this ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Go back to the cell that re-enters the model parameters, just above the leapfrog-method time loop, and change the following: the initial height `y0` to 25, and the final time `T` to 36. Now re-run the leapfrog calculation and the two code cells below that, which extract the glider's position and plot it.\n", + "\n", + "_What is going on?_\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tobies, R. \"Iris Runge: A life at the crossroads of mathematics, science and industry,\" Springer Basel, 1st ed. (2012). [Read on Google books, page 73](http://books.google.com/books?id=EDm0eQqFUQ4C&lpg=PA73&dq=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&pg=PA73#v=onepage&q=%22I%20have%20been%20making%20good%20progress%20with%20Lanchester.%20The%20second%20chapter%20is%20already%20on%20your%20desk%22&f=false)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/README.md b/lecture_22/01_phugoid/README.md new file mode 100644 index 0000000..c7c2701 --- /dev/null +++ b/lecture_22/01_phugoid/README.md @@ -0,0 +1,43 @@ +#Module 1: The phugoid model of glider flight. + +##Summary + +The phugoid model motivates the learning of numerical time integration methods. The model is described by a set of two nonlinear ordinary differential equations, representing the oscillatory trajectory of an aircraft subject to longitudinal perturbations. + +* [Lesson 1](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_01_Phugoid_Theory.ipynb) presents the physics of phugoids in the assumption of zero drag (following Lanchester, 1909). Plotting the flight path gives fascinating curve shapes. +* [Lesson 2](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_02_Phugoid_Oscillation.ipynb) develops a single-equation model for zero-drag oscillations, leading to simple harmonic motion. The lesson defines initial-value problems, demonstrates Euler's method, and uses the exact solution to study the numerical convergence. +* [Lesson 3](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_03_PhugoidFullModel.ipynb) develops the full phugoid model and solves it with (vectorized) Euler's method. In the absence of an exact solution, the study of convergence uses a grid-refinement method, obtaining the observed order of convergence. The lesson ends with the paper-airplane challenge. +* [Lesson 4](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/01_phugoid/01_04_Second_Order_Methods.ipynb) starts with the screencast "Euler's method is a first-order method" and develops second-order methods: explicit midpoint (modified Euler) and Runge-Kutta. It ends with a grid-refinement study. + +##Badge earning + +Completion of this module in the online course platform can earn the learner the Module 1 badge. + +###Description: What does this badge represent? + +The earner completed Module 1 "The phugoid model of glider flight" of the course "Practical Numerical Methods with Python" (a.k.a., numericalmooc). + +###Criteria: What needs to be done to earn it? + +To earn this badge, the learner needs to complete the graded assessment in the course platform including: answering quiz about basic numerical Python commands; answering quiz about basics of initial-value problems; completing the individual coding assignment "Rocket flight" and answering the numeric questions online. Earners should also have completed self-study of the four module lessons, by reading, reflecting on and writing their own version of the codes. This is not directly assessed, but it is assumed. Thus, earners are encouraged to provide evidence of this self-study by giving links to their code repositories or other learning objects they created in the process. + +###Evidence: Website (link to original digital content) + +Desirable: link to the earner's GitHub repository (or equivalent) containing the solution to the "Rocket flight" coding assignment. +Optional: link to the earner's GitHub repository (or equivalent) containing other codes, following the lesson. + +###Category: + +Higher education, graduate + +###Tags: + +engineering, computation, higher education, numericalmooc, python, gwu, george washington university, lorena barba, github + +###Relevant Links: Is there more information on the web? + +[Course About page](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about) + +[Course Wiki](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/wiki/GW.MAE6286.2014_fall/) + +[Course GitHub repo](https://github.com/numerical-mooc/numerical-mooc) diff --git a/lecture_22/01_phugoid/Rocket_Assignment.ipynb b/lecture_22/01_phugoid/Rocket_Assignment.ipynb new file mode 100644 index 0000000..2839d18 --- /dev/null +++ b/lecture_22/01_phugoid/Rocket_Assignment.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Content under Creative Commons Attribution license CC-BY 4.0, code under MIT license (c)2014 L.A. Barba, G.F. Forsyth." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Coding Assignment: Rocket" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The equations of motion for a rocket in purely vertical flight are given by\n", + "\n", + "\\begin{align}\n", + "\\frac{dh}{dt} &= v\\\\\n", + "(m_s+m_p) \\frac{dv}{dt}& = -(m_s+m_p)g + \\dot{m}_pv_e - \\frac{1}{2}\\rho v|v|AC_D\n", + "\\end{align}\n", + "\n", + "$h$ is the altitude of the rocket\n", + "\n", + "$m_s = 50kg$ is the weight of the rocket shell\n", + "\n", + "$g = 9.81 \\frac{m}{s^2}$\n", + "\n", + "$\\rho = 1.091 \\frac{kg}{m^3}$ is the average air density (assumed constant throughout flight)\n", + "\n", + "$A = \\pi r^2$ is the maximum cross sectional area of the rocket, where $r = 0.5 m$\n", + "\n", + "$v_e = 325 \\frac{m}{s}$ is the exhaust speed\n", + "\n", + "$C_D = 0.15 $ is the drag coefficient\n", + "\n", + "$m_{po} = 100 kg$ at time $t = 0$ is the initial weight of the rocket propellant\n", + "\n", + "The mass of the remaining propellant is given by:\n", + "\n", + "$$m_p = m_{po} - \\int^t_0 \\dot{m}_p d\\tau$$\n", + "\n", + "where $\\dot{m}_p$ is the time-varying burn rate given by the following figure:\n", + "\n", + "Propellant Burn Rate\n", + "\n", + "![burn rate](./burn.rate.png)\n", + "\n", + "Using Euler's method with a timestep of $\\Delta t=0.1s$, create a Python script to calculate the altitude and velocity of the rocket from launch until crash down. \n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assessment:\n", + "\n", + "To check your answers, you can register for [MAE 6286: Practical Numerical Methods with Python](http://openedx.seas.gwu.edu/courses/GW/MAE6286/2014_fall/about).\n", + "\n", + "1. At time $t=3.2s$, what is the mass (in kg) of rocket propellant remaining in the rocket?\n", + "\n", + "2. What is the maximum speed of the rocket in $\\frac{m}{s}$?\n", + " At what time does this occur (in seconds)? \n", + " What is the altitude at this time (in meters)? \n", + " \n", + "3. What is the rocket's maximum altitude during flight (in meters)? At what time (in seconds) does this occur?\n", + "\n", + "4. At what time (in seconds) does the rocket impact the ground? What is the velocity of the rocket (in $\\frac{m}{s}$) at time of impact?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Derivation of the rocket equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you are kind of confused about the rocket equations, here we show how to get to them. \n", + "\n", + "Newton's second law states that the acceleration of the vehicle times its mass is equal to all the forces acting on it. Therefore,\n", + "\n", + "\\begin{equation}\n", + "(m_s + m_p)\\frac{d\\bf{v}}{dt}=\\sum {\\bf F}.\n", + "\\end{equation}\n", + "In the above formula we have assumed that the propellant inside the rocket and the rocket move at the same velocity (in other words, their relative velocity is negligible). \n", + "\n", + "Two of the external forces acting on the rocket are,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_g&= (m_s+m_p)\\bf{g} \\quad (\\rm{Gravity}),\\\\\n", + "{\\bf F}_d&= - \\frac{1}{2} \\rho_a \\mathbf{v} |\\mathbf{v}| A C_D \\quad (\\rm{Drag}).\n", + "\\end{align}\n", + "\n", + "We also need to consider the force resulting from the ejection of the propellant. During an interval $dt$, the engine of the rocket ejects downwards a mass of propellant given by $\\dot m_p dt$. Relative to the rocket, the speed of the ejected burning gas is assumed constant and equal to $v_e$ (the exhaust speed). The momentum variation induced on the exhaust gas by the engine during that interval is therefore, $d{\\bf p}_{gas} = \\dot m_p {\\bf v}_e dt$. Again using Newton's second law we conclude that the force applied by the rocket on the gas is,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_{rocket\\rightarrow gas} = \\frac{d{\\bf p}_{gas}}{dt} = \\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n", + "Using Newton's third law (|action| = |reaction|), the force exerted by the exhaust gas on the rocket is then,\n", + "\n", + "\\begin{align}\n", + "{\\bf F}_{gas\\rightarrow rocket} = -{\\bf F}_{rocket\\rightarrow gas} = -\\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n", + "If we collect all the forces acting on the rocket we finally have:\n", + "\n", + "\\begin{align}\n", + "(m_s + m_p)\\frac{d\\bf{v}}{dt}=(m_s+m_p){\\bf g}- \\frac{1}{2} \\rho_a \\mathbf{v} |v| A C_D -\\dot m_p {\\bf v}_e\n", + "\\end{align}\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "###### The cell below loads the style of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "css_file = '../../styles/numericalmoocstyle.css'\n", + "HTML(open(css_file, \"r\").read())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/lecture_22/01_phugoid/burn.rate.png b/lecture_22/01_phugoid/burn.rate.png new file mode 100644 index 0000000000000000000000000000000000000000..d2cd9359506696d386f80a02f1fcae91e597ffae GIT binary patch literal 11761 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 QnAt{jG<4OUow5o0AHj2&AOHXW literal 0 HcmV?d00001 diff --git a/lecture_22/01_phugoid/figures/glider_forces-lesson3.png b/lecture_22/01_phugoid/figures/glider_forces-lesson3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d73dd73285f165fc818e54bbf085a667bef3ea2 GIT binary patch literal 29182 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 literal 0 HcmV?d00001 diff --git a/lecture_22/01_phugoid/figures/glider_forces.png b/lecture_22/01_phugoid/figures/glider_forces.png new file mode 100644 index 0000000000000000000000000000000000000000..ac036d505fe1948aa1b5b29768b8dfd0765c1bf3 GIT binary patch literal 33331 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 n0FC~?KMz2Q{vX^uyQn1;x-o literal 0 HcmV?d00001 diff --git a/lecture_22/01_phugoid/figures/glider_forces_fbd.svg b/lecture_22/01_phugoid/figures/glider_forces_fbd.svg new file mode 100644 index 0000000..47a1d34 --- /dev/null +++ b/lecture_22/01_phugoid/figures/glider_forces_fbd.svg @@ -0,0 +1,465 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + + + + + + + + + + + + diff --git a/lecture_22/01_phugoid/figures/glider_forces_nodrag.png b/lecture_22/01_phugoid/figures/glider_forces_nodrag.png new file mode 100644 index 0000000000000000000000000000000000000000..969042c183bab07d991615d249a151cdfebd5efb GIT binary patch literal 16886 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 literal 0 HcmV?d00001 diff --git a/lecture_22/01_phugoid/figures/glider_forces_nodrag.svg b/lecture_22/01_phugoid/figures/glider_forces_nodrag.svg new file mode 100644 index 0000000..00942f4 --- /dev/null +++ b/lecture_22/01_phugoid/figures/glider_forces_nodrag.svg @@ -0,0 +1,368 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + diff --git a/lecture_22/01_phugoid/figures/oscillatory_trajectory.png b/lecture_22/01_phugoid/figures/oscillatory_trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7dca91eb93c970cd940912af2285310018f394 GIT binary patch literal 43076 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≧1 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 LWvL1YlfeH2FG<84V2$U;h4GH8eDs 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 literal 0 HcmV?d00001 diff --git a/lecture_22/01_phugoid/phugoid.py b/lecture_22/01_phugoid/phugoid.py new file mode 100755 index 0000000..0f99fd6 --- /dev/null +++ b/lecture_22/01_phugoid/phugoid.py @@ -0,0 +1,112 @@ +# Script to plot the flight path of the phugoid using Lanchester's model. +# It uses the sign convention and formulae provided by Milne-Thomson (1958). + +import numpy +from matplotlib import pyplot + +numpy.seterr(all='ignore') +''' +see http://docs.scipy.org/doc/numpy/reference/generated/numpy.seterr.html for explanation. ignore over/underflow errors that pop up in the radius_of_curvature function +''' + +def radius_of_curvature(z, zt, C): + """Returns the radius of curvature of the flight path at any point. + + Parameters + --------- + z : float + current depth below the reference horizontal line. + zt : float + initial depth below the reference horizontal line. + C : float + constant of integration. + + Returns + ------- + radius : float + radius of curvature. + """ + return zt / (1/3 - C/2*(zt/z)**1.5) + +def rotate(x, z, xCenter, zCenter, angle): + """Returns the new position of the point. + + Parameters + --------- + x : float + previous x-position of the point + z : float + previous z-position of the point. + xCenter : float + x-location of the center of rotation. + zCenter : float + z-location of the center of rotation. + angle : float + angle of rotation + + Returns + ------- + xCenter_new : float + new x-location of the center of rotation. + zCenter_new : float + new z-location of the center of rotation. + """ + dx = x - xCenter + dz = z - zCenter + # the following formulae take into account the orientation of the axes + xNew = dx*numpy.cos(angle) + dz*numpy.sin(angle) + zNew = -dx*numpy.sin(angle) + dz*numpy.cos(angle) + return xCenter + xNew, zCenter + zNew + +def plot_flight_path(zt, z0, theta0): + """Plots the flight path. + + Parameters + --------- + zt : float + trim height of the glider. + z0 : float + initial height of the glider. + theta0 : float + initial orientation of the glider. + + Returns + ------- + None : None + """ + # arrays to store the coordinates of the flight path + N = 1000 + z = numpy.zeros(N) + x = numpy.zeros(N) + + # set initial conditions + z[0] = z0 + x[0] = 0. + theta = theta0 + + # calculate the constant C + C = (numpy.cos(theta) - 1/3*z[0]/zt)*(z[0]/zt)**.5 + # incremental distance along the flight path + ds = 1 + + #obtain the curve coordinates + for i in range(1,N): + # minus sign for the second coordinate because the z-axis points downwards + normal = numpy.array([numpy.cos(theta+numpy.pi/2.), -numpy.sin(theta+numpy.pi/2.)]) + R = radius_of_curvature(z[i-1], zt, C) + center = numpy.array([x[i-1]+normal[0]*R, z[i-1]+normal[1]*R]) + dtheta = ds/R + x[i], z[i] = rotate(x[i-1], z[i-1], center[0], center[1], dtheta) + theta = theta + dtheta + + # generate a plot + pyplot.figure(figsize=(10,6)) + pyplot.plot(x, -z, color = 'k', ls='-', lw=2.0, label="$z_t=\ %.1f,\\,z_0=\ %.1f,\\,\\theta_0=\ %.2f$" % (zt, z[0], theta0)) + pyplot.axis('equal') + pyplot.title("Flight path for $C$ = %.3f" % C, fontsize=18) + pyplot.xlabel("$x$", fontsize=18) + pyplot.ylabel("$z$", fontsize=18) + pyplot.legend() + pyplot.show() + +# End of File diff --git a/lecture_22/figures/glider_forces-lesson3.png b/lecture_22/figures/glider_forces-lesson3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d73dd73285f165fc818e54bbf085a667bef3ea2 GIT binary patch literal 29182 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 literal 0 HcmV?d00001 diff --git a/lecture_22/figures/glider_forces.png b/lecture_22/figures/glider_forces.png new file mode 100644 index 0000000000000000000000000000000000000000..ac036d505fe1948aa1b5b29768b8dfd0765c1bf3 GIT binary patch literal 33331 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 n0FC~?KMz2Q{vX^uyQn1;x-o literal 0 HcmV?d00001 diff --git a/lecture_22/figures/glider_forces_fbd.svg b/lecture_22/figures/glider_forces_fbd.svg new file mode 100644 index 0000000..47a1d34 --- /dev/null +++ b/lecture_22/figures/glider_forces_fbd.svg @@ -0,0 +1,465 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + + + + + + + + + + + + diff --git a/lecture_22/figures/glider_forces_nodrag.png b/lecture_22/figures/glider_forces_nodrag.png new file mode 100644 index 0000000000000000000000000000000000000000..969042c183bab07d991615d249a151cdfebd5efb GIT binary patch literal 16886 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 literal 0 HcmV?d00001 diff --git a/lecture_22/figures/glider_forces_nodrag.svg b/lecture_22/figures/glider_forces_nodrag.svg new file mode 100644 index 0000000..00942f4 --- /dev/null +++ b/lecture_22/figures/glider_forces_nodrag.svg @@ -0,0 +1,368 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + diff --git a/lecture_22/figures/oscillatory_trajectory.png b/lecture_22/figures/oscillatory_trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7dca91eb93c970cd940912af2285310018f394 GIT binary patch literal 43076 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≧1 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 LWvL1YlfeH2FG<84V2$U;h4GH8eDs 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 literal 0 HcmV?d00001 diff --git a/lecture_22/lecture_22.ipynb b/lecture_22/lecture_22.ipynb new file mode 100644 index 0000000..624029d --- /dev/null +++ b/lecture_22/lecture_22.ipynb @@ -0,0 +1,882 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Initial Value Problem\n", + "\n", + "## Euler's method\n", + "\n", + "$\\frac{dy}{dt}=f(t,y)$\n", + "\n", + "$y_{i+1}=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)$\n", + "\n", + "### 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": 6, + "metadata": { + "collapsed": false + }, + "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", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)| error (m/s)\n", + "-------------------------\n", + " 0.0 | 0.00\n", + " 7.1 | 26.67\n", + " 14.3 | 54.21\n", + " 28.6 | 33.62\n", + " 35.7 | 29.84\n", + " 42.9 | 82.85\n", + " 50.0 | 47.86\n", + "\n", + "O(h^2)=51.02\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\t-40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\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\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", + "\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", + "\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(8,50);\n", + "fprintf('\\nO(h^2)=%1.2f',min(diff(t).^2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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)dt=\\frac{f(t_{i})+f(t_{i+1})}{2}h$\n", + "\n", + "therefore the error is\n", + "\n", + "$E_{t}=\\frac{-f''(\\xi)}{12}h^3$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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": 102, + "metadata": { + "collapsed": false + }, + "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": 103, + "metadata": { + "collapsed": false + }, + "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": {}, + "source": [ + "This process can be iterated until a desired tolerance is achieved" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "n=0;\n", + "e=10;\n", + "while (1)\n", + " n=n+1;\n", + " yold=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));\n", + " e=abs(y(2)-yold)/y(2)*100;\n", + " if e<= 0.00001 | n>100, break, end\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 2.00000\n", + " 6.36087\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "dy_corr =\n", + "\n", + " 4.36087\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + "\n", + "n = 12\n", + "e = 6.3760e-06\n" + ] + } + ], + "source": [ + "y\n", + "dy_corr\n", + "n\n", + "e" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": false + }, + "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", + " 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": 121, + "metadata": { + "collapsed": false + }, + "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": 122, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 2.0000\n", + " 6.3609\n", + " 15.3022\n", + " 34.7433\n", + " 77.7351\n", + "\n", + "ans =\n", + "\n", + " 2.0000\n", + " 6.1946\n", + " 14.8439\n", + " 33.6772\n", + " 75.3390\n", + "\n" + ] + } + ], + "source": [ + "y\n", + "y_an(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "collapsed": false + }, + "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": {}, + "source": [ + "# Phugoid Oscillation example\n", + "\n", + "[phugoid lessons in numerical methods with python](https://github.com/numerical-mooc/numerical-mooc/tree/master/lessons/01_phugoid)\n", + "\n", + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Ratio of lift to weight is known as the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynamically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Euler's Method\n", + "\n", + "Apply Euler's method: replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "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/lecture_22/lecture_22_python.ipynb b/lecture_22/lecture_22_python.ipynb new file mode 100644 index 0000000..88f0304 --- /dev/null +++ b/lecture_22/lecture_22_python.ipynb @@ -0,0 +1,771 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phugoid Oscillation example\n", + "\n", + "[phugoid lessons in numerical methods with python](https://github.com/numerical-mooc/numerical-mooc/tree/master/lessons/01_phugoid)\n", + "\n", + "![Image](./figures/glider_forces-lesson3.png)\n", + "#### Figure 1. Forces with a positive trajectory angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Figure 1, $L$ is the lift, $W$ is the weight, $D$ is the drag, and $\\theta$ the positive angle of the trajectory, instantaneously. \n", + "\n", + "\\begin{align}\n", + "m \\frac{dv}{dt} & = - W \\sin\\theta - D \\\\\n", + "m v \\, \\frac{d\\theta}{dt} & = - W \\cos\\theta + L\n", + "\\end{align}\n", + "\n", + "We can use a few little tricks to make these equations more pleasing. First, use primes to denote the time derivatives and divide through by the weight:\n", + "\n", + "\\begin{align}\n", + " \\frac{v'}{g} & = - \\sin\\theta - D/W \\\\\n", + "\\frac{v}{g} \\, \\theta' & = - \\cos\\theta + L/W\n", + "\\end{align}\n", + "\n", + "\n", + "Ratio of lift to weight is known as the trim conditions—$L/W=v^2/v_t^2$— and also from the definitions of lift and drag, \n", + "\n", + "$$\\begin{eqnarray}\n", + "L &=& C_L S \\times \\frac{1}{2} \\rho v^2 \\\\\n", + "D &=& C_D S \\times \\frac{1}{2} \\rho v^2\n", + "\\end{eqnarray}$$\n", + "\n", + "we see that $L/D=C_L/C_D$. The system of equations can be re-written:\n", + "\n", + "\\begin{align}\n", + " v' & = - g\\, \\sin\\theta - \\frac{C_D}{C_L} \\frac{g}{v_t^2} v^2 \\\\\n", + " \\theta' & = - \\frac{g}{v}\\,\\cos\\theta + \\frac{g}{v_t^2}\\, v\n", + "\\end{align}\n", + "\n", + "It is very interesting that the first equation has the factor $C_D/C_L$, which is the inverse of a measure of the aerodynamic efficiency of the aircraft. It turns out, this is the term that contributes damping to the phugoid model: if drag is zero, there is no damping. Drag is never zero in real life, but as engineers design more aerodynamically efficient aircraft, they make the phugoid mode more weakly damped. At altitude, this is nothing but a slight bother, but vertical oscillations are unsafe during final approach to land, so this is something to watch out for!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To visualize the flight trajectories predicted by this model, integrate the spatial coordinates, which depend on both the forward velocity (tangential to the trajectory) and the trajectory angle. The position of the glider on a vertical plane will be designated by coordinates $(x, y)$ with respect to an inertial frame of reference, and are obtained from:\n", + "\n", + "\\begin{align}\n", + "x'(t) & = v \\cos(\\theta) \\\\\n", + "y'(t) & = v \\sin(\\theta).\n", + "\\end{align}\n", + "\n", + "Augmenting our original two differential equations by the two equations above, we have a system of four first-order differential equations to solve. We will use a time-stepping approach, like in the previous lesson. To do so, we do need *initial values* for every unknown:\n", + "\n", + "$$\n", + "v(0) = v_0 \\quad \\text{and} \\quad \\theta(0) = \\theta_0\\\\\n", + "x(0) = x_0 \\quad \\text{and} \\quad y(0) = y_0\n", + "$$\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Euler's Method\n", + "\n", + "Apply Euler's method: replace each of the time derivatives by an approximation of the form:\n", + "\n", + "$$v'(t) \\approx \\frac{v^{n+1} - v^n}{\\Delta t},$$\n", + "\n", + "where we are now using a superscript $n$ to indicate the $n$-th value in the time iterations. The first differential equation, for example, gives:\n", + "\n", + "$$\\frac{v^{n+1} - v^n}{\\Delta t} = - g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2$$\n", + "\n", + "At each time iteration $t^n$, we want to evaluate all the known data of our system to obtain the state at $t^{n+1}$—the next time step. We say that we are _stepping in time_ or _time marching_.\n", + "\n", + "The full system of equations discretized with Euler's method is:\n", + "\n", + "\\begin{align}\n", + "v^{n+1} & = v^n + \\Delta t \\left(- g\\, \\sin\\theta^n - \\frac{C_D}{C_L} \\frac{g}{v_t^2} (v^n)^2 \\right) \\\\\n", + "\\theta^{n+1} & = \\theta^n + \\Delta t \\left(- \\frac{g}{v^n}\\,\\cos\\theta^n + \\frac{g}{v_t^2}\\, v^n \\right) \\\\\n", + "x^{n+1} & = x^n + \\Delta t \\, v^n \\cos\\theta^n \\\\\n", + "y^{n+1} & = y^n + \\Delta t \\, v^n \\sin\\theta^n.\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from math import sin, cos, log, ceil\n", + "import numpy\n", + "from matplotlib import pyplot\n", + "%matplotlib inline\n", + "from matplotlib import rcParams\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set the parameter values and the _initial values_. \n", + "\n", + "Acceleration of gravity is: 9.8 m/s$^2$, but what are good values for $C_D/C_L$, the inverse of the aerodynamic efficiency? Some possible values are given on a table in the Wikipedia entry for [lift-to-drag ratio](http://en.wikipedia.org/wiki/Lift-to-drag_ratio): a modern sailplane can have $L/D$ of 40 to 60, depending on span (and, in case you're interested, a flying squirrel has $L/D$ close to 2).\n", + "\n", + "For the _trim velocity_, the speed range for typical sailplanes is between 65 and 280 km/hr, according to Wikipedia (it must be right!). Let's convert that to meters per second: 18 to 78 m/s. We'll pick a value somewhere in the middle of this range.\n", + "\n", + "#### Possible set of parameters for the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 30.0 # trim velocity in m s^{-1} \n", + "C_D = 1/40 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1 # for convenience, use C_L = 1\n", + "pi = numpy.pi\n", + "\n", + "### set initial conditions ###\n", + "v0 = v_t # start at the trim velocity (or add a delta)\n", + "theta0 = pi/12 # initial angle of trajectory\n", + "x0 = 0 # horizotal position is arbitrary\n", + "y0 = 1000 # initial altitude" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def f(u):\n", + " \"\"\"Returns the right-hand side of the phugoid system of equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " array containing the solution at time n.\n", + " \n", + " Returns\n", + " -------\n", + " dudt : array of float\n", + " array containing the RHS given u.\n", + " \"\"\"\n", + " \n", + " v = u[0]\n", + " theta = u[1]\n", + " x = u[2]\n", + " y = u[3]\n", + " return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,\n", + " -g*cos(theta)/v + g/v_t**2*v,\n", + " v*cos(theta),\n", + " v*sin(theta)])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def euler_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using Euler's method.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equations.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " approximate solution at the next time step.\n", + " \"\"\"\n", + " \n", + " return u + dt * f(u)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "T = 100 # final time\n", + "dt = 0.1 # time increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u = numpy.empty((N, 4))\n", + "u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values\n", + "\n", + "# time loop - Euler method\n", + "for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# get the glider's position with respect to the time\n", + "\n", + "x = u[:,2]\n", + "y = u[:,3]\n", + "\n", + "# visualization of the path\n", + "pyplot.figure(figsize=(8,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'x', fontsize=18)\n", + "pyplot.ylabel(r'y', fontsize=18)\n", + "pyplot.title('Glider trajectory, flight time = %.2f' % T, fontsize=18)\n", + "pyplot.plot(x,y, 'k-', lw=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grid Convergence\n", + "\n", + "Convergence of Euler's method for the phugoid model\n", + "\n", + "We need to be careful, though, and make sure that the fine-grid solution is resolving all of the features in the mathematical model. How can we know this? We'll have a look at that in a bit. Let's see how this works first.\n", + "\n", + "You need a sequence of numerical solutions of the same problem, each with a different number of time grid points.\n", + "\n", + "1. Create a NumPy array called `dt_values` that contains the time-increment of each grid to be solved on. \n", + "\n", + "2. For each element `dt_values[i]`, we will compute the solution `u_values[i]` of the glider model using Euler's method. \n", + "\n", + "3. If we want to use five different values of $\\Delta t$, we'll have five solutions: we put them in an array ... but each one is also an array\n", + "\n", + "To get all the numerical solutions—each with its value of $\\Delta t$, we will loop over the elements of the array `dt_values`. Within the loop, we need to access both `dt_values[i]` and the index `i`. \n", + "\n", + "`enumerate()` is a built-in Python function that will give us consecutive `index, value` pairs just like we need. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt) + 1 # number of time-steps\n", + "\n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " \n", + " u[n+1] = euler_step(u[n], f, dt) ### call euler_step() ###\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def get_diffgrid(u_current, u_fine, dt):\n", + " \"\"\"Returns the difference between one grid and the fine one using L-1 norm.\n", + " \n", + " Parameters\n", + " ----------\n", + " u_current : array of float\n", + " solution on the current grid.\n", + " u_finest : array of float\n", + " solution on the fine grid.\n", + " dt : float\n", + " time-increment on the current grid.\n", + " \n", + " Returns\n", + " -------\n", + " diffgrid : float\n", + " difference computed in the L-1 norm.\n", + " \"\"\"\n", + " \n", + " N_current = len(u_current[:,0])\n", + " N_fine = len(u_fine[:,0])\n", + " \n", + " grid_size_ratio = ceil(N_fine/N_current)+1\n", + " \n", + " diffgrid = dt * numpy.sum( numpy.abs(\\\n", + " u_current[:,2]- u_fine[::grid_size_ratio,2])) \n", + " \n", + " return diffgrid" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dt = 0.1\n", + "dt = 0.05\n", + "dt = 0.01\n", + "dt = 0.005\n", + "dt = 0.001\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:24: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n" + ] + }, + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (100001,) (50001,) ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m### call the function get_diffgrid() ###\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mdiffgrid\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_diffgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mget_diffgrid\u001b[0;34m(u_current, u_fine, dt)\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mgrid_size_ratio\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mceil\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mN_fine\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mN_current\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mdiffgrid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdt\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mu_current\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m-\u001b[0m \u001b[0mu_fine\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mgrid_size_ratio\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdiffgrid\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (100001,) (50001,) " + ] + } + ], + "source": [ + "# compute difference between one grid solution and the finest one\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " print 'dt = ', dt\n", + "\n", + " ### call the function get_diffgrid() ###\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nhZIkSVIT/x+GWag0SZz7DQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# log-log plot of the grid differences\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel('$L_1$-norm of the grid differences', fontsize=18)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1], color='k', ls='-', lw=2, marker='o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Second Order Runge-Kutta\n", + "\n", + "Estimate average slope along time step\n", + "\n", + "\\begin{align}\n", + "u_{n+1/2} & = u_n + \\frac{\\Delta t}{2} f(u_n) \\\\\n", + "u_{n+1} & = u_n + \\Delta t \\,\\, f(u_{n+1/2}).\n", + "\\end{align}\n", + "\n", + "This method is known as the *explicit midpoint method* or the *modified Euler method*, and it is a second-order method. Notice that we had to apply the right-hand side, $~f(u)$, twice. This idea can be extended: we could imagine estimating additional points between $u_{n}$ and $u_{n+1}$ and evaulating $~f(u)$ at the intermediate points to get higher accuracy—that's the idea behind Runge-Kutta methods." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# model parameters:\n", + "g = 9.8 # gravity in m s^{-2}\n", + "v_t = 4.9 # trim velocity in m s^{-1} \n", + "C_D = 1/5.0 # drag coefficient --- or D/L if C_L=1\n", + "C_L = 1.0 # for convenience, use C_L = 1\n", + "\n", + "### set initial conditions ###\n", + "v0 = 6.5 # start at the trim velocity (or add a delta)\n", + "theta0 = -0.1 # initial angle of trajectory\n", + "x0 = 0.0 # horizotal position is arbitrary\n", + "y0 = 2.0 # initial altitude" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def rk2_step(u, f, dt):\n", + " \"\"\"Returns the solution at the next time-step using 2nd-order Runge-Kutta.\n", + " \n", + " Parameters\n", + " ----------\n", + " u : array of float\n", + " solution at the previous time-step.\n", + " f : function\n", + " function to compute the right hand-side of the system of equation.\n", + " dt : float\n", + " time-increment.\n", + " \n", + " Returns\n", + " -------\n", + " u_n_plus_1 : array of float\n", + " solution at the next time step.\n", + " \"\"\"\n", + " u_star = u + 0.5*dt*f(u)\n", + " return u + dt*f(u_star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Solve with both RK2 and Euler (or RK1)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# set time-increment and discretize the time\n", + "T = 15.0 # final time\n", + "dt = 0.01 # set time-increment\n", + "N = int(T/dt) + 1 # number of time-steps\n", + "\n", + "\n", + "# set initial conditions\n", + "u_euler = numpy.empty((N, 4))\n", + "u_rk2 = numpy.empty((N, 4))\n", + "\n", + "\n", + "# initialize the array containing the solution for each time-step\n", + "u_euler[0] = numpy.array([v0, theta0, x0, y0])\n", + "u_rk2[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + "\n", + "# use a for loop to call the function rk2_step()\n", + "for n in range(N-1):\n", + " \n", + " u_euler[n+1] = euler_step(u_euler[n], f, dt)\n", + " u_rk2[n+1] = rk2_step(u_rk2[n], f, dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x_euler = u_euler[:,2]\n", + "y_euler = u_euler[:,3]\n", + "x_rk2 = u_rk2[:,2]\n", + "y_rk2 = u_rk2[:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How far will the glider travel before reaching ground?" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# get the index of element of y where altitude becomes negative\n", + "idx_negative_euler = numpy.where(y_euler<0.0)[0]\n", + "if len(idx_negative_euler)==0:\n", + " idx_ground_euler = N-1\n", + " print ('Euler integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_euler = idx_negative_euler[0]\n", + " \n", + "idx_negative_rk2 = numpy.where(y_rk2<0.0)[0]\n", + "if len(idx_negative_rk2)==0:\n", + " idx_ground_rk2 = N-1\n", + " print ('Runge-Kutta integration has not touched ground yet!')\n", + "else:\n", + " idx_ground_rk2 = idx_negative_rk2[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the results" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nysrK8mRcrwQtrzGGnJwc3n33XddRRESkkKCdU6JJtSmal3XJy8tj4MCB1KpVi/vvv9+z1/FKPM+Z\n8847j+7duzN69Gj2798f8fGNDfc6KfmdMaYlkJmZmUnLli2PuH92djbfffcdv/zyCxUqVKBu3brU\nrFlTH1+MIXl5eRx//PEMHDiQe++913UcsrKyaNWqFSWdoyIulGae/vYcoJW1Nn5/SihCuOcmEXFj\nypQpDBo0iLWDBtG0fn1fr9goh/v4448566yzePLJJxk4cCAQuXNTUN5BiwlVq1alcePGnHXWWTRv\n3pxjjz1WzVmMSUhIoGPHjrz55puuo4iIiIhPffPNN4wYMYJ7Lr+cplOnwu4j3nZXfKZFixZcccUV\njBs3LuLvopWP6GgiQlJSEjNmzGDHjh3UqlXLdRwAPv/8c9cRRELS/BSReGKtZfDgwdSuWpU7PvsM\nTj8dxo1zHUuOZOZMqFQJLr/890133XUXZ511Fi+88AL9+/eP2EupQROJsKSkJKy1LF68mF69eh35\nCR6qXbs2VatWpV+/fk5ziBxJ1apVqV27tusYIiKemzVrFq+++ipfdu5MuRUrICsLKlZ0HUuO5KWX\nYOVK6NIFKlcG8t9Fu/zyyxk7dmxEf9ZSgxZnkpOTmTdvnusYJRbUvNeceCJfPv88OG7QGjRowOef\nf8727duLfHzYsGE89NBDUU5VesrrLZd5a9euTYMGDZy8tsSPoJ1Tokm1KVqk67Jjxw5uuukmxl14\nIQ0XLoTJk6FZs4iNH01xN2f++U847TSYNAmGD/9986hRo2jZsiXTp0+nefPmEXkpNWhxZujQoa4j\nhCWoef+Rl8dXixdjrXV+nWGDBg1C/uB75513BmoRAeX1VtDyioQraOeUaFJtihbpugwfPpyj9u7l\n9nXr8t+JueGGiI4fTXE3Z5o2zf9+jRsHAwbAsfkLzJ999tl0796dsWPHMm3atIi8lFZxLAOtlCWh\nrO7fnwbPPsvWTz+lcYR+myIif9AqjqHp3CTiT0uWLKFDhw6sb9OGxuvXw6efQr16rmNJOL7/Hho3\nhkGD4JBbI6xcuZI2bdpw33338fe//x20iqOI/5x0/fUcBax+/HHXUURERMSxX3/9lUGDBtGuXTsa\nTZwIzz+v5iyI6tSB1FR4+GHYtOn3za1bt6ZDhw48/fTTEXkZNWgiHqjWti3bK1Yk7/XXXUcRERER\n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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the glider path\n", + "pyplot.figure(figsize=(10,6))\n", + "pyplot.subplot(121)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler[:idx_ground_euler], y_euler[:idx_ground_euler], 'k-', label='Euler')\n", + "pyplot.plot(x_rk2[:idx_ground_rk2], y_rk2[:idx_ground_rk2], 'r--', label='RK2')\n", + "pyplot.title('distance traveled: {:.3f}'.format(x_rk2[idx_ground_rk2-1]))\n", + "pyplot.legend();\n", + "\n", + "# Let's take a closer look!\n", + "pyplot.subplot(122)\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('$x$')\n", + "pyplot.ylabel('$y$')\n", + "pyplot.plot(x_euler, y_euler, 'k-', label='Euler')\n", + "pyplot.plot(x_rk2, y_rk2, 'r--', label='RK2')\n", + "pyplot.xlim(0,5)\n", + "pyplot.ylim(1.8,2.5);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Convergence rates" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:24: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n" + ] + }, + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (15001,) (7501,) ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdt_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mdiffgrid\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_diffgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mget_diffgrid\u001b[0;34m(u_current, u_fine, dt)\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mgrid_size_ratio\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mceil\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mN_fine\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mN_current\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mdiffgrid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdt\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mu_current\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m-\u001b[0m \u001b[0mu_fine\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mgrid_size_ratio\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdiffgrid\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (15001,) (7501,) " + ] + } + ], + "source": [ + "diffgrid1=diffgrid\n", + "# use a for-loop to compute the solution on different grids\n", + "dt_values = numpy.array([0.1, 0.05, 0.01, 0.005, 0.001])\n", + "\n", + "u_values = numpy.empty_like(dt_values, dtype=numpy.ndarray)\n", + "\n", + "for i, dt in enumerate(dt_values):\n", + " \n", + " N = int(T/dt)+1 # number of time-steps\n", + " \n", + " ### discretize the time t ###\n", + " t = numpy.linspace(0.0, T, N)\n", + " \n", + " # initialize the array containing the solution for each time-step\n", + " u = numpy.empty((N, 4))\n", + " u[0] = numpy.array([v0, theta0, x0, y0])\n", + "\n", + " # time loop\n", + " for n in range(N-1):\n", + " u[n+1] = rk2_step(u[n], f, dt)\n", + " \n", + " # store the value of u related to one grid\n", + " u_values[i] = u\n", + "\n", + "# compute diffgrid\n", + "diffgrid = numpy.empty_like(dt_values)\n", + "for i, dt in enumerate(dt_values):\n", + "\n", + " diffgrid[i] = get_diffgrid(u_values[i], u_values[-1], dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ngrcHDx6sAscjKnJEREQCtWgRPP00AHnVqtFl924sUK9ePe677z5vY4thKnJERIqxfPlyr0OQSPHT\nT3DXXUUv/3HmmWwqeD506FCqVatW6uHKNfeoyBERKcbkyZO9DkEixZdfQsFg2J9atKDPmjUANGjQ\ngHvuuafMw5Vr7lGRIyJSjJdfftnrECRSXH45rF4N119P76pVi94ePnw4VY96XRLlmns0hVxEpBjx\n8fFehyCRJCkJO38+XefP56uffmL//v306NHDr0OVa+5RkSMiIhIExhhuuukmbrjhBrZs2UJcXJzX\nIcU8FTkeKs9igCIiEhl8Ph9JSUlehxF1KrIYoMbkeGjq1KlkZGSowAkDo0ePxufzlfmIi4ujXr16\nXHfddbz66qvFnuv5558v8fhKlSqxbNmyY9qX1HbMmDHHtNu2bRuPPvoonTp1IjExkapVq3LaaafR\nsmVLhg8fzvfff+/af59YNGDAAK9DkBihXPNPamoqGRkZTJ061e9jdCVHBOjatStNmjQBoHv37hhj\nuOyyy+jVq1dRm7y8PL7//nteeeUV3nzzTd58803uuOMOZs+efcy52rVrx5w5cwDo168fu3fv5pxz\nzmHYsGEAJ2zLMWfOHDZs2MCYMWM47bTTmDRpEtWqVeOCCy4oatOzZ0/mzJnD4cOHOe+88+jVqxdJ\nSUns2LGD2bNnM2HCBJ544gmee+45brzxRlf+G8WaSN+WQiKHcs1F1lo9QvwAmgE2MzPT+iszM9OW\n9xipGGOM9fl8tkePHiW26datW1G7yZMnl9guKSnJ+nw+2759+xLbZGdn29/85je2Tp06dtWqVcW2\nqVy5svX5fLZXr142Ly/vmM8OHTpkr776amuMsVWrVrUrV64s4zd0j/JUot6CBda+957XUcS0wu8Z\noJkt4+9b3a4SqYDHHnuMSpUqAZTr0unxVq1aRdu2bQH44IMPjrl6c7y6devy+OOP4/Md+8c2Li6O\nmTNnEhcXR25uLkOHDq1wPCJSiu+/hx494MoroU8fyMvzOiIpg4ockQqoW7cuTZo0wVrLjh07+Pbb\nb8t9jpUrV9K+fXuqVavG0qVLy9xd/sorryxx5dR69erRsmVLrLUsXbqUX3/9tdzxiEgprIVeveDH\nH53Xe/aQbwzz5s3j8OHD3sYmJVKRI1JBNWvWLHq+c+fOch27fPlyOnTowGmnncayZcs466yzSm2/\n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\noIIt7U9vzPAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot using the matplotlib function loglog()\n", + "pyplot.figure(figsize=(6,6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel(r'$\\Delta t$', fontsize=18)\n", + "pyplot.ylabel(r'normalized $L_1$-norm', fontsize=18)\n", + "pyplot.xlim(1e-4,1)\n", + "pyplot.ylim(1e-4,1)\n", + "pyplot.axis('equal')\n", + "pyplot.loglog(dt_values[:-1], diffgrid[:-1]/max(diffgrid), color='k',\\\n", + " label='RK2',ls='--', lw=2, marker='o');\n", + "pyplot.loglog(dt_values[:-1], diffgrid1[:-1]/max(diffgrid1), color='r',\\\n", + " label='Euler',ls='--', lw=2, marker='o');\n", + "pyplot.legend(loc='upper left')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}