A double pendulum consists of two simple pendula,with one pendulum suspended fro
ID: 3564518 • Letter: A
Question
A double pendulum consists of two simple pendula,with one pendulum suspended from the bob of the other, If the two pendula have equal lengths and have bobs of equal mass and if both pendula are confined to move in the same plane, find Lagrange's equations of motion for the system, Do not assume small angles.Explanation / Answer
import numpy import scipy, scipy.integrate, scipy.optimize import pylab # def DoublePendulumDerivArray(vars,t,l1=1.,l2=1.,m1=1.,m2=1.,g=1.): """ variables are (theta1,theta2,omega1,omega2) parameters are the following: l1,l2,m1,m2,g if any are unspecified, they are taken to be equal to 1. returns array([dt_theta1,dt_theta2,dt_omega1,dt_omega2]) Sample usage: DoublePendulumDerivArray((1,0,0,0),0,l1=2,l2=2,m1=1,m2=2,g=9.8) """ (theta1,theta2,omega1,omega2)=vars # Unpacks the variables dt_theta1=omega1 dt_theta2=omega2 s1=numpy.sin(theta1) s2=numpy.sin(theta2) cd=numpy.cos(theta1-theta2) sd=numpy.sin(theta1-theta2) #insurance against integer division l1=1.*l1 m1=1.*m1 num1=-(l2/l1)*omega2**2*sd-g*(1+m1/m2)*s1 num2=(l1/l2)*omega1**2*sd-g*s2 den=1.+m1/m2-cd**2 dt_omega1=(num1-(l2/l1)*cd*num2)/den dt_omega2=((1+m1/m2)*num2-(l1/l2)*cd*num1)/den return numpy.array([dt_theta1,dt_theta2,dt_omega1,dt_omega2]) # def doublependulumenergy(theta1,theta2,omega1,omega2,l1,l2,m1,m2,g): """ Returns the energy of a double pendulum """ c1=numpy.cos(theta1) c2=numpy.cos(theta2) s1=numpy.sin(theta1) s2=numpy.sin(theta2) kin=(1/2)*m1*(l1*omega1)**2+(1/2)*m2*(l1*omega1*c1+l2*omega2*c2)**2+(1/2)*m2*(l1*omega1*s1+l2*omega2*s2)**2 pot=-m1*g*l1*c1-m2*g*(l1*c1+l2*c2) return kin+pot # def DoublePendulumTrajectory(initial_theta1=0,initial_theta2=0,initial_omega1=0,initial_omega2=0, timestep=0.1,numstep=500,l1=1,l2=1,m1=1,m2=1,g=1) : """ Runs ODEint for the double pendulum sample usage: DoublePendulumTrajectory(initial_theta1=0.1,l1=2,l2=2,m1=1,m2=2,g=9.8) Returns a dictionary which has the following keys: "times", "theta1", "theta2", "omega1", "omega2", "parameters" The values associated with the first five keys are a time series. The parameters key returns a dictionary which stores the parameters, plus the energy of the system """ # Create a tuple containing (l1,l2,m1,m2,g) pass # Create a tuple containing the inital values pass # Create the list of times pass # Run odeint pass # Store the results of odeint in a dictionary pass # Return the dictionary pass # def ShowDoublePendulumTrajectory(data): """ Call with a dictionary containing "times", "theta1", "theta2", "omega1", "omega2","parameters" Will plot the x-y trajectory of the two pendulum bobs """ pass # def ShowDoublePendulumTimeSeries(data): """ Call with a dictionary containing "times", "theta1", "theta2", "omega1", "omega2","parameters" Will plot x1,y1,x2,y2 as a function of time """ pass # def ShowDoublePendulumPoincare(data): """ Call with a dictionary containing "times", "theta1", "theta2", "omega1", "omega2","parameters". Generates a Poincare section: plots omega2 vs theta2 when theta1=0 and omega1>0. """ #unpack data pass #bracket times where theta1 passes through n*2pi for some n, and with omega1>0 pass #interpolate between these bracketed times to find theta2 and omega2 at those times. pass #make a scatter plot pass # def lininterp(xvals,yvals): """ xvals and yvals are tuples of length 2: taking (x0,y0) and (x1,y1) to be points defining a line finds the value of y when x=0""" passRelated Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.