Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"from numpy import sin,cos,pi\n",
"from scipy.linalg import *\n",
"from scipy.optimize import fsolve,root\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import pretty_plots"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"pretty_plots.setdefaults()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from __future__ import print_function\n",
"from ipywidgets import interact, interactive, fixed, interact_manual\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![double pendulum](./figures/p1-10_double_pendulum.png)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"t=np.linspace(0,2*pi/50,100); # create time varying from 0-0.126 s (or one period)\n",
"x=20*sin(50*t); # define x in terms of time \n",
"dx=20*50*cos(50*t); # define dx/dt in terms of time (note dx=dx/dt)\n",
"t1=0.2*pi*cos(50*t); # define theta1 (t1) \n",
"dt1=-10*pi*sin(50*t); # define dtheta1/dt (dt1)\n",
"t2=0.2*pi*sin(50*t-pi/3); # define theta2 (t2) ;\n",
"dt2=10*pi*sin(50*t-pi/3); # define dtheta2/dt (dt2);\n",
"L1=1;L2=1.5; # set lengths for L1 and L2 (none were given in problem so 1 and 1.5 mm were\n",
" # chosen arbitrarily"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.26847839, -1.26847839])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xnx=np.array([x,-x])\n",
"xnx[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'End velocity')"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"rcc=np.array([x+L1*sin(t1),-L1*cos(t1)]) # position of connection between links\n",
"rco=np.array([x+L1*sin(t1)+L2*sin(t2),-(L1*cos(t1)+L2*cos(t2))]) # create a row vectors of\n",
" # x-component and y-component of\n",
" # pendulum position C (r_C/O) \n",
"vco=np.array([dx+L1*cos(t1)*dt1+L2*cos(t2)*dt2,\n",
" (L1*sin(t1)*dt1+L2*sin(t2)*dt2)]) # create row\n",
" # vectors of\n",
" # the x- and\n",
" # y-component\n",
" # velocity of\n",
" # point C\n",
"\n",
"plt.plot(t,vco[0,:],label=r'$v_x$')\n",
"plt.plot(t,vco[1,:],label=r'$v_y$')\n",
"plt.xlabel('time (s)')\n",
"plt.ylabel('v (mm/s)')\n",
"plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n",
"plt.title('End velocity')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Create interactive animation for 2-bar linkage\n",
"\n",
"1. Create function that plots the links at timesteps\n",
"\n",
"2. use `interact` to generate the interactive figure"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"def plot_links(i,rcc,rco,t):\n",
" plt.plot([x[i],rcc[0,i],rco[0,i]],[0,rcc[1,i],rco[1,i]]) # plot lines for 2 links\n",
" plt.plot(rco[0,:],rco[1,:],'--'); # this plots all of the positions in the x-y-plane\n",
" #over time\n",
" plt.plot(rco[0,i],rco[1,i],'o');# this plots the position as a circle at\n",
" # timestep i\n",
" plt.axis([-30, 30, -3, 0]) # this sets the axis bounds "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3a342e65bb5e44d0bd0e524ff4884589",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=49, description='i', max=99), Output()), _dom_classes=('widget-interact'…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.<lambda>(i)>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"interact(lambda i:plot_links(i,rcc,rco,t),i=(0,len(t)-1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}