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": "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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\nd5xO8oII1wEktNWrV4+ZM2fStm1bhg8fTpEiRRg0aJBOlRcRycCnn35K7969ARg+fDh33nkn4Ls9\n4qOPPsoDDzxAeHg4PXv2dBlTPE4jcpKh66+/nmnTphEREcGQIUN47bXXXEcSEQlpX3zxBXfddRdJ\nSUm89NJLPPjgg8nPPfLII/z73/8G4P777+ejjz5yFVPyABU5yZSbb76ZCRMmEBYWxoABA3j77bdd\nRxIRCUlz587l9ttv5+zZszz66KM8//zzf1mnX79+DBkyBGst9957LyNGjHCQVPICXX5EsuTD/2/v\nvsOjqhb1j39X6O0QikgVUOkiHa6RXgwtdKliKKJiAak5iB65XlAEpASFGIqHEhDlxxVEukgEgpFO\npCuEDhIktABJmPX7I2FuiHJUTLIzyft5nnkyWTNJXmVn5s3ee609d677MMCsWbN44YUXHE4kIpJ+\nhIaG0qpVK27evMkrr7zCRx999B9PRZk8eTLDhg0DYOLEiQwfPjytooqH0fIjkiL69evHtGnTAHjx\nxReZO3euw4lERNKHrVu30qZNG27evMkLL7zA9OnT//B84qFDh7pnsI4YMYIxY8ZoUpn8JdojJw9k\nwoQJBAQEABAcHMyAAQMcTiQi4pzw8HBatGjBtWvX6N27N59++qn72qp/xvz58+nbty8ul4vhw4cz\nYcIETSqTe+jKDsmoyP19kyZNYsSIEQAEBQXx0ksvOZxIRCTtbdmyhdatW3Pt2jW6du1KSEgIWbP+\n9UUhli5dSo8ePYiPj2fAgAHMmDHjgb6PZEwqcsmoyKWMKVOmMHToUABmzJhxz8wsEZGMbuPGjfj5\n+RETE0OPHj2YP3/+3ypfX3/9NV26dOHWrVu0b9+exYsXkytXrhRMLJ5KRS4ZFbmUM23aNN544w0A\nAgMDef311x1OJCKS+tasWUPHjh25desWffr0Yfbs2X/pcOr9hIWF0bZtWy5fvoyPjw9fffUVBQsW\nTIHE4sk02UFSzeDBgwkMDARg0KBBjB07VifrikiGtnz5ctq1a8etW7d46aWXmDNnToqUOAAfHx+2\nbt1KqVKlCAsLo379+pw8eTJFvrdkPOm2yBljJhhjDhpj9hhj/p8x5h9JHhtljDma+PgzScZrGmP2\nGWOOGGO00Fkaev3115k1axZeXl68/fbbDBs2TGVORDKkkJAQunTpQlxcHIMHD2bmzJl4eaXs22ml\nSpUICwvjiSee4ODBg/j4+BAREZGiP0MyhnRb5IB1QBVrbXXgKDAKwBhTGegKVAJaATPM/03tmQn0\nt9aWB8obY3zTPnbm9cILL7BkyRKyZcvGlClT6N+/P/Hx8U7HEhFJMVOnTuW5554jPj6egIAApkyZ\nkmqzS0uWLMl3331HgwYNOHPmDE8//TSrVq1KlZ8lnivdFjlr7QZrrSvx0++Bkon32wGfWWvjrbWR\nJJS8usaYokA+a+32xOfNBzqkZWaBLl268NVXX5E7d24+/fRTunXrxu3bt52OJSLyt1hrGTVqFEOG\nDAESFu8dP358qi8RUqBAAdatW0f37t25du0afn5+TJ8+PVV/pniWdFvkkukH3P0zpARwKsljZxLH\nSgCnk4yfThyTNObr68v69evJnz8/y5Yto2XLlkRHRzsdS0TkgcTHx/PCCy8wfvx4smTJwrx589L0\nCgw5c+Zk0aJFvPPOO7hcLgYNGsRrr72mIx4COFzkjDHrE89pu3uLSPzol+Q5o4E4a+1iB6PKX+Tj\n40NoaCjFihVj06ZNOllXRDzSzZs36dKlC3PnziVXrlwsX76c559/Ps1zGGMYM2YMISEhZM+enY8/\n/pg2bdpw5cqVNM8i6YujKw1aa1v8p8eNMX2A1kDTJMNngFJJPi+ZOHa/8fsaM2aM+37jxo1p3Ljx\nH4eWP61atWps27aNVq1asX//fv7rv/6LVatWUb16daejiYj8oQsXLtC+fXvCw8MpUKAAK1euxMfH\nx9FMPXv2pEyZMnTo0IF169ZRr149vvzySypWrOhoLkl5mzZtYtOmTX/4vHS7jpwxpiXwIdDQWnsp\nyXhlIASoR8Kh0/VAOWutNcZ8DwwCtgNfA4HW2jX3+f5aRy6NXL58mY4dOxIaGkrevHlZunQpvr6a\nhyIi6deBAwdo06YNkZGRlC5dmq+//poqVao4Hcvt+PHjtGvXjh9//JF8+fKxYMEC2rdv73QsSUWe\nuI7cdCAvsN4Ys8sYMwPAWnsA+Bw4QMJ5c68kaWSvAnOAI8DR+5U4SVsFChRg7dq19OjRg+vXr9Om\nTRtmz57tdCwRkd+1YcMGfHx8iIyMpG7duoSHh6erEgdQtmxZtm3bRteuXbl27RodOnTgX//6Fy6X\n64+/WDKUdLtHLrVpj1zac7lcjB49mvHjxwMJCwlPmjRJ1xIUkXRjzpw5vPzyy8THx9O5c2fmz59P\n7ty5nY51X9ZaJk2axD//+U9cLhdt2rRh4cKFeHt7Ox1NUpgu0ZWMipxz5s6dy8svv0xcXBzPPPMM\nS5Ys0YuOiDjq7rpwkydPBmDkyJG8//77Kb7Qb2pZv3493bt359dff+Wxxx7j888/p2bNmk7HkhSk\nIpeMipyztmzZQqdOnbh48SLly5fnq6++onz58k7HEpFM6Ndff6V79+6sX7+erFmz8vHHH/Piiy86\nHesvO378OJ06dWLPnj1kz56dKVOmMHDgwFRf607ShopcMipyzouMjKRdu3ZERETg7e3NkiVLeOaZ\nZ/74C0VEUkhERAQdOnTg2LFjFClShKVLl9KgQQOnYz2wW7duMXToUGbOnAkkLNI+e/Zs8ufP73Ay\n+bs8cbKDZHBlypQhLCyM9u3bEx0dTcuWLRk3bpxO1hWRNLFs2TKeeuopjh07Rs2aNdmxY4dHlzhI\nWDx4xowZLFmyhHz58rF06VJq1qzJzp07nY4mqURFThyVN29eli1bxjvvvAPAW2+9RYcOHXQlCBFJ\nNfHx8bz55pt07tyZGzdu0KtXL7Zs2UKpUqX++Is9RNeuXdm1axc1atTg2LFj+Pj48OGHH+oP5QxI\nh1Yl3Vi1ahXPPfccly9f5tFHH2XZsmVUq1bN6VgikoGcO3eOHj16EBoaipeXFx988AHDhg3LsOeR\n3bp1i+HDh/Pxxx8D0KRJE+bNm5ehSmtmoXPkklGRS5+OHz9O586d2b17Nzlz5iQoKAh/f3+nY4lI\nBvDtt9/So0cPLly4QNGiRfnss89o1KiR07HSxMqVK+nXrx8XL17E29uboKAgunXr5nQs+Qt0jpx4\nhLJly7J161b69evHrVu36NOnD/7+/ly/ft3paCLioVwuF2PHjqV58+ZcuHCBpk2bsmfPnkxT4gDa\ntm1LREQEbdu2JTo6mu7du9O7d29dqzUD0B45SbfmzJnD66+/zs2bNylXrhyfffaZ1kUSkb/k3Llz\n9OnTh3Xr1mGM4a233uKdd94hS5YsTkdzhLWW4OBghgwZws2bNylZsiTBwcG0atXK6WjyB3RoNRkV\nOc9w4MABunXrxo8//kj27NmZMGECgwYNyrDns4hIylm5ciV9+/YlKiqKQoUKsXDhQlq2bOl0rHTh\n8OHDPP/88/zwww8A+Pv7M2XKFAoUKOBwMrkfHVoVj1S5cmV++OEHBg4cSGxsLG+88QZ+fn5cvHjR\n6Wgikk7FxMTw6quv4ufnR1RUFM2bN2ffvn0qcUlUqFCBrVu3MmHCBHLkyMG8efOoUqUKK1ascDqa\n/EXaIyceY9myZfTv35/o6GiKFCnCrFmzaNeundOxRCQd2bt3Lz169ODgwYNky5aN999/nyFDhnjM\npbaccPjwYfr160dYWBgAPXv2ZOrUqTz00EMOJ5OktEdOPF6nTp3Yu3cvjRo14pdffqF9+/b079+f\nq1evOh1NRBwWHx/PBx98QN26dTl48CAVK1YkPDycYcOGqcT9gQoVKvDdd98xZcoUcuXKxaJFi6hQ\noQKzZ8/WunMeQHvkxOO4XC6mTZvGqFGjuH37NqVLl2bevHmZagaaiPyfQ4cO0adPH8LDwwF46aWX\nmDx5Mrlz53Y4mef56aefGDhwIBs2bADg6aefJigoiCeeeMLhZKI9cpJheHl5MWTIEHbt2kWtWrU4\nceIETZo0YejQody4ccPpeCKSRu7cucOHH35I9erVCQ8Pp0SJEqxevZqgoCCVuAf0+OOPs27dOhYv\nXszDDz/M1q1bqVGjBgEBAXp9Tae0R048WlxcHOPGjWPs2LHcuXOHsmXLMmvWLJo1a+Z0NBFJRUeO\nHKFv377u87r69u3L5MmT8fb2djhZxhEdHc3o0aOZOXMm1loeeeQRJk6cyLPPPquVAxyg5UeSUZHL\nWHbu3Em/fv3Yt28fkPCi/uGHH2oqvUgGExsby4QJExg7diy3b9+mWLFizJo1izZt2jgdLcP64Ycf\nePnll9m9ezcADRo0YNq0adSoUcPhZJmLDq1KhlarVi127NjBe++9R44cOfj000+pVKkSS5cuRYVd\nJGO4e5jv7bff5vbt2/j7+7N//36VuFRWt25dtm/fzieffELhwoXZvHkztWrV4sUXX9RSUOmA9shJ\nhnP48GEGDBjA5s2bgYRL0wQGBlK2bFmHk4nIg4iOjiYgIIDg4GAg4TyuTz75hKZNmzqcLPOJjo7m\n3XffZfr06cTHx5M/f37eeustXnvtNXLmzOl0vAxNh1aTUZHL2FwuF8HBwQQEBHD16lVy5szJqFGj\nGDlypF5sRDyEtZbFixczbNgwzp8/T7Zs2QgICGD06NH6PXbYoUOHGDp0KKtXrwagVKlS/M///A/P\nPfdcpr38WWpTkUtGRS5zOHfuHCNGjCAkJASAxx57jOnTp+u6giLp3O7du3n99dfZunUrkLAMRnBw\nMJUrV3Y4mSS1Zs0aAgIC3OcnV61alfHjx9OqVStNiEhhOkdOMqVixYqxcOFCvv32WypXrszPP/9M\n69at6dixI8eOHXM6nogkc+nSJQYOHEjt2rXZunUrRYoUYe7cuXz33XcqcelQy5Yt2bVrF/Pnz+eR\nRx4hIiKCNm3a0KRJE7Zt2+Z0vExBRU4yhcaNG7Nnzx4mTpxInjx5+PLLL6lUqRIjR47kypUrTscT\nyfTi4+OZMWMG5cqVIygoCGMMb7zxhnuZEV2dIf3KkiULvXv35vDhw0yePJmCBQsSGhqKj48PLVu2\n5Pvvv3c6YoamQ6uS6Zw+fZo333yTBQsWAFC4cGHeffddBgwYQNasWR1OJ5K5WGtZuXIlAQEBHDx4\nEICmTZsSGBhIlSpVHE4nD+LKlStMnDiRadOmcf36dSBhz92YMWOoV6+ew+k8l86RS0ZFTnbs2MGQ\nIUPYsmULAJUrV+bDDz/E19dX53aIpIEdO3YwfPhwQkNDAShbtiwTJkygc+fO+h3MAC5dusTkyZMJ\nDAx0F7pWrVrx9ttv89RTTzmczvOoyCWjIieQsDdg2bJljBw50n3OXOPGjXnvvff0QiOSSiIjI3nz\nzTdZvHgxAAULFuTtt99m4MCB5MiRw+F0ktKioqLche7uZb4aNmxIQECAJkX8BSpyyajISVK3b9/m\no48+Yty4cVy+fBkAPz8/xo0bR9WqVR1OJ5IxnD17lvfee49Zs2YRGxtLjhw5GDx4MKNGjdKltTKB\nu4VuxowZ7nOTq1atSkBAAN26ddOpLX9ARS4ZFTn5PdHR0UyaNImpU6dy48YNjDH06NGD//7v/+bx\nxx93Op6IR/rll18YP348M2fO5NatWxhj6NWrF2PHjqV06dJOx5M0dvXqVYKDg5k8eTLnzp0DoHTp\n0rzxxhv069ePf/zjHw4nTJ9U5JJRkZP/5MKFC7z33nsEBQURGxtLlixZeO6553jzzTcpX7680/FE\nPMKlS5eYOHEi06dPJyYmBoAuXbowZswYTWQQbt++zcKFC5k4cSKHDx8GIG/evPTt25fXXntNr7XJ\nqMgloyInf8aJEycYM2YMCxYs4M6dO3h5edGtWzdGjx6tNyKR+zh37hxTpkxh5syZ7pPc/fz8ePfd\nd6levbrD6SS9cblcrFixgmnTprFp0yb3eKtWrRg8eDAtWrTQ8jOoyP2Gipz8FceOHeP9999n3rx5\nxMXFYYyhc+fOvPXWW1SrVs3peCLpwvHjx5k4cSJz587l9u3bAPj6+vLuu+9St25dh9OJJ9i3bx+B\ngYGEhIRw69YtAMqVK8eAAQPw9/enSJEiDid0jopcMipy8iBOnjzJBx98wOzZs4mNjQUS3qiGDx9O\ns2bNNPtKMqX9+/czfvx4Fi9ezJ07dwDo1KkTo0aNonbt2g6nE08UFRXF7Nmz+fjjjzl9+jQA2bJl\no0OHDgwYMIBmzZplur10KnLJqMjJ33H27FkmTpxIcHCw+9yfatWqMXz4cLp160a2bNkcTiiSuqy1\nrFu3jqlTp7JmzRogYYX/Xr16ERAQoMtpSYqIj49n9erVBAcHs2rVKlwuF5Cw5mD//v3p3bs3jzzy\niMMp04aKXDIqcpISfv31Vz755BMCAwM5f/48ACVLlmTQoEH079+fggULOpxQJGXdvHmThQsXMnXq\nVA4cOABArly56Nu3LyNGjKBMmTLOBpQM6/Tp08ydO5c5c+Zw8uRJ93jjxo3p3bs3Xbp0ydAzXlXk\nklGRk5R0+/ZtQkJCmDRpkvsyQ7ly5aJnz568+uqr1KhRw+GEIn/PqVOn+OSTTwgKCuLSpUsAFC9e\nnNdee40XX3yRQoUKOZxQMos7d+6wbt065s2bx/Lly93n0uXMmZP27dvTu3dvWrRoQfbs2R1OmrJU\n5JJRkZPU4HK5WLNmDYGBgaxdu9Y9/tRTT/Hqq6/SpUsXrVwvHuPuG2ZQUBArV650H9aqVasWQ4YM\n4dlnn81wb5biWa5cucLSpUtZsGCB+1JvAN7e3rRv355nn302w5Q6FblkVOQktR05coSZM2fy6aef\nulcxL1KkCP7+/vTr14+KFSs6nFDk9124cIG5c+cSHBxMZGQkkHCieadOnXj11VepX7++JvZIunPi\nxAlCQkJYtGgR+/fvd4/nz5+f9u3b06VLF1q0aEHOnDkdTPngVOSSUZGTtHLjxg0WLVrERx99xL59\n+9zjPj4+9OvXj65du5IvXz4HE4pAXFwcq1atYt68eaxcuZK4uDgAypQpw0svvUTfvn15+OGHHU4p\n8uccPHiQpUuXsnTp0nted/PkyUOLFi3w8/OjdevWFC1a1MGUf42KXDIqcpLWrLWEh4czZ84cPvvs\nM/dCqXny5KFr1674+/vToEGDTDelXpxjrWXPnj3MmzePkJAQoqKiAPDy8sLPz4+XX36ZZ555Rtuk\neLQjR464S93u3bvveaxu3bq0bduWNm3aUL169XS9ravIJaMiJ066ceMGX3zxBXPmzGHLli3u8ZIl\nS9K9e3d69epFtWrVdPhKUsWJEyf4/PPPWbBgAREREe7xKlWq4O/vT69evShevLiDCUVSx6lTp/j6\n669ZuXIl33zzjXuiBEDhwoVp1qwZLVq0oHnz5unuOsAqcsmoyEl6ceTIEf7973+zaNEiTpw44R6v\nVKkSPXv2pHv37jz++OMOJpSM4MyZM3zxxRcsWbKE77//3j1esGBBevbsib+/P7Vq1dIfD5Jp3Lhx\ng40bN/LVV1+xZs0aTp06dc/j5cqVo3nz5jRu3Jj69es7/seNilwyKnKS3rhcLrZt28bixYtZsmSJ\n+zAXQNWqVenUqROdOnWiatWqerOVP+XUqVMsX76czz//nC1btnD3NS937ty0bduW7t2707p1a82k\nlkzPWsvRo0dZv349GzZsYOPGjVy9evWe5zz66KPUr1+fBg0aUL9+fSpUqJCmr8UqcsmoyEl6FhcX\nxzfffENISAgrVqy45wXl0UcfpVOnTnTs2JF69eqRJUsWB5NKemKtZe/evSxfvpwVK1awa9cu92M5\ncuSgdevWdOvWjbZt25InTx4Hk4qkb/Hx8ezYsYNvvvmGzZs3ExYWxrVr1+55TqFChahTpw61a9em\nTp061KlTh2LFiqVaJhW5ZFTkxFPExsayceNG/vd//5cvv/ySX375xf1YoUKFaNmyJa1atcLX15fC\nhQs7mFScEBMTQ2hoKKtXr2bFihX3HJ7PkycPvr6+dOzYkXbt2mXoVe9FUlN8fDwRERFs3ryZLVu2\nsHnzZvfVfJIqUaIEderUoUaNGjz55JNUrVqVsmXLpsgkChW5ZFTkxBPduXOHsLAwli1bxvLlyzl+\n/Lj7MWMM9erVc5e6WrVqkTVrVgfTSmqw1hIREcHatWtZu3YtmzdvJjY21v140aJFadeuHe3ataNZ\ns2Yeu2aWSHpmreXkyZNs377dfdu5c+dvDsdCwh9UVatWpWrVqowbN46HHnrogX6milwyKnLi6ay1\nHDlyhFWrVrF69WpCQ0PveUPPly8fDRs2pGnTpjRp0oRq1aql66n18vustfz000+EhoYSGhrKhg0b\n7tkTYIyhVq1a+Pr64ufnR506dfTvLOIAl8vF0aNH2bFjB3v37iUiIoJ9+/Zx9uxZIOF39fr16+TO\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/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\nflELMmT4S0gOwo+5T8olnTUEfy6x/wARLJlFhLQW2mqHStPyiCaKvuk/KIzMm7MUWzmir7pPyiKv\npq7Cz6NPVP1RNbCI1A+gs/Cf2l+CyaR9DX+EftCiKd3Yp+ERgYzccMyLmWIO+QtKD4liKzL3SB4f\nHhC3CZtxg7jFFtRIgNtiCxgkmKDyJURuPjLDmWkaFMchmRbDGLZJMLbWrHxhZJ8JmFkMOPGZpbPz\njrBLCAHl7pKUWZROJW6UWB6wiExbMO+Edp74DLnvE1AHIlEyFJNhHfKitxErtJe0yikCdrCFkDs/\nbBIxAbuzIYnMm+UN4lQM5l5gMDEQu09kWphYHWQMW0juhiwmZ5N4EUNXaGUbJn7QSBxJS2aXlhgY\nvIMNVHjAMYjVEWq4jF4mVNWGIsMJe4TIOTEDePGTcYoHKzALwDaRFBpMWxPjAN0HtZaBFmEm4yt2\nZWZRe72Qd0hOIOT4yoYLD7JRYHrFHMHMUGnHdKzA3SbooHkxV5PYWfhP7Sy8VfYOws5+qf2iY9EK\nodDTXyPVH7RnomYqT9CnH1RC3Dwmoj0ky0lEMo1jxiO098LtMd8tJY+zk2kd0Htj4ydrAuTMrtR4\nSt6+ECy48IJeQskr0PGBRMrMvA7jKwfZKClgxeSO6XuPhAcGMIPM+8yb5KGkWe2UbiIjtJC+YoNb\nUGB5wYskeEHIloO7b2yG72xBIlcRQf2n9Rl9q46NM/EmTFDULz3rmWL1mTJk3GKG3tQZN4Mx7pN8\nUNZAMEqJn3++TtG8YoOwRKLGK7VpO0MUGGwiV2reMDtPZJvHhKC7U+Mm/MDgywBAYG9sMNFACHkS\nBytGq0yhhCFklDYrww8xC2WbfbM0ttvae2UbR4zCXPjBLHxjaW3dqJO2mHcfGTe3jLtLbe39krzg\nd4mPeZO0MUW2duh6y9yHoZi3SbvAxtLbQR4wt0xCw+MvtGii2veIJcTN20naiKLPNgMHcPGILgyu\nD3xRbRkeMFiPGZyPbBOR3mWks8uo6xV9q9i/4TF5MC3+U/4TEx6IXUD2KfhEPElQ+hT8Ih4iOCS8\nSYjMSYlQvEmIwKWOAMxnYN7PnFjPiTEa1bL1EHEAMSYh4kxACTmHiTEAcyZhYkxKB48JOIWJMSAZ\nMwsSYgBJiHiTEoXiTEZiTEBeJMQ8SYgBiTEPEmIAYkxDxJiAGJMQ8SYgBiTEPEmIAYkxDxJiAGJe\nIWJMQKxJCxJiQViViFiXiAOD4y8QsSdIVUmJeZeYA4kl5kzAqVC+EnwgDiVDxJiAMkLEmIQMmIWJ\nMQBxJiXJArEmJckCsRd38l/wmNgXD6F/wmSeFgdI+hT8Ih4l0j6Cv8Ih4kjhJLxJiMxJiUQMFGBK\n3mXiTECb8jB6RZXBh7ZeIC8SYh7ZNsAMSYh7ZeICsSYjcSsQF7ZNsZtk2wF7ZMRm2XtEBW2TbG7R\nK2wF7ZNsZtk2wF7ZNsZiTEBe2TbGYkxAXiTEZiTEWF4kxGYkxFheJMRmJMRYXiTEZiTEWF4kxGYk\nxFhe2XiHtk2xYDEmIe2TbFgMSYh7ZNsAMSYh7ZMRYDEmIe2TbFgMSYh7ZNsWAxJiHtk2wAxJiMxJ\niAvEmIzEmIC8SYjMSYgLxJiMxJiLC8QLh9C/4TH4gXD6Cz8JknggdA+gr/CP2jMQaR9BX+EftDxJ\nHCyHEmIWJMSoHEmIWJMQBxJthYl4gBtkxCxJAHEmIUkAdsm2FJAHbJthSYgDtjEpLdBM+p1I0qq7\nVlgTjg4j6fLWlordwjs4QsFI6nuE456sY+nfS093K3qK9RF4ms6qvWaau5ABuXkDuPeJnI5m8Mpm\nLZ1MYxn0DbJthYkxNuQdsm2FJAHbJthSQB2ybYUkAdsm2FJAHbJthSQB2ybYUkAdsm2FJAHbJthS\nQB2ybYUkAdsm2FJAHbJthSQB2ybYUkAdsm2FJAHEmIUkAdsm2FJiAO2TEPErEAcSYhYkxAHEvEvE\nmIFYi7x9BZ+E/tG4gXD6Cz8J/aSeFgdH8iv8I/aHBoH0Ff4R+0ZiSOCQ4kxCxJiVA4kxCxJiLA4k\nxCxJiAOJMQsSRYHEmIUkWBxJiFJFgcSYl4kgYPK4zo/cwM4tfqsPEmd3ysP/AAW94nBBCsc9OJ5N\nb/J6tL/F1PId/FunJ6HcP7zqzzWlt8219VnRSdre4z02J20srxcdSKlWJMS5J1c1YkxLkgViTEuS\nBWJMS5IFYkxLkgViTEuSBWJMS5IFYkxLkgViTEuSBWJMS5IFYkxLkgViTEuSBWJMS5MQKxJiFJFg\ncSYhSRYHEmIUmIsDiTELEmIA4kxCxJiLA4kxCxJiAMC/+RZ+E/tG4i7x9BZ+E/tJPCwOj+RX+Eft\nDg0D6Cv8I/aMxJBPIZIWJMQBkhYkxAHEmIWJMQBxJiFiTEAcSYhYkxAHEmIWJMQBxJiFiVAxeVeP\nJ1vw/cTzdnRvwz03lQA+Tr93cuflPNjkrPNrcu+lwq8bqlYd4zPS+TrvOdDVZ34wfeJ5+1B2eB3T\nf/py/Ha6dj37hLpT7o1Y9O3iTEuSehwViTEvEmIFYkxLxJiBWJMS8SYgViTEvEmIFYkxLxJiBWJM\nS8SYgViTEvEmIFYkxLxJiBWJMS8SQKxJiXJArEmJckCsSYly8QBxJiFiTEAcSYhYkxAHEmIWJMQB\nxJiFiTEAZIWJMQBkhYkxAGBf/Is/Cf2jcRd4+gs/Cf2iSORUf/z1/hH7RmJNOmdPX+EftGbJmGpg\nvEmIzZK2GW0oGJMQ9smw+EAMSYh7SO6ViAOJMQsSmetTh3A95gViTEYArD0efdJsPhJcFSlVIsyd\n2AOoxHeZoRy5z7pn9Jc7Dtac5dbc+tQW6TUnYSPRZlQ+/jB985ak5RPp0wiJj27I0y59XPvaMGnT\n7C/mMyHVKeH0F/Het/8A3CHlDTKvpaLVD/5H95ynf9ukRiLV6FNVob6gMFlOAvUGeGurs0hCXDGG\nADfH957geUvJ/wBanUIfajTJrLPIWtUrbY9bdCdpB+PEz7+WoiPh5gHMuupq7e1pYq/7zbZ5PoqJ\nOj8o0WJ9h8qf1laRtHYxqvsaq0HquGWWJmOCffLVpPKDDC6lSP6p2K6hdXvpsRx7DzOcvky7buoZ\nL1/oPPyMLTp2NmGL6V/EggfETpGrbnOm3NW6Y3jEGPXfXQRq99inkWqNw/SZkvptI7I2OD3msqPm\nZ1xzvlznGuBSQsSYnRkMkLErocH4SCpIWJMSgZJYHOJeJAMkLEmJQMkPErEgGSGBkwxWMRZRMmI7\naAeRxKZB3RZRWJMQ8eyViAOJMQ9vslYgDiTELEmIQOJMQ8CViVQ4kxDAzJt5xIAxJiMKcQcQBxJi\nFiTEqBxJiFiTEAcSYhYkxAHEXf8AyLPwn9o7EXqB/wCPZ+E/tJKwOj/+ev8ACP2hwaB/49f4R+0O\nSFVLyZMSSiSZMmJMQJkypckCoq/TpcOeG7mHUR0kg5NyazSHcE7VB9avgj4R+l8s/RlmwQDgh1wR\nN8zaryfptX/OqBPiOD85icLbjJt0vlbQ38NtQ+3pN+NM3Q1n4ieX/gGmVNlVtyL4bsiUPIYHTV3C\ncp0p+HSNTt6rstOegSTzag/UE8mPI2oHTyg/5T/mX/C9cp9Hyg2PjM+PNd+L1XmlB+r+sF9Bp3Uq\nyZUjBBM8sdD5WU+hrgR7WI/tL7Dy2nTVq3ub/qNuZeDqt/pTya1hcC5M9y2HEW/+j/Jzg4e9W+0G\n/wCpz8+XkGRcG9gYSec/6hUZ6/Ff8ybcl3Yutpv9O16Ujs9ZqeOmSP8AE6Sadwuy2wXJ4Os8ld5c\n8saUjtxtz0yvWAP9V64dWq+UzMStw9immWo/RegveoPB+ETboFZi1YCMfA8GeXH+rNaOq1mGP9W6\nr7quSLjgmp5eh8ws+0so6G3+n5zgj/V2p79OnzhD/WF3fpk+c6eTNnZi7nmNv9PziNTorx2RrXcR\nYM47l7zOYP8AWD9+lX80If6wPfpB+aPJmbMXa8ws+0srzGzxE4J/1PUbxedEwsAxkWEce6OH+sk7\n9IfzR5MzZi6Gq0moUVGpCxFgzg9B3maPMbMdROOn+p9VcS1Onq2d27Of3gD/AFVqScCmjPx/zG/N\nNuLtjQv9oS/MG+2PlOH/AP8AVarOOwq/X/MB/wDUbXV51WhJCsNuwshBjfqdrtweg8wb7Yljyee9\n/wBJxx/qm9gCnk6wjx5/xKP+p9X3eTX+IP8AiTfqG3B2v4f/AF/pJ5h/WflOGn+p9baAa/J+4HoQ\nCcyrP9R+Uq1y2g2DxIMbs+1rF3vMf6jLOhXHUzzy/wCoPK9oBr0XB6HacSj5W/1E9hC6RFXx4H7m\nP1n6HoxolA9YyeYp4mcHzzy+4/2U9hxK3eXWxnV1L447v0jbml4O8dAvc5EBvJ5+q4PvE4nm/lRz\n6XlIgexZQ0GrI9PyleT7OJuI1IZmcJdWzT3J1XI9kTMP8L3Y36zVN4+nNVFC6eoVoWIHexyZ2x3f\nLnlXwZJLxJNsqklyYgVJLxJiBUkuSBUkvEmIFSS8SYgVF3/yLPwn9o3EC/8AkWfhP7SSQxU+UQKK\nx2R9Ud8P+Ij7o/OZKdRpOxTKfVEM6nReB+c4b57a/iWj+I+FR+cn8Q/9RmbzrRe35yvOdEfrN85N\n89n8S1fxA/dH5yefn7o/OZPONH9tvmJO30h+u8b8u19dS1+fn7o/OT+IH7r9Zk7XSfbshb9KfrvG\n/Ls9dNH8QP3P6yfxA/dfrEBtN9poQOm8Wjfl2XHUnfxA/dfrJ5+fuv1id2m+00LdpftH9Y3Zdpcd\nSZ5+fux85PPz92PnAB0mPW/eEBpfFfiZq8u034x8Sn8QP3Y/NL/iB+7/AFlivTnoF+cLzen7Al/X\n2z5cOgfxA/d/rL8/P3f6wvN6fsCX2NX2RFZ9p5sOi/4j/R+sr+I/0RnZVfYWTsqfu1+UtZdp5sei\nbdWlyFLKQynuInD1nk9clq1JXw7xPSbE+wPlKKDuVR8JmcZnmVjXiPh4tqnTp6Q8IKNhsrwe8Geo\n1fkxb8shCWe7gzh6rSNU+y5MHuPjMTExy74Z45cE9qQMnlf2gPWLPSrYe6Q1unqncPAwdo9ZMqR1\nEzToNa18TkeMtEHrc5gi1h64z7RDRw3qn4GSlsduq/8ACrrIBY/W7xiL09hUq7c7WBizWwZcj0RH\nNyDjpICoY2o7ZO5W3Rnk3BsbocCYaLuzuAPRvRM0Bmou3L1msUl0rkUAFVwczs0ahvN09EEhQefd\nPMmy6x9+T8Ok6Gk8oWoypfu2dMgdJuJYmPTr+ev92JPPX+7ESKXYZW0keOZHqKLua0zV5OO7G6Wl\n506gLVsQcBcnEBrLLrhZbXlB0XnEX1AJYnwhiw/bMz7lqcojho89s+6/eUfKDDrXBUbhkWCXkDvE\n3c9sTl9L/iDfdSfxE/dQdy+Ik3jxEtz2m/6F/EW+6Mn8S/8ASYO4eyCXx3iS57Xd9D/iX/pMn8S/\n9J+cDtPaso2e1fnFz2u76OHlD/1H5y/Px92Zla5UGSyD4yu2Qru3JiLns3fTZ5+v2G+Unny/YMxd\nun20ldtXn10i57N303HXKPqGQa4HohmHzhAfXWV50o6OB8Zbnsv6dDz3/wBZk89/oM541Y+9HzhD\nUZ6WD5xc9l/Td56PsSefD7P7zB2+fr/rKN39Ub/s99OgNcD3D5yefD7I+c5+/Mresb47Knp0fPh9\nn9Yu7Wg0Wej9U9/smHevhAudexf8JjfHaxGXRFVadknoD1R3Q+yT7C/KdKjTUCivIPqj9owU0Dun\nGNHIn8rCPhyuyr+yPyydnX4H8s63Z0fZEILUOij5S+Ce2Z/Ljpx+zT7LfllCoHpW5/4zsH+gD5RL\nHVfVVJfDXyn/AKZn4YFpbupf5QxRaelB+Ue38Q7tgHsglPKR+sPnJ44+1809wEUX/cwuwv8AuR84\nBq8pn64/NB818onk2r+Yx446k8v+0HjT3Ecool+bWd+wTKdBriebV/MZP4XqG9a1f1jZ9Hk/2hq7\nAjq1cm2tettQmYeSbO+1PlCHknxtX8suyemZzxnnL+msXUL/ALtX/wB+MvzzTj/eWZB5JX77/wCM\nMeSqh1sf5TcRn05zOn20ee6f70QTr6B0JPwih5Mo+8shjydpR13n3tFZpejHaHyhX3KZXn4PSon4\nwxodKPqn8xjF0mnHSsfONup21v0epKGsY/7J/NIdYe+s/OP83pHRBL7KsdFEmzU7TyaP7WNtUD9R\n/wA0Va1dq4ep2H4p0ti/ZEm1fAR48p5lY18I4x/t523SsCTWjFfA9RMxHiOZ6zA8Jk1fk+nUZYeh\nZ9of3idKfh0x/KiZqYeZeolsoR7u6LZcH0lKnxE36nT2aZ9to9xHQxPBE5cPVFTFwQtjgdQ4hraj\nHHQ+BltSp5HB8RFtU47g4hRPpq2OcYPXM1afVX6fuDL4gTCGKnCsV9jRo1BUYdcc9RzLE0k+3Zp1\n1VgxnaT8o8HPOcjxnEzXZyp58RG0320nCtuHhO0Z4zy5ThMcOwrMpyrERdt3aWemeB3TOurVl59F\nvCDvB6mJhzpqI3QTWPb84CuyjJzt90aXGAQc5kqJc53YpSoFgGTgzSdKftGZFb0xz3zpEgLnkxGn\njLOWrnHEs/mx+2ZPNx9syW6yqrqGz7ohvKf2VHxmZx04bxy18uGjsAB1zB7ETG3lK0ngqBFNrbT1\ns4nOfH8O+Pm+W/YgPIk7Kv7InO86J62fpINSScdqPlOUx07438uj2Nf2RJ2Nf2ROf2/jaILWqf8A\nd/WSmnQOnQwTpUPef0mFbD3Wf/KMW+zuszj2y1I0+aL9o/pJ5qv2jMx1VmMbpY1ln9Mez01DTV9/\nMvzev7My+e2fZWWNc3eg+cns9NHm9f2ZfY1+Ez+fAdVHzgHyj/6ifjJ7PTX2NfhJ2FZ7plHlDPWo\niH58nepEez0adLSeqwbdNSKXwv1TA8+XuQn4wLdepqcdm3qnwl9np1aB9BXwPVH7Rm0eAiqCPN6+\nfqjv9kZkDvn0ofDnlTOidYltdQnUN8o/cJRZT1H6STfwuMx8wyt5X0y9zQD5bo7q7D8JpYUnqg+U\nHsdMetS/KYrPt13af7Wc+Wq/u2+MA+W17qSfj/1NnmumP+wvyleaaf7qStTtYy0fmJYz5b/9B/N/\n1K/jf/pA/wCZ/wATZ5jpj/tiCfJ+m+6itTtqMtDqWU+WT92v5j/iC3lpx0qU/Gaz5L0rcmo/OCfJ\nGkP1CPjJt1O13/j9Mf8AG7j/ALK/rL/jFx/21/KZp/g+l8GHxkPkmgdGcfGTbqdrv/H6Z/4vd4Jn\n3GUfK2p7hX8od/k+hAcXHPtInPt0xGSjMQO/MxlOccy64eHLjFs/i1/ivwSCfK2oI4P/AMJhWq1h\nlFdh4iX2dvg494nPfl27RpYftaj5U1RHrD8o/wASv4jqic7/ANBMwDD1g0gs59FSfjG/LtfFh01j\nW6o/7jc+6UdVqehvb5xC2ljgKPzSyxz05k3Zdr48Ojm1Gs7rX+BEHt9Yetlv5oolwcnb84LudhJO\nAOSQe6N09r48emkW6nvss/PIbtR983znHbyuQc9jhD0JPWdryY2mOmHlG5coDiuonO9h/YRcm3Ho\nsXblPaOXYdFMS1QxlSc+3EO64X2tZb6LMcnHA/aDuUcISfdJbVFEEEBpXOZbWleqNiWXLV7QcDrg\nnpLZQSA3UAxT1AY2kj2RhLAjgEewymPpL75pCDWwPK/FZA5zg4b38GaO+QqrdQDCFNqdqhSCPfzM\ni67U2azb2hWsZ4E0W1jfxkRYTHQ9evAhR6HU9vfYb7GCjgYbEdWl1ZKV6iy1Oqndzj2zPTpV3nHU\n9ZqCmseiij4xM+kqzkGoDjNj4982C+0HBvtHxxMCtnnKD3iPArboyKfYJm5NmPTQCLCd1pPxgMiD\n64+Jmc7qjz6fzlNWxG7ssD2NJaxjEcGNXX32fIxTVJu4Y4jOztA6L8CJW1u8fpIoOyX7f6SdmBzn\nI90q0HjCg46GJxbnw+Eo0BR4LCx4AfOLWnUOOgx7SJMPUMOV+JBkBZ64XMtW6Hb+suq5wMBlx/Sg\nhdozplQR8MQLXceiEwgjsMhGx7MxDOwbkn3GX2oxycfGAza2eePexhiv2r+aZWcn1WJ98ido3B3Y\n9kDS1YJHoq364gldo9UceEigAYNhB8CIDbwcgK3zEonQ9GhKQevEQ17qf5X6w6DYwCgY9pYSBhKd\nN4+UCwJ2bHcPVMd5ra3Is/SJu0lwrfLA8HugNTyhdtQB8LtHIUS/P7+S1xUY+yP8RCaVnqGaigAH\nJbrx1gGh1wNueM7lm9+XbHiw6abNbaOV1O4+6ANZqT1tx7hFGsgYyPfAWps+s/J5wJN2XZ48Omm3\nWOFXNhBJxnmV55Yucahx7miWqpUZdLT74sbM4WrJ8M8xuldmPRv8RvyQ1zkeO6Q6+zI+mcZ/qMEV\nLuAKFSffBtpQgqOvuPEm6TbHR/nd+P57/BjCGu1W84vcj+oxLPhdvZZHTpBzswqqB7ARLuk2Y9Ny\narUn1tWFA9sJtZd36kn2gmYSFYZcIceJz/eTgKNrAY8GEbsu02YdNNl9jAHtmOf6iYvKYzZazf0j\nrMwvUksGAA9biS22scM5BPfiLtYxxj4b8aJRuGT7G5lBkf0hWFHdjPPwmJ02plkP/EQldgPRQ/vI\n0abHJOSoH9IhgoCGFh9hiDbfn0VUStjWHLvg+6BsNqEesfeRAbaTtY/pElK1wBcCd2CAvT3xzV1L\ngC+pmHIyp/zADFaHKlVPTjjMApvfO1vfmVZawP8AMX/iDAxY3pBvmYGjoQAo+cVqaWtqdEOCVIxm\nCu5cnOCesNcuOSc+Of8AqB5+2wdmEwQwPII6TreS62TRZY4DNuHPdHnR1s25uzLe1Mn9pS17uBYC\nB4YEWGYBbO6WCp3DcTjwghCCfSQ+9hBCKpLGxQe/GID1VGGSrSmUH1QxHyiHvReO0LGCNQPqiQPC\nL3r8zF6jT2Pg0siEePQyxq+MFWJ/SDktnAKg9e+FCocDDsm7vweImy9gVStMux4B4jbNiVO9jMAv\nhM6X0nW7X3IOgb2zUSlGWpZgZAB98Cqu4k7lG32dZrYrjhi3PBMpbSBh2OPYYsICPvAHEep1AIU5\nx48GNV6QPWfPujxZpccbyfaZBk+kUnO4n2KJeCeGX47TNgaouFVQQe/OQIRq29GTJ6ekIGFlwueR\n44Bi+c87vlOiqMccBj7OYTlguGpA+GIGFK7NpIbj2gSl3rwrDA/omtVU9VHzMs1U7SRYVI6wMrMu\nRnY5PguJQYhsBT8pSaiosoXO5vEAYmgV2MMoR8oCskZznn2ZiSN1u0kjjOdvEtmbeec4PU8Aw2uZ\nhtG0e3EUF7CPrL8VkTGee/wh/wA30VxnxxiX2LZ5FeIoU25ejfI5lh7cd5HujFqAOcAe4QW1wHAX\n44xFAqyT6yMT7obIGHRh/wAsRPnaMMFH+f8A1A7dfq5+MUGmkAeux8BuMsLWOvafmP8AiZu3O7HH\nPsjEscHuhT+yqOCS/s9KFsqUj0X9+YrtWP1FPwMhLd9BA9hgP3oB6LkfH/uKubNbfSMeD0Y/5ggr\nn1XH/KS7b2THB6GEBXbbYqYILAAcDke+aOQdrkZx0EXTquzpVKq1UbRjuH6wDqrdzsdgAHI//IUD\n3ODhlUQUZM7nc+icrjmUtzMC+8AHvHGJQDk5BZv/AL7YtD21h49ZgfYIpr8nP6RR25Odo+OJW4cq\nQn5QYDqW7Vh6JGO8tibWpwcsK1HiTzOaGOcAqvwGJdZyzE4w3PTGJBrfUVlhWGOT0wYtqx3Nj24E\nz5HosFUE5A9HOI01WZwK63I6lWzmA36PZkL8SR+0WbFFmOOnwkSrUqi/RsVHgpwZtp1KpT2diKGI\n4BB/xG4ZU1I3tnawOMAd0l7U2Dc9eMDvGZNQwXlNufxdJkaw/WJJPXngRY1nXhelSOVHugr5QBDV\nsvJOQVOMeyZjv8eI2u1UxlfiBJaCqsNjFuuFxk9YZ07sNxKsPDtF5iC679wBJ9sUSdxIJEqnJYar\nCoJDZ5ksu5OWbPTGZmdl3bnYsSc8nmHsVyDtye6SwSMob0s7f6esIIzNmvhfaRKesKRlSPhIFK8s\nq49uJbBcucG0nae6SwsoBVjkHOM4iWPPAx7pana2frHrA0V3K5xghm5yOINpKDhjg8+MnatUwJUe\nl055hK/aHaEY4HIHMAHavHov7srByT0249wjtlVgIY7APCEmn0+M9rnHgJBlPrHOPj3S1GD6Ocew\ndY41UDlbAx9ohIezcMCB4YAiwyqzb6K4Gf6eRKft7LMBnPdgDEofR2F8sDYfscZks1Co4PZLvz4c\nywMmuptFedjHawYgDmc60+cXItQJJ44E9KfLOtShqqqlRiPW2CA2o7YAmlFsI9JsYzLYz12VLg9O\nMZkd6e02EA88n2Qr0ryHbaMDGAYGnZVdkQgq3rKw/bmQPrq0zn115yArDB9nWONGnAepGxZjghMi\nYWAN+1lKADjHGZtW2gVAM7qfeTJSsqozBgbByTgc5IjVpRVHaHLY9XbmZ2Ia84VrEHTJx85FFt6f\nRMV8QW6/PumkON2zha69o6Y/6i82sdy0ke0MQJa9tWoR6t4znIA/xKasvWyn0CemecQq7X1GwB32\njwz/AIidru4LsQvjg4mqt6URQ6DPTPIyfGXZZps/y3J8Q+f3ktGU9ihOFD89cmaUusHq8Ljoxgjk\nYrYrnqWrBEMWtVgMC48VyAJVF2Vbrk8+IXJEjabTkfXU+wmQ7LMejj2xVmp7MsnYkjOAwJ+cC7NJ\ntHo6gE9wK/3iCl6HFmceKqTINZzkcfExqal35UXN3+iM/wBoCw1ZPrtnw5/tGLata/y7MeOWm8qV\nXcduPEkiKvocetU3wWRbYjfXnIsb3ZkBVv5dvJIBB9sd2dYxurz8AQIu4UuR2YWrHX0MZlQyqkMz\nL2jei23ivOTKNOPVtA9hGIFWnLNk2VEe/E1LpcJgWBc+BJ/vJZ7VdXSwApsK+JyIC6Cx+RcD78Sr\nltqRnZ1ZV54HMlN9dgWx2Cr9k9T8cy2GJ5Otz6V4X8PMbdpazQ6vqV9U8ZPPzExPql7QryK/xdY8\nU0W6dzTUzDBzmEc1LX7NBauV4Iz0llkIyR7yJpsW6jSIz0oFYAKSO+LG8V9s9KlG9vfIqCtWGErI\nGOvJi3Vw2X38cZwYym64ZDoh56gw2ZkBIfjwPP8AeWkJJrYHNfsBgdju8AJoTVKB6TKD7pG1S7si\n1ceGCcyBaV1gb62duOMdT8I5FtbJVWIPcywk1ue6vHd3Ql1e4jisA8DugZhobTZuzg93PSaK6aUc\nLa4NnXAziaBqAq82J8GEQ+qDW+gU2gZyRnMinix6xil2RR4RRW7UXLZ2jl04DFsYk87rZSApBHiu\nP3mZmS23KIikd7HiA/UVXbhvZmJ4zvzMnmjuQM8HPU8TRsY9Uqb3PIUszwK1A7twgZWqatsBlIHt\nzK3Nt64Mc711sSzqwx6q+MNEpeoNtOSO4wjGQx6sMeyCTxyZuNS7fo+W9plHTjvU/AwMQIOM8++P\n3qFB9D4CE1CDlvR9pMnZ0DlXOfw5/eAdGoVerKR4HMtFquzuYBvYuIjs6y49MqOpyIRSrAYXcE4O\nZARqKIzjFm04IAziM2ZVgNh/4/tFL6DbhepU84B5jFcMA/akHnKYBJlEptRTtKqPeAM/OOZ6WT1K\nh7hz+kzfRsch8N7TJTU1mVZ62bwDZxKGOa9wdMHHcWl9qpBU1ooYdQ0p9PatZ7QLtzjKjMUNNYh7\nRlJTEAnRSvFi59+JFZFVSTkgSIzIDhBgnqccRuBYu7GD8vlCj7XeoZV3AfDEz2O2846eJlOgCHaS\nSO7MZVonZNzOit7TzCEGxycEH4GEm/wwh7zmbV0CikszYA9kxMyjLBnIXgEnn4RQciVsDlHOOSQO\nP1mdw4tHZqApONwwY9SpUixnLHgjx9kCsNVWQzDax6E9IAv9GTtc7u/oJBrMn0kDY784jDWCQwVT\nnwB5/SKsOOgXkeGZasNOuIX1Rj35lDUCwAgfLmZ6hnA8TN+kfTI4rtqZieQSOYqiCld2y6DkDBLf\n/saupUrtKL795H95sC6dyB6CbuQvBOIVddFle6r0hnHAA5+MWOSy2m0OteVBzgtxH023q5K6ZefC\nHrdNqNPa7qjdmcYKnrx4RVBsVjZZW+3bwWl+BqbW6sY/8WwD+lusi6jU9m3aaMt4HbFNq61YKBuJ\n+ywOIztDn0bCfYoMwAvvSus5pZW+10mHz1ui24nVNgQEsN+PHEGuzS6nIdKBgZ5I/tKrmpqSfW2k\nwxrWRuGYe0EzbdpNEl9NXohrvVIyAPfmVf5FCNgMP+LgwhA1L7gxsZj7RKv8o2bCqN2ZP1gcQ+xO\nnGGDFOnKf3kRKXONrYxxlDgfpKpZ1tdmN4JbxBzLFzIGIBxnHK5/eaK9AOWDs6A9FXEzXUsHbD93\nQgwCVmzuTDDxAEM6hmr5yPcZjG+voawPa2P3jNttqDYATnnA7pkGn0ir9K3PcYnaUDFzgg42+I8Z\nbblGN5Bz0zjj4ysg+kzup9waUVsDE/W9mekIkVq3pKno9AYlrSrFkYsR04xG26izs22h3OPrd0IG\n/V6jU6ULbvNY5B+ELS1vbp2VFOSc7mbEpKqgKzXvLY5C85+MspUenrN0B65hWurT20gF9jezcOYF\nuSrejWnOT6RP6TMUFfWsqw7yTALVjBNW727jAJqkrDMzbcjpjGYKFduN4AMalSXgZAQeLf8A7F+b\nKbCK2LEdM4Hy5gQ2YU1Ic59ggbVZgCAGjl0rhtrLhj4CBbSos25O4HDDGMSIWDWl2GAK4564h2OC\nylU47sSdjhyCGx9oiMampSQS58NuMSgEuB3K4znvGMiOREeo9lUzDxxFrpvT2mw57sd8ZUjJ6AYp\nn7LAGFdHTV13aYhadrgd4nPuo1FaHdRxnJO2INKF22XksOceMcHIXY+4g9zsR+0DKrBmI9AeAIjq\n3Ttdtu1UK87CRDq0/aNkIVwM8j/uZlH0hDqMZ6fGEab+wrO2rUAjxUQ6tdXUrYRnJ+10gXJUdjFm\nDHjkZyPEGKauvgK2c9+YE1F63uDtNY7wOhig6L9UMB1l2LsOA4Y+Ijk0tpHhu6ZOM/OBdd2nYelW\nAfwmX9FjIpck+HH94VVTI+w1M57yuDj5QrCtLH6JjjqfCQLNDlQVo2/ieKCsrFio+YkOpXUHZX6P\n4jDallA9KvkcHOYiBLGyRuFfPcqgGPqsFI409gbvO3iKVFKBSqDP1iT/AIhUqOQQxXpxkj+0tK0P\nq9u3bVYee8YzFW3E2f8Ak766jyNh5zJcpZFwAq/0gCIspV7M4Kg90RCScmuo3YRcDpvtYn9BAfco\n3bvH0SMRNgFa7UPrdZYppHovYQSOCV6Shu1ryMElcfV7oyoad0G4hyOp5iUqUABbmGR9n/uD2Fig\nBLQOee4ftJStRpodsKQW7gDAXTJuydVWhB9WxsfpMj6cg72srYDwJ5/SEh5BKoR056RwWdau24hG\n3+Lo3H6RfYgHPAA6kPNCuqof5IJ8CBiJ7fYSLFDg/ZHT9Y5CkvsKYO3YD7Y+qxCoDBTg8kDMt7VC\neoTnwwIFNhNoQqNp6bsZltDAVDHYgI7vVB/WNqpNljMUDKo6kYjFp1NrBVowP6RtB/tG+bafTvh3\nG89wHP6QrEAxdjW4BAwQMcCaNHdSan84foeN2Rx8BF3ImnsdmVDU2BuB5+UzppkvduxsJUc4/wDp\ngo2xDbZsR6mVvV9IiFqKatOAWJOcAwEoYsAtPZ/1EHj4wrdYWqNbLz0JzIM9yorehjx6Sl1IBH0d\nfxWNNtRoChsbeOmYhqtq9p6OAcnEhLWLDZUD2KH+nGBMrhFsAFQ59hAE6LuX06kgg9OuJjRe0Zq2\nbnpjJMoXY+1VLkHHTiRb2IOXPpeHWaDo1Ws/Tj3bhMyGpAu13544MgabHK7O2YIBwGEfTfYqFcjg\ncYbrMrEDcTY+3HGeSZfZpjC2knGeDiUPY02P6RKP3+jmRkVULedOAB0GYgVbAxf1m9XLf4/vKVlQ\n7C6YJ544EgFkTUZ7PJ/qOM9YSA0v2aWN0+r/AHwYypqVAZlABOPRzKJrLN2S8txkJyc+yEDUyM3N\ni+PpiMzkeg1KHuwwixprqV3NUx/q3f26wCLGA53DrzKHsoySDkjrhusFLSyMqVbjtJy2eJl3DcRw\nfYOZZJFbbX28faiw1iCFCgL6IyOf8RZuWkdCW9vhNDoa0Rdg3FRt7v8AMQe2Z9psGfDIEKDtFtb0\nWA9hMdvoqI9Ase/PjCXRWMOWUn2An+0L+HHHJBkuERbgzbUQL/UxAEyXFhecuG/DyJpbRWBQqlcZ\n8TKXSoWKlyWXryYuAJay0AYxnociOtoXT0i1tSth6bdsEaVUG42EN45PEz3gbs+ky9+T1i4V0Uzs\n7VK1IIHUTPqLWNgVqlr3DhcTNUdhBJOe4HPH6ze7VrUpsZCwHOcHP6yjG5NvoFE44BhbF2g2uVI/\np4mp9MuosXs3UL3bRM2t0bqQjXBj78SUUm57FJrGMd45zF2Le7KxJ3dMk4jadOXRq6yinGcs2IX8\nhuzJDEdSPSEooHsqMajls5Uhhx/mRHRnDNZWFI6ZETqHa3KbcL3AgD4xbM1ahEVQMeOZBqpcLUVs\ns9M5AIOePjFNsVcIr7v6uMxSnewHO7nAEYbDTZk7X7iCeJREFYwzjB9pOJsYip0bYjv0zu4Exsza\nhgyqFA6BeZr02l+23on6pSSQJ1C53WUjk4PpRVxYYFamtD44/adDzfToMZAidQmnYjLE48AIuEtj\n7Blq3hdw72l01M49KwKMdd3OPdND2I1QqVMJ75Sdig+txLagqROzYW5cfVOc/tB7fs/QrReeOG2/\nvHFxgbXbryCOIW6o8lM/CLFVWnAXa5YZ6WiOtpYLlbbMH2DEzm3T5wace4SltVV2otjfjbA+Ql5E\nd6Wfb6du3rtEOvTBibFXqO/BxAVrSu1CEXrisYl7SqDLYX+oxQavmyDLozN9kDbj45imL6g/+NQp\nAyp9MZHzlrsJwSWP9AziVSEBZltVST0KnMoA1GgEW19RgZOcfKUHCW7UBZQOAccx+8nCBG3A+tvz\nn4R4pRs9rhGIwWY5bEkwjPUpuT0tlQ6+oef1h2aJym5GS1eo2qR+8Zpk0+m3Kqh8n1n5mp9Qli7b\nHOPYJmZacymhmJU1kN0nQp0BVRjfZ/SDAOqooswxbpxleJaeVzUfo70UexD/AIgXZXq1BCaaxF8Q\nDMrai3TVtldntI/zG6jX+dei2p4645A/WZ7FS+rY7Ar7MQhO83kDtXHGc8EfoTDsuenT9ml4Of8A\n1jPzkrorqQpW2AevtjVU1ncjYOMcS3Awq9gPIeaq66mX6QAnw3YP6xosux1EpbLFJ31q4PgBn9Yo\nRkrrx2SK3/ID+8TYlrdFUd/rj/Mfv7QArWoz4hcw7FAX0dmfAkCKgJoR1qPaFefBhmZs1O+GUbcn\nnvm/sz2QD1gH7QaJ7BCcKcH2vn+0oQ9iKEWtywA5zmJOc4AsI9mSJ1tPp6qVKgp2jdMn9hM5N3aM\nuGyOoWBk0+4WE5Y9xBHSaLbNQ9ZrViOc8AH9zM2oru39pWp5PJ25nRo11LlV1gfj7tQDIMK2OSWu\nLsy8cKAPlHmklDmlix6HAGIWt8xN4uoe0qSPQsXvHcT4GOHlXR4Q2o9ZwN4QcE+zMIxupSkixGPP\nHBECh27RQV9EDB2nnE3XeUaLX7JKHNTAclhmKXza42NbW6EdNi90kC7HFo2gWKvjxmKupBQtgW47\n92MfpF7WVgaGJG7A3YBktsIYi0tu7xwRLYSaLgMDAGMjkS+xsKEnYMrkEuJKrLQpVV4bvxnHuguz\n+mDgY+EBraixqwGuUDA6RaNWhLdorH3dYpOxasHeOnhBa0KcJj2nEitw8okDHZjA9sr+IufVQD2z\nO9qNX6IJI68Shsbq5Q46FZKhLOOtuc8Y+CxdVlvbOysQzcniGlaMMl9x7j2eRKVK1cqwbP8ASMSg\n6tUzld5yD3marNhp9IVIPEggzLo+xfU9mRjHe3GI6yitmJrtVz3DJBP6QtMlOm7VjtG4HoBLWpA4\nFiDI455AjajdkpwnjtyT+mYsVWu7deueeCZSTyWyQRhQOvdEteM4poRh47f+op31HfnHgYxX24bq\ncdIsNWxyh3aRWPcc4xAra2ty5VF/pZpfpl2cqezA5IMSSWOEUceMiCs1DOMt4eMScMQWswfdDNj7\n/Sq4AwcnAj6SFcZGxW6nqBAWtda17+0Vz3L3wg7AetWE+znmbzZSiE173HGSpCk+7iIp7VyxO6us\nfWIBzCotrpWy0kMijrsGTE+cX4BZnUHoD1mmiyktgq7nr3f4gtvsb06Vq8MENLR6Zt4Y8tmXv9s1\nV6JLh6TKjf1Db/eHR5OTtCO0LY/oOJKKYwx7gZDYw+rNOobSjUFabbN4GGAQgH490yWO75rclh14\nEUILndyuw48QIYVg3Xv4xzDqqSpd9mqCr3JWdx/wIxNdVVW3ZVAH6pPJPtlooSUM67tgQDvbOZFs\n01f1TZx44i7dUtlO92UHI+jQnn39wgA2Xoy0VpTVggkEZP8AcwejWuRzlNy9OFIMc2mDoCxKeBPf\nFaXyeWQNSjlem9+FHxmzUaemqpd9hLIOQM4PuEDJ2VanlnfPUb8Rdq0I247kJ6DeCB8JNVe+AOw7\nJSeG75l24BbYWAPBEBj6y1R2QBK9xAw2JG1ysCSpDxe9mVgckHxMMDdxtrx3DGT+khyuvWHZuZQe\nehhWaxF2AIwJ5PhiLTSizC7WDtwoAPJhWpdSGotIBXggnkf3ikNGp0juDaljHpkkSreyKq2nqZue\nfRz+0zdg4G5gGHiG5jK1sQgotg9m0zStBFKKGtDkHorIy7fZkdYfAVSXXay8YQ8eERel2w7r2cdQ\nhJwPZyYCtq2qDCywc9N/UfOAa1WEK7AYB9LjrH1cOMmoZ7mYwKX1CUvgqWYcdpnIhCmu9EttRQ6Y\nDNhv2yO+BHsrNbEV2j3txM9DUuT2ttqr3YOc/pNHb10h2e0Mz5worPHszniWld1le/sa9mMqQTn9\n4QDkqD2NYtHcOh+MJKWZQzJ35JHcIFtlJrDLpw1h+qwyP3m3s2NOwdnWD3AgYkaIZ1aroSo4wZla\n1ah6JNWePHIm0UHsggK8dTuxMWv0zBFOVwfbmRKRntu7MBvS3Z3Cae0t0+pALMVbp6U54LVKgyAP\nDEs3vwdoz4mLlG7V6u6t2Sp7NuOdrEATPpzdeu4Iu5T1YnmI34Uhsc+3kTZprT2Z2CvJ6kjmANun\nLYJrIbPQEkGL7O7YTZUAoPU9MzUpZWCbVx4BRz+ku13IC7aNuejCW4Vn7epBuCZI6YPfDqvexy5Z\niz8c/wBsSrajaD9BWv4f/wBlU031N6WCntGZLDmuKIxLqcDpnmZLwLkFxU8cH0s4MeaKc5XT4Ydf\nRi7alKHns93XA/7lmYQgXlmUD0nXGBLVirO71KSQfRY8e+StNlm1AhYjGQeZbMQrE2FV6ZkE04rb\nTk4xjGMZ5+MLdWqEdmobxMbfQnmiMgAIA4AiLFDoMOGY87e8e4iWlNqRb0O5V2r1YECA1mnFgqRC\nR4g5I/tM5dUt+kFyL4Z6zfoloJ84ClEHjzn4QM9qr4OFPQgjA/SXVrq66+zBCn7RYn9hNOvv7VAK\naS9fezDHsmF7+0ZFXTrXUvrbRyTFh/0Do1jqjN9ohj/eI7RWBCVhR9UheTOkdT5PWsBNI7tjnNxU\nRL6jSlB2eiVGQ55sL59/EDFVZaHy7Mq9+0An5QnYNapNZtUePok/KFbZZqSQOw06k/VGOJprqSvT\nmsOLmI+oDmRZYGZ0tOyoJ/SSZZbc5Pj3YzNw8m2X1m0p2Yz0L8maRpKkXLIK9o6esD8ZUcqrzxx2\na1kqe8EmMr30EopFdnVg65PwE09tuUqXAx3ezwwJltsC+kMDPeW5+UDQ9x9Zq8so5ZjATVV2hk2b\nnwSByB+hmLfaScAEe7EqhLbLcKuPw9RINmitXcVIVieFU9Jp1hzUoSsuuMnacYmc0WI2z1SO7JbM\nzanKWCtmYk8jcP7SjfpdIrU9ti1B1JTDACAwrZirvcT0Ax1/SaFt0zaOtDpXFq9WXCA+/rmZG04B\n3VM1bHkjO6LGlRj1je57ge6Ka+usGxRZvPGWP94b11tXtAIPiXJ/SXToNPZSxssrVl+0xBPuxFwM\nj2IpKhHO7BHI+UfRqbK0NaaZUC9CDg/GabdF5NFK9nXY9veXsyP2zKr0mhNZNlLG36u2wgfHjmLg\nc9dNayF8eiOc5meljcSgXnxzOmNKwsLVhUTuGcwAWotJqt2P3nk/3ktGcmuio/Rdoc43E5Huh0Fx\nWGq2ts6oy8GDqNRfrAiOzMN3HoMBLFVlQYVoGtTjk/HPtlHU85vsQdnV2R7x4TK1pYE15e49C3SZ\nn1t91PZeipP2AcmDYt9anT3C5gvUITiVab1atbM6rddYo9VT6A/zMTOtlpU/RKevHAEUd61gYAUn\nPJJMlO1HDWOWXPOOf3klHVTS6UVotT9s1nAAXDfPMRZo9NVYaxkOOp5JH6zVT5KYaprjXelKji5X\nP6ATonydpn05FenF7H/ctcgj9YtXnm8oJSxVarcr6O4Xf5EGrstc7ttdCmCS1m7PPuE6Q8i11H6W\n/Tge30v2i2opqYrVsKnvAxn9ImYSxXWCjSGxO0sA9EKSGXPiRmc2jX3WHlU69cYm41q64cAjwxFp\n5O3EnTh0zwdvAPykuCwPS9zXk3BU4wxbr8I6jSX7STrXAIyrEECYbKbtOGTssDwJJzGnyhqrq1qu\n7NFAwNucfKaVttS69lUalacNkE49L5Q37RcLcqsD4JOclb6lwS9akHAYnGJ1NXpdRVpgWZQAPWHI\nPxksIU1V7kIRwOSTwRLtqosqLKprfHGPSB+HExI+xcud3u6/rNFFrV207fRRsgng/wBv0kDKbalq\nxdpq3f7WMfpLa6pwQNPWPcsbc+nessKr9w6soVR8iZnWs55dMHkelkn5CSpBWEFQuwEHuxOfdU+4\n4qJX+k5xN2pKoAcnPuicpn1hnrL7SXMuS0EFAfj1jaqiuDYuT064mmzUIfRO75QuyrJQtfYd/QZ4\nkBU3oiMDSrAHGcy6tZVXeqpQqZ4JXrBTTVM/0eocc7toxiMt0S2WC032I694AxJ6GbVk12BktLK3\nIzM1jXWcFwVByAZ0W0iXU5NpYno7cTIdOO3Zcn+5EsSD011rWqLAGXPTOJ0rV3IOyDHx3HInMOmR\njtUtnpnEPTmyjC4yvsMvKtIQKPTGPgZYCOCvaV48cQe0rsYq5BbwziCT2ZBLcDuBzIBehDkMGYfa\nUCJIrrRsox4PJGJprvVGLZYEnwk1Fi2VN/5K52k4IEBdev8AoualHojqeszO7XD+WgUeCzpB6Bp0\nsWit/RHLCZTrmcHs6Kh714MtyjHwwKqE57+f8zSmk1Loqh/RHQbhgRV2rt9HtdJp1A71UyLauptV\nWuVARnHQSDcnkvCDtdUufADOI0aHRIOWtsPvA/aLFekVMNaD7d0XY/k6v13dvZkyKbdpNM1Z2VAD\nxOZlq0wU8q237OTgwq7qHZkrodFXoAf3iSlSFms5OeALDn9JRo1FmmStFGlVm7zubP6GLTVWgOUO\n0jA9AAYErzYWJuFQB7i1hwPhmUuiur9Msq5+ypOZRtFmjagM7O7DrvfqZmfXUhHC6VASMKcDj4wL\nlRkya33gYAC4zA0+HsxtSv8AqYShW644OFAB+rFbg7sFIJ6njpOrbZ0yCcfWHAmWvSjUOzdh6Pe2\nD/iQovShHYixWb2jGI6/UGnNakouPqkDPvxN9aWVVZRqAnTJXmc7zV9RcXOHH2SQCfdC001XugD1\n7a2YY9UHPxgdi915ZsFvtkyrO2FgSpU06KOQB/8AsfpabtRnsq0cd7l+IQsq1YAtKjPQ5lsVUZzn\n3R1nZAN1RumUO7+0yulB53Wn2uQJKU0L6O6WAoG484icbWXs2Jrzwc5mprgW7KvL5+uoHHzigqmz\nfnlQT0HhBpsBLbm55K+BE2VeTdIoc3WXEleMY6xI0ulrCu/aEDjG7H7QgPO9Oq+nbg46AZmXUNZq\nlxSrGs9SVAnVpp07afs69JVWxGTYWJY/OD2qKVQN2jezmWIGKnTmmscKCP0h6NApe+9i6dfSOP2M\n7F9Y02n7Sy/T7iOFGS3wBE4uq1112yk3PXpx0QcTQf52z3qQ6qpIO3cMn3986XlbV3qv0K0ojJwy\nqAw+M49JWio71U1cgHGSx9s2MBrfJ6VLYisp6HvHh0kGPTB0LW7lsdhwVGdvjEraEtyxVx15HSNF\nPmzKWuCqD6h5JHwgWrXa+5FYZHrWN/aJG+vUOF+hubn6q8GRblYZs1BDfZIJM511bdkqi6sPnu/z\nBoemy1zfcd/1WJmaHVNmnzns7GH4sRdmorxhUVR7Tkzmrqay+x3tBP2SP8RllabfRtcHxJiMEaHv\nRFLMDj2CJOuotpbbuPiuMfvEHSo7BbbC4HTnEiaamsegxHv5l2A9PqrWrCVaY8dN7yhTqtU7Baa8\ng4IV4xVpBDWJ2h8MkAfARfZ9hqS62C0MdzKv1fZLVBT0tS5R3ZLV+oBmOs1V2n22vtZX4xkc/wB5\nq8823MtFa7TX1FeCD4+MGnykadOaa66hbuPpMMn/ABIpg01Ny9tVsrJH8u0459kxW6ezTMrdsrZO\ncA9D7BJdq/Oa/wDyHdiD6q45Hy4i7Lm2nzWplUDqWBhDXvBKgeg3ewUkn/qbtLQa6STeCSc4AmDS\ni/etig/8QMzqMQwBNJqY9Qz5PylUi9qAApaxrT3A90QdO7kstGF/rbBM3LUKGNj4weY19TQE9F05\n90gx1V+SrKwdRbtsHBGSMS9R5nXpidFqS7jhVyMftEtpdPaxKk5Jzw0i6StDgbs/ilmYQB1FqKPo\njx37II11m7ik48cTdTWqJ6JYt4ZmUXWduwsr2bzhc85mRBqWVCXGR34H/UzEqACu1T7ZpusCbVI9\ndtvEWNAN7Dc/E1FAEevjfgn2GFafVwSPjDGgrXl3ZfAkjEa1aOmWIIXIyT3S3Ay16bznLh8FMc78\nRj21IMAFieMl84jq6BUcrYBX9YZzB1GqNzdlWSoz6w8JJlWZSlrgVmzc3qjIOTFV1hXbtcggEYK5\nJmvROKdQwI7VM9T4eM1eUUo1Q3FmQgEAjEDmoLtRp6vRCAAeiRGV1F3KbgdvrY6/CO0N/b18DlQI\n2x66jliiE9+OTJQyGu4EnaNniesZv07cdgWPgZqps9IAHeD1yYwLcWYU1oEXv4liBydRRuYPVQKs\nD6qzJssd8nUMvs75320+otBJdDjrg5I+U5WrXs3HasWPtODFEsjNUGx2jl89ck5mpKNU6r9Hawzw\nc4h6a1a7N9dJZu7b3Tauote5UfhWIDYt5X5REQnsvVadqqV24Q9+TyYmnT6mzlrHCH6qcmde2/SU\nVgJduCd7Nkmc3VeUnsytPoL4/WMf8artl1CsrlVBRAcHe3pfIRVtTIygXKWPJ2jpNlWlFujsa0EN\n6yE8Z/SL02mazGEAT7XjHCBTUupCdmTngcTp1rYas5yfb3frJTVXSOFyfGGX3TM5FLbfYhW5g4+y\nRkfrF06daSWSpWbxbmWupq5G8ZBxzDS5WP8AMX3AyXJZGo0NGqu3YtWxuuCMfLEuzTvTV2WncV4G\nBvHt5htqKa2yL0DfimjX+VKfJ+n0pWjT6qy3LOXOcAd2B0zLEjkWV6o/zbKuPbia10lddQserccc\nhX4+U6Fuu8lazybTe+iqqd/WRXx0Mzlq9anZivaD09LM1Zbnomj1J3l7KucHC7xJbSpVxTqUcIM8\nV7eI1fJw0ZzaAechoCBqlufTZO8bW5GMeEWImrNC7A7pkZ9FsAxQ1i17LEXc5ySxOZnu07dnna6u\nD85ndNiYJOM8yQjoJ5S1HRlqKHruEmrtt1Qq7GobaxwEGAP1mFTvUDPTvIhq9icKSBEyW32au61F\nNyqWQYzsyfnMbWbsNu5zwcRle6zbluhyY2xeMYxnwksDRqdOhHnCWWAdWBwceE3VHT6xSaKrgxY8\n7xwM8DHHdiYWOAPRJA6kShtbPaIRzgYiw/VPUrdiG23IOAVMQ1r9l2dxAGcjk4izodPY7NuIKnnJ\ngmisAKrFs8+79Zbhbaq9StbKKxWB7h1h72W3tK889RWgyfecTPRpqFI7U78HJxNSqpsJrDVKeigZ\ni4LZztt1JtWhwxOcHrNTNRwFrvwfW4PHuMdpKQ94rttRVJ5dmxgfOei/gWhs06FLLNxHG11OfaJR\n5Ky21iEqqOwHjcOfjCuRjhq6rMjk8z0F/wDp5qKy62Et3K1Z/tmch6tSCygV5Hf2mP0OIuThjWnV\nWphVK44wQv7xyVasv2KtzjnJUCWNBfZlgQWz0XDfsYZRqK27RbLmU8jBAHvgJt0Wr0/FqAg8gK+f\n1ia9DbexNYVEx4/3ib9a72nKttXjjoPYIS+VLAMdswHtUGWIDz5MvQcBD7Q3OJKsBXCdiHUelvGQ\nflFNr7r/AKNGLs3AVF5MVSaUdl1KNY3cEbAWKRsVTU9RrIc9N1Qxj485mvdgEvuPtJzOLYyK4Nas\nox03Zm3Tn/xCVU4PTiFhNfr03VqiApzuz7vCDoUFmR6RUjoPGBXozcQy1qCpyc8GNuvv0ifQKq46\n7gTMrFfLbSnYE50b2KftgwtQanq40gqfxWc6ny55RTBIrZfAkidBvKvndQW6s1HHdzJRUOc+mGoP\npmxcdMGENKtZBBbcO+wzdRraKk2bFCj65HfDW6q5sBlY9ZJmimKvSJaSbL8H2MeJhrzSXYWu4zjD\nMZ2LXoV9pUY7zgYETbRprF+jSts9Sv8A1LE2jmdq5Ibd04HJ5kIvuT0lPHTwI5/zNjOqMKalwPtY\nyYntFqY9r2hI6MF/zKUCzTlauuSe7OBNNdDLQyGl3DdWX9odGv0uoGxnBOPrLjH6RguuK7a9wXoC\nPSilYgSjoClhAHORG2tXbWQEdcL9maatRcr9mym497N3fCN8oVhtI+w7H256QjjaLU1omfRUkAEA\n/rOgbKTWHdlHgMcmXJKuLTQdOQxrtRyR0JwZl1/ZindXbtY9wOB8R3ySSwTyyhU7WsNqVP4gMZ7p\npp0YvYlrg1ntcAYkkgl0Hu0Nel7PzZGtH+4r+jOVR2qXNZS9WSeuF492TJJAT5te7n6M9fWPT5xq\n+b6OvfZssszwGYYHwkkhGfU6uy+zDgHPeTxNFOuOnrG7YF8Q4Mkkk+w2zU6e9EZrGQA54PWO890x\nrba6k+B4kkmdpbhO+18F0G48CHXvZ9uUHvPSSSaQ21dMOWGPaJdT6UkFw91aHBUNgCXJEQGh1wa1\nZFV8nYzcr8Zr8mamh3VTaQ68YAGPnJJFEOpqzRWgZrK3fOQDyT8ohrUp0j22WZU5K1j/ABJJFNOO\n2+1iVPo9x7/2ibdIETD2P2h+qccS5IpDNBpGrUXMcZ5XdwD85H7IOS1q7j7sSSRRSglbMEVqjaee\nTjAjX0iMy/8AkJWB63pnHzzLkikX5vVXZ9Hq0fjgBgR85pXYK1cncD4Y49vWSSJgY9R2gcmsIqk9\nT1Ptg06W6y3a3ZtuBPoESSRQYBWlmwOofGTMo1WxDtcnBxgn9ZJJKG0+UPJ1ejauytr7SQWBO39Y\n/S+WfJ1a1KunccexivukkhD18pUnVL5ra1IPA5wWPie6Nd0B9KxSfHcDJJJMKDfWT/MXHvi9LdXW\nXrZk3ZznPUSSRQryhrXQ0bNQwVrAHIfPHunfan/T1pybazxjBC/3EkkvAztpvIukB1Ndio6cggqS\nfgCJz9ZTpH3AqnZv6W9jtOT18ZJJpWCw6PydWXorF9nducnH6CO0tgvCH1iRkqOf0kklAaqrQpYh\nDebt3iwOoJ+IiNXZpNOuxbQXPI2uApEkkzQQjiwstdlZHcu8TseTPJmmeuu2687s5NYZD/8A6zLk\nihs1ujpuJC3Gte7dSTj4zjX6elLzixbPwvtzLkihi1FSk5NRQD7T7s/GMayvToq6dQc+vgZkklBu\nUuZEDmhm43MD6Pt4mjU6WtKqqDq6ryM7rVbOeZJIGB6KVQt26BA2Aw5J94B4mYAs5KMrjPecZ90k\nklENN2osFX0dNilfWxZn9jNOi1iLUxsJyVPrPn95JJaWZt//2Q==\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\nsGTJEiZOnMi0adMCI7aXXHIJt9xyC/369aN169aYZfwqaClR4MsgBb7c49yxYTNnzmT58uWB8Gdm\ntG7dmi5dutChQwcaNWqkX45ZxDnHDz/8QHR0NF999RVLliwhMTEx8HyLFi3o2bMnvXv3pkqVKiGs\nVCT3O3z4MFOmTOGTTz5h1apVgfbKlSvTu3dv/t//+380a9ZMv99CKDExkWXLlvH5558zffp09u/f\nH3iuTZs23Hvvvdxyyy3Zei15Bb4MUuDLnfbv38/s2bP54osvWLhwYeBTMUCpUqW4/vrr6dChA9df\nfz0VK1YMYaW5z/79+1mwYAHR0dEsWLCAffv2BZ7Lnz8/7du3p2fPnnTv3p0KFSqEsFIR79qyZQuT\nJk1i0qRJbN++PdBesWJFbrrpJm666SbatGlD/vz5Q1dkHhEXF8fy5cuZOXMm06ZNY+/evYHnrrji\nCnr37k2fPn2oWbNmjtSjwJdBCny53/Hjx5k/fz7z588nOjqanTt3Jnm+Ro0atG7dmtatW9OmTRtq\n1aqV5UPsuZVzjm3btrF8+XKWLVvG8uXL2bx5c5JtKlSoQIcOHejQoQOdOnXSdK1IDkpMTGT58uVM\nnz6dGTNmJPn9VqpUKbp06ULHjh25/vrrKVWqVAgr9ZaDBw8yd+5cvvrqK+bPn8+xY8cCz1WtWpVe\nvXrRu3dvGjdunON/TxT4MkiBz1ucc2zdupXo6Giio6NZvHhx4LiKc0qWLEmrVq1o3rw5jRs3pnHj\nxpQvXz5PhMB9+/axbt061q1bx5o1a1i+fDkHDhxIss3FF19Mu3btAiGvbt26eeLfRiTcOedYvXo1\nM2bMYPr06Wzbti3wnJnRrFkzOnbsSKdOnWjWrJkWTKXDH3/8wYoVK4iJiWHBggWsWrWK4GxQp04d\nunbtyi233MKVV14Z0t+JCnwZpMDnbXFxcaxfvz4werV8+fIkw/HnlClTJhD+6tevT82aNalVqxaX\nXnppCKrOvBMnTrB161a2bNnCjz/+GAh5qfX93Ohn69atady4sc4JJhLmnHNs3LiRefPmMW/ePJYu\nXZrk0JZLLrmEli1b0qZNG9q2bUuLFi206jfIH3/8werVq1m8eDGLFy9m5cqVgTNCgG9hYPv27enS\npQtdunShWrVqIaw2KQW+DFLgy1ucc2zfvp3ly5ezdu3aQBAKHq4PVrZsWWrVqkXNmjW54oorqFSp\nUuBWsWLFLFtmn15nzpxh9+7d7Nq1i507d7Jr1y5++eUXtmzZwpYtW1IMduBb+deoUSMaN25MkyZN\naNWqFdWrV9cInkgud/LkSWJiYgKHt2zdujXJ8/nz56dp06ZcddVVNG3alCZNmlC7du08cQxgQkIC\nmzZt4ttvvw3cNmzYQEJCQmAbM6Nhw4ZERUXRvn17rrnmmmxdeJEZCnwZpMAn50LgufC3efNmtmzZ\nQmxsbJLTjqSkZMmSlC9fnpIlS1KiRInA1xIlSlC4cGEuvvjiwK1QoUIULFgwxdc/e/Ysf/zxR+B2\n6tQpTp06xW+//cbhw4cDXw8fPsy+ffsCJ/NMTcGCBalRowY1a9akdu3agZBXrVo1rfATyQP27dvH\n8uXLWbp0KUuXLuX7779PssIefIdvNGzYkCZNmtCgQQNq165NnTp1KFOmTK78EOic48CBA/z3v/8N\n3DZu3MiGDRv+dGhPvnz5qF+/Pu3ataN9+/a0a9eOEiVKhKjy9FHgyyAFPklNYmIiO3fuDEyN7tix\ng127dgVuu3fvJi4uLiS1RUREULFiRSpVqsRll11GpUqVqFy5cmA0snLlykRERISkNhEJP8ePH2fl\nypV89913rF27lu+++45ffvklxW2LFStG7dq1qVWrFlWqVElyu+yyy1L84JpTTp48yd69e9m1axc/\n//wzP/30Ez/99FPg/m+//Zbi91WtWpXmzZsHbk2aNOGSSy7J4eqzhgJfBinwSUYlJiZy8OBB9u7d\ny2+//ZZkNO63337j5MmTnDp1KsnI3ZkzZ1L85BwZGfmn0cBChQpRvHhxSpYsmWQEsUyZMpQtW1aB\nTkQy5ciRI6xbt461a9fy448/smnTJjZt2pTqIS7nnPs9VLp06cDX0qVLU6RIEYoUKULhwoUDt4IF\nCxIREUFERAT58uULfI2Li+Ps2bOcOXMm8PXUqVMcO3aMo0ePBm5Hjhxh//797N27l71793L8+PHz\n1lakSBHq169PgwYNqF+/fuBWunTprPynCykFvgxS4BMREfE5Ny26efNmtm7dyo4dO9ixYwe//vpr\nYJYj+Ni3nBYZGUn58uWpWLEi1apVo1q1alxxxRWB+3nhjAsKfBmkwCciIpI28fHxHD58mAMHDnDw\n4EEOHjzIgQMHOHToEL///nuS24kTJzhz5gwJCQkkJCSQmJgY+FqgQAEiIyMpWLBg4OtFF11E8eLF\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\nd5xO8oII1wEktNWrV4+ZM2fStm1bhg8fTpEiRRg0aJBOlRcRycCnn35K7969ARg+fDh33nkn4Ls9\n4qOPPsoDDzxAeHg4PXv2dBlTPE4jcpKh66+/nmnTphEREcGQIUN47bXXXEcSEQlpX3zxBXfddRdJ\nSUm89NJLPPjgg8nPPfLII/z73/8G4P777+ejjz5yFVPyABU5yZSbb76ZCRMmEBYWxoABA3j77bdd\nRxIRCUlz587l9ttv5+zZszz66KM8//zzf1mnX79+DBkyBGst9957LyNGjHCQVPICXX5EsuTD/2/v\nvsOjqhb1j39X6O0QikgVUOkiHa6RXgwtdKliKKJiAak5iB65XlAEpASFGIqHEhDlxxVEukgEgpFO\npCuEDhIktABJmPX7I2FuiHJUTLIzyft5nnkyWTNJXmVn5s3ee609d677MMCsWbN44YUXHE4kIpJ+\nhIaG0qpVK27evMkrr7zCRx999B9PRZk8eTLDhg0DYOLEiQwfPjytooqH0fIjkiL69evHtGnTAHjx\nxReZO3euw4lERNKHrVu30qZNG27evMkLL7zA9OnT//B84qFDh7pnsI4YMYIxY8ZoUpn8JdojJw9k\nwoQJBAQEABAcHMyAAQMcTiQi4pzw8HBatGjBtWvX6N27N59++qn72qp/xvz58+nbty8ul4vhw4cz\nYcIETSqTe+jKDsmoyP19kyZNYsSIEQAEBQXx0ksvOZxIRCTtbdmyhdatW3Pt2jW6du1KSEgIWbP+\n9UUhli5dSo8ePYiPj2fAgAHMmDHjgb6PZEwqcsmoyKWMKVOmMHToUABmzJhxz8wsEZGMbuPGjfj5\n+RETE0OPHj2YP3/+3ypfX3/9NV26dOHWrVu0b9+exYsXkytXrhRMLJ5KRS4ZFbmUM23aNN544w0A\nAgMDef311x1OJCKS+tasWUPHjh25desWffr0Yfbs2X/pcOr9hIWF0bZtWy5fvoyPjw9fffUVBQsW\nTIHE4sk02UFSzeDBgwkMDARg0KBBjB07VifrikiGtnz5ctq1a8etW7d46aWXmDNnToqUOAAfHx+2\nbt1KqVKlCAsLo379+pw8eTJFvrdkPOm2yBljJhhjDhpj9hhj/p8x5h9JHhtljDma+PgzScZrGmP2\nGWOOGGO00Fkaev3115k1axZeXl68/fbbDBs2TGVORDKkkJAQunTpQlxcHIMHD2bmzJl4eaXs22ml\nSpUICwvjiSee4ODBg/j4+BAREZGiP0MyhnRb5IB1QBVrbXXgKDAKwBhTGegKVAJaATPM/03tmQn0\nt9aWB8obY3zTPnbm9cILL7BkyRKyZcvGlClT6N+/P/Hx8U7HEhFJMVOnTuW5554jPj6egIAApkyZ\nkmqzS0uWLMl3331HgwYNOHPmDE8//TSrVq1KlZ8lnivdFjlr7QZrrSvx0++Bkon32wGfWWvjrbWR\nJJS8usaYokA+a+32xOfNBzqkZWaBLl268NVXX5E7d24+/fRTunXrxu3bt52OJSLyt1hrGTVqFEOG\nDAESFu8dP358qi8RUqBAAdatW0f37t25du0afn5+TJ8+PVV/pniWdFvkkukH3P0zpARwKsljZxLH\nSgCnk4yfThyTNObr68v69evJnz8/y5Yto2XLlkRHRzsdS0TkgcTHx/PCCy8wfvx4smTJwrx589L0\nCgw5c+Zk0aJFvPPOO7hcLgYNGsRrr72mIx4COFzkjDHrE89pu3uLSPzol+Q5o4E4a+1iB6PKX+Tj\n40NoaCjFihVj06ZNOllXRDzSzZs36dKlC3PnziVXrlwsX76c559/Ps1zGGMYM2YMISEhZM+enY8/\n/pg2bdpw5cqVNM8i6YujKw1aa1v8p8eNMX2A1kDTJMNngFJJPi+ZOHa/8fsaM2aM+37jxo1p3Ljx\nH4eWP61atWps27aNVq1asX//fv7rv/6LVatWUb16daejiYj8oQsXLtC+fXvCw8MpUKAAK1euxMfH\nx9FMPXv2pEyZMnTo0IF169ZRr149vvzySypWrOhoLkl5mzZtYtOmTX/4vHS7jpwxpiXwIdDQWnsp\nyXhlIASoR8Kh0/VAOWutNcZ8DwwCtgNfA4HW2jX3+f5aRy6NXL58mY4dOxIaGkrevHlZunQpvr6a\nhyIi6deBAwdo06YNkZGRlC5dmq+//poqVao4Hcvt+PHjtGvXjh9//JF8+fKxYMEC2rdv73QsSUWe\nuI7cdCAvsN4Ys8sYMwPAWnsA+Bw4QMJ5c68kaWSvAnOAI8DR+5U4SVsFChRg7dq19OjRg+vXr9Om\nTRtmz57tdCwRkd+1YcMGfHx8iIyMpG7duoSHh6erEgdQtmxZtm3bRteuXbl27RodOnTgX//6Fy6X\n64+/WDKUdLtHLrVpj1zac7lcjB49mvHjxwMJCwlPmjRJ1xIUkXRjzpw5vPzyy8THx9O5c2fmz59P\n7ty5nY51X9ZaJk2axD//+U9cLhdt2rRh4cKFeHt7Ox1NUpgu0ZWMipxz5s6dy8svv0xcXBzPPPMM\nS5Ys0YuOiDjq7rpwkydPBmDkyJG8//77Kb7Qb2pZv3493bt359dff+Wxxx7j888/p2bNmk7HkhSk\nIpeMipyztmzZQqdOnbh48SLly5fnq6++onz58k7HEpFM6Ndff6V79+6sX7+erFmz8vHHH/Piiy86\nHesvO378OJ06dWLPnj1kz56dKVOmMHDgwFRf607ShopcMipyzouMjKRdu3ZERETg7e3NkiVLeOaZ\nZ/74C0VEUkhERAQdOnTg2LFjFClShKVLl9KgQQOnYz2wW7duMXToUGbOnAkkLNI+e/Zs8ufP73Ay\n+bs8cbKDZHBlypQhLCyM9u3bEx0dTcuWLRk3bpxO1hWRNLFs2TKeeuopjh07Rs2aNdmxY4dHlzhI\nWDx4xowZLFmyhHz58rF06VJq1qzJzp07nY4mqURFThyVN29eli1bxjvvvAPAW2+9RYcOHXQlCBFJ\nNfHx8bz55pt07tyZGzdu0KtXL7Zs2UKpUqX++Is9RNeuXdm1axc1atTg2LFj+Pj48OGHH+oP5QxI\nh1Yl3Vi1ahXPPfccly9f5tFHH2XZsmVUq1bN6VgikoGcO3eOHj16EBoaipeXFx988AHDhg3LsOeR\n3bp1i+HDh/Pxxx8D0KRJE+bNm5ehSmtmoXPkklGRS5+OHz9O586d2b17Nzlz5iQoKAh/f3+nY4lI\nBvDtt9/So0cPLly4QNGiRfnss89o1KiR07HSxMqVK+nXrx8XL17E29uboKAgunXr5nQs+Qt0jpx4\nhLJly7J161b69evHrVu36NOnD/7+/ly/ft3paCLioVwuF2PHjqV58+ZcuHCBpk2bsmfPnkxT4gDa\ntm1LREQEbdu2JTo6mu7du9O7d29dqzUD0B45SbfmzJnD66+/zs2bNylXrhyfffaZ1kUSkb/k3Llz\n9OnTh3Xr1mGM4a233uKdd94hS5YsTkdzhLWW4OBghgwZws2bNylZsiTBwcG0atXK6WjyB3RoNRkV\nOc9w4MABunXrxo8//kj27NmZMGECgwYNyrDns4hIylm5ciV9+/YlKiqKQoUKsXDhQlq2bOl0rHTh\n8OHDPP/88/zwww8A+Pv7M2XKFAoUKOBwMrkfHVoVj1S5cmV++OEHBg4cSGxsLG+88QZ+fn5cvHjR\n6Wgikk7FxMTw6quv4ufnR1RUFM2bN2ffvn0qcUlUqFCBrVu3MmHCBHLkyMG8efOoUqUKK1ascDqa\n/EXaIyceY9myZfTv35/o6GiKFCnCrFmzaNeundOxRCQd2bt3Lz169ODgwYNky5aN999/nyFDhnjM\npbaccPjwYfr160dYWBgAPXv2ZOrUqTz00EMOJ5OktEdOPF6nTp3Yu3cvjRo14pdffqF9+/b079+f\nq1evOh1NRBwWHx/PBx98QN26dTl48CAVK1YkPDycYcOGqcT9gQoVKvDdd98xZcoUcuXKxaJFi6hQ\noQKzZ8/WunMeQHvkxOO4XC6mTZvGqFGjuH37NqVLl2bevHmZagaaiPyfQ4cO0adPH8LDwwF46aWX\nmDx5Mrlz53Y4mef56aefGDhwIBs2bADg6aefJigoiCeeeMLhZKI9cpJheHl5MWTIEHbt2kWtWrU4\nceIETZo0YejQody4ccPpeCKSRu7cucOHH35I9erVCQ8Pp0SJEqxevZqgoCCVuAf0+OOPs27dOhYv\nXszDDz/M1q1bqVGjBgEBAXp9Tae0R048WlxcHOPGjWPs2LHcuXOHsmXLMmvWLJo1a+Z0NBFJRUeO\nHKFv377u87r69u3L5MmT8fb2djhZxhEdHc3o0aOZOXMm1loeeeQRJk6cyLPPPquVAxyg5UeSUZHL\nWHbu3Em/fv3Yt28fkPCi/uGHH2oqvUgGExsby4QJExg7diy3b9+mWLFizJo1izZt2jgdLcP64Ycf\nePnll9m9ezcADRo0YNq0adSoUcPhZJmLDq1KhlarVi127NjBe++9R44cOfj000+pVKkSS5cuRYVd\nJGO4e5jv7bff5vbt2/j7+7N//36VuFRWt25dtm/fzieffELhwoXZvHkztWrV4sUXX9RSUOmA9shJ\nhnP48GEGDBjA5s2bgYRL0wQGBlK2bFmHk4nIg4iOjiYgIIDg4GAg4TyuTz75hKZNmzqcLPOJjo7m\n3XffZfr06cTHx5M/f37eeustXnvtNXLmzOl0vAxNh1aTUZHL2FwuF8HBwQQEBHD16lVy5szJqFGj\nGDlypF5sRDyEtZbFixczbNgwzp8/T7Zs2QgICGD06NH6PXbYoUOHGDp0KKtXrwagVKlS/M///A/P\nPfdcpr38WWpTkUtGRS5zOHfuHCNGjCAkJASAxx57jOnTp+u6giLp3O7du3n99dfZunUrkLAMRnBw\nMJUrV3Y4mSS1Zs0aAgIC3OcnV61alfHjx9OqVStNiEhhOkdOMqVixYqxcOFCvv32WypXrszPP/9M\n69at6dixI8eOHXM6nogkc+nSJQYOHEjt2rXZunUrRYoUYe7cuXz33XcqcelQy5Yt2bVrF/Pnz+eR\nRx4hIiKCNm3a0KRJE7Zt2+Z0vExBRU4yhcaNG7Nnzx4mTpxInjx5+PLLL6lUqRIjR47kypUrTscT\nyfTi4+OZMWMG5cqVIygoCGMMb7zxhnuZEV2dIf3KkiULvXv35vDhw0yePJmCBQsSGhqKj48PLVu2\n5Pvvv3c6YoamQ6uS6Zw+fZo333yTBQsWAFC4cGHeffddBgwYQNasWR1OJ5K5WGtZuXIlAQEBHDx4\nEICmTZsSGBhIlSpVHE4nD+LKlStMnDiRadOmcf36dSBhz92YMWOoV6+ew+k8l86RS0ZFTnbs2MGQ\nIUPYsmULAJUrV+bDDz/E19dX53aIpIEdO3YwfPhwQkNDAShbtiwTJkygc+fO+h3MAC5dusTkyZMJ\nDAx0F7pWrVrx9ttv89RTTzmczvOoyCWjIieQsDdg2bJljBw50n3OXOPGjXnvvff0QiOSSiIjI3nz\nzTdZvHgxAAULFuTtt99m4MCB5MiRw+F0ktKioqLche7uZb4aNmxIQECAJkX8BSpyyajISVK3b9/m\no48+Yty4cVy+fBkAPz8/xo0bR9WqVR1OJ5IxnD17lvfee49Zs2YRGxtLjhw5GDx4MKNGjdKltTKB\nu4VuxowZ7nOTq1atSkBAAN26ddOpLX9ARS4ZFTn5PdHR0UyaNImpU6dy48YNjDH06NGD//7v/+bx\nxx93Op6IR/rll18YP348M2fO5NatWxhj6NWrF2PHjqV06dJOx5M0dvXqVYKDg5k8eTLnzp0DoHTp\n0rzxxhv069ePf/zjHw4nTJ9U5JJRkZP/5MKFC7z33nsEBQURGxtLlixZeO6553jzzTcpX7680/FE\nPMKlS5eYOHEi06dPJyYmBoAuXbowZswYTWQQbt++zcKFC5k4cSKHDx8GIG/evPTt25fXXntNr7XJ\nqMgloyInf8aJEycYM2YMCxYs4M6dO3h5edGtWzdGjx6tNyKR+zh37hxTpkxh5syZ7pPc/fz8ePfd\nd6levbrD6SS9cblcrFixgmnTprFp0yb3eKtWrRg8eDAtWrTQ8jOoyP2Gipz8FceOHeP9999n3rx5\nxMXFYYyhc+fOvPXWW1SrVs3peCLpwvHjx5k4cSJz587l9u3bAPj6+vLuu+9St25dh9OJJ9i3bx+B\ngYGEhIRw69YtAMqVK8eAAQPw9/enSJEiDid0jopcMipy8iBOnjzJBx98wOzZs4mNjQUS3qiGDx9O\ns2bNNPtKMqX9+/czfvx4Fi9ezJ07dwDo1KkTo0aNonbt2g6nE08UFRXF7Nmz+fjjjzl9+jQA2bJl\no0OHDgwYMIBmzZplur10KnLJqMjJ33H27FkmTpxIcHCw+9yfatWqMXz4cLp160a2bNkcTiiSuqy1\nrFu3jqlTp7JmzRogYYX/Xr16ERAQoMtpSYqIj49n9erVBAcHs2rVKlwuF5Cw5mD//v3p3bs3jzzy\niMMp04aKXDIqcpISfv31Vz755BMCAwM5f/48ACVLlmTQoEH079+fggULOpxQJGXdvHmThQsXMnXq\nVA4cOABArly56Nu3LyNGjKBMmTLOBpQM6/Tp08ydO5c5c+Zw8uRJ93jjxo3p3bs3Xbp0ydAzXlXk\nklGRk5R0+/ZtQkJCmDRpkvsyQ7ly5aJnz568+uqr1KhRw+GEIn/PqVOn+OSTTwgKCuLSpUsAFC9e\nnNdee40XX3yRQoUKOZxQMos7d+6wbt065s2bx/Lly93n0uXMmZP27dvTu3dvWrRoQfbs2R1OmrJU\n5JJRkZPU4HK5WLNmDYGBgaxdu9Y9/tRTT/Hqq6/SpUsXrVwvHuPuG2ZQUBArV650H9aqVasWQ4YM\n4dlnn81wb5biWa5cucLSpUtZsGCB+1JvAN7e3rRv355nn302w5Q6FblkVOQktR05coSZM2fy6aef\nulcxL1KkCP7+/vTr14+KFSs6nFDk9124cIG5c+cSHBxMZGQkkHCieadOnXj11VepX7++JvZIunPi\nxAlCQkJYtGgR+/fvd4/nz5+f9u3b06VLF1q0aEHOnDkdTPngVOSSUZGTtHLjxg0WLVrERx99xL59\n+9zjPj4+9OvXj65du5IvXz4HE4pAXFwcq1atYt68eaxcuZK4uDgAypQpw0svvUTfvn15+OGHHU4p\n8uccPHiQpUuXsnTp0nted/PkyUOLFi3w8/OjdevWFC1a1MGUf42KXDIqcpLWrLWEh4czZ84cPvvs\nM/dCqXny5KFr1674+/vToEGDTDelXpxjrWXPnj3MmzePkJAQoqKiAPDy8sLPz4+XX36ZZ555Rtuk\neLQjR464S93u3bvveaxu3bq0bduWNm3aUL169XS9ravIJaMiJ066ceMGX3zxBXPmzGHLli3u8ZIl\nS9K9e3d69epFtWrVdPhKUsWJEyf4/PPPWbBgAREREe7xKlWq4O/vT69evShevLiDCUVSx6lTp/j6\n669ZuXIl33zzjXuiBEDhwoVp1qwZLVq0oHnz5unuOsAqcsmoyEl6ceTIEf7973+zaNEiTpw44R6v\nVKkSPXv2pHv37jz++OMOJpSM4MyZM3zxxRcsWbKE77//3j1esGBBevbsib+/P7Vq1dIfD5Jp3Lhx\ng40bN/LVV1+xZs0aTp06dc/j5cqVo3nz5jRu3Jj69es7/seNilwyKnKS3rhcLrZt28bixYtZsmSJ\n+zAXQNWqVenUqROdOnWiatWqerOVP+XUqVMsX76czz//nC1btnD3NS937ty0bduW7t2707p1a82k\nlkzPWsvRo0dZv349GzZsYOPGjVy9evWe5zz66KPUr1+fBg0aUL9+fSpUqJCmr8UqcsmoyEl6FhcX\nxzfffENISAgrVqy45wXl0UcfpVOnTnTs2JF69eqRJUsWB5NKemKtZe/evSxfvpwVK1awa9cu92M5\ncuSgdevWdOvWjbZt25InTx4Hk4qkb/Hx8ezYsYNvvvmGzZs3ExYWxrVr1+55TqFChahTpw61a9em\nTp061KlTh2LFiqVaJhW5ZFTkxFPExsayceNG/vd//5cvv/ySX375xf1YoUKFaNmyJa1atcLX15fC\nhQs7mFScEBMTQ2hoKKtXr2bFihX3HJ7PkycPvr6+dOzYkXbt2mXoVe9FUlN8fDwRERFs3ryZLVu2\nsHnzZvfVfJIqUaIEderUoUaNGjz55JNUrVqVsmXLpsgkChW5ZFTkxBPduXOHsLAwli1bxvLlyzl+\n/Lj7MWMM9erVc5e6WrVqkTVrVgfTSmqw1hIREcHatWtZu3YtmzdvJjY21v140aJFadeuHe3ataNZ\ns2Yeu2aWSHpmreXkyZNs377dfdu5c+dvDsdCwh9UVatWpWrVqowbN46HHnrogX6milwyKnLi6ay1\nHDlyhFWrVrF69WpCQ0PveUPPly8fDRs2pGnTpjRp0oRq1aql66n18vustfz000+EhoYSGhrKhg0b\n7tkTYIyhVq1a+Pr64ufnR506dfTvLOIAl8vF0aNH2bFjB3v37iUiIoJ9+/Zx9uxZIOF39fr16+TO\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\ny5bRsWPHEn9WwWN84IEH6NatGx07duScc87hmWee2dRvW47z3//+N2vWrOEf//gHEyZM4Ntvv+Xl\nl19m5syZnHrqqQB0796dp556ivHjx9OpU6cyO9b58+ez7777Apk7L3v06MHTTz9dLsdZ2vqK69+o\nUaNtOqdbVNzdCJVhwzuaJKnM5ML/U++88854yy23xBhjnDZtWnzrrbficccdF99+++0y/6wnn3wy\nnnvuuZuef/vtt/Gwww7b9Pzwww+Pn332WYwxxs8//zzm5+dvem3VqlXxgAMO2PS8Q4cOcfHixTHG\nGGfOnPmdvoUVPsZLL700zps3L8YY43HHHVcGR/Z9AwYM2HSX6LBhw+LgwYM3vTZixIg4bty4GOP3\njzPGrTvWxx57LD722GMxxhh79OgR586dGy+77LJyOc7N1Vea49ncfgor7neJzdwl6pe/S5JKJO1f\n/j5x4kS++uorGjZsyG233cZRRx3FWWedxXPPPccNN9xQpp/1yCOPMHToUObPn8+5557LNddcQ/36\n9Rk5ciQTJkwgxkjbtm0544wzAOjYsSOPP/44Bx544KZ9DBo0iDlz5hBjZI899tjUd9999+Whhx7i\n6KOPLtExLlq0iJtvvplmzZrRo0cPRowYUabH+re//Y277rqLEAI33XQTp5xyCg8++CCrV6+mbt26\nNGrUiLPPPrvY49yaY125ciW33norBxxwAPvvvz+HHXYYl156Kbfccku5HGdx9ZX2eIprL2xrvvzd\nwCZJKpG0B7aiDB48mJYtW9KiRQt23333pMspkfz8fMaNG/edpTQ25+GHH+bII49k33335dxzz+XZ\nZ58t5wrLTmmONZePszADWyEGNkkqO7kY2F566SXWr1/PwQcfXOyaaGkzdOhQevbsSe3atUvUf9my\nZfzlL3+hUaNG7L///sVeS5ZGpTnWXD7OwgxshRjYJKns5GJgy0WrVq2ibt26SZdRIarSsRZkYCvE\nwCZJZcfAJpWNrQlsrsMmSZKUcgY2SZKklDOwSZIkpZyBTZIkKeUMbJIkSSnnd4lKkkqkZcuW3/uu\nRkmltzVrArqshyRJUgq4rIckSVIOM7BJkiSlnIFNkiQp5QxskiRJKWdgkyRJSjkDmyRJUsoZ2CRJ\nklLOwCZJkpRyBjZJkqSUM7BJkiSlnIFNkiQp5QxskiRJKWdgkyRJSjkDmyRJUsoZ2CRJklLOwCZJ\nkpRyBjZJkqSUM7BJkiSlnIFNkiQp5XI6sIUQfhJCmBFC+DSE8POk65EkVW6TJ0/m6quvZtCgQUmX\noiomZwNbCKEa8AhwLNAO6BdCaJtsVZKkymzGjBn87ne/47XXXku6FFUxORvYgEOAmTHGuTHG9cAQ\n4MSEa5IkVQExxqRLUBWTy4GtOTC/wPMvsm2SJJWLEAJgYFPFy+XAJklShdoY2KSKViPpArbBAqBF\ngee7Zdu+Y8CAAZsed+3ala5du5Z3XZKkSs4RNpWFsWPHMnbs2BL1Dbn6hy6EUB34BPgx8B/gHaBf\njHF6gT4xV49PkpQ+zz77LD/96U85/fTTefbZZ5MuR5VMCIEYY5HDuDk7whZjzAshXAaMIjO1+3jB\nsCZJUlnLz88HnBpVxcvZwAYQY3wN2CfpOiRJVcP69esBqFmzZsKVqKrxpgNJkkrIwKakGNgkSSoh\nA5uSYmCTJKmEDGxKioFNkqQS2hjYatTI6UvAlYMMbJIkldCaNWsAqFOnTsKVqKoxsEmSVEKrV68G\nDGyqeAY2SZJKaGNgq1u3bsKVqKoxsEmSVEKOsCkpBjZJkkrIwKakGNgkSSqh//73v4BToqp4BjZJ\nkkpoxYoVADRq1CjhSlTVGNgkSSqh5cuXA9CwYcOEK1FVY2CTJKmEHGFTUgxskiSVkCNsSkqIMSZd\nQ7kJIcTKfHySpIqTn59PjRo1iDGyfv16v55KZS6EQIwxFPWaI2ySJJXA119/TYyRhg0bGtZU4Qxs\nkiSVwJdffgnATjvtlHAlqooMbJIklYCBTUkysEmSVAJLly4FDGxKhoFNkqQS2DjCtuOOOyZciaoi\nA5skSSWwZMkSAHbeeeeEK1FVZGCTJKkEFi5cCECzZs0SrkRVkYFNkqQSWLBgAQDNmzdPuBJVRQY2\nSZJKwBE2JcnAJklSCRjYlCS/mkqSpC3Iy8tju+22Iz8/n3Xr1lGzZs2kS1Il5FdTSZK0DRYsWEB+\nfj677rqrYU2JMLBJkrQFc+fOBaBly5YJV6KqysAmSdIWzJkzB4BWrVolWoeqLgObJElbsDGwOcKm\npBjYJEnago1Too6wKSkGNkmStmDWrFmAI2xKjoFNkqQtmDlzJgB77bVXwpWoqnIdNkmSNmP16tXU\nrVuXGjVqsGbNGmrUqJF0SaqkXIdNkqSt9PnnnwPQunVrw5oSY2CTJGkzNk6H7r333glXoqrMwCZJ\n0mZ4/ZrSwMAmSdJmTJ8+HYB99tkn4UpUlRnYJEnajI8//hiAdu3aJVyJqjLvEpUkqRj5+fk0aNCA\nVatWsXTpUpo0aZJ0SarEvEtUkqStMH/+fFatWsXOO+9sWFOiDGySJBVj2rRpgNOhSp6BTZKkYnz0\n0UcA7LfffglXoqrOwCZJUjE+/PBDAH7wgx8kXImqOgObJEnF+OCDDwADm5LnXaKSJBVhzZo11KtX\njxAC//3vf6ldu3bSJamS8y5RSZJK6aOPPiI/P5+2bdsa1pS41Aa2EMIpIYSPQgh5IYSOhV67KYQw\nM4QwPYRwTFI1SpIqr/fffx9wOlTpUCPpAjZjKtAH+FPBxhDCvkBfYF9gN2BMCGEv5z4lSWVp8uTJ\nAHTs2HELPaXyl9oRthjjJzHGmUDhudwTgSExxg0xxjnATOCQiq5PklS5TZo0CYBDDvGvGCUvtYFt\nM5oD8ws8X5BtkySpTKxevZqpU6dSrVo1DjzwwKTLkZKdEg0hjAaaFmwCInBLjHF4MlVJkqq6Dz74\ngLy8PNq3b0/dunWTLkdKNrDFGI/eirctAHYv8Hy3bFuRBgwYsOlx165d6dq161Z8pCSpKnnnnXcA\nOPjggxOuRJXZ2LFjGTt2bIn6pn4dthDCP4HrYozvZp/vBzwDHEpmKnQ0UORNB67DJknaGv369WPI\nkCH86U9/4oILLki6HFURObkOWwihdwhhPnAY8EoI4R8AMcaPgaHAx8AI4BJTmSSpLI0fPx6Aww8/\nPOFKpIzUj7BtC0fYJEmlNW/ePFq2bEmjRo1YtmwZ1aqldmxDlUxOjrBJkpSECRMmAJnRNcOa0sI/\niZIkFbAxsB1xxBEJVyL9j4FNkqQCNl6/ZmBTmngNmyRJWV999RU77rgjNWvWZPny5X7puyqU17BJ\nklQC48aNI8ZIp06dDGtKFQObJElZ//znPwFcZF2pY2CTJClr46rz3bp1S7YQqRCvYZMkCVi6dCk7\n7bQT22+/PcuXL6dWrVpJl6QqxmvYJEnagtdffx3IrL9mWFPaGNgkSQJGjRoFwLHHHptwJdL3Gdgk\nSVVejJGRI0cCcMwxxyRcjfR9BjZJUpU3ffp0FixYQNOmTWnfvn3S5UjfY2CTJFV5G0fXjj76aL8/\nVKnkn0pJUpX32muvAV6/pvRyWQ9JUpX2zTff0KRJE9avX8/ixYvZaaedki5JVZTLekiSVIzRo0ez\nbt06OnXqZFhTahnYJElV2iuvvALACSeckHAlUvGcEpUkVVn5+fk0a9aMxYsXM2XKFA444ICkS1IV\n5pSoJElFmDx5MosXL6ZFixbsv//+SZcjFcvAJkmqsl544QUAevbsSQhFDmxIqWBgkyRVSTFGhg0b\nBsDJJ5+ccDXS5nkNmySpSpo2bRr7778/TZo0YdGiRdSoUSPpklTFeQ2bJEmF/P3vfwfgxBNPNKwp\n9QxskqQqaWNgczpUucApUUlSlfPpp5+yzz77UL9+fb788ktq1aqVdEmSU6KSJBX03HPPAdCnTx/D\nmnKCgU2SVOVsDGynn356wpVIJeOUqCSpSvnoo4844IADaNy4MYsWLaJmzZpJlyQBTolKkrTJkCFD\nADjllFMMa8oZBjZJUpURY+TZZ58F4LTTTku4GqnkDGySpCpjwoQJzJo1i912240uXbokXY5UYgY2\nSVKV8de//hWAM888k+rVqydcjVRy3nQgSaoS1qxZw6677sqKFSuYNm0a++23X9IlSd/hTQeSpCrv\n5ZdfZsWKFfzwhz80rCnnGNgkSVXCU089BcDZZ5+dcCVS6TklKkmq9ObPn0+rVq2oXr06CxcuZMcd\nd0y6JOl7nBKVJFVpTzzxBPn5+fTp08ewppxkYJMkVWp5eXk8/vjjAPzsZz9LuBpp6xjYJEmV2uuv\nv868efNo1aoVRx11VNLlSFvFwCZJqtT+/Oc/A3D++edTrZp/7Sk3edOBJKnSWrhwIS1btiTGyNy5\nc2nevHnSJUnF8qYDSVKV9Nhjj7FhwwZ69+5tWFNOc4RNklQprV+/nlatWrFw4UJef/11r19T6jnC\nJkmqcl5++WUWLlxI27Zt6datW9LlSNvEwCZJqpQeffRRAC655BJCKHLQQsoZTolKkiqdKVOm0KFD\nB+rWrcuCBQto2LBh0iVJW+SUqCSpSnnwwQcB6N+/v2FNlUJqR9hCCHcDPYG1wOdA/xjjyuxrNwHn\nARuAK2OMo4rZhyNsklTFLFmyhBYtWrBu3To++eQT9tprr6RLkkqkTEfYQggdt72kEhkFtIsx/gCY\nCdyU/fz9gL7AvsBxwO+DFydIkrL+8Ic/sHbtWk444QTDmiqNrZkSbRdCuKpgQwjhrhDCiWVUEwAx\nxjExxvzs038Bu2Uf9wKGxBg3xBjnkAlzh5TlZ0uSctPatWv5/e9/D8DVV1+dcDVS2Sl1YIsxPg0c\nEkK4uUDbTcCFIYSflmVxBZwHjMg+bg7ML/DagmybJKmKe/rpp1myZAkdOnSga9euSZcjlZkapX1D\nCOFSYA4wMoRwRYzxoexLg4B7gMGl2NdooGnBJiACt8QYh2f73AKsjzE+W9paAQYMGLDpcdeuXf0F\nlqRKKi8vj3vuuQeA66+/3qU8lHpjx45l7NixJepb6psOQggrgHNjjC+EEI4GmsYYB4UQLgIujjF2\nKG3Bm/msc4GfAUfFGNdm224EYozxt9nnrwG3xRj/XcT7velAkqqIv//975x88sm0atWKmTNnUqNG\nqcckpESV9bIeo4HWADHG0UBeCKEnsDfQe6urLCSE8BPgeqDXxrCW9TJweghhuxBCa6AN8E5Zfa4k\nKffEGBk4cCAA1157rWFNlc7WBLazgYYhhEYA2anKxkCrGOPsMqztYaAeMDqE8F4I4ffZz/sYGAp8\nTOa6tkscRpOkqm3s2LFMmjSJHXfckfPOOy/pcqQyV2brsIUQ+gD7xBgHlskOy4BTopJUNXTv3p3X\nX3+dX/3qV/zyl79Muhxpq2xuSrRMF84NITSNMS4usx1uIwObJFV+EydO5IgjjqBBgwbMmTOHHXbY\nIemSpK1SYV9NlaawJkmqGn7zm98AcPnllxvWVGml9qupyoIjbJJUub3zzjsceuih1K1bl7lz59Kk\nSZOkS5K2ml/+LkmqlG6//XYALrvsMsOaKjVH2CRJOWnSpEkccsgh1KlTh9mzZ7PzzjsnXZK0TRxh\nkyRVOrfeeiuQuXbNsKbKzhE2SVLOeeutt+jcuTMNGjRg1qxZToeqUnCETZJUacQYueWWWwC45ppr\nDGuqEhxhkyTllNGjR3PMMcfQuHFjZs2aRcOGDZMuSSoTjrBJkiqF/Px8brzxRgBuuOEGw5qqDEfY\nJEk5Y/DgwZxxxhk0b96cTz/9lDp16iRdklRmHGGTJOW8tWvXbrp27de//rVhTVWKgU2SlBP+8Ic/\nMGfOHNq1a8c555yTdDlShXJKVJKUesuXL6dNmzYsW7aM4cOHc8IJJyRdklTmnBKVJOW022+/nWXL\nltGlSxeOP/74pMuRKpwjbJKkVJs5cybt2rVjw4YNTJ48mY4dOyZdklQuHGGTJOWs6667jvXr19O/\nf3/DmqosR9gkSak1ZswYjj76aOrVq8fMmTPZZZddki5JKjeOsEmScs6GDRu4+uqrAbjlllsMa6rS\nDGySpFR69NFH+eijj2jdujVXXXVV0uVIiXJKVJKUOosWLWKfffZh5cqVvPTSS/Tq1SvpkqRy55So\nJCmn/PyIV2MJAAAZ1ElEQVTnP2flypUcf/zx9OzZM+lypMQ5wiZJSpXx48dz5JFHUqtWLaZNm8ae\ne+6ZdElShXCETZKUE9avX8+ll14KwA033GBYk7IMbJKk1HjggQeYMmUKrVu35sYbb0y6HCk1nBKV\nJKXC7NmzadeuHWvWrOG1117j2GOPTbokqUI5JSpJSrUYIxdffDFr1qyhX79+hjWpEEfYJEmJGzJk\nCP369aNRo0bMmDGDpk2bJl2SVOEcYZMkpdbSpUu58sorAbj77rsNa1IRDGySpERdddVVLFmyhC5d\nunD++ecnXY6USk6JSpISM3z4cHr16kXt2rWZMmUKbdq0SbokKTFOiUqSUmf58uVcdNFFANx5552G\nNWkzDGySpERce+21LFy4kE6dOnH55ZcnXY6Uak6JSpIq3CuvvELPnj2pVasW77//Pvvuu2/SJUmJ\nc0pUkpQaS5cu5f/+7/+AzFSoYU3aMgObJKnCxBi56KKLWLx4MV26dOGqq65KuiQpJzglKkmqMM88\n8wxnnnkm9erVY+rUqbRq1SrpkqTUcEpUkpS4efPmcemllwLw4IMPGtakUjCwSZLKXV5eHmeccQYr\nVqygV69e9O/fP+mSpJxiYJMklbs777yT8ePHs+uuu/L4448TQpGzPpKK4TVskqRyNXHiRDp37kx+\nfj6jR4/mxz/+cdIlSankNWySpESsWLGCM844g7y8PK6//nrDmrSVHGGTJJWLGCOnnnoqw4YN46CD\nDmLixIlst912SZclpZYjbJKkCvfoo48ybNgw6tevz5AhQwxr0jZwhE2SVOYmT57MEUccwbp163ju\nuefo27dv0iVJqecImySpwixfvpy+ffuybt06LrnkEsOaVAZSG9hCCL8OIXwYQng/hPBaCGGXAq/d\nFEKYGUKYHkI4Jsk6JUn/E2Okf//+zJ49m44dO3LfffclXZJUKaR2SjSEUC/G+E328eXAfjHGi0MI\n+wHPAAcDuwFjgL2Kmvt0SlSSKtbAgQO56aabaNiwIZMnT6ZNmzZJlyTljJycEt0Y1rLqAvnZx72A\nITHGDTHGOcBM4JAKLk+SVMiYMWO45ZZbABg0aJBhTSpDNZIuYHNCCLcDZwPLgW7Z5ubA2wW6Lci2\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": "iVBORw0KGgoAAAANSUhEUgAAAakAAAGNCAYAAACrEY57AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYVNW19/HvamYERAQFoqJBHBMjjuCUhlwFghhocABF\nuBFRo4DBKBoVWzMYIsaJwVwVCIoyCNJIC4L3plEE8SqQiMMNoAyvgAwXRW3G7vX+UQUXmh6rq+qc\nqvp9nqcfqXN2nbPgKXvV3mufvc3dERERCaOsoAMQEREpi5KUiIiElpKUiIiElpKUiIiElpKUiIiE\nlpKUiIiEVs2gAwgbM9OcfBGRKnJ3S8R11ZMqhbun/M9DDz2UFveMxzVjuUZV3lPZthW1q+75VPkJ\n6u8Rxs9nqnw2K2qTSEpSaSo7Ozst7hmPa8Zyjaq8p7JtK2pX0fk1a9ZU6j5hF8RnM1H3re41U+Wz\nWdX7xpMlOgumGjNz/ZtIGPXv358JEyYEHYbIYcwM13Bf8uTm5lJQUBB0GCKH6N+/f9AhiByioKCA\n3NzchN5DPakS1JMSEaka9aRERL17yUhKUiIiEloa7itBw30iIlWj4T4REclISlIiKUI1KclESlIi\nIhJaqkmVoJqUiEjVqCYlIiKhk5+fT6dOnRJ6DyUpkRShmpSESX5+PkOGDGHevHkJvY+SlIiIVNnT\nTz/N6tWrE34fJSmRFBHUKtQipdm9e3dS7qMkJSIiVbZz586k3EdJSiRFqCYlYbFp0yZWrlyZlHsp\nSYmISKXt3buXa665hu3bt3PmmWdyxRVXJPR+ek6qBD0nJSJStqFDh/LEE0/QsmVLPvzwQ5o3b57Q\n56SUpEpQkhIRKd3kyZPp3bs3NWvWZMGCBVx00UWAHuYVEVSTkmB9/PHH3HTTTQA88cQTBxJUoilJ\niYhIub755htycnIoLCzkhhtu4Pbbb0/avTXcV4KG+0RE/k9xcTE9e/Zk5syZnHXWWSxevJj69esf\n0kbDfSIiEog///nPzJw5kyOPPJLp06cflqASLW5Jysx+aGZtzUyJTyQBVJOSZHvrrbe4//77AXjp\npZc4+eSTkx5DlROKmfUwsy/MbP5Bx54AVgEfAh+Z2TFxjFFERJJs3bp19O7dm+LiYh588EGuvPLK\nQOKock3KzKYDtYF73f1jM7sIWAi8B7wM9AaWufsd8Q42GVSTEpFMt2vXLi699FI++OADOnXqRH5+\nPjVq1CizfSJrUjVjeM85wLnu/r/R1wOAPUCOu28ys2nA4ngFKCIiyTV48GA++OADTjzxRF5++eVy\nE1SixVI/qrM/QZlZTeAqIM/dNwG4+1dA3fiFKCKgmpQkxwsvvMBzzz1H3bp1mT59Ok2aNAk0nliS\n1Hdm1jz65+5AE2Dy/pNm1gDYG4fYREQkiT788MMDz0CNHTuWc845J+CIYqtJPQp0Bt4C+gM7gR+6\n+z4zawqMAJq7e9c4x5oUqkmJSCbatm0b5557LmvXruWWW27h2WefrfR7w1aT+h3Qgkgt6ivg36MJ\nqiawOdqmX5ziC0Rubi7Z2dnaZE5EMkJRURF9+vRh7dq1XHDBBTz11FOVel9BQUHCh6G14kQJ6klJ\nWBUUFOiLkyTEgw8+yO9//3uaNm3K0qVLOf7446v0fq04ISIiCTFr1ix+//vfk5WVxZQpU6qcoBIt\npp6UmRmRSROdgabu3tPM2gA/Ama5e1F8w0we9aREJFOsXLmS8847jx07djBixAjuueeemK4Tqv2k\nzKwekA9kRw995+6NzKwtkckU/wSucvdv4xlosihJiUgm+P7772nXrh0rVqygR48eTJ8+nUj/o+rC\nNtz3IHAqcDtwIVAI4O7LgOOAbcBv4xWgiEToOSmJF3dn4MCBrFixglNPPZUJEybEnKASLZbZfVcT\nWV1iCUR6HvtPuPtOM7sVWATcF58QRUQknkaNGsXLL7/MEUccwYwZM2jUqFHQIZUpluG+be5+9EGv\nN7p7ixJtNrh7yzjFmFQa7hORdLZw4UI6dOjAvn37mDJlCtdcc021rxm24b49ZtairJNm1hoojj0k\nERFJhI0bN3L11Vezb98+hg4dGpcElWixJKk3gKlmdtjGImZ2CfAq8Hp1AxORQ6kmJdWxd+9err32\nWjZt2sRPf/pTRowYEXRIlRJLknoAOAH4l5mtBpqY2VIz+wp4GzgSeCiOMYqISDXdc889vPPOO7Rs\n2ZIpU6ZQs2YsUxKSL9bnpI4B/gj0AvZX3L4BpgL3u/vWuEWYZKpJiUi6mTx5Mr1796ZWrVosWLCA\n9u3bx/X6oXpO6pA3R7aKbxZ9ucXdU74WpSQlIulkxYoVXHjhhRQWFjJq1KgDq5zHU9gmThzg7sXu\n/lV0D6ka0W06RCQBVJOSqvrmm2/IycmhsLCQG264gV/96ldBh1RlVU5SZnaVmW03s/81sw4HnToW\n+MrMHo5feCIiEovi4mL69evHypUrOeuss/jrX/8a2gd2yxNLT+pGYBXQFSg46PiXRNbz62lmg6sf\nmogcTCugS1WMGDGCvLw8GjduzIwZM6hfv37QIcUklod5VwKXu/uaMs63IbKd/BnVDy/5VJMSkVQ3\nf/58OnfuTHFxMbNnz6Zr18TuQRu2mlTDshIUgLuvBI6KOSIRKZVqUlIZa9eupXfv3hQXFzN8+PCE\nJ6hEiyVJ7a1gxYkWQMpu1SEikqp27dpFr1692LZtG507d2b48OFBh1Rtsa44Md3MTi95wszOBaYR\n2cpDROJINSmpyODBg/nggw848cQTmTRpEjVq1Ag6pGqLpSbVHFgCHA+sBzYAtYEWQHNgHXBhdFp6\nylFNSkRS0QsvvMCAAQOoW7cuixYtom3btkm7d6hqUu6+CTgfGEdkCaQLgbZAfeAF4PxUTVAiYaaa\nlJTlgw8+OPCQ7rPPPpvUBJVoMS3e5O6bgQFmNpBSVpwws9Pd/dM4xSgiImXYunUrPXv2ZPfu3dx6\n663069cv6JDiqlrLIpV5Ue0nJSKScEVFRXTp0oX58+dz4YUXsmDBAurUqZP0OBI53BdTT8rMugO/\nAFoCtUqeBo4+7E0iIhJXDz30EPPnz6dZs2a8+uqrgSSoRItl4sSdwF+AfcBWYE8pzX7g7iWTV0pQ\nT0rCqqCgQDP85IC8vDy6d+9OVlYW8+fPp2PHjoHFErae1B3Ab4G/uHtpCQoz21itqEREpEwrV67k\nxhtvBODRRx8NNEElWiw9qS3AMeV1N8ws290LqhlbINSTEpEw+/7772nXrh0rVqwgJyeHV199NfCF\nY0M1BR34GGiSgOuKiEg53J2bb76ZFStWcNpppzF+/PjAE1SixZJM7gDGmNlZ5bSZFGM8IlIGPScl\nzzzzDK+88goNGjRgxowZNGrUqOI3pbhYalKvAw2Aq82skMjkiYN35DWgaRxiExGRqIULF3LXXXcB\nMG7cOE4//bCV6dJSLDWp3cAiIsmoLO3cvW51AguKalIiEjYbN27knHPOYdOmTdx1112MHDky6JAO\nkciaVCxJaqO7l7kKemXbhJWSlIiEyd69e+nYsSMLFy4kOzub+fPnU7NmTI+4JkzYJk70rUSbzjFc\nV0TKoZpUZrr77rtZuHAhP/jBD5g8eXLoElSixbLA7FuVaPOP2MIREZH9XnnlFZ566ilq1arFtGnT\nOPbYY4MOKeliWrvPInMeuxPpMTV1957RbeN/BMxy95Td9FDDfSISBitWrODCCy+ksLCQ0aNH86tf\n/SrokMoUqhUnzKwekU0Ns6OHvov+twHwPPBPM7vK3b+NS4QiIhnmm2++IScnh8LCQvr27cttt90W\ndEiBiaUm9SBwKnA7kb2kCgHcfRlwHLCNyLJJIhJHqkllhuLiYvr168fKlSv5yU9+wrPPPpv2D+yW\nJ5YK3NVAjrsvgcjw2P4T7r7TzG4lMkX9vviEKCKSOUaMGEFeXh6NGzdm+vTp1K9fP+iQAhXLFPRt\n7n70Qa8Pm26u/aRERKpu/vz5dO7cmeLiYmbPnk3Xrl2DDqlSwjYFfY+ZlfkMlJm15tAVKELBzGqZ\n2TAz+87MTgg6HhGRg61du5bevXtTXFzMQw89lDIJKtFiSVJvAFPN7OSSJ8zsEuBVIksnhc0tQAGQ\n2X1nSVmqSaWvXbt20bNnT7Zt20aXLl0YPnx40CGFRiw1qQeA94B/mdkXQBMzWwr8AGgGrAEeiluE\nceLuo4CMLkCKSDgNGjSIDz/8kJNOOomXXnqJrCxtJLFfLA/zbgTOB8YR2Sa+FnA2UBt4DrjA3TfH\nK0Aza2Fmc80sdEOIIsmkXXnT0/PPP8/zzz9P3bp1mT59Ok2aVLQTUmaJaX2NaBIaYGYDifSeALa4\ne1wTiZnlACOJbFFf3iaLxwBPAOdGD30E3OnuX8YzHhGReMjPz+fpp59m69atLFu2DIBnn32Wtm3b\nBhxZ+FS5J2Vm481snJn9m7sXu/tX0Z9E9HTuAjoSGV4sdZzOzGoD84kk3DOiP98DfzezIxIQk0gg\nVJNKD/n5+QwZMoR58+axdOlS3J1GjRrRtKl2OCpNLAOf/YgM8W2KcyylucTd11TQph/wY2BYNGkW\nA8OAHwJlPaatwpSIBOLpp59m9erVhxzbsWMHzzzzTEARhVssSWqzu/d19xVxj6aESj6w1BNYe3Ay\nc/evgE+i5wAws0vN7Bkiw4a5ZvaLOIcrklCqSaWHXbt2Vel4poslSa0ws3If1DWzv8UYTyzOAr4o\n5fgaIj0sANz9HXcf5O413P3f3T0vWQGKiOz35Zell8rr1k3JfWITLpYkNRgYa2bnldPmihjjiUVT\noLTFbHcA9c2sThJjEUkY1aRS34QJEw4b6gNo3bo1gwYNCiCi8Itldl8+kRXP3zezncAWDl1hwogk\njmTRGkYiEnrz5s3j5ptvBuC2227j888/Z9euXdStW5dBgwZphYkyxJKkWhJZQLa8yQfJ3Dp+K9Cw\nlOONgO/dfXdVL9i/f39OPPFEABo3bszZZ599oB6w/9usXut1sl9nZ2eHKh69rvzrxo0b07NnT/bt\n28d1113HmDFjQhVfVV/v//OaNWtItFgWmD1sQdlY2lTxnhOAG939sOFJM5sDnObuJ5U4/hHwrbtf\nVMV7aYFZEYmbdevW0a5dOzZu3Ejv3r3TckWJsC0w27cSbTrHcN2KlJU5ZgCtzKzV/gNmdixwGjA9\nAXGIBOLgb7GSGrZv306XLl3YuHEj2dnZjB8/Pu0SVKLFsizSWxbRw8z+ambTAcysTfRYDXf/R/xD\nLXN4cQKRFSZGmFkNM8sC/gR8DoxNQBwiIhXavXs3PXr04JNPPuGMM87gtddeo04dzeOqqliG+w7b\nPt7dG5lZW+At4J9AXLaPN7MxQBciEzHqA+uI9KhOdfe9B7XbvyzSedHzMS+LpOE+Eamu4uJibrjh\nBl555RVatGjBe++9xwknpO8OQYkc7oslSf2RyCoPvwc+AF539+bRc/WAF4GV7p6SO/MqSYlIdd17\n772MGDGCBg0a8M4773D22WcHHVJCha0mtX/7+LHu/t8cVCty953ArRy00oOIxIdqUqlh9OjRjBgx\ngpo1azJ9+vS0T1CJFkuSauLuS8o66e5biTxHlbJyc3P1C0FEqmzWrFkMHjwYgOeee44rrkjmugbJ\nV1BQQG5ubkLvEdMUdOCc6L5Sh003j24fv8Ddj4trpEmi4T4RicWSJUvo0KEDO3fu5OGHH86o3XXD\nNtyXqtvHi4gkxKpVq7jyyivZuXMnN910Ew8++GDQIaWNWHpSLYjs73Q8kYVdjwM+5tDt49vFc3fe\nZFJPSsKqoKDgwJP/Eh5btmzhoosuYtWqVXTq1InXX3+dWrVqBR1WUoWqJ5Xs7eNFRMKqsLCQq666\nilWrVtG2bVumTZuWcQkq0SrsSZnZA0R2x73a3beVOJdFArePD4J6UiJSGUVFRfTs2ZO8vDxatWrF\n4sWLadEimcuWhkfQPal/J9JD2h4Npt/+E0nYPl5EJHTcnTvvvJO8vDwaN27MnDlzMjZBJVplktQR\n7v7KQUnoTxW9wcyWVy8sESlJj0WEx+OPP86oUaOoXbs2eXl5nH766UGHlLYqk6QKzax9Fa97bCzB\niIiE3eTJk7n77rsBmDhxIpdddlnAEaW3yuwnNQl418y+AnYBzczs83LaJ3vTw7jLzc09sH+PSFjo\n8xi8BQsW0K9fpOLx2GOPce211wYcUbAKCgoS3sOvzMSJGsBtwM+Ao4D2wOIKrtvO3evGJcIk08QJ\nESnNJ598wsUXX8zXX3/NoEGDeOqppzBLyFyBlBO2BWaTvulhMilJSVjpOangbNiwgfbt27Nu3Tp6\n9OjBtGnTqFGjRtBhhUags/vM7AEz+y8zOzp66IZKXLcyGyOKiITet99+S9euXQ/ssDtp0iQlqCSq\nzHDfauABYIq7F5tZP3f/W1KiC4B6UiKy3969e+nWrRtvvvkmJ598MosWLaJZs2YVvzHDBP2clKag\ni0jGcXduvfVW3nzzTZo1a8bcuXOVoAKgKegiKULPSSXXI488wrhx46hXrx6zZ8+mdevWQYeUkTQF\nXUSkhPHjx5Obm0tWVhaTJ0/mggsuCDqkjFWZmlQW8CuqNgW9vbvXiUuESaaalEhmmzdvHl27dmXf\nvn2MGTOG2267LeiQQk9T0JNISUokcy1fvpxLL72U7777jmHDhvGnP1VYgheCnzhRUmWml98Tw3VD\nQ9vHSxjpM5lY69at4+c//znfffcdvXv35o9//GPQIYVeKLePr9RFzTa4e8u4XzgJ1JOSsNLDvImz\nfft2LrnkEj755BOys7OZO3cudeqkZMUiEIEO95lZLtDE3QdHX38BlPcmA45z95Tc+UtJSiSz7N69\nm06dOrFgwQLOPPNMFi5cSOPGjYMOK6UEnaQ2AI2Apu6+y8z2AO8SSUZl0dp9IhJ6xcXFXH/99Uye\nPJmWLVuyePFiTjjhhKDDSjmJTFKVmYJ+DlDH3XdFX29z9w7lvcHMNlY7MhE5hIb74u++++5j8uTJ\nNGjQgPz8fCWoEKowSbn7phKHbq3EdSvTRkQkMKNHj+bPf/4zNWvWZPr06Zx99tlBhySlSMjEiVSm\n4T6R9JeXl0dOTg7FxcWMHz+e/v37Bx1SSgvbFPQKmdlHibiuiEh1LVmyhN69e1NcXMzDDz+sBBVy\nFQ73mVk/yp/Nd9hbgONjjkhESqWaVPWtWrWKK6+8kp07d3LTTTfx4IMPBh2SVKAyEyfGJzwKEZEE\n27JlC126dGHr1q107tyZsWPHamfdFFCZKejbgBz+b8p5PeBR4L+BAmD/xIrmQDZwOXCnu8+Mf7iJ\np5qUSPopLCykY8eOLFmyhLZt27JgwQIaNmwYdFhpI+gp6AvdfcFBwTwF/N7dXy2l7SQzywGuBFIy\nSUFkWaTs7GwNrYikgaKiIvr06cOSJUto1aoV+fn5SlBxUlBQkPDlumJZYPZzoHVZ3Y3oqulfuHur\nOMSXdOpJSVipJlV17s6gQYMYPXo0Rx11FO+++y6nn3560GGlnbDN7msKlLdmSGMiW3qIiARq5MiR\njB49mtq1a5OXl6cElYJi6UktAPYCv3b3j0qcOwv4C1DT3bPjFWQyqSclkh4mT55M7969D/z52muv\nDTii9BW2/aTOBf4ONAA2Rn+MyMSJFsB3QLa7L41vqMmhJCWS+hYsWMAVV1zBnj17GDlyJHfddVfQ\nIaW1UA33ufuHwPnAdOBIImv7tY3+eRpwXqomKJEw035SlfPJJ5/QvXt39uzZw6BBgxg6dGjQIUk1\nVGZ232Hc/X+Aq82sBtAseniLuxfFLTIRkSrasGEDXbp04euvv6ZHjx488cQTehYqxWntvhI03CeS\nmr799lsuu+wyli9fTvv27fnP//xP6tWrF3RYGSFUw30iImGzd+9err76apYvX06bNm2YNWuWElSa\nUJISSRGqSZXO3bnlllt48803adasGXPmzKFp06ZBhyVxoiQlIintkUceYfz48dSrV4/Zs2fTunXr\noEOSOFJNqgTVpERSx/jx4/nlL39JVlYWM2fOpFu3bkGHlJFUkxIRKeHNN9/k5ptvBmDUqFFKUGlK\nmx6WIjc3V+P/Ejr6TP6fZcuW0atXL4qKihg2bBi33XZb0CFlpIKCAnJzcxN6j8ps1RHLpodPuXt5\n6/uFlob7JKy0wGzE2rVrad++PRs3bqRPnz68+OKLZGVpUChIgS6LZGbFsVzY3VPyU6MkJRJe27dv\n5+KLL+bTTz8lOzubuXPnUqdOnaDDynhB7ye1nRg2PYxnkCIiu3fvpkePHnz66aeceeaZvPbaa0pQ\nGaAyPak8d//FQa+fAt4pY9NDopse/tzdB8Q10iRRT0rCKpOH+4qLi7n++uuZPHkyLVu2ZPHixZxw\nwglBhyVRgc7uOzhBRXUjsrhsWWYS6U2JiMTFfffdx+TJk2nYsCFvvPGGElQGiWWrjh1AK3ffXsb5\nJsAad28Uh/iSTj0pkXAZPXo0d9xxBzVr1uSNN97g8sv1HThswvac1DJgmpn9uOSJ6KaHUwFt1SEi\n1ZaXl8fgwYMBeP7555WgMlAsW3UMJbLp4T/MrMxND+MVoIhEZFpN6r333qN3794UFxfzyCOP0K9f\nv6BDkgBo00MRCZ1Vq1bRrVs3du7cyYABA3jggQeCDkkCUq21+9Jx00PVpESCtWXLFtq3b8/q1avp\n3Lkzs2bNolatWkGHJeUIW03qAHcvcvdN0Z8DCcrMbqh+aCKSaQoLC+nWrRurV6/mnHPOYdq0aUpQ\nGS5Rq0I8lqDrimSsdF+7r6ioiD59+rBkyRJatWpFfn4+DRo0CDosCViFEyfMLBdo4u6Do6+/oPy1\n/AzQjmMiUmnuzpAhQ8jLy+Ooo45izpw5NG/ePOiwJAQqs+LEBqAR0NTdd5nZHmBRBddt5+514xRj\nUqkmJZJ8jz32GPfccw+1a9fmrbfe4tJLLw06JKmCoBeYbQ7Ucfe10dcb3b1FBe+psE1YKUmJJNcr\nr7xCnz59AJgyZQrXXHNNwBFJVQW9LNKm/Qkqqo6ZjTOzfyvnbbdWP7TgaD8pCaN0/EwuWLCA/v37\nAzBy5EglqBQTiv2kDntDZOuOScAId1+RkKgCpJ6UhFW6Pcz7ySefcPHFF/P1118zePBgnnzyScwS\n8mVcEizQ4b5Sgtnk7mlb0VSSEkm8DRs20L59e9atW0ePHj2YNm0aNWrUCDosiVHYnpNaYWYty2tg\nZn+LMR4RSXPffvstXbt2Zd26dbRv355JkyYpQUmZYklSg4GxZnZeOW2uiDEeESlDOtSk9u7dS69e\nvVi+fDlt2rRh1qxZ1KtXL+iwJMRiWWA2H2gAvG9mO4EtwMFbzOs5KRE5jLtzyy23MG/ePJo1a8ac\nOXNo2lS/KqR8sdSkdhN5Tqq88Uc9JyUih8jNzeXhhx+mXr16FBQUcMEFFwQdksRJ2CZO6DkpEamS\ncePGcdNNN5GVlcXMmTPp1q1b0CFJHIVt4kTfSrTpHMN1RaQcqVqTevPNNxk4cCAQ2WVXCUqqIpb9\npN6qRJt/xBaOiKSTZcuW0atXL4qKirj33nu59daUfs5fAhDLcN9H7n7Y1vHpQsN9IvGxdu1a2rVr\nx6ZNm+jTpw8vvvgiWVmJ2nhBghS2mtTXRKahl6cY2Aa85+7bY4wtEEpSItW3fft2Lr74Yj799FM6\ndOjAnDlzqFOnTtBhSYKELUkVV9zqgN3An939oSrdJEBKUhJWqbIs0u7du7niiit4++23OfPMM1m4\ncCGNGzcOOixJoEQmqViek+oFPAHMAwqATdHjzYFs4FzgAaAh0B4YamYb3P2v1Q1WRMKtuLiYfv36\n8fbbb9OyZUvmzJmjBCXVEktP6gVgjru/Wsb5HOAyd78z+ro7kOvuZ1c32GRQT0okdvfccw+PPfYY\nDRs25J133uEnP/lJ0CFJEoRtuG8NcFJZv8nNLAtY5e4/jL6uAWxz95T4OqUkJRKbUaNGMWjQIGrW\nrMkbb7zB5ZdfHnRIkiRhe06qCVBewmnMocsiFQOFMdxHRA4S5uekZs6cyeDBkflUzz//vBKUxE0s\nSWoZMM3MDpuGbmZnAVOBpQcdvhrYGlt4IhJ27733Hr1798bdeeSRR+jXr1/QIUkaiWW471zg70QW\nmd0Y/TEiEydaAN8B2e6+1MyeA/oDj7v7vXGMO2E03CdSeStXruSiiy5i69atDBgwgP/4j//QxoUZ\nKFQ1KQAzOxX4PdAFqB89XEhkhfQH3f1f0XY/Bo4A/idVnpdSkhKpnM2bN3PRRRexevVqunTpwqxZ\ns6hZM5YJw5LqQpekDrw5MimiWfTlFncviktUAVKSkrAK03NShYWFdOjQgffff59zzjmHBQsW0KBB\ng6DDkoCE7TmpA6JJaVOFDVNMbm4u2dnZofmFIBImRUVF9OnTh/fff58TTzyR/Px8JagMVVBQkPAJ\nPdXqSaUj9aREyubu3HHHHYwZM4ajjjqKRYsWcdpppwUdlgQsbFPQRSRDPfbYY4wZM4Y6deqQl5en\nBCUJpyQlkiKCfk7qlVdeYdiwYQBMnDiRSy+9NNB4JDMoSYlIhQoKCujfvz8Ajz/+ONdcc02wAUnG\nUE2qBNWkRA718ccfc/HFF/PNN98wePBgnnzyST0LJYcI3RR0i3xCuxPZJr6pu/c0szbAj4BZqTwV\nXUlK5P9s2LCBdu3asX79enr06MG0adOoUaNG0GFJyIRq4oSZ1QP+E5gO3AzsX6SrAfA88JaZNYxb\nhCICJL8mtWPHDn7+85+zfv162rdvz6RJk5SgJOliqUk9CJwK3A5cSHTxWHdfBhxHZEfe38YrQBFJ\nvr1799KrVy/+8Y9/0KZNG2bNmkW9evWCDksyUCxr960EbnD3JdHXG929xUHnmwKL3P2UuEaaJBru\nk0zn7vzyl79kwoQJNGvWjMWLF9O6deugw5IQC9VwH9Bkf4IqjbtvJTL0JyIp6OGHH2bChAnUr1+f\n/Px8JSgJVCxJao+ZtSjrpJm1JrKHlIjEUTJqUuPGjePhhx8mKyuLKVOmcP755yf8niLliSVJvQFM\nNbOTS577NYS7AAAar0lEQVQws0uAV4HXqxuYiCTX3LlzGThwIACjR4/myiuvDDgikdhqUi2A94Dj\ngS+ITJb4GPgBkRXR1wDt3H1zXCNNEtWkJBMtW7aMyy67jO+++457772XRx99NOiQJIWE8TmpY4A/\nAr2ARtHD3xDZlff+aF0qJSlJSaZZu3Yt7dq1Y9OmTVx//fVMnDiRrCwtRiOVF7okdeDNZlkcup9U\nyteilKQkrBKxn9T27du5+OKL+fTTT+nQoQNz586ldu3acb2HpL+wze47wN2L3f2r6M+BBGVmp1c/\nNBFJpN27d9O9e3c+/fRTzjzzTGbMmKEEJaGTkLX7zGyDu7eM+4WTQD0pyQTFxcX06dOHKVOm0LJl\nS9577z2OP/74oMOSFBW6nXnNrDvwC6AlUKvkaeDoasYlIgk0bNgwpkyZQsOGDZkzZ44SlIRWlZOU\nmd0J/AXYB2wF9pTSTFVXkTiLV01q1KhRjBw5kpo1azJ9+nTOOuus6gcnkiCx9KTuAO4FnnT30hIU\nZraxWlGJSELMnDmTwYMHA/DCCy9w+eWXV/AOkWDF8pzUFuCY8go3Zpbt7gXVjC0QqklJulq8eDEd\nO3Zk165d/O53v+OBBx4IOiRJE2Gb3fcx0CQB1xWRBFm5ciXdunVj165dDBgwgPvvvz/okEQqJZZk\ncgcwxsx+Uk6bSTHGIyJliHXtvs2bN9OlSxe2bdtGly5dGDt2rHbWlZRRYU3KzL4ASo5/NQSuNrNC\nIpMnDn6I14CmcYtQRGJWWFhIt27dWL16Neeccw5Tp06lZs2YJvWKBKLCmpSZ7QYWEUk+ldXO3etW\nJ7CgqCYl6aKoqIicnBxmzZrFiSeeyOLFi2nevHnQYUkaCvo5qf919w5Vuahm94kEy90ZPHgws2bN\n4qijjmLOnDlKUJKSKlOT6lvZi5lZ/egfO8UWjoiUpSo1qccee4wxY8ZQp04dZs2axWmnnZa4wEQS\nqMIk5e5vHfzazMaU0/zPZraVyDYeIhKAl19+mWHDhmFmvPjii1xyySVBhyQSs1iek9ro7qXuzBvd\nwqMT8Ft3T8lFZlWTklRWUFDAFVdcwd69e3n88ccZOnRo0CFJBgjbc1Jlim50+BIpvnZfbm5uUrbq\nFomnjz/+mO7du7N3716GDBnCr3/966BDkjRXUFBAbm5uQu9RqZ6UmY0nMg3dgGuByWU0rQmcBtR2\n97PjFWQyqSclYVXe2n0bNmygXbt2rF+/npycHKZOnUqNGjWSG6BkrKBn9wH0K/G6fxntCoFPgdti\nDUhEqmbHjh38/Oc/Z/369Vx00UW89NJLSlCSNuJak0oH6klJKtm7dy9du3Zl/vz5tGnThkWLFtG0\nqZ6ll+QKW03qt3GPQkSqzN0ZOHAg8+fP55hjjmHu3LlKUJJ2qpyk3H18IgIRkfKVnMyTm5vLhAkT\nqF+/PrNnz+aHP/xhMIGJJJBWKxdJQS+88AKPPPIIWVlZTJkyhfPPPz/okEQSoso1qXSnmpSE3dy5\nc7nyyispKiri2Wef5ZZbbgk6JMlwYatJiUhAli5dSq9evSgqKuK+++5TgpK0p55UCepJSdjk5+fz\n9NNPs379elavXs2ePXu4/vrrefHFF7UvlIRCoM9JmdkDQEfganffloggRKR0+fn5DBkyhNWrVx84\nVq9ePXr16qUEJRmhMsN9/w48B2wHMLOSD/aKSII8/fTThyQogJ07d/Lss88GFJFIclUmSR3h7q+4\n+/7dd/9U0RvMbHn1whIRgF27dlXpuEi6qUySKjSz9lW87rGxBCMih9q0aVOpx+vWTcmNr0WqrDJr\n900C3jWzr4BdQDMz+7yc9gbosXeRapo1axb/+te/DjveunVrBg0aFEBEIslXmST1EPAV8DPgKKAl\nsK6C96Tt2n4iybB8+XL69OkDQN++fdm8eTO7du2ibt26DBo0iK5duwYcoUhyJGSB2VRehFZT0CVo\nmzZt4oILLmD9+vXccMMNTJw4UTP5JNTC9jBv3zi1EZESdu7cSffu3Q9su/Hcc88dSFDaiFMyUWX3\nkzrA3d+yyP81NwLXAK2jp1YCU939RXd/K44ximQEd+emm25iyZIlnHDCCbz22muaICEZL5bhvtpA\nHtCpjCZvAle5+95qxhYIDfdJUH73u98xfPhwGjRowKJFi/jxj38cdEgilRK24b57gbbA3cCpQKPo\nz2nAPdFz98UrQJFMMG3aNIYPH46Z8corryhBiUTF0pP6F3Cduy8t4/y5wGR3bxOH+JJOPSlJtg8+\n+IDLLruMnTt38vjjjzN06NBS2xUUFJCdnZ3c4EQqIWw9qUZlJSgAd/8QaBh7SCKZ48svv+Sqq65i\n586d3HTTTfz6178OOiSRUImlJ7UeOM/dvyrjfHPgA3c/Lg7xJZ16UpIs33//PZdddhlLly7lpz/9\nKfPmzaN27dpBhyVSZWHrSc0FXjWzc0qeiA71vQrMqW5gIumsuLiYG2+8kaVLl9K6dWumT5+uBCVS\niliS1IPACcAHZrbBzD6M/mwE/hs4LtpGRMowfPhwZsyYwZFHHsns2bM5+uijK3yPnpOSTFTlJOXu\nm4DzgXFAfSKz+doC9YAXgPOjbUSkFC+99BJ/+MMfqFGjBlOnTuW0004LOiSR0KrWzrxmlgU0i77c\nctB2HilLNSlJpMWLF5Odnc2ePXsYNWoUt99+e9AhiVRbImtS2j6+BCUpSZS1a9dywQUXsHnzZm6/\n/XZGjRoVdEgicRG2iRMiUkXffvst3bp1Y/PmzVx++eU8+eSTVb6GalKSiZSkRBKsqKiIPn368NFH\nH3HqqacydepUatas8rKZIhlJw30laLhP4u3uu+9m5MiRNGnShCVLlnDyyScHHZJIXGm4TyRFvfDC\nC4wcOZKaNWsyffp0JSiRKlKSEkmQBQsWcOuttwIwduzYaq+7p5qUZKKEJCkz+30iriuSKlavXk1O\nTg779u1j6NChDBgwIOiQRFJSdZ+Takrkgd5DDgP/7e7HVCewoKgmJdX19ddf0759ez777DO6du1K\nXl4eNWrUCDoskYRJZE2qylOMoonpKSAHqFNGM/2Wl4y0b98+rr32Wj777DN+9KMf8fLLLytBiVRD\nLPNg/wP4KTAV+BLYU0qbu6oTlEiq+vWvf828efNo1qwZr7/+Oo0aNYrbtbWflGSiWJJUB+ACd19Z\nVgMzuyr2kERS05gxYxg1ahS1a9fmtdde48QTTww6JJGUF8t+Up+6++kJiichzOw44BlgE3A88FB0\nc8bS2qomJVU2f/58unTpQlFRERMnTqRv375BhySSNGF7TmqMmQ0sr4GZfRBjPIkyBpjm7rcBvwWm\nRhfHFam2zz77jKuvvpqioiLuu+8+JSiROIppdp+ZPQlcBLwPbAUOXv3cgN+4eyi2kDezJsAW4Ch3\n3xE9tgbo5+4LSmmvnpRU2rZt22jXrh2rVq0iJyeHadOmkZWVmO8/qklJWIVtdt91wCAiyei8MprF\n5be8mbUAxgNXuHus/+efCOzZn6CiNkWPH5akRCprz5499OrVi1WrVtG2bVsmTpyYsAQlkqlimTiR\nC8wARgEbKX123/vViAkAM8sBRkavX2bSM7NjgCeAc6OHPgLudPcvqxuDSFncnTvuuIOCggJatGjB\nrFmzOOKIIxJ6T/WiJBPFkqSOAXq7+76yGpjZyNhDOuAuoCORpHhKGfepDcwHPgPOiB4eB/zdzNq6\n+/fAWqC2mTU6qDfVHFgThxglQz355JM899xz1K1bl7y8PI477rigQxJJS7GMTXxEZKv48iyK4bol\nXeLuaypo0w/4MTDM3YujOwMPA34I3Abg7tuAfKAbgJn9BCgC3o5DjJKB8vPz+c1vfgPA3/72N84/\n//yk3Fdr90kmiiVJ3Q6MMrMzymkzNcZ4Dqjk7IWewNqDk5m7fwV8Ej2336+Aq81sLPBH4DrNjpBY\nrFixgt69e1NcXMzDDz/MNddcE3RIImktluekvgAaAEcD3wPbOHx23/HuHpdd3cxsAnBjaRMnzGwD\n8Jm7dyxxfBbQ0d0bxHA/5S8p1ebNm7nwwgtZs2YN1113HS+//DJmCZnQJJJSQjW7D2hJZDivvIBa\nxBZOlTUFvi3l+A6gvpnVcffdSYpF0tju3bvJyclhzZo1XHjhhYwbN04JSiQJYklS/+vuHcprYGYb\nY4ynqtTlkYRzdwYOHMi7777L8ccfz8yZM6lXr6KybPzpOSnJRLEkqRsq0aZzDNeNxVagtIeGGwHf\nx9qL6t+//4F11xo3bszZZ5994JfD/uK1XmfO65dffpmJEydyxBFHMHz4cD777DOaN28emvj0Wq+T\n/Xr/n9esWUOixVKTGk+kB/Oyu7+VkKgOvd8Eyq5JzQFOc/eTShz/CPjW3S+K4X6qSckBr732Gjk5\nOZgZM2bMoHv37kGHJBI6YVu7rx9Qi8iqDclSVtaYAbQys1b7D5jZscBpwPRkBCbpa9myZdxwQ2Tg\n4NFHH1WCEglALElqs7v3dfcVcY+mbGVl6AlEntsaYWY1oovG/gn4HBibpNgkDW3cuJGrrrqKwsJC\n+vXrxz333BN0SIcMtYhkiliS1Aoza1leAzP7W4zxHHyNMdHp7j0BN7MvzOxzM6u1v4277wUuJ/Jw\n7ifRnwZEpp8XVjcGyUw7d+7kF7/4Bf/v//0/LrnkEv76179qJp9IQGKpSZ0BPAr8zt1L3ZLDzDa6\ne7KmoceValKZzd3p3bs3U6ZM4aSTTmLJkiU0a9Ys6LBEQi1sz0nlE+mtvG9mO4lsg1HyYd6mcYhN\nJOkeeeQRpkyZQsOGDXn99deVoEQCFktPajcVP8zbzt3rViewoKgnlbmmTJnCddddR1ZWFrNnz6ZL\nly5Bh3SIAj0nJSEVtp5UmB7mTYjc3Fyys7P1CyGDvP/++/Tv3x+Av/zlL6FLUCJhVFBQkPAJPbH0\npP6touejzOwn7v6PakUWEPWkMs/69eu54IIL2LRpEwMHDuTZZ5/VRAmRKkhkTyqm7ePTmZJUZvnu\nu++49NJLWb58OR07dmTu3LnUqlWr4jeKyAFhe5gXi+hnZvlm9ln053Uz6xvvAEUSpbi4mL59+7J8\n+XLatGnDtGnTQp2g9JyUZKIq16Siu+HmAZ1KnDoF6GpmfYCros8wiYTW/fffz8yZM2ncuDGzZ8+m\nSZMmQYckIiXE0pO6F2gL3A2cSmQx10ZEliK6J3ruvngFKJIIEydO5E9/+hM1atTg1Vdf5ZRTTgk6\npAppIo9kolgmTvyLyM62S8s4fy4w2d3bxCG+pFNNKv0tXLiQn/3sZ+zZs4exY8dy6623Bh2SSEoL\nW02qUVkJCsDdP6T07TNEArdmzRp69OjBnj17GDx4cEolKNWkJBPFkqT2RlcaL5WZNQf2xR5S8HJz\nc/ULIQ3t2LGDK6+8kq1bt9KpUycef/zxoEMSSWkFBQXk5uYm9B6xDPc9R6T+NKRkjyo61PcU8Km7\n3xy3KJNIw33pqaioiKuuuoo33niD008/ncWLF3PkkUcGHZZIWgjVc1LRntIS4Hgie0rtX12iJXAs\nsI7IskjJ3G8qbpSk0tPQoUN54oknOProo1myZAmtW7cOOiSRtBGqmlQ0+ZwPjAPqE5nN1xaoB7wA\nnJ+qCUrSS35+Pp06deKUU07hiSeeoEaNGrz22mspm6A0BC2ZKJa1+3D3zcAAMxsI7F8meou7FwOY\n2enu/mmcYhSpsvz8fIYMGcLq1asPHDv66KPZsWNHgFGJSFUlZFkkM9vg7uVujBhWGu5LD506dWLe\nvHmlHp87d24AEYmkr7Ctgo6ZdQd+QaQOVXIdGQOOrmZcItWye/fuUo/v2rUryZGISHXEsizSncBf\niEwz3wrsKaVZTGsCisRLnTp1Sj1et25KbnMGaD8pyUyxJJM7gN8CDdy9pbufWPKHSPISCczgwYMP\nmyDRunVrBg0aFFBEIhKLWKagbwGOKa9wY2bZ7l5QzdgCoZpU+sjPz+eZZ55h165d1K1bl0GDBtG1\na9egwxJJO2GrSX0MNAG2ldMmpYf7tDNveujatauSkkgChXVn3h8BDwJ/cPd/ltFmo7u3iEN8Saee\nlISValISVmHrSb0ONACuNrNCIvWn4oPOG9A0DrGJiEiGi6UntRtYRCQZlaWdu6fkNCr1pEREqiZs\nPan/dfcO5TUws43lnRcREamMWCY49K1Em84xXFdEyqG1+yQTxbLA7FsHvzazdqW0+Ud1ghIREYE4\nrN2XyjP5SqOalIhI1YRqqw4REZFkUZISSRGqSUkmUpISEZHQikeS6hmHa4RKbm6uvrVK6Gi1CQmb\ngoICcnNzE3qPhGx6mMo0cUJEpGo0cUJE1LuXjKQkJSIioZWU4T4zO8Xd/5XwG8WBhvtERKomHYb7\nbkzSfUREJI3EpSdlZuOAk8pp8mN3T4ntO9STkrDSflISVmFbBb00fwAeACZQ+hYev4nTfUREJIPE\nJUm5+2oz+9DdF5R23szaxOM+IplMvSjJRHpOqgQN94mIVE3oJ06Y2eVm1tXMNKVdJEH0nJRkorgk\nFXefH73W62b2ZzM7PR7XFRGRzFbp4T4za+vuyypoUwuYCnRz93hNykgqDfeJiFRNWIb77q6ogbvv\nBQYAe2KOKAS0wKyISMVCtcCsmf2nu/+skm3fcvd/q1ZkAVFPSsJKz0lJWIWlJ9XBzP5uZveb2UVm\nVqOctl9VNzAREZGq9KS+Ab4ETose+g54F/g78F/Ah/u7IGb2orv3jX+4iaeelIhI1YRlxYk33f0a\nM2sOdDzop1P0/Ddm9jaRpNUqvmGKiEgmqkpP6lx3/7CU4634v4TVAWgJuLuXNxwYWupJSVipJiVh\nFYqaVGkJKnp8rbuPd/e+7n4ccAawMl4BiohI5krIskhmNtndr4v7hZNAPSkRkapJZE8qUUkqZTY5\nLElJSkSkakIx3FcVqZqgRMJMD5hLJtKCsCIiElraqqMEDfeJiFRNyg33iYiIxIOSlEiKUE1KMpGS\nlIiIhJZqUiWoJiUiUjWqSYmISEZSkiqFNj2UMNJnUsImVJseZgoN90lYaYFZCauUWxYplSlJiYhU\njWpSIiKSkZSkRFKEalKSiZSkREQktFSTKkE1KRGRqlFNSkREMpKSlEiKUE1KMpGSlIiIhJZqUiWo\nJiUiUjWqSYmISEZSkhJJEapJSSZSkhJJEcuXLw86BJGkU5ISSRFff/110CGIJJ2SVJoKYmgoEfeM\nxzVjuUZV3lPZthW1y5ThvKD+nmH8fKbKZ7Oq940nJak0pSRVvWuEMUmtWbOmUvcJOyWp6r0/05KU\npqCXYGb6BxERqSLtJyUiIhlHw30iIhJaNYMOIBWZ2ZNAQ2A7cDYw3t0nBRuVCJhZE2Ak8B3gwA+B\noe6+MtDARGKknlRs9rj7Te7+G+C3wPNmpn9LCYPjgUJ3H+zuQ4A3gXEBxyRygJnVMrNhZvadmZ1Q\nUXv9Yo2Bu99z0MvTgI/dvTioeET2c/d/uPsdBx36AvhBUPGIlOIWoACoX5nGaZ2kzKyFmc01s7gn\nEDM7y8ymAoOBq+N9fUl/ifx8HqQbMCqB1xepEncf5e5LKts+bZOUmeUA7wInEhmbL6vdMWY2ycw+\ni/5MM7MfHHR+sJmtjP503H/c3f/p7tcAtwNvR2sBIpWS6M9n9FxXoIG7/yVBfw1JY0n6ElWhtE1S\nwF1AR+A9oNT5+2ZWG5hPZALJGdGf74G/m9kRAO7+tLu3if78l5ll7T8XPb8E2AlcltC/jaSbhHw+\nD3pvVyK9qL4J/VtIWkrGl6jKSuckdYm7r6mgTT/gx8Awdy+O1pWGEZkRdVsZ7zkBeH7/CzM7GmgO\nrK52xJJJEvX5xMyuBi5391vd3c3sqXgFLRkjoV+iqiJtk1Qldy7sCaw9+JeFu38FfBI9V5ptgJnZ\neDN7HHgRGOLuH1UzZMkgifp8mtlZwMvANWa20cw2AgOqH7FkmIR9iSqhwlUqMv05qbOAz0o5vobI\nt4jDuPu3wHUJjElkv1g+n/8EaiUwJskA1fkSZWb7v0SNLO1NZnYpcA2RYcRcM5vp7nll3STTk1RT\n4NtSju8A6ptZHXffneSYRPbT51PCrMpfogDc/R3gHWBQZW6StsN9laSFCyXM9PmUMKvwS1Q8bpLp\nSWorkeWNSmoEfK9vqRIwfT4lzJLyJSrTk9Q/gZNKOX4SoIkQEjR9PiXMkvIlKlOSVFkZfwbQysxa\n7T9gZscSWepoejICE0GfT0lNSfkSlSlJqqxpjhOI/GOOMLMa0UVi/wR8DoxNUmwi+nxKmAX6JSpt\nk5SZjTGzL4hMhXQz+8LMPjezA9Nz3X0vcDlQROTZk0+ABkBHdy8MIm7JDPp8SgoJ9EuUduYVEZFD\nmNkYoAuRGXz1gXVEelSnRr887W93DPAEcF70/EfAne7+ZdxiUZISEZGwStvhPhERSX1KUiIiElpK\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\nGIKsvTYKuNXMrnb35wtco4WTRCSv3XffnSeeeIJ3332XbbYJ8itI4ixI91oz0AXoBqwBVgCtt7RO\n1HM6WgZHRKQ0VVkGx8zWkX1OJ+8Nc/ScjohISoU9pvOeux/l7g2FXsD7FUUsNZHmfuUkUP7iK825\nC1J0RpRwzbEB7isiCfX222+zfPnyqMOQOlCVVaaTQt1rIuE4/fTTefDBB7n77rs56aSTog5HqizU\n7jUzm115SCKSFi+99BL33HMPGzZs4OCDD446HIlYkPmKe5hZW5PrNwErgWfdXeM7dSrp6z8lXVzy\nd8UVVwBw4YUX0qdPn2iDqRNxyV01BCk6OwLTSrx2nZld7+7jA3yOiMRcJpNh5syZ7LDDDlx55ZVR\nhyN1IMiU6ZOBnwKPABlgWe5UD6ABOAQYC+wAfAk4D/hXd//PUCKuIY3piFTmiCOO4Omnn+bHP/4x\n48aNizocqZGw1167A/hvd7+/wPmTgX9294tz708EGt39oPLCjp6KjkhlXnnlFa6//nqmTJlCly5d\nog5HaiTsorMI6Fvot7GZtQPmu3u/3Pv2wEp3j93a5UkvOmnuV04C5S++kp67sB8O3RkoVkC6Aru0\ner8JWB3gc0REJGGCtHSeADYA/8/dZ29x7kDgJmCb3MoEmNlwYKy7HxhKxDWU9JaOiEg1FGvpBJm9\ndgnwOPB/ZrYUWEp2HbYeQE9gFdkJBZjZbcDZwL8H+BwREUmYsrvX3P0FYBDwAPAZ4AvAwbn/vg84\n1N1fzF0+Gfgn4LpQoo1AY2NjYtdJSur3lRb1mL/33nuP8847jwULFkQdSl2rx9yFIZPJ0NjYWPSa\nQJtZuPsbwLDcJIFdc4dXuPvGLa6L/eoFbf0Disg/XHvttUydOpUlS5Ywc+bMqMORGmvZBmbChAkF\nr9Haa0VoTEekdH/7298YOHAga9euZdasWRx66KFRhyQRCXv2mojIVhobG1m7di3Dhg1TwZGCVHRS\nLKn9ymlRT/mbM2cOd955J+3bt+cnP/lJ1OHUvXrKXa1pg3IRqdisWbPYZpttOPfcc9l7772jDkfq\nmMZ0itCYjkjp3nzzTbbbbju6d+8edSgSsVCXwUkTFR0RkfKFPpHAsk4ys/80swdyxwbmjrWvJFip\nnTT3KyeB8hdfac5d2WM6ZrYd0ERu1QGyKxAAdAFuB142sxPc/aNQIhQRkcQIsvbaROAs4CfA88BD\n7t4jd2474G5gnrtfEXKsNafuNZHCVq5cSbdu3aIOQ+pQ2N1rw4CT3f1Wd58FbP6t7O5rgO8D3wwU\nqYjEwrp16zjkkEP4+te/zrvvvht1OBIjgbY2cPe/Fjrp7u+S7WqTOpfmfuUkiDJ/P//5z3nzzTdZ\nvHgxO+20U2RxxFWaf/aCFJ31Ztaz0Ekz6092Dx0RSaAPP/xw8wOgEydOpH17zR2S0gXdrnpv4Bx3\nn29mS929Z+7ckcDNwLPufkHo0daYxnREtnbVVVdx9dVXc8QRR/Dkk09ilrfrXlIs7O2qewLPAnsA\nzUBv4FVgd7IrTi8CDnf3dyqIuS6o6Ih82vLly+nfvz8ff/wxTz75JEceeWTUIUkdCnUigbsvJbuf\nzlSgG9ABOAjYFrgN+GISCk4apLlfOQmiyN/222/PpZdeymmnnaaCU4E0/+wF3U/nHeB8M/sun95P\nR2M5IgnWpUsXrrrqqqjDkBiryjI4Zrafu88J/cY1pu41EZHyRbGfzqNVuq+IiMRY0LXXTjSzO83s\nYTN7bIvX42THehKhsbExsf2vSf2+0kL5i6+k5i6TydDY2Fj0miBrr10M3AR8ArwLrM9zWWI2h2vr\nH1Ak6Z555hneeecdTjjhBE2PlqIaGhpoaGhgwoQJBa8JMmV6PvAL4Gfunq/g0PrZnTjTmI6knbtz\n2GGHMWvWLG6//XbOO++8qEOSGAj7OZ0VQPdiv43NrMHdM2XduA6p6Eja3X///QwbNowePXowf/58\ntt9++6hDkhgIeyLBq8DObVyTmO61JEtqv3JaVDt/GzZs4MorrwSyqxCo4IQnzT97QYrDD4ApZvb5\nItdMDxiPiNSJqVOnMnfuXAYMGMD5558fdTiSEG12r5lZM622L8jZgewMtdVkJxO0fijUgN7u3iHE\nOCOh7jVJsyOPPJKnnnqKe++9l+HDh0cdjsRIRWM6ZrYOeJpsMSnV4e7eqYzr65KKjqTZ+vXrmTFj\nBqeddhrt2qnHXEpXadEpeyaaZq/FQyaToaGhIeowJCDlL76SnrtKJxKMKOODOuf+c0ipXyMiIukR\nZMr0FHe/sMC5W4BTgbPcvSmE+CKV9JaOiEg1hP2cTsGuMzPrTraVM8bd9ys70jqjoiNps3HjRu0E\nKhWr2YKfuS0PfkWC1l5LsjQ/K5AEYefvtddeY8CAAdx9992h3le2luafvZLWXjOzO8lOmzbgM2Y2\ntcj99gXeDic8EamVMWPGsGjRIp599llGjCh5KFekLCV1r5lZqZuzrQbmAKPc/ZlKAqsH6l6TtHj6\n6ac54og1J05xAAAYdElEQVQj6Ny5MwsWLKBHjx5RhyQxVqx7raSWjrtv7oZLynRoEclydy677DIA\nLrnkEhUcqaogYzpjQo9CIpHmfuUkCCt/TU1N/OUvf6Fbt2786Ec/CuWeUlyaf/bK3k/H3e+sRiAi\nEo0dd9yRz33uc5x77rnsuOOOUYcjCVf2lOk00ZiOpMXGjRvZtGkTHTrEfslEqQOhPqeTJio6IiLl\nq9lzOhIvae5XTgLlL77SnDsVHRERqZlSVpkeCwwGhrn7yppEVSfUvSZJ9eijjzJo0CBNHJCqqHRr\ngwXAWOBed99kZme5+11ViLNmzOxnZDeiex84CLjT3bfa7VRFR5Jo6dKlDBgwgM6dO/Paa6+x6667\nRh2SJEylYzrbu/uv3b1lVYJrS/jAl8oJMALr3f08d/9Xss8d3W5mqetqTHO/chIEzd/VV1/N6tWr\nOeKII1RwIpLmn71SftGuNrMvlXnf3YIEUyvufmmrt/sCr7YqqiKJNX/+fG677TbatWvHxIkTow5H\nUqiU7rWrgSuB5cBaYA9gcbEvAXq7e8UT/s2sJ3AncEzrpXjCYGYHku027Ed2vKo5zzXqXpNEOfXU\nU7n33ns555xzmDq10Lq9IpWpdEynHXAh8FVgJ+BLQFuLeR7u7p0CxNr6c08GbgTWAwPdPe8mH7k9\nfH4KHJI7NBu42N2X5M6PAkbmzn3P3R/b4usPA+4HPu/u721xTkVHEmPBggUMGDCAjh07Mm/ePPbY\nY4+oQ5KEqtkmbuVcU8LnPAWcDjQCZ+Zr6ZjZtsAs4HXg27nDU4EvAwe7+8d5vqYdsF3rc2Y2F7jU\n3X+3xbWJLjpJ36c96YLk76mnnuLVV1/lu9/9bnWCkpIk/Wcv7IdDS9loI4zNOI5090VtXHMW8Dng\nMnfflBuXuYxsl9kFBb5mT+D2ljdm1g3oASyoOGKROnfEEUeo4EikAi2DY2YGnAkMB/rnDs8DZrh7\nqNsOmtk0Crd0ZgL7uHvfLY6/DHzs7ltNgDCzHYDbgDXAe8B+wH35FjJNektHRKQaKt5PZ4ubbQs8\nCAzZ4tTewFAzOw04wd03lB1p+Q4k27W2pUVkH2jdirt/BJxaxZhERKSAIN1rlwMHAz8C9gF2zL32\nBS7NnbsirADbsAvwUZ7jHwKdzaxjjeKIpTQ/K5AEyl98pTl3Zbd0gDOAr7v7i1scnwvcaGaPA78B\nflxpcCWoet/X2WefTZ8+fQDo2rUrBx100OYBwJb/48T1/UsvvVRX8eh9ee9LyV9TUxNr1qxh3Lhx\nzJkzp67i1/vkvM9kMkybNg1g8+/LQoLMXlvm7kX3sy3lmjI+bxqFx3SWAG+4++Atjv8eOMrdd6jw\nszWmI7H18ccfM2DAAJYtW8aMGTMYNmxY1CFJSoQ9e22DmRVcccDMegCfBLhvEC8DffMc70v2eR2R\n1PrZz37GsmXLGDRoEKecckrU4YgAwYrOTOB+M/vClifM7BCyD1r+d6WBbaFQc+O/gL3MbK9WMexG\ndnzpgZBjSJyW5rHEU7H8rVy5kuuvvx6Aa6+9luyEU6kXaf7ZC1J0xpF91uV5M3vbzF7IvZaSfVCz\nd+6aMBX6iZlGtkVznZm1zz34eS2wELg15BhEYmPixIl8+OGHHHPMMQwenHcip0gkyi467r4MGET2\nyf/OZGerHQxsB9wBDMpdUxEzm2JmzcA3ATezZjNbaGab13TLTcs+GtgIvJZ7dQEGu/vqSmMAaGxs\nTOxfJS0DghJPhfLn7qxevZr27dtz7bVtLgovEUjqz14mk6GxsbHoNYEeDt38xdmWRcva6CuStlKz\nJhJInP3tb3+jd+/eUYchKRT2RILNckvPLM+9ElVw0iCpLbi0aCt/Kjj1K80/e6nbuExERKJTUfda\n0ql7TUSkfFXrXhOR+uDuvP56vmUIReqLik4bkjx7LanfV1q0zt9DDz3Efvvtx+jRo6MLSEqW1J+9\nUmavBVl7LVXa+gcUidrGjRsZM2YMAP369Ys4GkmzhoYGGhoamDBhQsFrqjKmY2Y/cfexod+4xjSm\nI3Ewbdo0zjnnHPr06cPrr79Ox45aXF2iFep21VvceBeyD4h+6jAwy927B75xnVDRkXq3du1a9t57\nb9566y1++ctfMmJEGJv2ilQm1IkEZraLmU03szXAO2Q3TGv9aga6BYxVaiip/cppkclkuPXWW3nr\nrbc48MADOe2006IOSUqU5p+9IGM6vwC+AswAlgDr81zzw0qCEpHSnHHGGSxevJghQ4bQvn37qMMR\naVOQ/XTeB77o7vOKXPOiu2+1CnXcmJmPHz9+8+CYiIgUlslkyGQyTJgwIbwxHTOb4+77hRJhndOY\njtSjpqYmJk+ezLp16+jYsSOjRo1i6NChUYclslmxMZ0g3WtTzOy77v6LIh/4vLsfGuDeUkOZTEYt\nuJhpampi9OjRLFiwYPOxlv9W4YmPNP/slV103P1mM/uZmT0HPAe8C7Re7NOAfUKKT0RamTx58qcK\nDmSLzs0336yiI7FQdtExs1OBkWSLS6HWjPqkYiCtf2nF2bp16/IeX7t2bY0jkUqk+WcvSPdaI9lt\nom8BlpJ/9tpzFcQkIgVs3Lgx7/FOnTrVOBKRYIKsvdYd+La7P+Huc9190ZYv4MZww5RqSPOzAnGV\nr7j079+fkSNHRhCNBJXmn70gLZ3ZZLem/qjINU8HC0dEClm4cCGZTAYz48gjj+TDDz+kR48ejBw5\nUuM5EhtBis5FwC1mdp27v1bgmhlAr+Bh1Y/GxsbEPqeTxO8pySZOnMgnn3zCmWeeyV133RV1OFKB\npP7stTynU0yQ53SagS5kl7r5GFjJ1rPX9nD32K9gred0pF6sXr2aAQMGsHz5cl5//XUGDhwYdUgi\nBYW9iVsv4BXgz8ALZNdbW9zq9SbwSaBIpabS3K8cN507d2bu3Lk8+OCDmwuO8hdfac5dkNbIe+5+\nVLELzGxpwHhEpIAuXbpw/PHHRx2GSEWCdK991d0fbeOaz7v7/1UUWR1Q95qISPlC3U/HzO4k+/Dn\nPe7+pxDiq1sqOiIi5Qt7TOcsoAOwrKKoJHJp7ldOAuUvvtKcuyBF5x13H+Hur4QejYhs9uabb3LI\nIYfwwAMPRB2KSGiCFJ1XzKzoMzhmpocIYiCpzwokxTXXXMOLL77Ib3/727znlb/4SnPughSdUcCt\nZlZs64JjAsZTdxobG1PdFJZoLF68mKlTp9KuXTvGjh0bdTgiJclkMjQ2Nha9ptKHQ9cAK9j64dDe\n7t6hrBvXoaRPJEjznh717oILLuDnP/85p512GtOnT897jfIXX0nPXdibuPUiu7Za3hvm9AxwXxEh\n28q54447MDPGjRsXdTgioQrS0lnq7kWLSinXxEHSWzpSn55++mlGjBjBYYcdxj333BN1OCJlC/s5\nna+19XyOHg4VqcyGDRv46KOP2HnnnaMORaRsoT6nU8oDoUkoOGmgCRL1q0OHDm0WHOUvvtKcu0Ar\nQZuZAWcCw4H+ucPzgBnufndIsYmISMIE6V7bFngQGFLgkoeBE9x9Q4WxRU7dayIi5Qt7GZzLgYOB\nHwH7ADvmXvsCl+bOXREsVJF0+vvf/866deuiDkOk6oIUnTOAr7v7v7v7PHdflXvNdfcbgaHAiHDD\nlGpIc79yvRk7diwDBgzgkUceKflrlL/4SnPugozp7OjuLxY66e4vmNkOFcQkkipLlizhF7/4BRs2\nbKBXr0Ts8i5SUJCWzgYz263QSTPrQYJ2Dk3yMjhJfiI6Tq699lrWr1/PKaecwgEHHFDy1yl/8ZXU\n3FVrGZzbyI7fjN6yxWNmhwCTgDnu/p2yblyHNJFAqm3JkiX079+fdevWMXv27LKKjki9CnsiwThg\nT+B5M3vbzF7IvZYCs4DeuWukziW1BRcn1113HevWrSu7lQPKX5ylOXdBHg5dBgwCpgKdyc5WOxjY\nDrgDGJS7RkTacNxxxzFo0CCuuuqqqEMRqYmyu9c+9cVm7YBdc29XuPum3PH93H1OCPFFSt1rUgvu\nTvZ5a5FkCHXttRI/8G13j/00HBUdEZHyhT2mg5mdaGZ3mtnDZvbYFq/Hye61I3Uuzf3KSaD8xVea\nc1f2czpmdjFwE9lp0e8C6/NcFqiYiYhIsgWZMj0fuB24yd3zFRztpyNSxMyZMzn88MPp2rVr1KGI\nVEXY++msALoX+21sZg3uninrxnVIRUfCtnTpUvr160enTp2YP38+3bqpJ1qSJ+wxnVeBtnaWUvda\nDKS5XzkqN9xwA2vXruWoo46quOAof/GV5twFKQ4/AKaY2YFFrpkeMB6RxFq2bBm33norgJ7LkdQK\n0r3WDHQhO0NtNdnJBJtaXwL0dvcOYQUZFXWvSZh++MMfctNNN3HiiSfy29/+NupwRKqmWPdakFWm\newFPky0uhcR+EkGLxsZGGhoaErtAn9TG+++/r1aOJF4mk2mz6zBIS6fNmWmavRYPmUxGxbSG/vrX\nv/Loo48yZsyYUO6n/MVX0nMXdkunlA3ajg1wX5FEO+ywwzjssMOiDkMkUhUvg2Nmh7v7syHFU1eS\n3tIREamGqq69lpSutHxUdEREyhf62muSDGl+ViAJlL/4SnPuVHREquSdd95h1KhRvPXWW1GHIlI3\n1L1WhLrXpBKXXnopN9xwg57LkdSp9pjOl9396YpuUqdUdCSoFStW0KdPH1avXs3zzz/PIYccEnVI\nIjVT1TGdpBacNEhzv3K13XjjjaxevZrjjz++agVH+YuvNOdOYzoiIVuxYgW33HILAOPHj484GpH6\nUpXtqpNC3WsSxIwZM/j2t7/Ncccdxx/+8IeowxGpuaqO6ZQYwN7uPrfqHxQyFR0Jat68eWzatIl9\n9tkn6lBEaq4entM5s0afI2VIc79ytQ0cOLDqBUf5i6805y7I2mtbMbOpQN8il3wOGBvGZ4mISHyF\n0r1mZv3JFpVp5N/y4F/d/fiKP6jG1L0mIlK+sFeZ3oq7LzCzF9z9iQIBDAzjc0TqlbtjVmyLKRGB\nEMd03P2WIuduC+tzJDxp7lcO27hx4xg+fDhz59ZuvozyF19pzl0oRcfMjjazoWam534kdVauXMmk\nSZO47777eO+996IOR6SuhTZl2sy+AXwfeBW4093nhHLjCGlMR0px5ZVXMnHiRIYMGcLMmTOjDkck\ncqFMmTazg4udd/eHgBOBgcDssiKsY42NjaluCktxK1euZPLkyYBWHxDJZDI0NjYWvabklo6Z3ePu\np5VwXTfgLXfvXNKN61jSWzpJ36e9FsaOHcu//du/ccwxx/Dwww/X9LOVv/hKeu7Cejh0t1IucveV\ngBYBlVTo0KEDnTt3VitHpETltHQ2AU8AfwIeB/7q7hsLXDvd3U8PLcqIJL2lI+H44IMP6Nq1a9Rh\niNSNsJ7T+Yhsa+fq3PtVZvYU2QL0GPBCq9/Qm4IGKxI3KjgipSune+1hd98f6AWcAcwA9gGuBZ4D\n3jOzB83sYmCv0COV0GmCRLwpf/GV5tyV09K5DsDdlwH35F6Y2V7A4NzrKOAbgPqkRERkK6FvbWBm\n+wK/c/d9Q71xBDSmI601NTUxefJk/v73v/OZz3yGUaNGMXTo0KjDEqk7VV97rTV3f93MXgr7viJR\nampqYvTo0SxYsGDzsXnz5gGo8IiUoVrL1lxVpftKiNLcr1yuyZMnf6rgADQ3N3PzzTdHFJHyF2dp\nzl1Vik4cdwkVKWbdunV5j69du7bGkYjEmxboTLEkPxEdto4dO+Y93qlTpxpH8g/KX3ylOXcqOiIl\nGDVqFP379//Usf79+zNy5MiIIhKJp9AnEkh8JH39pzC1TBa4+eabWbt2LZ06dWLkyJGRTiJQ/uIr\nzblT0REp0dChQzVTTaRCoT+nkyR6TkdEpHxhrTItIiJSERWdFEvzswJJoPzFV5pzp6IjIiI1ozGd\nIjSmIyJSPo3piIhIXVDRSbE09ysngfIXX2nOnYqOiIjUjMZ0itCYjohI+TSmU4CZ/auZbYo6DhGR\ntEht0TGzA4AGUry1dpr7lZNA+YuvNOculUXHzDoAVwNXAHmbgCIiEr66HtMxs57AncAx7h5agTSz\nnwB/AhYBCwvdW2M6IiLli+WYjpmdDDwF9KFIF5iZdTez6Wb2eu51n5nt3ur8KDObl3t91cy+DHR2\n90y1vwcREfm0ui06wA+BwcCzFOgCM7Ntgf8hu0XD/rnXx8DjZrY9gLtPdveBudejwAnATmZ2K/CT\n3H2mmNkp1f6G6k2a+5WTQPmLrzTnrp6LzpHuvqiNa84CPgdc5u6b3H0TcBnQD7gg3xe4++Xufo67\nXwCMzR270N3vDy/0eHjppZeiDkEqoPzFV5pzV7dFp8TBlG8Cb7YuTu6+HHgtd64gM/sK0Ai4md1s\nZp8LHm08ffDBB1GHIBVQ/uIrzbmr26JTogOB5jzHF5FtARXk7k+4+9nu3t7dR7r77EqDKafJXMq1\nxa4pdK7c4/Ug7NiC3K+WuSt2Pm75q4fclft11frZK3SuXnMH0eQv7kVnF+CjPMc/BDqbWcdaBlMP\n/8cv5/iiRYvajKEW6uEXVxyLTj3krx5yV+7X1UPRqYfcQTT5q+sp0wBmNg04M9+0ZjNbB8x093/Z\n4vivgNOA7dx9XQWfXd//OCIidarQlOltah1IyN4FdshzfEfg40oKDhT+RxMRkWDi3r32MtA3z/G+\nQMVjNCIiEq64FJ1C3Vz/BexlZnu1HDCz3YB9gQdqEZiIiJQu7mM6HYDngTnA6WSL0x3Al4GD3X11\nDUNNLDP7GdluzPeBg4A73X16tFFJKcxsZ+BGYBXZn49+wCXuPi/SwCS16ralk1sloJns8zZuZs1m\ntjBXaABw9w3A0cBGss/mvAZ0AQar4IRqvbuf5+7/CowBbjezuv3/jnzKHsBqdx/l7qOBh4GpEcck\nZTCzDmZ2mZmtMrM9o46nUnXf0pH6YmZnAqPc/dCoY5HymdlQ4GZ37xd1LFIaM/sBMAt4Bujj7osj\nDqki+ms1Qcysp5nNrMbGdGZ2oJnNAEYBw8K+v1Q3f618A7iliveXkLn7Le7+16jjCIuKTkJUaVXu\nwS3H3f1ldx8OXAT8OTdWICGpdv5y54YCXdz9pip9G6lWoz8aYk9FJzmqsSr3Y2bWruVc7vxfgTXA\nP1f1u0mfquSv1dcOJdvKGVHV7yKlavFHQ1Ko6CRHVVblBvYEbm95Y2bdgB7AgoojltaqlT/MbBhw\ntLt/393dzCaFFbRsVtU/GpJERSchqrgq90rAzOxOM/t34G5gdBgLpMo/VCt/ZnYgcA8w3MyWmtlS\n4PzKI5YtVO2Phi3EfpWUuC+DI+U5EHg9z/FFZP9K24q7fwScWsWYpHRB8vcy0CHfOQlPJX80mFnL\nHw035vsiM/snYDjZbrtGM/uduz9YedTRUNFJlzZX5a50vTqpKuUv3sr+owHA3Z8EngRGVies2lL3\nWrrooax4U/7ira62YomKik66VHVVbqk65S/e9EcDKjppo1W54035izf90YCKTlJpVe54U/6SSX80\noKKTVIWmVU4j+3/u68ysfW7RzmuBhcCtNYpN2qb8xZv+aChCRSchtCp3vCl/iaI/GorQKtMiIhUy\nsynAcWRnqHUGFpNt8eyT+2Oh5bruwE+BQ3PnZwMXu/uSmgcdERUdERGpGXWviYhIzajoiIhIzajo\niIhIzajoiIhIzajoiIhIzajoiIhIzajoiIhIzajoiIhIzajoiIhIzajoiIhIzajoiIhIzajoiMSA\nme1lZivMbO8Srt3PzL5ai7hEyqWiIxIPVwI7A/9WwrXXAydVNxyRYFR0ROqcmR0AvAPcB3zTzA4t\ncm074AjgsRqFJ1IWbW0gUufM7E5gNNCd7MZtf3b3rxW49mDgeWA3d3+3dlGKlEYtHZE6ZmZHAC+7\n+4fuPh+4DRhsZkdvcd3JZnY3cBewAvipmf1H7SMWKU4tHZE6ZmbTgXPcfX3u/W7AfOANd9+qm83M\nfge85e4jaxupSGnU0hGpU2b2DeDhloID4O7LyW53/AUzG77F9e2BrwBP1DRQkTKopSNSh3ITAu52\n99PznNsBWAC8D+zv7htzx78IPAv0cPd3ahmvSKnU0hGpT2cA0/OdcPePyE6dHgic1+rUYLLdbio4\nUrdUdETqjJltCwx29z8WuWwKsAi4ysw65Y4NJte1Zmbbmtm4qgYqEsA2UQcgIlu5AHAzu7iN6+YA\nx5GdTn0d0AP4fe7cxcDdVYtQJCCN6YjUkVyr5U1g1xK/xIEPgL2AbwDfBl4E/uTuf6lKkCIVUNER\nEZGa0ZiOiIjUjIqOiIjUjIqOiIjUjIqOiIjUjIqOiIjUjIqOiIjUjIqOiIjUjIqOiIjUjIqOiIjU\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/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 0000000..d2cd935 Binary files /dev/null and b/01_phugoid/burn.rate.png differ diff --git a/01_phugoid/figures/glider_forces-lesson3.png b/01_phugoid/figures/glider_forces-lesson3.png new file mode 100644 index 0000000..6d73dd7 Binary files /dev/null and b/01_phugoid/figures/glider_forces-lesson3.png differ diff --git a/01_phugoid/figures/glider_forces.png b/01_phugoid/figures/glider_forces.png new file mode 100644 index 0000000..ac036d5 Binary files /dev/null and b/01_phugoid/figures/glider_forces.png differ 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 0000000..969042c Binary files /dev/null and b/01_phugoid/figures/glider_forces_nodrag.png differ 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 0000000..6e7dca9 Binary files /dev/null and b/01_phugoid/figures/oscillatory_trajectory.png differ diff --git a/01_phugoid/figures/rocket_CV.png b/01_phugoid/figures/rocket_CV.png new file mode 100644 index 0000000..5686f4f Binary files /dev/null and b/01_phugoid/figures/rocket_CV.png differ diff --git a/01_phugoid/figures/vonKarman-phugoids.png b/01_phugoid/figures/vonKarman-phugoids.png new file mode 100644 index 0000000..e3c6414 Binary files /dev/null and b/01_phugoid/figures/vonKarman-phugoids.png differ 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/HW6/README.pdf b/HW6/README.pdf index 3cc8991..12116b0 100644 Binary files a/HW6/README.pdf and b/HW6/README.pdf differ diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000..7a034c6 Binary files /dev/null and b/README.pdf differ diff --git a/lecture_01/octave-workspace b/lecture_01/octave-workspace new file mode 100644 index 0000000..8c437bb Binary files /dev/null and b/lecture_01/octave-workspace differ diff --git a/lecture_02/.ipynb_checkpoints/lecture_02-checkpoint.ipynb b/lecture_02/.ipynb_checkpoints/lecture_02-checkpoint.ipynb new file mode 100644 index 0000000..e34d82f --- /dev/null +++ b/lecture_02/.ipynb_checkpoints/lecture_02-checkpoint.ipynb @@ -0,0 +1,594 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solution to Form #1" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 14\r\n" + ] + } + ], + "source": [ + "[1,2,3]*[1;2;3]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "[1,2,3]*[1;2;3]=?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The first source of error is roundoff error\n", + "## Just storing a number in a computer requires rounding" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "realmax = 1.79769313486231570815e+308\n", + "realmin = 2.22507385850720138309e-308\n", + "maximum relative error = 2.22044604925031308085e-16\n" + ] + } + ], + "source": [ + "fprintf('realmax = %1.20e\\n',realmax)\n", + "fprintf('realmin = %1.20e\\n',realmin)\n", + "fprintf('maximum relative error = %1.20e\\n',eps)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1\r\n" + ] + } + ], + "source": [ + "s=1;\n", + "for i=1:1000\n", + " s=s+eps/10;\n", + "end\n", + "s==1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Freefall Model (revisited)\n", + "## Octave solution (will run same on Matlab)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set default values in Octave for linewidth and text size" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "set (0, \"defaultaxesfontname\", \"Helvetica\")\n", + "set (0, \"defaultaxesfontsize\", 18)\n", + "set (0, \"defaulttextfontname\", \"Helvetica\")\n", + "set (0, \"defaulttextfontsize\", 18) \n", + "set (0, \"defaultlinelinewidth\", 4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define time from 0 to 12 seconds with `N` timesteps \n", + "function defined as `freefall`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "function [v_analytical,v_terminal,t]=freefall(N)\n", + " t=linspace(0,12,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)|vel analytical (m/s)|vel numerical (m/s)\\n')\n", + " fprintf('-----------------------------------------------\\n')\n", + " M=[t(indices),v_analytical(indices),v_numerical(indices)];\n", + " fprintf('%7.1f | %18.2f | %15.2f\\n',M(:,1:3)');\n", + " plot(t,v_analytical,'-',t,v_numerical,'o-')\n", + "end\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)|vel analytical (m/s)|vel numerical (m/s)\n", + "-----------------------------------------------\n", + " 0.0 | 0.00 | 0.00\n", + " 2.0 | 18.76 | 18.82\n", + " 4.0 | 32.64 | 32.80\n", + " 6.1 | 40.79 | 40.97\n", + " 8.0 | 44.80 | 44.94\n", + " 10.0 | 46.84 | 46.93\n", + " 12.0 | 47.77 | 47.82\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t12\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", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[v_analytical,v_terminal,t]=freefall(120);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Types of error\n", + "## Freefall is example of \"truncation error\"\n", + "### Truncation error results from approximating exact mathematical procedure" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We approximated the derivative as $\\delta v/\\delta t\\approx\\Delta v/\\Delta t$\n", + "\n", + "Can reduce error by decreasing step size -> $\\Delta t$=`delta_time`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Another example of truncation error is a Taylor series (or Maclaurin if centered at a=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Taylor series:\n", + "$f(x)=f(a)+f'(a)(x-a)+\\frac{f''(a)}{2!}(x-a)^{2}+\\frac{f'''(a)}{3!}(x-a)^{3}+...$\n", + "\n", + "We can approximate the next value in a function by adding Taylor series terms:\n", + "\n", + "|Approximation | formula |\n", + "|---|-------------------------|\n", + "|$0^{th}$-order | $f(x_{i+1})=f(x_{i})+R_{1}$ |\n", + "|$1^{st}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+R_{2}$ |\n", + "|$2^{nd}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^{2}+R_{3}$|\n", + "|$n^{th}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^{2}+...\\frac{f^{(n)}}{n!}h^{n}+R_{n}$|\n", + "\n", + "Where $R_{n}=\\frac{f^{(n+1)}(\\xi)}{(n+1)!}h^{n+1}$ is the error associated with truncating the approximation at order $n$.\n", + "\n", + "The $n^{th}$-order approximation estimates that the unknown function, $f(x)$, is equal to an $n^{th}$-order polynomial. \n", + "\n", + "In the Freefall example, we estimated the function with a $1^{st}$-order approximation, so \n", + "\n", + "$v(t_{i+1})=v(t_{i})+v'(t_{i})(t_{i+1}-t_{i})+R_{1}$\n", + "\n", + "$v'(t_{i})=\\frac{v(t_{i+1})-v(t_{i})}{t_{i+1}-t_{i}}-\\frac{R_{1}}{t_{i+1}-t_{i}}$\n", + "\n", + "$\\frac{R_{1}}{t_{i+1}-t_{i}}=\\frac{v''(\\xi)}{2!}(t_{i+1}-t_{i})$\n", + "\n", + "or the truncation error for a first-order Taylor series approximation is\n", + "\n", + "$\\frac{R_{1}}{t_{i+1}-t_{i}}=O(\\Delta t)$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. digital representation of a number is rarely exact\n", + "\n", + "2. arithmetic (+,-,/,\\*) causes roundoff error" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.14159265358979311600\n", + "3.14159274101257324219\n" + ] + } + ], + "source": [ + "fprintf('%1.20f\\n',double(pi))\n", + "fprintf('%1.20f\\n',single(pi))" + ] + }, + { + "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_02/octave-workspace b/lecture_02/octave-workspace new file mode 100644 index 0000000..8c437bb Binary files /dev/null and b/lecture_02/octave-workspace differ diff --git a/lecture_20/octave-workspace b/lecture_20/octave-workspace index 41ef164..8c437bb 100644 Binary files a/lecture_20/octave-workspace and b/lecture_20/octave-workspace differ diff --git a/lecture_21/lecture_21.ipynb b/lecture_21/lecture_21.ipynb index c2547e6..6d1701d 100644 --- a/lecture_21/lecture_21.ipynb +++ b/lecture_21/lecture_21.ipynb @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -208,111 +208,111 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\tgnuplot_plot_2a\n", "\n", "\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\n", @@ -393,7 +393,750 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Initial Value Problem" + "# 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": 4, + "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": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)| error (m/s)\n", + "-------------------------\n", + " 0.0 | 0.00\n", + " 1.7 | 0.64\n", + " 3.4 | 2.50\n", + " 6.9 | 3.12\n", + " 8.6 | 2.10\n", + " 10.3 | 1.23\n", + " 12.0 | 0.67\n", + "\n", + "O(h^2)=2.94\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t12\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,12);\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')" ] }, { diff --git a/lecture_21/octave-workspace b/lecture_21/octave-workspace new file mode 100644 index 0000000..f2ecb23 Binary files /dev/null and b/lecture_21/octave-workspace differ 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": "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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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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/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..2d67c76 --- /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": 2, + "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": 2, + "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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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/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": "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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/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": "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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\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\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/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 0000000..d2cd935 Binary files /dev/null and b/lecture_22/01_phugoid/burn.rate.png differ 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 0000000..6d73dd7 Binary files /dev/null and b/lecture_22/01_phugoid/figures/glider_forces-lesson3.png differ 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 0000000..ac036d5 Binary files /dev/null and b/lecture_22/01_phugoid/figures/glider_forces.png differ 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 0000000..969042c Binary files /dev/null and b/lecture_22/01_phugoid/figures/glider_forces_nodrag.png differ 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 0000000..6e7dca9 Binary files /dev/null and b/lecture_22/01_phugoid/figures/oscillatory_trajectory.png differ diff --git a/lecture_22/01_phugoid/figures/rocket_CV.png b/lecture_22/01_phugoid/figures/rocket_CV.png new file mode 100644 index 0000000..5686f4f Binary files /dev/null and b/lecture_22/01_phugoid/figures/rocket_CV.png differ diff --git a/lecture_22/01_phugoid/figures/vonKarman-phugoids.png b/lecture_22/01_phugoid/figures/vonKarman-phugoids.png new file mode 100644 index 0000000..e3c6414 Binary files /dev/null and b/lecture_22/01_phugoid/figures/vonKarman-phugoids.png differ 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 0000000..6d73dd7 Binary files /dev/null and b/lecture_22/figures/glider_forces-lesson3.png differ diff --git a/lecture_22/figures/glider_forces.png b/lecture_22/figures/glider_forces.png new file mode 100644 index 0000000..ac036d5 Binary files /dev/null and b/lecture_22/figures/glider_forces.png differ 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 0000000..969042c Binary files /dev/null and b/lecture_22/figures/glider_forces_nodrag.png differ 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 0000000..6e7dca9 Binary files /dev/null and b/lecture_22/figures/oscillatory_trajectory.png differ diff --git a/lecture_22/figures/rocket_CV.png b/lecture_22/figures/rocket_CV.png new file mode 100644 index 0000000..5686f4f Binary files /dev/null and b/lecture_22/figures/rocket_CV.png differ diff --git a/lecture_22/figures/vonKarman-phugoids.png b/lecture_22/figures/vonKarman-phugoids.png new file mode 100644 index 0000000..e3c6414 Binary files /dev/null and b/lecture_22/figures/vonKarman-phugoids.png differ diff --git a/lecture_22/lecture_22.ipynb b/lecture_22/lecture_22.ipynb new file mode 100644 index 0000000..b986828 --- /dev/null +++ b/lecture_22/lecture_22.ipynb @@ -0,0 +1,829 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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": 4, + "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": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (s)| error (m/s)\n", + "-------------------------\n", + " 0.0 | 0.00\n", + " 2.3 | 0.46\n", + " 4.0 | 0.95\n", + " 6.3 | 1.03\n", + " 8.0 | 0.80\n", + " 10.3 | 0.46\n", + " 12.0 | 0.28\n", + "\n", + "O(h^2)=0.33\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t12\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", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[v_an,v_t,t]=freefall(22,12);\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": 20, + "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": 21, + "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": 22, + "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": 23, + "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 = 11\n", + "e = 6.3760e-06\n" + ] + } + ], + "source": [ + "y\n", + "dy_corr\n", + "n\n", + "e" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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": 25, + "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": 15, + "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", + "y_euler =\n", + "\n", + " 0\n", + " 3\n", + " 3\n", + " 3\n", + " 3\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_euler\n", + "y_an(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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": "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..276a7a0 --- /dev/null +++ b/lecture_22/lecture_22_python.ipynb @@ -0,0 +1,807 @@ +{ + "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.\n", + "\n", + "[folder with original 4-part lesson in \"01_phugoid\"](./01_phugoid)" + ] + }, + { + "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": 77, + "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'] = 'sans-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": 78, + "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": 82, + "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": 83, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# ?f accesses help documentation of code" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "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": 89, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=numpy.array([1,2,3,4,5])\n", + "d[-3] # note negative indices are fun" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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": 91, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nv7Qni1QDd999N0pLnXSEFStWYNOmTVFfu379eundHzZsWFiFHltQo+FeUlRUhAsvvBCAk9yZbKRr\ny5YtMlJ69dVXp9QmWAKxNmlpabjgggsAOJFNr+pKqyI/VSL5I0aMkH8bFRUVrvXb03nj5/KZQPiG\nWLZ48uMR+bquayqqiBblkk1jo11n7dq1YcmsNop8cY0lq44d9BaRL54ZRXu2Jc4UBmCG8v2/dH7v\nMcZYrnoAY+yfAIwHsB3AR8r3CwCM6/xyY5TxNnb2Wxbj/FOCwsJCPPLII/LrBx98MGKlnY6ODnz9\n61+XXz/00ENW1nh+6qmntI119dVXy7aIwifKX//6V9m+9tprk+rLVtS1US0727Zt82S8VIzkZ2Vl\nSZG9Z88e1zYp6um88XNlHYEQ1YcPH5Y79+omUZGv87omUDfqUnfpNYkQ+enp6dZUiXnqqaeQkZEh\nbyJts+u0tbWhqakJAFXWsYXeIvLFLXm0Twz1+2roaDEcQT4fQBVj7HXG2AuMsR0Afg3Hq/8Fzrl6\nFR+ltKsQGXH19V+YKkn++Z//WX5wf/DBB3jiiSfOec1TTz0lxdi0adPwjW98Q+scY0WU9tSB6st/\n5513kuqrN4h8dW10+PJFv/n5+b6MPkdDbOrV1NQUtntqMvR03vjdrgOctey0t7cbi7YKkV9SUoK8\nvLyYj9N5XRPk5OSguLgYgD0iX9iGSktLpV3SNGJthGXHtkg+Jd3ahx1/ud4jjMwXMsamRfj5PUq7\nj2hwzo/D8eU/B6AfgBsA3AJgEoDDcKrtdD3LCpV2U5T5iC39+kT5ecqSlZWF3/3ud/Ki+fjjj4dt\nkPXHP/4R3/ve9wAAjDH85je/sba6RjwfnMkyd+5c5OY6D5PefPPNhKODra2tsrLOyJEjMXbsWNfm\naBPq2ngdyT916hQOHjwox0ol+9OECRNke/fu3a702dN5o1qD/CryTVfYCQaD0ioUrx9f53VNRdTy\nP3r0qGtPjRKFcy4j+bZYdYCzayNEfl1dnfaN6rqDymfaR68Q+Zzz1QD+Buf9vs4Y+xJjrA9jbDRj\n7CcA/gFAe+fLpXpijJ0Hp+zml+DcCAwHUASn7GYNgJ8BeJNRdklcXHHFFViyZAkAIBQK4c4778RV\nV12FK6+8El/72tfkBf6RRx7BxRdfbHKq1pCbm4trrnGKPx09ehRbtmxJqJ/33nsPra1Oqsm1117b\n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\n8VBdkh3KTXYpN9mm/GRXObkp3A0YoiK/vVTkVzYV+SJlGj486TYIkjblJruUm2xTfrKrnNwceeSR\n9OvXD+hYkd+/f3+NrFOBeszoOpVGo+uIiIhIRx133HEsW7YMgI0bNzJ06NA2xW3ZsoUhQ4YAMHny\n5Kb3kOY0uo6IiIiIdLv4KTsrV65sc1xNTU3Tc52qU5lU5IuIiIjkVLnn5et8/MqnIl+kTGvWrEm7\nCZJAucku5SbblJ/sKjc35Rb5jz/+eNNzFfmVSUW+SJlmzpyZdhMkgXKTXcpNtik/2VVuboYPH87+\n++8PwB/+8Afq6upajamrq2sq8g844AAOPfTQsrYt6VKRL1KmG264Ie0mSALlJruUm2xTfrKr3NyY\nGccffzwQ3cE2fhpOktraWrZu3QrAlClTMLOyti3pUpEvUiYNNZddyk12KTfZpvxkV0dyM3Xq1Kbn\nDz3U+n1BH3744abnU6ZMKXu7ki4V+SIiIiI5duKJJzY9f+CBB1pdf8mSJU3P418QpLKoyBcRERHJ\nsREjRjB69GgAli9fzsaNGxPXfeutt1i+fDkAhx12GCNHjuyWNkrnU5EvUqbZs2en3QRJoNxkl3KT\nbcpPdnU0N9XV1QC4O4sXL05cb8mSJTQ2NgJwyimndGibki4V+SJl2r59e9pNkATKTXYpN9mm/GRX\nR3NTKPIBFixYkLje/Pnzm57PmDGjQ9uUdJm7p90GKcHMxgM1NTU1jB8/Pu3miIiISAVrbGxk5MiR\nvPbaa1RVVbFu3TqGDRvWbJ1NmzYxbNgw6uvrOeigg1i7di1VVToe3JLa2lomTJgAMMHda9NuT5wy\nJyIiIpJzVVVVnHPOOUBU8N922227rXPzzTdTX18PwBlnnKECv8IpeyIiIiI9wLnnnttUuM+dO5ed\nO3c2Lfvwww/52c9+BkRj619wwQWptFE6j4p8kTJt3rw57SZIAuUmu5SbbFN+sqszcjNy5Eg+//nP\nA7Bx40bmzJnTtGzu3LmsX78egOnTp2tUnRxQkS9SpvPOOy/tJkgC5Sa7lJtsU36yq7Nyc+WVVzYd\nzf/+97/PihUrWLVqFbNmzQKio/hXXXVVp2xL0qUiX6RM+iOYXcpNdik32ab8ZFdn5Wbs2LFcfPHF\nAOzcuZNjjz2Wo48+umn0ngsuuIBx48Z1yrYkXRpdJ6M0uo6IiIh0hR07djBt2jQeffTRZvMnTZrE\n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\nbaq84r/f6wAAAABJRU5ErkJggg==\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": 92, + "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": 93, + "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": 94, + "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": 95, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nDFN3QvMo/QcYWWBfYW5iH2rnCK1BJyIiEewf//gHffr0yd9+7LHH+P3vf+8xkYgfRS2YFhAqdr49\nyj4RkaiVnp5O27ZtfceIKJ9++ik33XQTOTk5APTr14++fft6TiXihzmnWqcsmFkcsL5169bUqVOH\npKQkkpKSfMcSkbCOHTuSlpbmO0bE2LFjBy1btuSDDz4A4Pe//z1/+ctfqFw50IerRY4rNTWV1NRU\nsrOzWbt2LUBz55yXdYxUMJWRQwXT+vXriYuL8x1HROSYcnNziY+P569//SsA55xzDv/85z+pW7eu\n52RSUWVlZdG8eXPwWDCV+FcFM2sd/vJfzrntJT2fiIj4NWTIkPxiqV69eqxatUrFklR4QVxbfQnI\n5X8ze4uISJSaPXs2jz76KACVK1dm+fLl/OxnP/OcSsS/IAqmbCDXObctgHOJiIgnL774Iv369cvf\nnjlzJldddZXHRCKRI4iJK/8L1DKzqgGcS0TEix49eviO4NWGDRu4+eabOXjwIACDBg3i9ttv95xK\nJHIEUTAtBmKBDgGcS0TEi4o80/f27duJj49n27bQjYIbbriBhx56yHMqkcgSRME0DXgNmG5mNwRw\nPhGRMldRp/k4ePAgHTp04D//+Q8A5513HqmpqVSqVMlzMpHIEsQYphHAWuACINPM3gdeAb4nNBj8\nqJxz9wfQt4iIlMD//d//8dxzzwFw6qmnsmrVKmrXru05lUjkCaJgGsuRS6OcD/yyEMepYBIR8WjG\njBnMmDEDgNjYWFasWMHZZ5/tOZVIZAqiYFqLlkYRkSi3bt06WrVq5TtGmXnuuecYOHBg/vbs2bMr\n1PcvUlQlLpicc1cGkENExKvJkydXmILho48+on379uTmhkZNDBs2jO7du/sNJRLhghj0LSIS9RYv\nXuw7Qpn44YcfuPHGG8nOzgYgISGBiRMnek4lEvlUMImIADVq1PAdodQdOHCAW265hU8++QSACy+8\nkIULF+qJOJFCCGItublFPGQfsB14H3jeOfddSTOIiMjxOefo378/L730EgANGjQgMzOTk046yW8w\nkSgRxKDv7hRt0Lcd1v6gmaUAdzvndgWQRUREjmLatGnMmTMHgKpVq5Kenk6TJk08pxKJHkHcklsQ\nfm0nVAztBdYBaeHXuvA+A7aF22YCXxOaIbwXofmbdE1YRLwZOnSo7wil5i9/+QuDBw/O305OTqZl\n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\ngUmSJKmG/w8oV6sCANpbvgAAAABJRU5ErkJggg==\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": 96, + "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": 97, + "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": 98, + "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": 99, + "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": 100, + "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": 101, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nN9FJJ5100kmnYJr0ipmXiUgxrG/+E3se251yGWPM31gP+nsi6ZhZf3tYR4YZY6KxrrjkxXp2xE4c\n0M9mXuJzWmFYV46SisK6ogTwkjHmXxexJKR4qxdW/ucYY1bblDmD9TcQoLVt9N61yxgzOSMVuMq7\nMeY4sBJrm6JSlwasq22JV2o/SzHvWayrT3FANxdhDMP60uFGrDGn3NXTEdtGY4zTq1rGmKtYVxYF\neFxEkl59jOD6PtHfGHPeSfm1WLeD2jLGrDfGhDqmN9MRvy9MxmoQjzXG/OqjdewHhgK1sa5Q58K6\net8c2Ir1v9IY8HZnJkkVcKynMNatrH851l8Q64p4IyBx+18TkRd9GItSSikVkLRh5n0PcT2vrj4g\nevQhyBhzCjiE9cH1LRGp5Uk97hCRkiLypoh87+hk4XKKDi6KORYt76KaHx2NIGf2JPn5phTz6jte\nDxtjnHaAYhNzHq43WL4RkRvsJuA3x3KFRaSsu+vIgK/cWSiDeU9sbN0tIlWczG/reN1ljNmeYl5i\nzjcBxkXeQoHELxzS0xFIPawP52vS+LvsciwfAlRLUj5xX78IfO1iPb5sYHiNiDwHPAIcxGo4+YQx\n5jljzHBjzA/GmMPGmKvGmFhjzBKs/5UvHIs+KiK++pIi8ZiYE6tR/4gxZokx5qwx5qLjC5Q6wGGs\nY9swEcnpo1iUUkqpgKQNM+8rk+TnXXYLOa6anfZwHa9h3fJzJ7BBRA6LyBwR6SIi5TysMxkRaYIV\n/yCs55sKYX0gNykmsH9WzmA9G+Z8pjEXkvwanmJ24uC6P6cz9NuwPvyBdUXurItpS5JyxfC9/Wkt\n4IW8L8fq2Q9SXDVz9FjY2FF+ppOyFRyv9XGdtzNYDSbBzbw5GlwlHb8OS6P+f5IUTVp/GcfrXuO6\nV7/fXMwLCI7nGkdj/S16pPhfyDSOPL6AdTsx2F9pzahzWPuLwbpN9oCTWE5iPUcJ1tXYh3wUi1JK\nKRWQtGHmfXmT/HwujWXTmu+UscZPqofVw1881zsVmQD87rjS8qAndYPVJTzXO934E6vTjfuxno0r\nwPVOLg47irgaD8/dbrFTdnSSeAvbWTfLJ0raWEnZmHE15U7nejzhcnBfb+TdGHMZWIiVz1YpZrfE\narQaYLaTEBJvN0vPlMvVNqWo+1qYbk6Q/O+S+L/lk/+rTDYSq9G91BjzZVoL+5LjFtjvsfaZqj5a\n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\nHqPtaW6c07zYSys3Fy9e5LfffmPt2rUsXbqUWbNmMW/ePJYtW8a6des4cOCA3hJvQxtm2cS2bds8\nK5iQwPFmzfgzJISay5Z5NygXPI7XEzVqwHffEVq/vse3M2ZqvEoppdJFj9H2NDfOaV7sJc1NQkIC\nMTExjB07lmeeeYYyZcoQHh7OXXfdRf369Xn66adp27YtrVq1okmTJjz66KOULVuWPHnyULlyZTp3\n7szMmTM5evSoH7cocGjnH9mEp4Mo75g1i3L//suqXr14qnRpL0dlL1MHfRaBWrXo0KkTrVu35o8/\n/uCOO+5IVxU6SLVSSgUuPUbb09w4p3mx9+GHH/L9998zf/58lixZwuHDh8mdOzcPPPAALVu2pHz5\n8txxxx2UKFGC/PnzkzdvXq5evUpcXBynTp3iwIED7Nu3j59//pmNGzcyefJkRIRatWrRvHlzoqKi\nKFSokL830y+0YaZsxcfH03HcOApWrsyqMWP8HY7PPfXUU+TLl485c+YwZMgQf4ejlFJKKRUwzpw5\nw8yZM5k4cSI7d+7klltuoVmzZjz99NPUrFmTXGn0QZAvXz6KFy9O+fLlk71/7Ngxli9fzuLFi3nt\ntdfo168fUVFR9OzZk7vuusuXmxRw9FZGZWvy5Mls27aNtz/5hNDQUH+H43N58uShadOmzJkzJ0Nj\nmimllFJKZRWnTp3izTffpHTp0vTq1Yvy5cuzevVqDh48yLhx43jkkUfSbJS5UrRoUTp27MiKFSv4\n66+/GDhwIF9++SWVK1emTZs27N2714tbE9i0Yaacio2NZeDAgTz//PPUqFHD3+FkmtatW/P777/r\nveVKKaWUytYuXbrEO++8Q5kyZXj77bdp27YtBw4cYPHixdSvX5+QEO83I4oXL86gQYM4cOAAEydO\nZP369VSoUIGePXty5swZr68v0GjDLJuIjIxM1/L9+/dHRPjvf//ro4hcS2+83lK3bl2KFy/OnDlz\n0lXOX/EqpZRKmx6j7WlunMvueVm+fDl33303AwYMICoqij///JMPPviAW265JVNykzNnTl588UX+\n+OMP3nrrLaZMmUKlSpVYsmSJz9ftT9owyya6d+/u9rKbNm3i008/5e2336Zo0aI+jMpeeuL1phw5\nctCyZUvmzZuXrq5c/RWvUkqptOkx2p7mxrnsmpd//vmH5s2bExkZSdmyZfn555/58MMPufnmm68t\n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\nacMLL7zA6NGj6dChQ8HMOyBa/6NTXWJTbfyjjlma6N69e9AR4qK8/kpE3n/961+sXbuWcdOmQfv2\n8MwzsCW3nQKxqb7+Sra8YWNmg4H2wC9AY+fcN3G8fHPkPreLSJeO3P+elxnu2bkzjj+fHgpqGd/w\n++9c2KQJU6ZMYfz48bRpE8/gm+Gk9T861SU21cZHzjnd4rwBNQGXmZnpksXq1auDjhAX5fVXovI2\nbNjQnXfeec6tWuVckSLODRqUr/movv5KpryZmZkO7xyumi4c7cHjeMPZbwDOzMfrq0Zevxs45AB/\n440DzKsm4MoWKuQuu+QS17x5879uZ599ths3btw+tZwyZYpr3rz5fjW+/fbb3YgRI/are/Pmzd3P\nP/+8z+P333+/69+//z6PrV692jVv3twtXbp0n8efeuop17Vr130e27Jli2vevLmbOXPmPo+/9tpr\nrm3btvtlu/LKK/P1PrKW8YN5H19//bWrXLmyK126tLv22msDeR9ZCvL/kX39T+b3kV1BvI+XX345\nJd6HH/+P1atXp8T7yHov8b6P3r177/P5WrNmTVe+fPkCaZs0KmM+aOQrkbwZN24cl19+OfPmzaPO\n00/DrFmwYgUU0s56yZ8wjcpoZgOBrsCveHvK4s4TGS7/V6Ak0Mg5NyPKNDOAesC9zrkBucyrJpA5\nEziqbFlOXLyY4sccE28kiWLu3LlkZGRw+OGHM2nSJE4++eSgI4lIiGhURhEJvYyMDE488UQGDx4M\nffvC9OnqlElKMLP+HGSnDMA5txOYgHdR6tZR/s4JwLmRX8flZZ7L7rqLwzdu5OdTTmHbl1/mJ1b6\n2rMH3njDu48YNWoUDRs2pHLlynzyySfqlImIb7SFJCK+KVy4MJ07d2bs2LF8X6QIHJena+6KhJqZ\nPQR0x+uUNclLp8zMOprZUjN7McrT/fEOgWlnZk2zvaYkMBKvrX7LObc8L/lqXncd3778Mn9u28a2\nGjXY9M47eXmZ/PIL/OMfcPXVMH06O3fupHPnzrRv354bbriBadOmceSRRwadUkRSmDpmaWLAgJhH\nv4SS8vorkXnbt29PiRIleOqpp/I9D9XXX8mWN0hm1hy4F68j9TXQycxGRbk9muOlRwJVgONzztM5\ntwjoAhQGJprZNDN7PTL/C4BlQFxD/51z3XVsmjCBL4DSLVqw8rXX4nynqeWAy/icOXDmmfDJJzBh\n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\ns7Ps1oEAAAAASUVORK5CYII=\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": 102, + "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": 103, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nC/0/o8Jji7c0W23ky8nJYdzQoXRr2ZKrmzalW8uWjBs6tOh2VGl+/PFHnvT34alRowajRo0KR7il\nUq65R7euRMqwaNEiOnXqVOY2bhQ6EhnUby6y5eTkcF3HjtydlUVaQQEGsMB76elct3Qp81avJikp\nqcR9f/rpJ0477TT+7//+jzvvvJNTTz01rLEfT7nmHhU6ImWoUaMGiYmJXochIiV4dPRo7s7K4opi\nfXAMcEVBATYri8fGjCGtlOUe2rdvz5dffsncuXPp1q1bmCIWL+hPURERiUqrFi6kRykdja8oKGDV\nggVl7p+QkECfPn1o0KCBG+FJhFChE8dK7LgXASI1rkAF0pH4u+++K+rM/OGHH1aqnYKCAl566SWu\nuuoqGjVqRPXq1alXrx5dunThueeeK3VK+xUrVuDz+UhISGDbtm3s3buXsWPH0rZtW2rXrh1UTLFm\n5cqVXocgpbDWUjMvj9J6shkgMS8vas4nyjX3qNCJM5XtuBevcVVGRToSV7bD8fbt27ngggv4y1/+\nwqJFi9ixYwdHjhxhz549fPjhhwwaNIhOnTqxe/fuMo+zZcsW2rZty4MPPsiGDRvYv3+/+hwV8/DD\nD3sdgpTCGENu1aqUVsZYILdq1ajp1K9cc4/OaHGksONex/R03v/2W97avp33v/2WjunpXNexo2dF\nRaTGFalycnLo0qUL69ato379+kyZMoUNGzawe/dutmzZwvTp06lTpw6ffPIJN954Y5nH6tevH7m5\nuUyfPp0tW7awa9culi9fzmmnnRambxPZ5syZ43UIUoaLmjThvVI+e9fno1NycljjCYZyzT3qjBxH\ngum4F49xARw8eJDc3Nwyt6lWrRpVq1YNU0QwduxYNm/eTKNGjfj4449p0qRJ0We1a9dmyJAhXHzx\nxfzhD39g2bJlvPnmm1xzzTUnHMday65du/j000/5/e9/X/R+eaPM4ok6okewt9/m7ytXch3O1Zsr\noGjU1bs+H1PbtGHexImehlgRyjX36IpOHCm34156OjRpcvTRtWv5B+3a9dh9jn9MmVL2/ps2serJ\nJ4PqUOimK6+8kqSkpDIfDz30UNjiOXDgADNnzsQYw4QJE44pcopr164dKSkpWGuZPXt2idsYYxg4\ncOAxRY5IVFi/HlJSSALmAZ/8z//QvUULejduTPcWLfhkyJAThpbv2bOn1H5rEtt0RSdOBNRxLz8f\n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\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 +} diff --git a/lecture_22/octave-workspace b/lecture_22/octave-workspace new file mode 100644 index 0000000..fa1e782 Binary files /dev/null and b/lecture_22/octave-workspace differ diff --git a/lecture_23/.ipynb_checkpoints/lecture_23-checkpoint.ipynb b/lecture_23/.ipynb_checkpoints/lecture_23-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/lecture_23/.ipynb_checkpoints/lecture_23-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_23/boussinesq_lookup.m b/lecture_23/boussinesq_lookup.m new file mode 100644 index 0000000..65b35a1 --- /dev/null +++ b/lecture_23/boussinesq_lookup.m @@ -0,0 +1,32 @@ +function sigma_z=boussinesq_lookup(q,a,b,z) + % function that determines stress under corner of an a by b rectangular platform + % z-meters below the platform. The calculated solutions are in the fmn data + % m=fmn(:,1) + % in column 2, fmn(:,2), n=1.2 + % in column 3, fmn(:,2), n=1.4 + % in column 4, fmn(:,2), n=1.6 + + fmn= [0.1,0.02926,0.03007,0.03058 + 0.2,0.05733,0.05894,0.05994 + 0.3,0.08323,0.08561,0.08709 + 0.4,0.10631,0.10941,0.11135 + 0.5,0.12626,0.13003,0.13241 + 0.6,0.14309,0.14749,0.15027 + 0.7,0.15703,0.16199,0.16515 + 0.8,0.16843,0.17389,0.17739]; + + m=a/z; + n=b/z; + if n < 1.3 + f=fmn(:,2); + elseif n > 1.5 + f=fmn(:,4); + else + f=fmn(:,3); + end + [~,i_fit]=sort(abs(m-fmn(:,1))); + x=fmn(i_fit(1:4),1); + y=f(i_fit(1:4)); + f_out = Newtint(x,y,m); + sigma_z=q*f_out; +end diff --git a/lecture_23/coriolis.m b/lecture_23/coriolis.m new file mode 100644 index 0000000..e2ff5b2 --- /dev/null +++ b/lecture_23/coriolis.m @@ -0,0 +1,63 @@ +function [t,r] = coriolis(L) + % In class we ran this function using L=41.8084 (the latitude of Storrs, CT). This + % function takes the latitude (L) in degrees and mass (m) and calculates the trajectory + % of a particle with a 100 N load directed North. The initial conditions are set as L + % (in radians) * radius of Earth, 0 m/s initial x-velocity, 0 m E-W position (add to + % -72.261319 degrees for longitude of Storrs), 0 m/s initial E-W velocity, 10 m initial + % altitude, 0 m/s initial z-velocity [L*pi/180*R 0 0 0 10 0], the force is given as 100 + % N North, 0 West and 9.81*m z (neutrally buoyant) [100 0 9.81*m] + % + % the output of myode is ddr=[dx/dt d2x/dt2 dy/dt d2y/dt2 dz/dt d2z/dt2]' and the input + % to myode is r=[x dx/dt y dy/dt z dz/dt]' + % using ode23 solver solves for r as a function of time, here we solve from 0 to 200 s + % r(:,1) = x (the north-south position from 0 to 200 s) + % r(:,3) = x (the West-East position from 0 to 200 s) + % r(:,5) = x (the altitude from 0 to 200 s) + + % define ordinary differential equation in terms of 6 first order ODE's + function ddr = myode(t,r,R,L) + g=9.81; % acceleration due to gravity m/s^2 + l=10; % 10 m long cable + we=2*pi/23.934/3600; % rotation of Earth (each day is 23.934 hours long) + ddr=zeros(4,1); % initialize ddr + + ddr(1) = r(2); % x North(+) South (-) + ddr(2) = 2*we*r(4).*sin(L)-g/l*r(1); % dx/dt + ddr(3) = r(4); % y West (+) East (-) + ddr(4) = -2*we*(r(2).*sin(L))-g/l*r(3); % dy/dt + end + + R=6378.1e3; % radius of Earth in m + L=L*pi/180; + [t,r]=ode45(@(t,r) myode(t,r,R,L),[0 30000], [1 0 0 0 ]); + figure() + z=-sqrt(10^2-r(:,1).^2-r(:,3).^2); + figure(1) + we=2*pi/23.934/3600; % rotation of Earth (each day is 23.934 hours long) + + plot(t,tan(we*sin(L)*t),t,-r(:,3)./r(:,1),'.') + xlabel('time (s)','Fontsize',18) + ylabel('-y/x','Fontsize',18) + % Plot Coriolis effect path + figure(2) + title('Path at 0 hr, 4.1 hrs, 8.3 hrs','Fontsize',24) + N=length(t); + i1=[1:100]; i2=[floor(N/2):floor(N/2)+100]; i3=[N-100:N]; + plot3(r(i1,1),r(i1,3),z(i1)) + hold on + plot3(r(i2,1),r(i2,3),z(i2),'k-') + plot3(r(i3,1),r(i3,3),z(i3),'g-') + xlabel('X (m)','Fontsize',18) + ylabel('Y (m)','Fontsize',18) + zlabel('Z (m)','Fontsize',18) + title('Coriolis acceleration Foucalt Pendulum') + +% figure() +% % Plot Eotvos effect for deviation upwards +% plot(1e-3*(r(:,1)-r(1,1)),r(:,5)) +% xlabel('North (+km)','Fontsize',18) +% ylabel('Altitude (+m)','Fontsize',18) +% title('Eotvos effect with north force') +% +end + diff --git a/lecture_23/eulode.m b/lecture_23/eulode.m new file mode 100644 index 0000000..ceed97b --- /dev/null +++ b/lecture_23/eulode.m @@ -0,0 +1,29 @@ +function [t,y] = eulode(dydt,tspan,y0,h,varargin) +% eulode: Euler ODE solver +% [t,y] = eulode(dydt,tspan,y0,h,p1,p2,...): +% uses Euler's method to integrate an ODE +% input: +% dydt = name of the M-file that evaluates the ODE +% tspan = [ti, tf] where ti and tf = initial and +% final values of independent variable +% y0 = initial value of dependent variable +% h = step size +% p1,p2,... = additional parameters used by dydt +% output: +% t = vector of independent variable +% y = vector of solution for dependent variable +if nargin<4,error('at least 4 input arguments required'),end +ti = tspan(1);tf = tspan(2); +if ~(tf>ti),error('upper limit must be greater than lower'),end +t = (ti:h:tf)'; n = length(t); +% if necessary, add an additional value of t +% so that range goes from t = ti to tf +if t(n) 1.5\n", + " f=fmn(:,4);\n", + " else\n", + " f=fmn(:,3);\n", + " end\n", + " [~,i_fit]=sort(abs(m-fmn(:,1)));\n", + " x=fmn(i_fit(1:4),1);\n", + " y=f(i_fit(1:4));\n", + " f_out = Newtint(x,y,m);\n", + " sigma_z=q*f_out;\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mUndefined function 'Newtint' for input arguments of type 'double'.\n", + "\u001b[0m" + ] + } + ], + "source": [ + "boussinesq_lookup(10,1,1,10)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i =\n", + "\n", + " 2\n", + " 3\n", + " 1\n", + " 4\n", + " 5\n", + " 6\n", + " 7\n", + " 8\n", + "\n", + "\n", + "ans =\n", + "\n", + " 0.2000\n", + " 0.3000\n", + " 0.1000\n", + " 0.4000\n", + " 0.5000\n", + " 0.6000\n", + " 0.7000\n", + " 0.8000\n" + ] + } + ], + "source": [ + "m_d=[1,2,3,4,5,6,7,8]'/10;\n", + "[~,i]=sort(abs(0.25-m_d))\n", + "m_d(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Initial Value Problems (continued)\n", + "\n", + "## Predator-Prey Models (Chaos Theory)\n", + "\n", + "Predator-prey models were developed independently in the early part of the twentieth\n", + "century by the Italian mathematician Vito Volterra and the American biologist Alfred\n", + "Lotka. These equations are commonly called Lotka-Volterra equations. The simplest version is the following pairs of ODEs:\n", + "\n", + "$\\frac{dx}{dt}=ax-bxy$\n", + "\n", + "$\\frac{dy}{dt}=-cy+dxy$\n", + "\n", + "where x and y = the number of prey and predators, respectively, a = the prey growth rate, c = the predator death rate, and b and d = the rates characterizing the effect of the predator-prey interactions on the prey death and the predator growth, respectively." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```matlab\n", + "function yp=predprey(t,y,a,b,c,d)\n", + " % predator-prey model (Lotka-Volterra equations)\n", + " yp=zeros(1,2);\n", + " x=y(1);\n", + " y=y(2);\n", + " yp(1)=a.*x-b.*x.*y;\n", + " yp(2)=-c*y+d*x.*y;\n", + "end\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "h=0.0625;tspan=[0 40];y0=[2 1];\n", + "a=1.2;b=0.6;c=0.8;d=0.3;" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 12.0000\n", + " 5.2000\n" + ] + } + ], + "source": [ + "predprey(1,[20 1],a,b,c,d)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QQSDg83K+fPmQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxOC1BcHItMjAxNyAxMDoxNTo1NcOlxKcAACAA\nSURBVHic7J15fBRF9sBrSYYcQGASCFciA0g4IiBHOLIcCYvI4nqCARfl0lUuFcQLdQlRcUGX5RA5\n1JXgCVHWlV1ckUgGkASImB9IwhFCEhITSEyiEZKYSYbfH4VNO0dPdVd1d3XP+37yx6Snu6deV1e9\nV1Xvvfrd1atXEQAAAADoTQu9CwAAAAAACIFCAgAAADgBFBIAAADABaCQAAAAAC4AhQQAAABwASgk\nAAAAgAsC9S4AwB27du2qrKxECA0YMCAuLk7ZTf75z3/iD+PHj+/WrRuzwtHhdDq3bt2KP7do0WL2\n7Nn6lscFzounGLPKBTDndxCHBIjJzs4eNmwY/nzq1Kk+ffoou8/06dM//PBDhNAf//jHzz//nPzC\n++677+eff5Y4IS4uLjk5WVmpGhsbg4KC8OegoKCGhgZl91HM5cuXf/nlF/y5TZs2LVu25Kp4KsFQ\nLukHCBieqwAgIj4+Hr8Yt956K819Tp06Jbxje/fuJb+wffv20m/sbbfdprhUQl+GEAoKClJ8H8Xc\nfffdQgE+/fRT3oqnEgzlkn6AgNGBKTvgOgcPHszMzMSfn3nmGZpb9enTZ8yYMQcOHEAIJScnjx8/\nnkH5zE6LFi1uu+02/DkwENom4HfASw9cZ/Xq1fhDly5dEhMTKe82Z84crJAyMzOPHTs2ZMgQuXeY\nMWPG8OHDXQ7abDbKgnFLYGDgf//7X71LAQC6AQoJuEZlZaXQG06ePNn9hF27dn399dclJSU1NTXH\njx9vamrq0aNHt27dRo0aNWvWrLCwMJfz77777gcffLC5uRkhtG3bNgUKafz48Q888IC3b0+fPi1o\nUKvV+uqrrwpfvffee1gXIoTmzJkzcuRIwl88ceJEamrquXPnsrOzg4ODBw0aNGrUqIceekgsXVNT\n07x58/Bni8WycePGvLy8NWvWHDlypLKycteuXR49QTZu3JiTk5OTkyMceeONN3bv3o0/z5gxY/To\n0e539vaLx44d+/vf//7111936dJl4sSJTz31VOvWrRFC6enpmzdvzsrK6ty5c0JCwlNPPdWxY0dl\nYkrg7QlkZWVduXJlxIgRjz32GPkzRwhlZ2d/8MEHuDyhoaEDBw7s37//7Nmze/ToIesBkv8iwCl6\nzxkCvPDuu+8Kb8Vnn33mfkKbNm28vUVWq9XjQtGIESPwCZ06dSIshngN6d1335U4c+/evcKZXbp0\nEX/10EMPebyJxGLGL7/8MmfOHI/StW/ffs+ePd5usmfPnpCQEOHI7t27PZZWvPjhzttvvy1RPJfj\nqampLpf37du3urrafZa1S5cuFy9eVCamBC7l+fDDDwMCAlzu9sorr5A89vr6+j//+c8eyxMQEPDi\niy/KeoCA0YEREnCNL774QvgsYWwGBQXZbDabzVZWVpaXl4cHQDU1NUlJSUVFRS4mdr9+/Q4fPowQ\nunjx4tmzZ2NiYmQV6ciRI+5uVKNGjerataus+5Awbdq0Tz/9FH8OCAgYMGBAXV3dmTNnEEI//PDD\nHXfccfDgQfehT1NT07Rp0+rr65mXxxtNTU0PPvigy8FTp0794Q9/EI8eMGVlZSkpKcJICykVU7o8\nM2fOxK+BmOeee27gwIGTJk2SvjwpKek///mPx6+am5uXLVvmdDoVO1UCxkNvjQjwwqBBg/Ar4c0P\navHixYcPHxYfqa6uTkhIEN6lLVu2uFwiHnUR+kT59LIT7iMeIdlsNvFN5I6QPvvsM+F4VFRUfn4+\nPr5z507h+KBBg9xvghkxYkRqauqHH364ZMmSo0ePepTrm2++2b17t+DEiBB64YUXdv/KhQsXJIrn\n8ouRkZHvv//+8ePHXcY6rVq12rJly/Hjx5966inxQWViSuBenr179zY3N585c2bUqFHC8f79+0s/\ndvHvBgQEvP32283NzfX19eKhXkBAAC4nyQMEjA4oJOAawrxTjx49yK/avn270EHMmDHD5Vtxj/P6\n66+T3FCZQho/frz4JnIVkng66P333xffaty4ccJXx48fv+rWHd99993kj0uZ27fLL6ampuLjZWVl\n4uPCLFlzc7MQ94MQunLligIxJXApj/gJX7hwQTx9l5ubKyGXuDxPPfWU+CfGjBkjfLVs2TLCBwgY\nHZiyA64hzDv17dvX4wlVVVUbN2788ssvjx075nGSyj2gNTg4WPh8+vRpuUVq06aNuGPFqBELmZ6e\nLnz+6KOPxK5u586dEz5/9913AwYMcLn2xRdfZF4eaaZOnYo/dO7cWXz8zjvvxB9atGgRGhoqqAGn\n04k/0IgpwX333Sd8jo6OHjJkyNGjR/G/ubm5/fr183ahuDzioTZC6O677xbcUr777jvywgCGBhQS\ncI2AgAC8EuAxUcL58+dHjx7tYpL7ROgKEULYDUwWb7zxhoSXHUPEIguOW+64pxiwWCw33XSTWsXy\nRFBQkFjNixEv0bl7GSAKMaXL4xIyJV7hk76VuDwuLjNiXWuajBWAT0AhAdcIDQ3FHYRHg/Tpp58W\ntFHv3r3nz58fFRXVokWLw4cPr1q1yts9r1y5InyOjY1lXeTr4OR7AnK7sKCgIGE8MW7cuBYtPCcd\ndnem8HamLviMpVUspgRimwPT1NQkfJZ+PhaLxeFw4M8u04CNjY3CZ4gR9h+gpoFrxMfH79mzByFU\nW1vrdDpduhLx9M7nn38uBIhUVFRI3PP8+fPC54iICJbFRUg8m3fhwgXxV0eOHJF1qz59+hw/fhx/\nfuWVV9yjcc2BGmI6HI68vDxhXs7pdApTbQghq9UqXR7B+ikuLhZ/Jb5J27Zt6csJGAKO7DtAX4Sp\np+bm5pMnT7p8KzZ7BU3Q2Ngodil2R3BEDggIcFkkIOH48eOfewJ/K460rampOXbsGP68atWq/Px8\nWT8krL7gy91POHny5MKFC+WW3x1xxJL2SyMqifnCCy8In9evX//TTz/hz0FBQRMmTJC4UOwUvnr1\n6suXL+PPxcXFO3bsEL669957hc/6PkBAdfT2qgB4Qey0tmnTJpdvBw4cKHw7aNCg7du3v/vuu4Kn\nOMbd36xTp074q1GjRhEWw6eXnfil7d27t3DQYrHceeed7hODJF52P/zwQ2RkpPDVsGHD3njjjZ07\nd3744YeLFy/Gsrdv3176JiS8/PLL4rK1adOmffv27du3//nnnyXuLPGLHh+Ly2PEN5crpgTuju/9\n+/efM2eOS8ZCwXHOW/krKirEQ6gbbrjhoYcemjVrlvjgwIEDyR8gYHRAIQHXaG5uFnqr22+/3eXb\ntLQ05Amx9eqikL755hvhq3Xr1hEWQ5ZCEsc5CVitVnG0CmGmhq+//lp6fomJQiotLfWY8EIbhSRL\nTAnE5bFYLB4z5/bt21f4XYny79u3TyIDSFRUlEuAkfQDBIwOKCTgOsuWLRN6merqapdvt2zZIu4L\nIiMj09LShLB/5KaQhPDGkJCQn376ibAMshTS1atXX3vtNfFi0rBhw/Lz8xWkDrp69WppaenDDz9s\nsVhcfi4kJGTy5Mnbt28nuYlPvvvuu2nTprn0qpopJHIxJXApT319/cMPPyz267v77rsrKipIyn/1\n6tWCgoI///nPLuVp06bN448/7v4SSj9AwOjABn3AdcrLy7t37467j9WrVz/xxBMuJzidzn379tXV\n1UVERIwcOVLCh8rpdHbu3Bm7PCxZsuTvf/+7esVuaGiw2+2NjY19+vSRm53IHafTefLkyQsXLjid\nzpYtWw4cONAl3Mcc0IjpccO9mpqarKwsp9M5aNAgBbmdnE7noUOH8PpTVFTUgAEDuPJgBLTBMAqp\nqKjowIEDZ8+eDQwMHDJkyJAhQ7p06aJ3oUzI008//dprryGEbDZbYWGh4vts27Zt1qxZCKFWrVoV\nFxczd7EDdMSsO9sCumMAhfTLL7+kpKSIk9BgcEZIgC2XL1/u1avXxYsXEUJvv/22ex5PEpxOZ79+\n/XAFrVy5knKvP4A3QCEBKmGAOKSFCxceOHCgT58+f/nLX/r06eNwOAoLC2EfM5Vo3bp1eXk55U1a\ntGihIFEQAAB+Du8K6aOPPjpw4MCQIUO2bdsmLHv27dvXZ1p7AABUArZaB1SC9ym7xMTEsrKyf//7\n394yfgIAAADmgGs/llOnTpWVlXXr1g1rI4fDoeVOaAAAAICWcK2QcEr8m266KTMz8/bbb7/ppptu\nvvnmwYMHv/zyy0KWEQAAAMAccK2QcL7Fs2fPzp49++rVq1OnTr333nvbtm373nvvPfDAA+75SwAA\nAADjwvWCZHV1NUIoPz9/3LhxmzZtwgfr6uqmT5+el5e3ZcuWxx57TOJycaIzAAAAAMNtzAzXCkkI\nHf/rX/8qHAwNDX3iiSceeuihzz//XFohIY6fu4Ho3bs3PEZ64DHSA8+QCTxb6lxP2eFcnyEhIS5J\nGYYNG4bctsABAAAADA3XCumGG27QuwgAAACARnCtkAYOHBgWFlZfX48XkwTwxlzCXjsAAACACeBa\nIbVo0WLq1KkIIZdtSbds2YJ+u90koB4wa88EeIz0wDM0PVw7NSCE5s+fn56e/t5775WVlf3pT39q\nbm7+4IMPcnJyunbt+vDDD+tdOgAAAIAZvCuk0NDQ999/f9myZV999dVXX32FD/7hD3948cUXw8LC\n9C0bAAAAwBDeFRJCqH379i5TdgAAAID54HoNCQAAAPAfQCEBAAAAXAAKCQAAAOACUEgAAAAAF4BC\nAgAAALgAFBIAAADABaCQAAAAAC4AhQQAAABwASgkAAAAgAtAIQEAAABcAAoJAAAA4AJQSAAAAAAX\ngEICAAAAuMAA2b4BAGBO79699S4CoBATb1QICgkA/BQT92smxtyWBEzZAQAAAFwACgkAAADgAlBI\nAAAAABeAQgIAAAC4ABQSAAAAwAWgkACzUVTdoHcRVKGouiFx47dmlQ4AECgk/8ReUJOyp9CUXVvK\nnsLuKzJT9hTqXRD2dF+RaQsPmb09T++CAIBagELySmp2efcVmWbttYtqGlK+NFuvbS+oWf5lYcb8\nQanflOtdFsakZpcn9GyXPKG7veBHe0GN3sUBAFUAheSV2dtPzRraOXHTt3oXhDGp2eUIoeQJ3fEH\nM7H/3I/LJ3RP6Gm1WYNN1mvvL/hxZlxnW3hwQs92epeFJeXl5Tt27CguLq6pqVm/fv3s2bMfe+yx\nI0eOeDzn8uXLGzdunD179tq1a4VvL1++vHXr1gcffBAfv3TpkvDV999/v2PHjnPnzrn8aFVV1Y4d\nO7Kzs1UVDVAAKCTPpOwpTOjZLvnW7ggh83VtCT2tuGszmWip35SPvfFaf73/3I/6FoYt9oKahJ5W\nhNDMuM7bsi/qXRxm5OTkTJs27cMPPxwwYMDf/va30tLSzZs3jxgxYtWqVS7nbN++vX///osWLfrs\ns8/S09PxVwcPHuzVq9ecOXPsdvvx48effPLJXr167d+/H3/bsmXLBx54YOHChS4/unXr1mnTplVV\nVWkjI0AOKCTP2AtqZsZ1RgjZrMHm69pwr53Q02qmrg0hVFTdYLOGIIRmxnUuqjHPXKu9oKaousEW\nHiz8q295mLNixYrp06eXl5fv3bv30qVL8fHxzz77bFZWlvicl1566d57762rq6uurt61axdCqLy8\n/M4772zZsmVubm5BQcG333579uzZDh06TJkypba2FiHUoUOH++67b8+ePcXFxeJbvfnmm1FRURMn\nTtRSRoAEUEiesRf8KBikZuraiqobiqobsGjdwoOLquv1LhEz7AU1CT3b4V7bFm62KTthpi6hp9V8\n65o33HDDypUr8Wer1bp161aE0Pr168Xn9OnT59VXXw0MDEQItWjRAiG0bt26mpqa7du39+vXD5/T\n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\nsbFt27aTJk0S8o6fP39+//79CKGjR4+2bt0aH5w6dapwbXFx8fbt20+fPh0YGJiQkHDvvfe2bNmS\npORaIu4JuVZOVw3Is88+GxMTs27dOunTYmJiZN0241x1whvHvH0766O85V+cl3VDfjCxaFuPlkmI\ntvyL88YVbfkX52d9lKfsW5/IbR0qsXv3boTQK6+8EhUV1alTp/Hjx1ssFoTQypUrXc5ZuXKlzWaz\nWCxWq/W2227DXx04cKBTp04IoR49egwaNCggIKBNmzZ2u138E1u2bEEIWSyWcePGRUVFRUZGvvji\niwihTz/9FJ/wyy+/IIQCAgJ69OgxYsSIoKAghNDtt9/e3Nx89erV1NTUkJAQhFBISEibXxFu/uGH\nH1osloCAgEGDBuGS9OrVq6yszGfJFUNfcZxUvUcMsIbkzu9+9zuEEH6NGCI9r2XoFDsSuQyQwUXz\nFjomYFzRkOTgzzTbzyOEVqxYMX369PLy8r179166dCk+Pv7ZZ5/NysoSn/PSSy/de++9dXV11dXV\nu3btQgiVl5ffeeedLVu2zM3NLSgo+Pbbb8+ePduhQ4cpU6bU1tbiq06ePDl//vzY2NiSkpKvvvqq\npKRk0aJFKSkp4ju3aNHinXfeaWhoKCgoyMrKunz58uLFi//zn/+sX78eITRz5kz8c6+//nrtr+AL\n8/LyHnjgga5du54+ffrbb78tLy9/++238/Pz77nnHumSA94wpELKz89HCMXGxrK9rXTXZvT2b9au\nTVrfGF006fIbPXuIwA033LBy5Ur82Wq1bt26FSGE9YFAnz59Xn311cDAQIQQ3q5i3bp1NTU127dv\n79evHz6nR48emzZt+uGHH4QdzV9//fXm5uatW7cK83hLly512c0vMDBw9uzZ+M7433/84x+dOnX6\n4osvpIu9bt265ubmd955R9gx/cEHH5w2bdrhw4fF2tS95IA3uF5DunTpUps2bUJDQ8UHt2zZcuLE\niZCQkFGjRrH9OW+5DK6fYNj27y2XwfUTDCsa8qV1jCuax71iBdi6clSlra5KW+3t25hPylyOnJ3S\nBX+ISFoi68KqtNURSUtcDrpsFBsTE9OrV6///e9/4oN//OMfXa5KT09v1apV//79L1++LBwcMWIE\nQujQoUMPP/wwQigjI6NNmzZxcXHiC++55x53N91Dhw5lZ2efPXvW4XAghAIDAw8fPuxNLszBgweD\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a=1.2;b=0.6;c=0.8;d=0.3;\n", + "h=0.001;\n", + "[t y] = eulode(@predprey,tspan,y0,h,a,b,c,d);\n", + "\n", + "plot(t,y(:,1),t,y(:,2),'--')\n", + "legend('prey','predator');\n", + "title('(a) Euler time plot')" + ] + }, + { + "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": [ + "plot(y(:,1),y(:,2))\n", + "title('(b) Euler phase plane plot')\n", + "xlabel('prey population')\n", + "ylabel('pred population')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QQSDhkOaHryRgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxOC1BcHItMjAxNyAxMDoyNToxNJduS+UAACAA\nSURBVHic7d19eBNV2j/w+6GNbVMaGgqlhca2wJaXqIi8NiuaVBdcEF0FW18eH4X1UVqqC3QRYZVa\nLvB60EXqgryo7KIiSqW+sAvqrwoVoYigQCUgBKU1WGhqW6y1BdKG3x8Hx2GSTNI2yUxmvp8/vJLJ\nJDnEztwz59znPv918eJFAgAAkFo3qRsAAABAhIAEAAAygYAEAACygIAEAACygIAEAACygIAEAACy\nECl1AyCcbNmypa6ujoiuueaaUaNGdfTt69atYw9uvvnm1NTUADcufLhcrn/961/scbdu3aZNmyZt\newJFqf8uCJn/wjwk8NO+fftGjx7NHh89enTw4MEd/YT77rtv48aNRPTHP/5x27Zt/r/xnnvu+fnn\nnwUbu3XrFhsbO3jw4Ntvv/3aa68VeUtBQYHFYuG/WlhY+OWXX3JPFy9e7P4JRPTGG2+8+eab3NPx\n48c/9thj/jS4ubn5/Pnz7HFcXNwVV1zBf/XChQtRUVHscVRU1Llz5/z5TPkL4L9L/AcExboI4B+T\nycT+ZiZMmNC5Tzh69Cj3h1dWVub/G3v16iX+Z3zXXXe1trZ6e8trr73Gfyk3N5f/3vXr13v80qqq\nqri4OP6eDz30kJ8NvuOOO7h3vfvuu4JXuVMtEUVFRfn9M8hdAP9d4j8gKBW67MAvn332WUVFBXs8\nb968zn3I4MGDb7jhhp07dxJRYWHhzTffHKjmvf3222lpac8++6zPPR955JGXXnqJe7phw4b77rvP\n457Tp093vy0LiG7duk2aNIk9jozEMQhwCQ4G8MuyZcvYg759+wq6vzpk+vTpLCBVVFR8+eWXI0aM\n6OgnzJw5c9y4cUT0zTffvPDCC42NjWz7mjVrfAakBx544LXXXuOebty48Z577vG458qVK7dv305E\nGo3G6XR2tJHiIiMj//Of/wT2MwEUAAEJfKurq+NOoFOmTPG22/Hjx19//XWr1Xro0KGmpqahQ4de\neeWVt9xyyz333NOt26V8zjvuuOPPf/5ze3s7Eb366qudCEhjxozJyclhj6+88srp06ezxz///POF\nCxdEBhvuv//+DRs2cE9LS0vvvPNOj3t+9913TzzxBBElJSWZzea33nrL/+atWrXqwIEDBw4c4La8\n+OKLW7duZY//53/+Z9y4cW1tbVy3oUajWbVqFXvsvv3LL7/8+9//vmvXrr59+95yyy1z587t3r07\nEX388cdr1qzZs2dPcnKy2WyeO3dunz593BtTWVm5fv36EydO7Nu3Lzo6evjw4ddff/1DDz2k0+n8\n+be4t+fIkSPLly/fs2fPL7/8Mnbs2MceeywzM9P/H2ffvn1vvPEGa49Wqx02bNjVV189bdq0/v37\nd+gH9P8bIcxI3WcIYYB/V/H++++779De3v7oo496+xs7f/48f+exY8ey7UlJSX42wNuAUFlZGf+L\nnE6nt7fcfffd3NOIiAjxYYnrr7+e7fnvf/975syZ3Bv9GUPiD364e+WVVy56H2sRbF+/fr3g7UOG\nDGloaHDvMu3bt++ZM2f4zTh//jwXqgV69er10Ucf+fOzC9qzcePGiIgIwac988wz3vbnf1Rra+u9\n997rsT0RERGLFi3q0A8ISoWABL7xTyUNDQ3iO7gTBCT+ifLYsWP+NMBbQPrnP//JbR80aJC3t/Tt\n25d7rNFo/v3vf4t81wsvvMD2fPDBBy9evChVQIqIiHA/+xPR8OHDPX5ybm6ut2ZEREQMHz580KBB\n/C/94osvfP5bBO3RaDQev3rr1q3u+wsC0uTJk0V+FiJ6+umn/f8BQakQkMA37iToMXXqgw8+4J8y\n7r33XhZmzp8//9FHH918882CgMS/3/IzgYofXf7yl7+8++6777777jPPPMPf/tZbb3l7C0ej0XBn\nT49sNltMTAwRpaSk/PTTTxc7HpD279+/detWLiORiJ588smtv/r+++8v+heQiCgxMXHDhg2HDh0S\n3OvExsauXbv20KFDc+fO5W/kPuf999/ntqekpNhsNra9tLSU2z58+HCf/xb39pSVlbW3tx87doy7\niSSiq6++2n1//r+L/70RERGvvPJKe3t7a2sr/1YvIiKCtdOfHxCUCgEJfGPnaCLq37+/+6v8S9o/\n/vGPPj+Nf3pasWKFPw0QT/tOSUkRRCNvbxkyZIjD4RD5Iu48+MEHH7AtHQ1ITOfSvgUBgMtHr6mp\n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\nPHjZsmVbt2597733li9fftNNN0ndrtApKCg4ePDgiBEjNm/efPjw4Z07d86YMaOpqSk/P9/9uk0Z\nvvrqq8rKyj59+txyyy0iu8n0bHlRQaZOnZqRkbF161Zuy88//5yZmZmRkXHy5Enp2hU6P/zwQ11d\nnWDjzp07MzIyhg0b1t7eLkmrJLR+/fqMjIzt27dnZGRkZGRI3ZyQ2rgejwqOAAAGhElEQVRxY0ZG\nxj333HPhwgWp2yKN+vr6jIyMoUOHNjY28rc//PDDGRkZ69evl6phQfXNN99w/8dF/uzlebZUzh1S\ndXV1ZWWlXq+fOHEit7F79+6swtC2bduka1ro9O3bt1evXoKN48aNi46Obm1tdS9Tq2x2u3358uW3\n3Xbb9ddfL3VbJPDSSy8R0VNPPcWWcVGhb775hoji4+Pj4+P529lIycmTylypb9CgQT7/j8v2bKmc\ngMRKOYwZM0awfdSoUUR05MgRCdokDy6Xi60gJTgsFW/hwoVarfZvf/ub1A2RwNGjR2tqalJTU4cM\nGUJETqeztbVV6kaF2qhRoyIjI5ubm51OJ3/78ePH6dewpE6yPVsqJyDZbDYi0uv1gu3JyclEdODA\nAQnaJA/bt2+/cOFCRkaGSjI7mE2bNlVUVMyfP19tYZg5ceIEEV111VUVFRWTJ0++6qqrrr322uuu\nu27x4sXNzc1Sty5ENBrNzJkzz507N2/evLNnzxKRy+UqLS3dsmXL0KFDJ0yYIHUDJSPbs6Vy0r5r\na2uJKDU1VbA9PT2diNRzEAo0NDQUFhYS0V//+lep2xI6dXV1S5cuveGGG1RbEr66upqIjh8/Pm3a\ntN/97nc5OTkul2v37t2vv/76l19++dZbb6nk6iQvLy85OXndunUmkyk6OtrpdEZFRU2fPj03N1e1\nPZkk47OlcgJSe3s7EcXFxXl8lfVZqU1LS0teXt6PP/44ffr0G2+8UermhM6TTz7pcrkWL14sdUMk\n09DQQEQ2my0rK2v16tVsY0tLy3333XfkyJG1a9c+9thjkjYwRGpra7ds2WKz2fr27ZuRkXH27NmD\nBw9u27Zt9OjRFotF6tZJRrZnS+V02bHrHfdUTvbjRkRESNAmSZ0/fz43N/fAgQO33XbbvHnzpG5O\n6Lz//vvl5eWzZ8/u06eP1G2RDOt7IaKnnnqK26jVaufMmUOqyfFpbW29++67Kyoqnn766R07dqxd\nu3bTpk0ffPABEc2YMeOLL76QuoGSke3ZUjl3SGxFc4fDIdjOhu9SUlIkaJN0nE7njBkzPv/88wkT\nJjz33HNSNyeknn32Wb1e369fv48//pht4ab+sS0jR45U/MBSYmIiEcXExAiKMowePZqIvv/+e2ma\nFVoffvhhTU1NVlbWPffcw23s37//3LlzCwoK1q5dy34NFZLt2VI5AYlVx3HPbGZb2P8AlXA6nXl5\neRUVFX/4wx9UOB+2qanpwoULM2fOdH+JbXzjjTcUn2F15ZVXSt0E6bHBee5mkcNyyQ4dOiRBm+RB\ntmdL5QQkk8kUERGxa9eulpYWfqGqsrIyIho7dqx0TQup9vb2vLy8nTt33nDDDS+88ILUzZHAc889\nJ+gEb29vZzkdy5cvJ6L+/ftL07IQGjZsmE6na2pqamho4Beq+Prrr4koKSlJuqaFjk6nI6Jz584J\ntrOMD/aqOsn2bKmcMSStVjtp0qS2tra1a9dyG202W1lZWWxsrEqyrVwu16OPPsqi0apVq1Q4ckZE\nt9xyy8TLcTVU2FM1VBLq1q0bW1V51apV/O3s6OBPh1Qwk8lERGVlZYJbgQ0bNnCvqpNsz5aKKq56\n+vTpKVOm1NfX33nnnRaLxW63r1u3rr6+ftGiRSpZ8vzdd9994okniGjs2LHR0dGCV/Pz86+++mop\n2iUxp9N51VVXkZqKihJRS0vLnXfeefLkyZtuuunWW29tb29/4403Dhw40K9fv/fee08l9wfTpk2r\nqKhISEi49957MzIympqa3n777YMHD8bFxb377ruKrIK/f//+l19+mT0uLy8nIrPZzJ5Onz6dmwwr\nz7OlogISEZ04ceLxxx9nQ3NEpNfrZ8+erZJoRESbN28WKUzw0ksvqSr5m6POgEREP/7448KFCz/5\n5BNuy0033bRo0SL3+lJK1dra+vzzz2/cuJFf03rEiBGLFi0aOHCghA0Lnm3bts2ePdvjS88+++zt\nt9/OPZXh2VJpAYmpqqqqrq6OjY297rrrunVTTrckQCecPXuWDR2xgSWpmyMBl8v11Vdf/fLLL926\ndRs+fHj37t2lbpGMyOpsqcyABAAAYQd3DwAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAA\nIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsISAAAIAsI\nSAAAIAv/H0HbHRZqb02MAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a=10;b=0.6;c=0.8;d=0.3;\n", + "tspan=[0 10];\n", + "[t y] = rk4sys(@predprey,tspan,y0,h,a,b,c,d);\n", + "plot(t,y(:,1),t,y(:,2),'--')\n", + "title('(c) RK4 time plot')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nZj+aUWrny/9cd3f3d99912AwtLW18ecTubu7s3oePnx4165d3CRYInrxxRd3/erMmTM9Vht6hECS\nEO53eOTIkaZ7+VeV+KljMBj443imgcT/rROMn5hledp3UFCQaRp1966IiAj+X8emuF/vzz77jJUM\nPJD4vbozZ87w/8CvrKw0+5bXX3+de8vjjz/OlT/99NOWP5p/uevxxx9nhX/+859ZiVKptNwl5f/R\nvWXLFv6u+Ph4btexY8es2wJ9nQZt9jRNP7fHZpTa+fLr8/zzz/M/gpueSkQZGRlm34Jp31aHSQ0S\n0tbWxjYiIiJM93799dfcdkJCArft5uY2ZcoUvV7f3Y+VyWTcNregQ/94enomJSXxP92y6urquLi4\nvXv3/td//Zfp3n/84x9sjntaWto999wzkIrxPfLII9z2iBEjoqKivv32W/aysrJy9OjRpm9JSUnh\ntseNG8dtc/8iRHTp0qXc3Nw9e/Z89913/HION2d91KhRbEOv14eFhfn5+UVGRt56660ajWbatGkK\nhYJ7yxdffMFtf/jhh9yUFiI6deoUt/3999/fdtttFk/6Bv1ogX6cpqkem1Fq58uvD78XSEQPPPDA\nvn37uPr0vjIwEAgkCXF3d2fT4cz+zl+6dInb9vHx4e+ycCGaiIxGI7ft6+vbpyrFxMQolcrGxkY2\nJ7uzs3P9+vXl5eX79+/38Oj2f54pU6Zwv8yVlZWTJ0/ev3+/aSatWLGCVf7ee+/dv38/K/zPf/7D\nHdDQ0LB//343NzduMaQeeXl5CSo2fPhwbtvsLfpeXl78yV2///3vTY85ffr05MmT6+vre1OH5cuX\nb9++nTuRq1evstbYsmWLu7t7VlbW8uXLuV3cu7j5Wqb6tLJAP1qA06fTNP3cHptRaufLr4/gl4j/\nd4PTr2QhHQgkCfHx8WG/IWb/IvPw8OBGHvgZQ0SCEQyBn3/+mdv+4x//2KcqpaenP/bYY0T01Vdf\n3XXXXSwvDx06lJOTY+FO27lz586YMePpp59mL0+cOGE2k7q6uojo6tWr3EUXATY636e1XgQtw30K\n4+bWzxvvFi9ezH1Nh4WFpaenBwUFubm5HTp06JVXXhEcfMstt1RWVq5bt27Pnj3ffPMN/1/HYDC8\n+OKL8fHxbFKyl5cXtzc+Pr676vG/YXs0kBbo02n2g9TO19PTs7Ozk20Lfok6Ojq4bQt/e4F1oaEl\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(y(:,1),y(:,2))\n", + "title('(d) RK4 phase plane plot')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Systems of ODE's:\n", + "## The Coriolis Effect\n", + "\n", + "System of ODE's defined as:\n", + "```matlab\n", + " function ddr = coriolis_ode(t,r,R,L)\n", + " g=9.81; % acceleration due to gravity m/s^2\n", + " l=10; % 10 m long cable\n", + " we=2*pi/23.934/3600; % rotation of Earth (each day is 23.934 hours long)\n", + " ddr=zeros(4,1); % initialize ddr\n", + "\n", + " ddr(1) = r(2); % x North(+) South (-)\n", + " ddr(2) = 2*we*r(4).*sin(L)-g/l*r(1); % dx/dt \n", + " ddr(3) = r(4); % y West (+) East (-)\n", + " ddr(4) = -2*we*(r(2).*sin(L))-g/l*r(3); % dy/dt\n", + " end\n", + "```\n", + "\n", + "First, we will solve for the path of a neutrally-buoyant object with a 100-N force pointing North. It's path starts at 41.8084$^o$ lattitude (Storrs, CT)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QQSAxwY6QEgAQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxNy1BcHItMjAxNyAyMzoyODoyNLLRS0sAACAA\nSURBVHic7N15QBNn/j/wj0TuY4mlKioV1IJHrYuCWuoBVNFqUXu4WrW2UK2K9wUtWhW32NV2vQse\nteJZ/VW02sJqscgqsipUFBWPYIWyBgEFBeRO+P3x7M43GyBkQo5J8n79NXnm+jyTIR/mmWeeadPQ\n0EAAAACGZmHoAAAAAIiQkAAAQCCQkAAAQBCQkAAAQBCQkAAAQBCQkAAAQBDaGjoAgP+orq4+ffr0\ns2fP6uvrWcno0aM7d+6szlyTIZfL9+7dy6YtLCxCQkJ0t5aR0kVlzeTsEr42eA5JY++//355ebmK\nBXx9fVevXq3ZxisqKmpqati0o6OjlZWVZtsxFocOHZo1a9bz588VC5OSkkaMGNHiXF0w1PGvra21\ntrZm09bW1tXV1erE09xaRkrPldX/2QXNagBNubi4qD62Y8eO1Xjjb7/9NredEydOaDFsAbp7965I\nJGp8AJOSklqcqyOGOv7cDzERWVtbqxlPc2sZKX1W1iBnFzQHTXZgeKdPn5bJZGx64MCB0dHR7F/g\nfv36tTjXxFhYWIwdO5ZNt22LP0+dM6uzS/hwxmvH9OnTBw0apFTo7u5uiFiMz61bt7jpjz/+WKmp\nRPVcE9O2bduff/7Z0FGYEbM6u4QP95A09+KLLz5+/JhN79+//4MPPmhxlfT09EOHDuXk5KSnp9vZ\n2fXr169v374hISHdunXjlomJicnMzDx79mxubi4rGTFiBJfbpk+f/ujRo19++YV9nDhxYlBQkOIu\nfvnllx9++IFNBwUFTZw4kdfeGblcvm/fPhbDvXv32rZtO2DAALFY7O3t/frrrzdOvU3KysqKi4tj\nu7OxsfH29h4yZMiMGTOcnJy4ZQ4cOHD+/PkLFy7cvXuXlQwbNszT05OIHB0dvb29VczduHEjr30p\nunfv3oEDB27dunX9+vWysrLevXu/9NJLo0ePfv/993fs2KH6+A8dOrTJbVZWVi5cuJBN9+rVa8mS\nJY3LP/nkE19fXzb9448/JiQkKJXX19fPmTOHFVpaWsbExLR4PgwdOrTxbZWcnJzNmzefP3++tLR0\n0KBBoaGhY8aMaTJsJY0DUHNTap5djbefnZ29adOmy5cvFxcXT58+vaSkRD+VVX3uKZ5d6v/hqK7d\nqVOnuG9fxRloYfE/nZ/5ntvGzdBthkZM8R7S/v37VS9cVVU1ZcqUJr8CkUi0du1abknFBvTGvv32\n20uXLnEf/f39lXYUGBjIzb1y5QrfvTc0NDx79mzAgAHNBaDOjbGamprQ0NAmV3dxcTlz5gy35IwZ\nM5rbkYuLi+q5fPfFyGSy+fPnN7fZmpqaFo+/iop37NiRLWZrayuTyVjhiRMnuNXnzp3b5Bd9+/Zt\nrjpcIbtBok48SmudPHnS1tZWaclt27a1+MVptileZ5fS9s+cOaO4/ddee01vlVXn7Gqxarxql5CQ\n0KDGGai4NV7ntglAQtKcYkKaO3fukUb+/e9/cwsHBwc3dwoya9asYUuq8wPUt29frkRxL3/88QdX\n3rdvXw323tDQsHLlSq7c0tJyyJAhw4YNc3R0ZCXqJCTFKohEIm9vby8vL67E2tqay5StT0jq74tp\n7veFaWVCmjZtGrfkpUuXWOHSpUu5Qm9vb1Yok8m4n6ouXbpwW2h9QhKJRJaWlo2XtLa2LioqavG7\n02BTvM4upe2LxWLFJfkmpNZUVp2zq8Wq8aodS0gtnoHc1vie2yYACUlzLfay4zoIxcfHK55Y3377\nrUwmq6qqioiIUCyXSCQNDQ0ZGRkJCQl+fn7crJUrVyb81x9//NHQ0LBp0yZu7t/+9jcupL/97W9c\n+ZYtWzTYe0NDA3dTvVevXuXl5dzGHz169N13333xxReqD8vJkye5zXbp0oXbrGIY3O/yjRs3EhIS\nRo0axc1auHAhq2lSUpLquXz31dDQ8I9//EPxC5oyZcrdu3cbGhpqamrOnDkzYsSImpoadY5/c44c\nOcKttWnTJlY4ePBgxeP8/PnzhoaGK1eucIXTp0/nttA4IakTj+JaRGRra7tt27bbt2/HxcUp/od+\n+PBh1d+dBpvie3YpbZ+IBg8eHBcXd/jw4aVLl+7fv19vlW3x7FKnarxqd+XKFXXOQLYpvue2aUBC\n0pz6CUnxP53ly5crbmTYsGHcrFWrVnHlqnu+Pnv2jPvHUPFKiLtysrS0fPbsmWZ7f/PNN1mJu7s7\n+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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QQSAxwZngYQlwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxNy1BcHItMjAxNyAyMzoyODoyNcXWe90AACAA\nSURBVHic7N15XFTV/z/wIyP7EmOkoiAgOShGiooibkCKpmGZ9pHKh4IfW0TNXT+ZifgJK1tcU8kN\nzYX6pqYFiRTiRiAIiYELGhAJggrKvs3w++N8Pvd3PzPDcO8szJ2Z1/Ovy5lzzz333pn75t6z3C5t\nbW0EAABA38z0XQEAAABCEJAAAEAgEJAAAEAQEJAAAEAQEJAAAEAQEJAAAEAQuuq7Ap1HJpPJZLKu\nXTtjl2Uy2YEDB+iymZlZRESEFgvRSuFGwECPg4FWWwW198j4DoUKutjZxsbGM2fOPHnypLW1laZM\nmjSpd+/empesL12MexxSeXn5/v37f/nll8uXLzc1NRFCRCKRRCIJDg6eM2eOn5+fjrbb3NxsaWlJ\nly0tLRsbG7VYiFYKNwKCPQ61tbX0y0YIsbe3t7CwYH8q2GqrTcUemdSh6OSdPXLkyDvvvFNXV8dO\nTE5OHj9+vIYl61Ob8dq8ebO1tbWKfY+Pj9fRppnvJSHE0tJSu4VopXAjINjjMG3aNKZiJ0+elPtU\nsNVWm4o9MqlD0Zk7e+vWLZFIpHhNS05O1rBk/TLaR3aRkZG7du1Snae5uVlHWzczM5syZQpd1vpD\nQp0WDrpmfKfP+PZI+M6cOSOVSuny8OHDY2Ji6O3XoEGD9FovTRnnt2fHjh3saNS9e/fVq1dPnTq1\nT58+jY2NFy5cOHXq1MGDB3VXga5du/7000+GWDjomvGdPuPbI+HLy8tjlv/5z38a9mM6FiNsQ6qv\nr+/Vq9eTJ0/on3369ElPT3d2dpbLdu/evUePHj3//PNMSmZm5pEjR+7cuZOZmWljYzNo0CAfH5+I\niIi+ffuyV2xtbZ0/fz5dNjc337lzZ35+/ubNmzMyMh48eHD69Gk/Pz/FPOwSOG6ovYfOKgqXyWQH\nDx785ZdfioqKbt++3bVr16FDh4rFYl9f31GjRo0YMaLDo3f69OlLly6VlJRUVVVdu3attbW1b9++\nbm5uo0ePDg8Pd3BwUFzl9u3b33zzTV5e3rVr16qrq729vfv06TNp0qTXX3/dzMxMjZy5ublxcXH0\n+FhZWfn6+o4ePXrevHlyW+/woTzHcricUI6HZefOnTk5OfT405Tx48e7u7vT5dmzZ48ZM0b1d4No\n8D28c+fOli1bLly4UFVVNWLEiLlz506ePFnxfLHV19cvXryYLg8YMGDZsmWK6W+//TbT2vrDDz8k\nJCTIpSvdIy6HQvEMqrELmhwKzX/yhJAHDx7Mnj27srKyc3b2m2++uXDhwsWLF2/dukVTxo4dK5FI\nCCH29vZffvmlFveO+f7TT7n/0jn+9JTQ9zND7du/fz97B5OSkjpcpaGh4Y033lB6fEQi0YYNG9iZ\n5Z4FJyUlsVuqEhISFPNoZUMdpj958mTo0KHtnegpU6ZwOXr29vbtlSAWi+WeUEul0kWLFrWXv6mp\niW/OpqamuXPnKs3j5OQkdypVPJTXpBylJ5TjYWG3Iijau3ev6mpr8vU4deqUYovp9u3bOzzjPXv2\npJmtra2lUilNPHnyJFPIggULmMzsHbxx44aKE6HGoVB7F9QoR4s/eULIyJEjO21n582b196GnJyc\ntL539PvP/ZfO66enyAgDEvtMuLu7c1klNDS0vWNNrV+/nsnMPn8ikUgsFrNzqg5Iam+IS0Bau3Yt\nk25ubj569OixY8cyV1JeAcnS0tLLy2vixIk+Pj7stlOxWPzkyROlh1oR+2vKMSf7KiYSiXx9fb28\nvNg7e+XKlQ6PgybltHdCOR4WDQOSJt9Dc3NzxfyWlpYVFRWqz/isWbOY/Onp6TRx+fLlTKKvry9N\nlEqlzKXKxcVF9Yngeyg02QU1ytHiT57wD0ia7CyXgKT1Cxr3Xzqvn54iIwxIEydOZPY/LCysw/zH\njx9nH8G9e/dKpdKGhobVq1ez0wsKCmh+9vmj/P394+Lijh49unz5cnq4lf5ENdkQl4DENCwPGDCg\npqaGSb9///7+/fs/+ugjLkdv6dKlzFWJqqysDAwMZLYYGxtL03/++Wf2QXjjjTdu3bpFq5eUlDR+\n/Hjma8ox56lTp5g8Li4uzHFgHzfm4qjiOGhSTnsnlONhycrKSkhICAgIYNLXrl2b8F9//fWXimpr\n+D20trbevn37jRs34uLi2P/hHj16VPUZj4+PZzJv3ryZJvr7+7M3WldX19bWduXKFSZx9uzZqk8E\n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\n2zbuK3bp0oX87zsT6ZxDiv3FaQqNQ9yzAQCAFgk9IEml0sjIyAsXLowdO3br1q281qWd5QYOHMik\nBAQEiESiS5cu1dfXs3PSaYeYVyhxzAYAAFok6IAkk8kWLVpEo9HOnTvba7wpLy+XixyEkNjY2Nzc\nXGtr69GjRzOJNjY2U6ZMaW1tjY2NZRILCgqSk5NtbW3puFfu2UDg0GghHDgXwIWgOzWcOnXq119/\nJYQ0Nzcrvvh24cKFPj4+hJCrV6+uXLkyKCjI3d3d3d29qKgoLS2NtvdER0fLvWli2bJlly9f3r17\nd0VFRVBQUElJyb59+6RS6erVq9mvC+KYDQAAtEXQAYl2vyaEpKenK37KvB6tZ8+ezs7OcrN9e3t7\nL1++nH17RDk7Ox86dGjVqlUnTpw4ceIEIUQsFm/YsGHmzJlqZAMAAG0R9OSqBgo9XAFAsIR8gRJ0\nGxIAAJgOBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQA\nABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAE\nBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABAEBCQAABCErmqvWV1dXVVV\nVV1dffLkyZs3bxJCevfuPWvWrKeeesrBwaFbt27aqyQAABg/fgGpvr4+PT1906ZN9+/fb2hokPv0\n6tWrp0+f/k+5Xbs6Ozv/85//nDhxIoITAAB0qEtbWxuXfBkZGR988EFJSYka2+jZs+d77703ffp0\nNdY1RF5eXrdu3dJ3LQAAlBDyBarjNqTDhw8PGTJk9uzZ6kUjQsj9+/fXrFnj7e39+eefq1cCAAAY\nPVV3SD/++OPatWsbGxvl0nv27Nm9e/d169Y5ODjY2tpaWVmZm5sTQlpaWpqbm+vq6mpra7/88su7\nd+/eu3dPsdglS5bMnz9fu7shKEL+BwQATJyQL1DKA1J5efmMGTMqKiqYlK5duw4aNGjjxo2urq4i\nkYj7BkpLSz///POUlBR2m5O1tfXXX389fPhwTaouWEI+3wBg4oR8gVIekEaNGvXw4UO63Lt3702b\nNg0bNkzDLRUXF8+fP//u3btMimAPioaEfL4BwMQJ+QKlqg3J29s7NTU1JSVF82hECHFzc0tMTMzI\n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\nN8Ztf6GQ81nmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 0\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " 0.0001\n", + " 0.0001\n", + " 0.0002\n", + " 0.0003\n", + " 0.0003\n", + " 0.0006\n", + " 0.0009\n", + " 0.0013\n", + " 0.0016\n", + " 0.0031\n", + " 0.0047\n", + " 0.0063\n", + " 0.0078\n", + " 0.0157\n", + " 0.0235\n", + " 0.0314\n", + " 0.0392\n", + " 0.0785\n", + " 0.1177\n", + " 0.1570\n", + " 0.1962\n", + " 0.3925\n", + " 0.5887\n", + " 0.7850\n", + " 0.9812\n", + " 1.9624\n", + " 2.9436\n", + " 3.9248\n", + " 4.9060\n", + " 9.0087\n", + " 13.1115\n", + " 17.2142\n", + " 21.3169\n", + " 26.3169\n", + " 31.3169\n", + " 36.3169\n", + " 41.3169\n", + " 46.3169\n", + " 51.3169\n", + " 56.3169\n", + " 61.3169\n", + " 66.3169\n", + " 71.3169\n", + " 76.3169\n", + " 81.3169\n", + " 86.3169\n", + " 91.3169\n", + " 96.3169\n", + " 101.3169\n", + " 106.3169\n", + " 111.3169\n", + " 116.3169\n", + " 121.3169\n", + " 126.3169\n", + " 131.3169\n", + " 136.3169\n", + " 141.3169\n", + " 146.3169\n", + " 151.3169\n", + " 156.3169\n", + " 161.3169\n", + " 166.3169\n", + " 171.3169\n", + " 176.3169\n", + " 181.3169\n", + " 185.9877\n", + " 190.6584\n", + " 195.3292\n", + " 200.0000\n" + ] + } + ], + "source": [ + "north_coriolis(41.8084,1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "coriolis(41.8084)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adaptive Runge-Kutta Methods\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ODE23 Solve non-stiff differential equations, low order method.\n", + " [TOUT,YOUT] = ODE23(ODEFUN,TSPAN,Y0) with TSPAN = [T0 TFINAL] integrates \n", + " the system of differential equations y' = f(t,y) from time T0 to TFINAL \n", + " with initial conditions Y0. ODEFUN is a function handle. For a scalar T\n", + " and a vector Y, ODEFUN(T,Y) must return a column vector corresponding \n", + " to f(t,y). Each row in the solution array YOUT corresponds to a time \n", + " returned in the column vector TOUT. To obtain solutions at specific \n", + " times T0,T1,...,TFINAL (all increasing or all decreasing), use TSPAN = \n", + " [T0 T1 ... TFINAL]. \n", + " \n", + " [TOUT,YOUT] = ODE23(ODEFUN,TSPAN,Y0,OPTIONS) solves as above with default\n", + " integration properties replaced by values in OPTIONS, an argument created \n", + " with the ODESET function. See ODESET for details. Commonly used options\n", + " are scalar relative error tolerance 'RelTol' (1e-3 by default) and vector\n", + " of absolute error tolerances 'AbsTol' (all components 1e-6 by default).\n", + " If certain components of the solution must be non-negative, use\n", + " ODESET to set the 'NonNegative' property to the indices of these\n", + " components.\n", + " \n", + " ODE23 can solve problems M(t,y)*y' = f(t,y) with mass matrix M that is\n", + " nonsingular. Use ODESET to set the 'Mass' property to a function handle \n", + " MASS if MASS(T,Y) returns the value of the mass matrix. If the mass matrix \n", + " is constant, the matrix can be used as the value of the 'Mass' option. If\n", + " the mass matrix does not depend on the state variable Y and the function\n", + " MASS is to be called with one input argument T, set 'MStateDependence' to\n", + " 'none'. ODE15S and ODE23T can solve problems with singular mass matrices. \n", + " \n", + " [TOUT,YOUT,TE,YE,IE] = ODE23(ODEFUN,TSPAN,Y0,OPTIONS) with the 'Events'\n", + " property in OPTIONS set to a function handle EVENTS, solves as above \n", + " while also finding where functions of (T,Y), called event functions, \n", + " are zero. For each function you specify whether the integration is \n", + " to terminate at a zero and whether the direction of the zero crossing \n", + " matters. These are the three column vectors returned by EVENTS: \n", + " [VALUE,ISTERMINAL,DIRECTION] = EVENTS(T,Y). For the I-th event function: \n", + " VALUE(I) is the value of the function, ISTERMINAL(I)=1 if the integration \n", + " is to terminate at a zero of this event function and 0 otherwise. \n", + " DIRECTION(I)=0 if all zeros are to be computed (the default), +1 if only \n", + " zeros where the event function is increasing, and -1 if only zeros where \n", + " the event function is decreasing. Output TE is a column vector of times \n", + " at which events occur. Rows of YE are the corresponding solutions, and \n", + " indices in vector IE specify which event occurred. \n", + " \n", + " SOL = ODE23(ODEFUN,[T0 TFINAL],Y0...) returns a structure that can be\n", + " used with DEVAL to evaluate the solution or its first derivative at \n", + " any point between T0 and TFINAL. The steps chosen by ODE23 are returned \n", + " in a row vector SOL.x. For each I, the column SOL.y(:,I) contains \n", + " the solution at SOL.x(I). If events were detected, SOL.xe is a row vector \n", + " of points at which events occurred. Columns of SOL.ye are the corresponding \n", + " solutions, and indices in vector SOL.ie specify which event occurred. \n", + " \n", + " Example \n", + " [t,y]=ode23(@vdp1,[0 20],[2 0]); \n", + " plot(t,y(:,1));\n", + " solves the system y' = vdp1(t,y), using the default relative error\n", + " tolerance 1e-3 and the default absolute tolerance of 1e-6 for each\n", + " component, and plots the first component of the solution. \n", + " \n", + " Class support for inputs TSPAN, Y0, and the result of ODEFUN(T,Y):\n", + " float: double, single\n", + " \n", + " See also ODE45, ODE113, ODE15S, ODE23S, ODE23T, ODE23TB, ODE15I,\n", + " ODESET, ODEPLOT, ODEPHAS2, ODEPHAS3, ODEPRINT, DEVAL,\n", + " ODEEXAMPLES, RIGIDODE, BALLODE, ORBITODE, FUNCTION_HANDLE.\n", + "\n", + " Reference page in Doc Center\n", + " doc ode23\n" + ] + } + ], + "source": [ + "help ode23" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a=4;b=0.05;c=5;d=0.1;\n", + "tspan=[0,5];\n", + "[t23 y23] = ode23(@predprey,tspan,y0,h,a,b,c,d);\n", + "[t45,y45] = ode45(@predprey,tspan,y0,h,a,b,c,d);\n", + "plot(t23,y23(:,1),t23,y23(:,2),t45,y45(:,1),'--'...\n", + ",t45,y45(:,2),'--')\n", + "title('ode23- vs ode45--')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Matlab", + "language": "matlab", + "name": "matlab" + }, + "language_info": { + "codemirror_mode": "octave", + "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": "matlab", + "version": "0.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_23/north_coriolis.m b/lecture_23/north_coriolis.m new file mode 100644 index 0000000..28a2337 --- /dev/null +++ b/lecture_23/north_coriolis.m @@ -0,0 +1,53 @@ +function [t,r] = coriolis(L,m) + % In class we ran this function using L=41.8084 (the latitude of Storrs, CT). This + % function takes the latitude (L) in degrees and mass (m) and calculates the trajectory + % of a particle with a 100 N load directed North. The initial conditions are set as L + % (in radians) * radius of Earth, 0 m/s initial x-velocity, 0 m E-W position (add to + % -72.261319 degrees for longitude of Storrs), 0 m/s initial E-W velocity, 10 m initial + % altitude, 0 m/s initial z-velocity [L*pi/180*R 0 0 0 10 0], the force is given as 100 + % N North, 0 West and 9.81*m z (neutrally buoyant) [100 0 9.81*m] + % + % the output of myode is ddr=[dx/dt d2x/dt2 dy/dt d2y/dt2 dz/dt d2z/dt2]' and the input + % to myode is r=[x dx/dt y dy/dt z dz/dt]' + % using ode23 solver solves for r as a function of time, here we solve from 0 to 200 s + % r(:,1) = x (the north-south position from 0 to 200 s) + % r(:,3) = x (the West-East position from 0 to 200 s) + % r(:,5) = x (the altitude from 0 to 200 s) + + % define ordinary differential equation in terms of 6 first order ODE's + function ddr = myode(t,r,F,m,R) + Fx=F(1); Fy=F(2); Fz=F(3); % set each Force component + g=9.81; % acceleration due to gravity m/s^2 + we=2*pi/23.934/3600; % rotation of Earth (each day is 23.934 hours long) + ddr=zeros(6,1); % initialize ddr + + ddr(1) = r(2); % x North(+) South (-) + ddr(2) = 2*we*r(2).*sin(r(1)/R)-r(6).*cos(r(1)/R)+Fx/m; % dx/dt + ddr(3) = r(4); % y West (+) East (-) + ddr(4) = -2*we*(r(2).*sin(r(1)/R)-r(6).*cos(r(1)/R))+Fy/m; % dy/dt + ddr(5) = r(6); % z altitude + ddr(6) = -2*we*r(4).*cos(r(1)/R)+Fz/m-g; % dz/dt + end + + R=6378.1e3; % radius of Earth in m + % Applied force is 100 N in Northern direction and z-direction equals force of gravity + % (neutrally buoyant travel) + F= [ 100 0 9.81*m]; %Applied force in N + [t,r]=ode45(@(t,r) myode(t,r,[100 0 9.81*m],m, R),[0 200], [L*pi/180*R 0 0 0 10 0]); + figure() + % Plot Coriolis effect for deviation Westward + plot(r(:,3),1e-3*(r(:,1)-r(1,1))) + xlabel('West (+m)','Fontsize',18) + ylabel('North (+km)','Fontsize',18) + text(0,0, 'Storrs, CT') + title('Coriolis acceleration with north force') + + figure() + % Plot Eotvos effect for deviation upwards + plot(1e-3*(r(:,1)-r(1,1)),r(:,5)) + xlabel('North (+km)','Fontsize',18) + ylabel('Altitude (+m)','Fontsize',18) + title('Eotvos effect with north force') + +end + diff --git a/lecture_23/octave-workspace b/lecture_23/octave-workspace new file mode 100644 index 0000000..31e53e3 Binary files /dev/null and b/lecture_23/octave-workspace differ diff --git a/lecture_23/predprey.m b/lecture_23/predprey.m new file mode 100644 index 0000000..349c3f6 --- /dev/null +++ b/lecture_23/predprey.m @@ -0,0 +1,6 @@ +function yp=predprey(t,y,a,b,c,d) + % predator-prey model (Lotka-Volterra equations) + yp=zeros(2,1); + yp(1)=a*y(1)-b*y(1)*y(2); + yp(2)=-c*y(2)+d*y(1)*y(2); +end diff --git a/lecture_23/rk4sys.m b/lecture_23/rk4sys.m new file mode 100644 index 0000000..fe747cb --- /dev/null +++ b/lecture_23/rk4sys.m @@ -0,0 +1,53 @@ +function [tp,yp] = rk4sys(dydt,tspan,y0,h,varargin) +% rk4sys: fourth-order Runge-Kutta for a system of ODEs +% [t,y] = rk4sys(dydt,tspan,y0,h,p1,p2,...): integrates +% a system of ODEs with fourth-order RK method +% input: +% dydt = name of the M-file that evaluates the ODEs +% tspan = [ti, tf]; initial and final times with output +% generated at interval of h, or +% = [t0 t1 ... tf]; specific times where solution output +% y0 = initial values of dependent variables +% h = step size +% p1,p2,... = additional parameters used by dydt +% output: +% tp = vector of independent variable +% yp = vector of solution for dependent variables +if nargin<4,error('at least 4 input arguments required'), end +if any(diff(tspan)<=0),error('tspan not ascending order'), end +n = length(tspan); +ti = tspan(1);tf = tspan(n); +if n == 2 + t = (ti:h:tf)'; n = length(t); + if t(n)h,hh = h;end + while(1) + if tt+hh>tend,hh = tend-tt;end + k1 = dydt(tt,y(i,:),varargin{:})'; + ymid = y(i,:) + k1.*hh./2; + k2 = dydt(tt+hh/2,ymid,varargin{:})'; + ymid = y(i,:) + k2*hh/2; + k3 = dydt(tt+hh/2,ymid,varargin{:})'; + yend = y(i,:) + k3*hh; + k4 = dydt(tt+hh,yend,varargin{:})'; + phi = (k1+2*(k2+k3)+k4)/6; + y(i+1,:) = y(i,:) + phi*hh; + tt = tt+hh; + i=i+1; + if tt>=tend,break,end + end + np = np+1; tp(np) = tt; yp(np,:) = y(i,:); + if tt>=tf,break,end +end \ No newline at end of file diff --git a/lecture_24/.ipynb_checkpoints/lecture_24-checkpoint.ipynb b/lecture_24/.ipynb_checkpoints/lecture_24-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/lecture_24/.ipynb_checkpoints/lecture_24-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_24/feng et al 2009-paper_airplane.pdf b/lecture_24/feng et al 2009-paper_airplane.pdf new file mode 100644 index 0000000..d48bd26 Binary files /dev/null and b/lecture_24/feng et al 2009-paper_airplane.pdf differ diff --git a/lecture_24/lecture_24.ipynb b/lecture_24/lecture_24.ipynb new file mode 100644 index 0000000..9ecde82 --- /dev/null +++ b/lecture_24/lecture_24.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![q1](q1.png)\n", + "\n", + "![q2](q2.png)\n", + "\n", + "### How do Runge-Kutta methods increase the order of convergence?\n", + "![q3](q3.png)\n", + "\n", + "## Questions from you\n", + "\n", + "- How do Runge-Kutta methods increase the order of convergence?\n", + "\n", + "- Can you provide more assistance for the final project?\n", + "\n", + "- Will there be another homework? Or is it just the final project for the rest of the semester.\n", + "\n", + "- will the competition be limited to numerical methods or general engineering problems (like the hack-a-thon)?\n", + "\n", + "- On the final project, to get the GitHub bonus, do you have to solve the issue? Or do the points go to the one who opens the issue?\n", + "\n", + "- can we go over the final project" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paper Airplane Design challenge\n", + "\n", + "We looked at a Phugoid model comparing Euler and Runge-Kutta second order solutions. Now, use this model to maximize the distance your paper airplane will fly. \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.2 (a value close to measurements in [Feng et al. 2009](./feng et al 2009-paper_airplane.pdf))\n", + "* For the trim velocity, $v_{t}$=5.5 m/s.\n", + "\n", + "Submit your github repository to the following Google form:\n", + "\n", + "[https://goo.gl/forms/mI2CKcyRvfOWz5FF3](https://goo.gl/forms/mI2CKcyRvfOWz5FF3)\n", + "\n", + "Initial judging by Prof. Cooper will be based upon clarity of solution (e.g. documents, files, results in README)\n", + "\n", + "The top groups will be distributed to the class to be voted on\n", + "\n", + "We have focused on Matlab/Octave in our work this semester, but if you prefer Python or some other language, feel free to code your solution in your language of choice. \n", + "\n", + "**Good Luck!**" + ] + }, + { + "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_24/q1.png b/lecture_24/q1.png new file mode 100644 index 0000000..b6f47ff Binary files /dev/null and b/lecture_24/q1.png differ diff --git a/lecture_24/q2.png b/lecture_24/q2.png new file mode 100644 index 0000000..77dfdb5 Binary files /dev/null and b/lecture_24/q2.png differ diff --git a/lecture_24/q3.png b/lecture_24/q3.png new file mode 100644 index 0000000..3d37be2 Binary files /dev/null and b/lecture_24/q3.png differ