{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

SLIP Model Example

\n", "

MCHE 513: Intermediate Dynamics

\n", "

Dr. Joshua Vaughan
\n", "joshua.vaughan@louisiana.edu
\n", "http://www.ucs.louisiana.edu/~jev9637/

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Spring Loaded Inverted Pendulum (SLIP) model, shown in Figure 1, is often used to model walking, running, or jumping of animals, including humans. The system consists of a point mass, $m$, connected to a spring of stiffness $k$. The rotation of the inverted pendulum is represented by $\\theta$ and the length of the spring by $R$. The equilibrium length of the spring is $L_0$.\n", "\n", "

\n", "\t\"Spring
\n", " Figure 1: Spring Loaded Inverted Pendulum (SLIP) Model\n", "

\n", "\n", "The spring is often modeled as free to leave the ground, in order to represnt the \"flight\" phase of walking or running (*i.e.* When the leg is in the air.). Here, we'll just model the \"stance\" portion, when the spring is in contact with the gorund. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Import the SymPy Module\n", "import sympy\n", "\n", "# Import the necessary sub-modules and methods for dynamics\n", "from sympy.physics.mechanics import dynamicsymbols\n", "from sympy.physics.mechanics import LagrangesMethod, Lagrangian\n", "from sympy.physics.mechanics import Particle, Point, ReferenceFrame\n", "\n", "# initiate better printing of SymPy results\n", "sympy.init_printing()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Define the genearlized coordinate\n", "R, theta = dynamicsymbols('R theta')\n", "\n", "# Also define the first derivative\n", "R_dot, theta_dot = dynamicsymbols('R theta', 1)\n", "\n", "# Define the symbols for the other paramters\n", "m, g, k, l0, t = sympy.symbols('m g k L_0 t')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/latex": [ "$$- g m R{\\left (t \\right )} \\sin{\\left (\\theta{\\left (t \\right )} \\right )} - 0.5 k \\left(- L_{0} + R{\\left (t \\right )}\\right)^{2} + \\frac{m R^{2}{\\left (t \\right )} \\left(\\frac{d}{d t} \\theta{\\left (t \\right )}\\right)^{2}}{2} + \\frac{m \\left(\\frac{d}{d t} R{\\left (t \\right )}\\right)^{2}}{2}$$" ], "text/plain": [ " 2 \n", " 2 ⎛d ⎞ ⎛d ⎞\n", " m⋅R (t)⋅⎜──(θ(t))⎟ m⋅⎜──(R(t))⎟\n", " 2 ⎝dt ⎠ ⎝dt ⎠\n", "-g⋅m⋅R(t)⋅sin(θ(t)) - 0.5⋅k⋅(-L₀ + R(t)) + ─────────────────── + ────────────\n", " 2 2 \n", "\n", "2\n", " \n", " \n", " \n", "─\n", " " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Define the Newtonian reference frame\n", "N = ReferenceFrame('N')\n", "\n", "# Define a body-fixed frame along the pendulum, with y aligned from m to the pin\n", "A = N.orientnew('A', 'Axis', [-(sympy.pi/2 - theta), N.z])\n", "\n", "# Define the points and set its velocity\n", "P = Point('P')\n", "P.set_vel(N, R * theta_dot * A.x + R_dot * A.y)\n", "\n", "mp = Particle('mp', P, m)\n", "\n", "mp.potential_energy = m * g * R * sympy.sin(theta) + 1/2 * k * (R - l0)**2\n", "\n", "# Set up the force list - each item follows the form:\n", "# (the location where the force is applied, its magnitude and direction)\n", "# Here, there are no non-conservataive external forces\n", "forces = []\n", "\n", "# Form the Lagrangian\n", "L = Lagrangian(N, mp)\n", "\n", "# Print the Lagrangian as a check\n", "L" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# This creates a LagrangesMethod class instance that will \n", "# allow us to form the equations of motion, etc\n", "LM = LagrangesMethod(L, [R, theta], forcelist = forces, frame = N)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left[\\begin{matrix}g m \\sin{\\left (\\theta{\\left (t \\right )} \\right )} - 1.0 k \\left(L_{0} - R{\\left (t \\right )}\\right) - m R{\\left (t \\right )} \\left(\\frac{d}{d t} \\theta{\\left (t \\right )}\\right)^{2} + m \\frac{d^{2}}{d t^{2}} R{\\left (t \\right )}\\\\m \\left(g \\cos{\\left (\\theta{\\left (t \\right )} \\right )} + R{\\left (t \\right )} \\frac{d^{2}}{d t^{2}} \\theta{\\left (t \\right )} + 2 \\frac{d}{d t} R{\\left (t \\right )} \\frac{d}{d t} \\theta{\\left (t \\right )}\\right) R{\\left (t \\right )}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 2 2 ⎤\n", "⎢ ⎛d ⎞ d ⎥\n", "⎢g⋅m⋅sin(θ(t)) - 1.0⋅k⋅(L₀ - R(t)) - m⋅R(t)⋅⎜──(θ(t))⎟ + m⋅───(R(t))⎥\n", "⎢ ⎝dt ⎠ 2 ⎥\n", "⎢ dt ⎥\n", "⎢ ⎥\n", "⎢ ⎛ 2 ⎞ ⎥\n", "⎢ ⎜ d d d ⎟ ⎥\n", "⎢ m⋅⎜g⋅cos(θ(t)) + R(t)⋅───(θ(t)) + 2⋅──(R(t))⋅──(θ(t))⎟⋅R(t) ⎥\n", "⎢ ⎜ 2 dt dt ⎟ ⎥\n", "⎣ ⎝ dt ⎠ ⎦" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Form the equations fo motion\n", "EqMotion = LM.form_lagranges_equations()\n", "\n", "# Print the simplified version of the equations of motion\n", "sympy.simplify(EqMotion)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The LagrangesMethod class gives us lots of information about the system. For example, we can output the mass/inertia matrix and the forcing terms. Note that the forcing terms include what might be conservative forces and would therefore normally appear in a stiffness matrix." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHYAAAAyBAMAAAB7QDJYAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhBEqyJ2u93N\nZplQnf8bAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADA0lEQVRIDe2WP2gUQRTGv+zebjZ3uSSoCFbZ\nQtCAf+6wszAbjJ1wF7ERwRxpLCxyhYUGJQc2GotcZTgLjY3RQEiIIBEED0WwM4qFlTlEmxghKkk8\nC89v5nb3spOLbi6tD3Zm3rz3m5l9M/N20Vn5jkbkcOUbdvaeaATF6d4kdjVECqgnHGt8fOtsmCMk\n25ow5hpl3wAHGmUngO60Codc8xowmKjLmvuuFy6bXfdVo68bv8nmfdVtyHm16EP030JSNfq6xeOT\nsn3VbUj2eKyIURsLqtHXLc67CZvuz4hQDPm+auMva0Y38AXYoyI1nbHqrh8rLAGzMH8aNWelNQks\nbLJHO2Csoq14TSFqKs8Gx1dExspaRXwZrbatGGtqLGFsvDOSNWfQkoX+1ak5Ky2ja2yjUbKKY1j1\nPxs2UqHzVd0Bw8dZW/ysjBCe3Y8rDbNzSOWCcPh5H2M0A1jzgn8vB/HYcwf3Sr1OER9eG5oUiMiU\nI9KhOScqj32Bs1IXfaq0j8Pi5ccTPq8AZnmjKHxcNt4BTeqiT5VUHhh2oJWAOB99GegSPi4b5RVc\nEXo9uesAz3L4QFssB+YIoI9tj23Pwvwh9Hpyj3P9gmmbDm7SHrOB1gwb7rz9JZhlqjUZuHRjLD9w\nO8Mevmsyi5NHjqZxBzg/PZFHW4n9LsvsHAl+/u3JvFHO6B1AZK0w/QnorFSAKSJMqogX17ElhY0k\nnoJfA6YxtKwg/pKuQh7xEUlPn2Gx2ZoNJk5Gr3kciHJub027iczyiXBMj2Ws9GCsuBNtM2jKA7TJ\n7aU3yHLQIBsdRzy4R9wJBnQwl0ZqHjq/R1K4ZnMZaTCz+vPybIhtWydNNviVWrIS4PZqZfoLYay0\nou4EYsUg9DnS6hU8+AvAcw14zbCWIwlpOMSjkT3DwqbqxgqnChc9qlpfAMaAY++wVLkKLBb8Xmtq\nnmfDoe6xVdM/y1iu6iLO11ZZcReErL8L1Z4Q5QPpE7iDIaiqy4isojlRbfF96+YcOdwWi55t/QNv\n49/7D+y5vaoPt+mQAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}m & 0\\\\0 & m R^{2}{\\left (t \\right )}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡m 0 ⎤\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎣0 m⋅R (t)⎦" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Output the inertia/mass matrix of the system\n", "LM.mass_matrix" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left[\\begin{matrix}- g m \\sin{\\left (\\theta{\\left (t \\right )} \\right )} - 0.5 k \\left(- 2 L_{0} + 2 R{\\left (t \\right )}\\right) + m R{\\left (t \\right )} \\left(\\frac{d}{d t} \\theta{\\left (t \\right )}\\right)^{2}\\\\- g m R{\\left (t \\right )} \\cos{\\left (\\theta{\\left (t \\right )} \\right )} - 2 m R{\\left (t \\right )} \\frac{d}{d t} R{\\left (t \\right )} \\frac{d}{d t} \\theta{\\left (t \\right )}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 2⎤\n", "⎢ ⎛d ⎞ ⎥\n", "⎢-g⋅m⋅sin(θ(t)) - 0.5⋅k⋅(-2⋅L₀ + 2⋅R(t)) + m⋅R(t)⋅⎜──(θ(t))⎟ ⎥\n", "⎢ ⎝dt ⎠ ⎥\n", "⎢ ⎥\n", "⎢ d d ⎥\n", "⎢ -g⋅m⋅R(t)⋅cos(θ(t)) - 2⋅m⋅R(t)⋅──(R(t))⋅──(θ(t)) ⎥\n", "⎣ dt dt ⎦" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Output the forcing terms of the system\n", "LM.forcing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also use builtin functions to write the sytsem as a set of first order ODEs, suitable for simluation." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left[\\begin{matrix}\\frac{d}{d t} R{\\left (t \\right )}\\\\\\frac{d}{d t} \\theta{\\left (t \\right )}\\\\\\frac{- g m \\sin{\\left (\\theta{\\left (t \\right )} \\right )} - 0.5 k \\left(- 2 L_{0} + 2 R{\\left (t \\right )}\\right) + m R{\\left (t \\right )} \\left(\\frac{d}{d t} \\theta{\\left (t \\right )}\\right)^{2}}{m}\\\\\\frac{- g m R{\\left (t \\right )} \\cos{\\left (\\theta{\\left (t \\right )} \\right )} - 2 m R{\\left (t \\right )} \\frac{d}{d t} R{\\left (t \\right )} \\frac{d}{d t} \\theta{\\left (t \\right )}}{m R^{2}{\\left (t \\right )}}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ d ⎤\n", "⎢ ──(R(t)) ⎥\n", "⎢ dt ⎥\n", "⎢ ⎥\n", "⎢ d ⎥\n", "⎢ ──(θ(t)) ⎥\n", "⎢ dt ⎥\n", "⎢ ⎥\n", "⎢ 2⎥\n", "⎢ ⎛d ⎞ ⎥\n", "⎢-g⋅m⋅sin(θ(t)) - 0.5⋅k⋅(-2⋅L₀ + 2⋅R(t)) + m⋅R(t)⋅⎜──(θ(t))⎟ ⎥\n", "⎢ ⎝dt ⎠ ⎥\n", "⎢────────────────────────────────────────────────────────────⎥\n", "⎢ m ⎥\n", "⎢ ⎥\n", "⎢ d d ⎥\n", "⎢ -g⋅m⋅R(t)⋅cos(θ(t)) - 2⋅m⋅R(t)⋅──(R(t))⋅──(θ(t)) ⎥\n", "⎢ dt dt ⎥\n", "⎢ ──────────────────────────────────────────────── ⎥\n", "⎢ 2 ⎥\n", "⎣ m⋅R (t) ⎦" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Make the call to set up in state-space-ish form q_dot = f(q, t)\n", "lrhs = LM.rhs()\n", "\n", "# Simplify the results\n", "lrhs.simplify()\n", "\n", "# Output the result\n", "lrhs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also linearize these equations with builtin SymPy methods. Let's do so about the $\\theta = 0$, $\\dot{\\theta} = 0$ operating point. The resulting equations returned are a system of first order ODEs in state-space form:\n", "\n", "$$ \\dot{x} = Ax + Bu $$\n", "\n", "See the [SymPy Documentation](http://docs.sympy.org/0.7.6/modules/physics/mechanics/linearize.html#linearizing-lagrange-s-equations) for much more information." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Define the point to linearize around\n", "operating_point = {R: l0, R_dot: 0.0, theta: sympy.pi/2, theta_dot: 0.0}\n", "\n", "# Make the call to the linearizer\n", "A, B, inp_vec = LM.linearize([R, theta], [R_dot, theta_dot],\n", " op_point = operating_point, \n", " A_and_B = True)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAEGG/x+CqVwTigqKXwAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}0 & 0 & 1 & 0\\\\0 & 0 & 0 & 1\\\\- \\frac{1.0 k}{m} & 0 & 0 & 0\\\\- \\frac{2 \\frac{d^{2}}{d t^{2}} \\theta{\\left (t \\right )}}{L_{0}} & \\frac{g}{L_{0}} & 0 & 0\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 0 0 1 0⎤\n", "⎢ ⎥\n", "⎢ 0 0 0 1⎥\n", "⎢ ⎥\n", "⎢ -1.0⋅k ⎥\n", "⎢ ─────── 0 0 0⎥\n", "⎢ m ⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎢ d ⎥\n", "⎢-2⋅───(θ(t)) ⎥\n", "⎢ 2 ⎥\n", "⎢ dt g ⎥\n", "⎢───────────── ── 0 0⎥\n", "⎣ L₀ L₀ ⎦" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABUAAAAUBAMAAACQZWsAAAAAG1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAB4Gco9AAAACHRSTlMAdt3NMolEZgN4ymIAAAAJcEhZcwAADsQAAA7EAZUrDhsA\nAAAgSURBVAgdYyhWYwADRmUHBoYwCJs1AUgPI7YQzI9KDgASXg6/U+SevgAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}\\end{matrix}\\right]$$" ], "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation\n", "We can pass these equations of motion to numerical solver for simluation. To do so, we need to import [NumPy](http://numpy.org) and the [SciPy](http://www.scipy.org) ode solver, ```ode```. We'll also import [matplotlib](http://www.scipy.org) to enable plotting of the results.\n", "\n", "For a system as simple as this one, we could easily set up the necessary components for the numerical simulation manually. However, here we will automate as much as possible. Following a similar procedure on more complicated systems would be necessary." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# import NumPy with namespace np\n", "import numpy as np\n", "\n", "# import the scipy ODE solver\n", "from scipy.integrate import ode\n", "\n", "# import the plotting functions from matplotlib\n", "import matplotlib.pyplot as plt\n", "\n", "# set up the notebook to display the plots inline\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Define the states and state vector\n", "w1, w2, w3, w4 = sympy.symbols('w1 w2 w3 w4', cls=sympy.Function)\n", "w = [w1(t), w2(t), w3(t), w4(t)]\n", "\n", "# Set up the state definitions and parameter substitution\n", "sub_params = {R : w1(t),\n", " theta: w2(t),\n", " R_dot : w3(t),\n", " theta_dot: w4(t), \n", " m : 1.0,\n", " g : 9.81,\n", " k : 100.0,\n", " l0 : 2.0}\n", "\n", "# Create a function from the equations of motion\n", "# Here, we substitude the states and parameters as appropriate prior to the lamdification\n", "eq_of_motion = sympy.lambdify((t, w), \n", " lrhs.subs(sub_params))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a most initial conditions, this system will be unstable. Here, let's simluate an initial angle of $\\theta = 75^\\circ$ with an angular velocity of $\\dot{\\theta} = 0.545$ rad/s. In this case, we should expect to see the spring compress under the weight of gravity and the system pivot about the ground contact point. Because there is no restoring force or dissipation, the initial angular velocity will result in $\\theta$ increasing for all time after $t = 0$ and the inverted pendulum falling over. So, we'll stop the simluation when the $\\theta$ reaches $\\theta_f =125^\\circ$.\n", "\n", "Note that this model assumed that the spring is always in contact with the ground. For the \"pure\" SLIP model, a nonlinear flight condition is typically added to the simluation to model leaving the ground. Our stop condition of $\\theta_f = 125^\\circ$ *very* roughly approximates a complete stance cycle for this SLIP model." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Set up the initial conditions for the solver\n", "R_init = 2.0 # Initial spring length\n", "R_dot_init = 0.0 # Initial radial velocity\n", "theta_init = 75.0 * np.pi/180 # Initial angle\n", "theta_dot_init = 0.545 # Initial angular velocity\n", "\n", "# Pack the initial conditions into an array\n", "x0 = [R_init, theta_init, R_dot_init, theta_dot_init]\n", "\n", "# Create the time samples for the output of the ODE solver\n", "sim_time = np.linspace(0.0, 5.0, 1001) # 0-5s with 1001 points in between" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Set up the initial point for the ode solver\n", "r = ode(eq_of_motion).set_initial_value(x0, sim_time[0])\n", " \n", "# define the sample time\n", "dt = sim_time[1] - sim_time[0] \n", "\n", "# pre-populate the response array with zeros\n", "response = np.zeros((len(sim_time), len(x0)))\n", "\n", "# Set the initial index to 0\n", "index = 0\n", "\n", "# Now, numerically integrate the ODE while:\n", "# 1. the last step was successful\n", "# 2. the current time is less than the desired simluation end time\n", "# 3. The angle is less than 125deg\n", "while r.successful() and r.t < sim_time[-1] and (r.y[1] * 180/np.pi < 125):\n", " response[index, :] = r.y\n", " r.integrate(r.t + dt)\n", " index += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's plot the results. The first column of the ```response``` vector is the radial position of the endpoint, $R$, and the second is angle of the pendulum, $\\theta$. We first plot $R$, then $\\theta$ below, after setting up plotting parameters to make the plot more readable." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGVCAYAAAB+cswPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8XHW5P/DPk6ZJ0wDdwIU2tE0pllqgTSsistMCKsrW\nFlTcWFq84k+vAoV73e69yua9eq96hbbgriwtixuLFLgoikKSxgghCk3RdEmXpEmTmckkM+f5/XFO\nJslkksw8mZkzJ/28X695QWbOOXnyydLvnO8mqgoiIiIiCo4ivwsgIiIiosywAUdEREQUMGzAERER\nEQUMG3BEREREAcMGHBEREVHAsAFHREREFDBswBEREREFDBtwRERERAHDBhwRERFRwLABR0RERBQw\nxX4XEBQXXHCBPvHEE36XQUREROObpHMQ78CladeuXX6XEFjNzc1+lxBYzM6GudkxOxvmZsfsbNiA\nS5PjOH6XEFihUMjvEgKL2dkwNztmZ8Pc7Jidjaiq3zUEwrJly7S6utrvMoiIiGh8YxdqNsViMb9L\nCKzW1la/SwgsZmfD3OyYnQ1zs2N2NmzApamnp8fvEgKL4xvsmJ0Nc7NjdjbMzY7Z2bALNU3sQrVz\nHAdFRXyvYMHsbJibHbOzYW52zG4IdqFmEycx2EWjUb9LCCxmZ8Pc7JidDXOzY3Y2bMClqbu72+8S\nAquhocHvEgKL2dkwNztmZ8Pc7JidDbtQ01RVVaW1tbV+lxFIkUgEZWVlfpcRSMzOhrnZMTsb5mbH\n7IZIqwu14HdiEJE13v8u9f67TlXb0zinzfuwUlXvzOT1VNg/b1daWup3CYHF7GyYmx2zs2FudszO\npqBbJSKyRlU3eI+1AGq8x4jnAICqblbVzQC2iMj6dF8fTjgcHsuXckirr6/3u4TAYnY2zM2O2dkw\nNztmZ1OwDTgRmZr8nKpuADBdRJaPcOpa77i+c2oBLM/g9ZRKSkrSqpuGqqio8LuEwGJ2NszNjtnZ\nMDc7ZmdTsA04AJUA1qdoyDV5rw3hHVuV4qV2EVk+2usjFVNcXPC9zQVrxowZfpcQWMzOhrnZMTsb\n5mbH7GwKtlWiqrUisjTFeLdKuI24VCoBpBof1wa34dY2yutbhqsnumcPIo89jqJpU1E8fz4mHHnk\nqF8DuRobG7FgwQK/ywgkZmfD3OyYnQ1zs8tGdk5nJ6IvvIDo839A7G9/Q2z7dsT37wNicUAVRUcd\nhQlvfSsmLngbSk4+GaXvOgXFAb/zV7ANOCDRvZkgIisBNKnqcA2t6eifnDBQO4AZabw+rKI9e9B2\n7Zr+j9/yFpSe8k6Uvec9KD37LBSVl490+iGtPAvZqCqctjY4e/YCqsCEIhTNmIGiI4+ESFoTdgIp\nG9nlgnZ3I75/PyACmTgRRVOmQApoIHKh5pYLTiQCZ/9+oKgIUlaGosMPh0ycaL7eoZRdNpUXFaH3\nb3+Dc7ATUlQElJSgeNZMFE0dMhqIklh/5jQWQ/T/nkPovvvQveVpYIQtL52WFjgtLejduhXh++4H\nAExcshiTL7kEky+9BEXTpplq8FMhd6EO4nV/3gLg3Dx+zjUiUi0i1d2lk6BnnI6JVVXQsjI4LS2I\nPPpztK29DrtOOAkHbr4FXa+8gpqaGkQiETiOg7q6usQeb42NjYntQpqbm9HY2AjA3QOurq4OjuMg\nEomMy/MrKioyPj/e04NXvvc9tPzrF7D3wvdj57z5aDlxMfauOA97zzsfe89dgZbFVdj1tuPxxtnn\nov3W23DwmWdR8+KLBff1j+X8yZMn+16/Og5ee/BB7PjSl7F/9RXY8fYTsGvefOx557uw5+RT0LJk\nKXYdexx2n3oatl16GQ6s34CebU2+5jdz5syC+P5l+3zt6UHzAw9i+z9/DvsuvhQ7j1uA3ccehz2n\nnOp+L044CbuOPQ57zj4H2z74IezZsBHxPXsy+vxHHnlkwX79hXR+fNdu7Pnf/0XT6iuwe0kVis4+\nF3vPPhf7L7oY+97/Aew7/wLsfvsJ2PX2E/D3iy5G8223o9e7TiHUX0jnz5w5M7PzX3kFoQc3Yfe7\nT0frxz6O7ieeBFTRs2ABJn36ekz74ffRtmE9Sv/4Ao5+owmdj/8azsMP4ciHNsH59PXoPfVUSHk5\nerfWoeNLX0bLyadg/xe+iK1PPFEQ+aUrMOvAeTNF71DV4bpP4Y1j26Sq05KefwrAUwBqR3p9pOVE\nTjzxRO2bKaOOg9i2beh++hl0P/Y4emr6J8aWvf9CHHHzOhTPmZPx1zheNTc3pz1INfbGGwj98EcI\nP/IonH37Br0mU6ZgwlveDBRNAOJxxPfsgXZ0DDqm6M1vwuTVq1H+4Q8F/vY4kFl22RbbsQOhH/0Y\nkYcfQXz37sEvFhcn7n5qTw+cAweApN1KJi5ahPKPXImyiy9C0WGH5bFyf3PLhd7GRnR97weI/PrX\n0PakUSClpZjgjSFywmH3dyLp73rJKe9E+Uc/irL3vmfUu3PjLbts0ngc3Y89jtDPfobo754flLOW\nlKB4Zt8dN4VGIoj/oxmatILBxBNOwOQPXoHJq1aiyHuDdqjL5Geu+9ln0fGlryDW5DYFJsyZjfIP\nfQiTV63EhDe9Ke3P6UQi6P7NUwjffz+iv/2d+2RpKQ679hoc/ql/QtERR2T8dWRRWt1KgWjAichN\nADaP1HjzjpsK4ICqStLzNQDWAage6fURumaxaNEiffnll1O+1vvXv6Lr3u8hvPkhIBoFJk7EYZ/4\nOA6/4fPsWkV64xt6X38dnf/zbUQefTTRECieNw+T3nMBSt91CkqWLEHRlCmDzlFVOAcOoPfPf0b0\nt79D5KktiG/f7r5YXIzJq1bi8M/8v0A35PwYV9O7rQmd3/K+F16XxISKCkw6/zyUnvJOlCxejKI3\nv9ntJvJodzdib7yBnj//GdH/ew7dz/020biWKVNw+HVrUX71VXn7fRgv45F6tm7FwW/+D6JPP514\nrnjB21B2/vkoWbYME086EUXTpw8aRuCEw4i9/jp6ttYh+syziD7/PNTbSaboLW/GEZ/5DCZ/8Iph\nG3LjJbts0ngckYcfQee3v4PYtm3ukyUlmLR8OSaddSZKTjkF26LdWLBw4eDzVOG0tCD6pz+5f6Oe\neDLxe1E0YwYO++R1KP/YRw/5hlw6P3Pxlha0f/HL6H7sMQDAhDlzcMQ/fxZlF18EGeMkw56XX0HX\nd76DyC9/BcD93kz5ypdRdsnFfg3RGR8NOG/dti0DG28isny4xpaIbAMwaPKDiGxT1XnpvD6cdDaz\nj+3chc6vf91tyKliQkUFpt55OyadcUY6X+ohyTl4EAf/6xsIff8HQDzuNrwuuRjlH/0oJi5ZnNEv\nj6qi58UXEfrxTxD5+S/chuDEiThszbU4/LOfOeT/SI7G6ejAwW/+t/u9iMWACRNQdtEHUP7Rj6Bk\n2bLMvhfd3Yg89jhCP/wRerzfm6IZM3DEzesw+YrLBzX+aKjYzl04ePvtiDz8CABAJk3C5CsuR/mV\nH8bE44/P6FpOVxfCmx9C6Ic/QuxvfwMATJh9jPsP1HnnZb328Sb60kvo+MKX0Ou9gZ9wzDE4bO21\nmHzRRRmPm9JIBJEnn0TXPfeid2sdALdRPeVLX0LZB94/rsfzjkXkiSdw4PM3QtvbIZMn4/DPfw6H\nXX3VmMZ6ptKzdSs6/v0/0PPiSwCA0nPOwdTbb0PxzKOz+nnSkN4PgqoW7APu+mxVAz6e6j233Pu4\nEsAmAFMHHLMGbldr38dVANan+/pwj5NOOknTFa2v1z0rztcdR8/SHUfP0gNf/LI63d1pnz/e7N+/\nP+Xz4ccf110nLnZzmlmhbTfcqL3/+EdWPmfvtiZtvf7/6Y6ZFbrj6Fm6e9nJGtnydFaunU/DZZdt\n4cceG/y9+PwN2vv3v2fl2t2/e173vv+ixO/D3g9crD2vvpqVaw8nX7llm+M42vXDH+nOY49z85o7\nT9u/dqvGsvD1OPG4hn/5K205/czE92L/1ddobOeuQccFNbtsi3d2atsNNyay2r3sZO164EF1enpS\nHp9Jbo7jaOSZZ3TPBe9JXH/f6iuy9vcvaIbLLh4KaduN6/oz+vCV2rtjZ05rcRxHu+6/X3ce/3bd\ncfQs3XncAvf77jg5/bxJ0msjpXtgvh9e40yHeUzV/gbeAbjbYQ08d4332koAN6W49oivp3ocf/zx\nGaXv9PTowW99W3ccM0d3HD1L95z/Hu1tasroGuPF1q1bB30c7+jQts98tv8f9Isu0ehf/pKTzx2t\nqdU95/f/kTxw8y0aD4dz8rlyITm7bIu3t2vrpz/T/724ODffC8dxNPToo7prcVWiYdJ5z705+6OY\n69xyoXfHDt13+Qf7G1fXrMnJP+hOb6923nOv7pz/NvcfqOPfruFf/irxehCzy7buF1/U3aec6n4v\n5lRqxx13jvp3w5KbE49r109+qjsXLnK/F287XkObNue7seC7VNn1bt+uLWefM/jvRTyet5piLS26\n/+prEr+Prdd/WuOdnfn69MFuwBXaY+nSpRnm74rW1urud74r0ZIPP/GE6TpBFh/wS9f9UrXufsc7\n3V+Kyvz8UjqxmB787l26Y/Zc3XH0LG05/cycNRizLZ7DbLpffFF3L32H+7NZeax23vu9nH8v4h0d\ng+5q7PvwlRrbuzf7nyePf+izIfzrx3Tn247XHUfP0l2LTtTwL36Z888Z27lL93/044nvRdvnb9B4\nKBS47LLJicW04447dcesY9w33ivO157GxrTOHUtusf37df9VV/c3FtZep/H2dvP1giY5u8hzz+nO\nhe4dsJYzztKeVxp8qcu9G/eA7pw3370Le+ppGv3zn/PxqdmAy+ZjyZIlGebfL97ervuvWZPonjr4\n7e8cUu+wwuGwOo6jnd//fqIRtec979We117Lax3Rv7ysLWeenXhH1/XAg3n9/BbhHNwtdBxHOzfe\n0393+H3v157Xt2X984wk/NhjibsOuxZXafeLL2X3+gG5y+r09Gj7v/17/123q67W2L59+fv8fb+X\nc+cl/rHsfPnlvH3+QhJrbdV9V3h3QGcdo+233qZONJr2+WP9mXMcR7vuuy9xZ3T3u0/P+VCDQtGX\nneM42rlhY6IBvf9jH9f4wYM+V6fa89pr2nLuCvdnY/bcnPYeeNiAy+Yj0y7UZI7juF2qfe+wPv0Z\ndSKRMV0zKKp//3t3PFpfN+aXvjzsOJJcc8Jhbbvxpv5a/vULvtWSjurq6qxeLx4Kaesn/ynx9bf/\n27/79vXHdu3SvZetTPxR7Prpz7J27WznlguxvXt17yWXul//MXO0c8NG397Y9bz6qrac5XZX/WP+\ncRp5+hlf6vBLtL5ed598ivuG4oSTtPv532d8jWz9zPVu3657lp/n3hk/9jgN/fwXWbluIauurlYn\nFtMDX/xS4m9Tx51fz2uX6WicSEQP/OsXBgxxuDaXd0nZgMvmYyx34AYKP/ZY4nbs3vdflJPuo0IS\na2nR3edf4P4xmjdfQ48+6ndJqqra9ZOf6o45le734dLLNNba5ndJKWXzTlJs9+7EeMCd8982aNyT\nX5yenkF/tA/c8i8Z3fUYTqHfgev5618TQyt2LanS7j/9ye+SNN7Vpfuvuba/p+B/v3tI9BSEf/Vr\n3VE5z7sbfeGQSR1pXyeLP3PxcFhbr/90/xutW28rqMZMtoXa2vp7qeZUFsy/E6mEf/XrxHCH3e86\nVaP19bn4NGzAZfNhHQOXSvQvL+vuZSe7PwDvfJf2/O1vWbt2IelpaOj/Ok85teC6A6LVNbqrammi\nu6IQJ5lkazxS9C8v666qZd44jncX3M9c1/339zeoL1s55gZ1IY/jijz328Q/AHved6HG9uzxu6QE\nJx7X9v/6Rn9PwaeuH7c9BY7j6MG77krMVG/7/A1jWi0g2z9zjuNo5z336o6K2YlxcU6BvzGxiLW2\n6Z6LLnbfWC5YqN2//4PfJY2qd/v2/slxcyq18/s/yPabHTbgsvkYaxdqstiePbrnve9LzAKz3LIv\nZJFnntGdxy3QHUfP0u3nLM/KMgi5ENu5K9FdsevtJ2j3iy/6XdIg2ZgRGHlqS2JZir0XX6Kx1tYs\nVJZ90Zpa3bWkqr+R+drr5msV6kzKrp/+LDH2cP81awpyRvTWrVs1/PjjibFYey78wLjrKXB6e7Xt\nppsTDdWD3/nfMf8DnKufucizzyb+lu658AN5HSOZa71//3tiWZvdy05Oe8JIIXAiET1wy7/0v9m5\n7pPZHK/HBlw2H5msA5eueDjcP/PomDmBGFSfjs4f/LD/XeN1n9R9O3O7bs9YxTs7dd+VH01Mbgg9\n+nO/S0oY65pcnffcmxgQ3Hr9pwt+PcLYzl2JNRR3Hv927f7d86brFNpaZk48ru1fu7W/S+yrXyvY\nLrG+7HpeaUjMGN/9jndqT4M/MwGzLX7woO778JWJ3/dszfjN5c9cz6uv9n8vTjlVe/7615x9rnyJ\n1tfrrpOWuL/rZ52jsV22rmu/hR79+eCJJy+/ko3LsgGXzUc2u1AHcmIxbf/Kv/UP3Pz6fwZ23MmQ\nr+X2Owr2H6lkTm/voHdTB7/17cB+H1S9r2fAgNuO//pGYL6eeFeX7v/4J/rf2GRxcoMfnHBY91+7\n1v16KmZr109+6ndJaYvt3at7LvxAYtxk5Kktfpc0Jr07dmrLucv7Jyu8VPiTXfoM6rVZsFAjz/3W\n75LMIs8+m2j07Ft9hcY7OvwuaUx6Xt/WP0t17jzt+slPx/r3lg24bD7e/va3Z5h/Zjq//4NA3SlJ\nFg+F+u8mzp6rXfc/kHjt1QIb+zYcx3H04N3r+8fEfO7zvs9QtWQX7+rSfR/5WP+A4IcezkFlueXE\nYtr+H18dPFs2Fkv7/EL5mYvt3at73vf+xCKtQfhHNzk7Jxzun7k86xjt3HhPYN4MDBStr0900bec\nfqb2vvFGVq+fj5+5eDjcP9j/mDmBejPQJ/TgpsQwgtbrP61ONFowv69jkbzCQev1n9Z4V5f1cmzA\nZfNxwgknZJh/5gaNVbr0Mo23FebMyGSDZjemGM/3j4BtDxN+7DHdWXls/7tDHxfUzDS72O7duuc8\nb9bvwkXa/cc/5qiy/Oj62X39Y8Y+/om0/yAWws9cT2NjYmmK3SefEpjxPamycxxHOwZMbjiw7mbf\n39xkIvzkb/pn/1+2Mid/W/P1MzekO/7f/yOjNzd+cRxHD/7Pt1IOIyiE39dsCT30cOLf8d0nn2Ld\nwpENuGw+ctWFmsydLejOjGw57YyCnBk50JDZjWMYeF5Iolu3JsZntJx5dtb2Bc2lnpdfSeyssPvU\n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\nzHIBt6bHjQZFTUk/OduMdE0z2zazT2b26a+//uoMsj///LMzZ399fa2zszO12221Wi2dnJyo1Wqp\n3W7r7OxM19fXkrI5/kVtf3t7m3T/62x/c3OTdP/rav/t27ek+19n+69fvybd/7raf/36Nen+19n+\n27dvSfd/0u2rmtldqHFKcz+E8Krr/UNJVyGE3VHbSDoa9Zo5dqECAIApSH8XqrI7Zt1WJV2P0cZz\nTT08PAz6MgbI/xWC0ZGdD7n5kZ0PufmRnc8sF3CflBVW3dYk9Xso6bA2nmtKYg3cOFjf4Ed2PuTm\nR3Y+5OZHdj4zO4UqSWb2WdJmCKFZfK97CnSUNp5rSkyhjqPdbnMMixPZ+ZCbH9n5kJsf2fWYiynU\nPUm/5S/MbEPSceF1w8wO4/EgldpU+Hqpdrvt6T8k3d/f192FZJGdD7n5kZ0PufmRnc9MF3AhhANJ\nn+MZbm8lbYUQdgofaUjaUmFd27A2Fa5Ziicx+F1cXNTdhWSRnQ+5+ZGdD7n5kZ3PTE+hzpKNjY1w\nejpwmRz6aLVaWl5errsbSSI7H3LzIzsfcvMjux5zMYU6M5if91taWqq7C8kiOx9y8yM7H3LzIzsf\nqpKK7u7u6u5Css7Pz+vuQrLIzofc/MjOh9z8yM6HAq4inoXqx3Pu/MjOh9z8yM6H3PzIzoc1cBVx\njAgAAJgC1sBNErtQ/fLnvmF0ZOdDbn5k50NufmTnQwFXEZsY/FZWVuruQrLIzofc/MjOh9z8yM6H\nKdSKmEIFAABTwBTqJPEsVD+ec+dHdj7k5kd2PuTmR3Y+3IGryMz+K+lfdfcjUX+T9J+6O5EosvMh\nNz+y8yE3P7J76j8hhH8M+9AP0+jJnPhXCOF13Z1IkZl9IjsfsvMhNz+y8yE3P7LzYQoVAAAgMRRw\nAAAAiaGAq+6g7g4kjOz8yM6H3PzIzofc/MjOgU0MAAAAieEOHAAAQGIo4DBVZtYws626+4HFwHhD\nXRh7+N44RiQys21JN/FlI4Tw4Xu0mTeODDYk/W5mq5Kakj5J2g0hnH7Hbs4kM9uQ9FsI4V3Fzy/8\neJNGzo3xVhDHkCRtxt93QwjNCm0Yd6Nnx9hTJ7fV+PKVpL0QwlWFNgs/5oahgNPjD2YI4WN8vWFm\n+yGEnUm2mTfeDEIIz81sddj/OOZVLEB+jS8bFdsw3hy5SYy3nJlthxAOiq8lnSj7n2rfNtJijzvJ\n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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set the plot size - 3x2 aspect ratio is best\n", "fig = plt.figure(figsize=(6, 4))\n", "ax = plt.gca()\n", "plt.subplots_adjust(bottom=0.17, left=0.17, top=0.96, right=0.96)\n", "\n", "# Change the axis units to serif\n", "plt.setp(ax.get_ymajorticklabels(), family='serif', fontsize=18)\n", "plt.setp(ax.get_xmajorticklabels(), family='serif', fontsize=18)\n", "\n", "# Remove top and right axes border\n", "ax.spines['right'].set_color('none')\n", "ax.spines['top'].set_color('none')\n", "\n", "# Only show axes ticks on the bottom and left axes\n", "ax.xaxis.set_ticks_position('bottom')\n", "ax.yaxis.set_ticks_position('left')\n", "\n", "# Turn on the plot grid and set appropriate linestyle and color\n", "ax.grid(True,linestyle=':', color='0.75')\n", "ax.set_axisbelow(True)\n", "\n", "# Define the X and Y axis labels\n", "plt.xlabel('Time (s)', family='serif', fontsize=22, weight='bold', labelpad=5)\n", "plt.ylabel('Displacement (m)', family='serif', fontsize=22, weight='bold', labelpad=10)\n", "\n", "# Plot the data\n", "plt.plot(sim_time, response[:, 0], linewidth=2, linestyle='-', label = 'R')\n", "\n", "# uncomment below and set limits if needed\n", "plt.xlim(0, sim_time[index-2])\n", "# plt.ylim(-1, 1)\n", "\n", "# Create the legend, then fix the fontsize\n", "# leg = plt.legend(loc='upper right', ncol = 1, fancybox=True)\n", "# ltext = leg.get_texts()\n", "# plt.setp(ltext, family='serif', fontsize=20)\n", "\n", "# Adjust the page layout filling the page using the new tight_layout command\n", "plt.tight_layout(pad=0.5)\n", "\n", "# Uncomment to save the figure as a high-res pdf in the current folder\n", "# It's saved at the original 6x4 size\n", "# plt.savefig('Spring_Pendulum_Response_Radial.pdf')\n", "\n", "fig.set_size_inches(9, 6) # Resize the figure for better display in the notebook" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set the plot size - 3x2 aspect ratio is best\n", "fig = plt.figure(figsize=(6, 4))\n", "ax = plt.gca()\n", "plt.subplots_adjust(bottom=0.17, left=0.17, top=0.96, right=0.96)\n", "\n", "# Change the axis units to serif\n", "plt.setp(ax.get_ymajorticklabels(), family='serif', fontsize=18)\n", "plt.setp(ax.get_xmajorticklabels(), family='serif', fontsize=18)\n", "\n", "# Remove top and right axes border\n", "ax.spines['right'].set_color('none')\n", "ax.spines['top'].set_color('none')\n", "\n", "# Only show axes ticks on the bottom and left axes\n", "ax.xaxis.set_ticks_position('bottom')\n", "ax.yaxis.set_ticks_position('left')\n", "\n", "# Turn on the plot grid and set appropriate linestyle and color\n", "ax.grid(True,linestyle=':', color='0.75')\n", "ax.set_axisbelow(True)\n", "\n", "# Define the X and Y axis labels\n", "plt.xlabel('Time (s)', family='serif', fontsize=22, weight='bold', labelpad=5)\n", "plt.ylabel('Angle (deg)', family='serif', fontsize=22, weight='bold', labelpad=10)\n", "\n", "# Plot the data\n", "plt.plot(sim_time, response[:, 1] * 180/np.pi, linewidth=2, linestyle='-', label = '$\\theta$')\n", "\n", "# uncomment below and set limits if needed\n", "plt.xlim(0, sim_time[index-2])\n", "# plt.ylim(-1, 1)\n", "\n", "# Create the legend, then fix the fontsize\n", "# leg = plt.legend(loc='upper right', ncol = 1, fancybox=True)\n", "# ltext = leg.get_texts()\n", "# plt.setp(ltext, family='serif', fontsize=20)\n", "\n", "# Adjust the page layout filling the page using the new tight_layout command\n", "plt.tight_layout(pad=0.5)\n", "\n", "# Uncomment to save the figure as a high-res pdf in the current folder\n", "# It's saved at the original 6x4 size\n", "# plt.savefig('Spring_Pendulum_Response_Angle.pdf')\n", "\n", "fig.set_size_inches(9, 6) # Resize the figure for better display in the notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that, as expected, the angle of $\\theta$ increases for all time. The system, as we've modeled it so far, rotates about the ground contact point.\n", "\n", "We can maybe get a better understanding of the response by plotting a planar view of the endpoint motion over time. To do so, we need to define the $x$ and $y$ position of the endpoint." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Defines the position of the endpoint in x-y\n", "# The origin is set as the pin location\n", "x = -response[0:index,0] * np.cos(response[0:index,1])\n", "y = response[0:index,0] * np.sin(response[0:index,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's plot the position over time." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set the plot size - 3x2 aspect ratio is best\n", "fig = plt.figure(figsize=(6, 4))\n", "ax = plt.gca()\n", "plt.subplots_adjust(bottom=0.17, left=0.17, top=0.96, right=0.96)\n", "\n", "# Change the axis units to serif\n", "plt.setp(ax.get_ymajorticklabels(), family='serif', fontsize=18)\n", "plt.setp(ax.get_xmajorticklabels(), family='serif', fontsize=18)\n", "\n", "# Remove top and right axes border\n", "ax.spines['right'].set_color('none')\n", "ax.spines['top'].set_color('none')\n", "\n", "# Only show axes ticks on the bottom and left axes\n", "ax.xaxis.set_ticks_position('bottom')\n", "ax.yaxis.set_ticks_position('left')\n", "\n", "# Turn on the plot grid and set appropriate linestyle and color\n", "ax.grid(True,linestyle=':', color='0.75')\n", "ax.set_axisbelow(True)\n", "\n", "# Define the X and Y axis labels\n", "plt.xlabel('Horizontal Position (m)', family='serif', fontsize=22, weight='bold', labelpad=5)\n", "plt.ylabel('Vertical Position (m)', family='serif', fontsize=22, weight='bold', labelpad=10)\n", "\n", "# Plot the data\n", "plt.plot(x, y, linewidth=2, linestyle='-')\n", "\n", "# uncomment below and set limits if needed\n", "# plt.xlim(-1, 1)\n", "# plt.ylim(1.25*np.min(y), 0.01)\n", "\n", "# Adjust the page layout filling the page using the new tight_layout command\n", "plt.tight_layout(pad=0.5)\n", "\n", "# Uncomment to save the figure as a high-res pdf in the current folder\n", "# It's saved at the original 6x4 size\n", "# plt.savefig('Spring_Pendulum_Response_Planar.pdf')\n", "\n", "fig.set_size_inches(9, 6) # Resize the figure for better display in the notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Licenses\n", "Code is licensed under a 3-clause BSD style license. See the licenses/LICENSE.md file.\n", "\n", "Other content is provided under a [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/), CC-BY-NC 4.0." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This cell will just improve the styling of the notebook\n", "# You can ignore it, if you are okay with the default sytling\n", "from IPython.core.display import HTML\n", "import urllib.request\n", "response = urllib.request.urlopen(\"https://cl.ly/1B1y452Z1d35\")\n", "HTML(response.read().decode(\"utf-8\"))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" } }, "nbformat": 4, "nbformat_minor": 1 }