Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Jupyter notebook Assignments/A Pendulum Saves a Life/APendulumSavesLife.ipynb

75 views
Kernel: Python 3 (Anaconda)

A Pendulum Saves a Life

Click on the image below. Your task in this problem is to model the motion of both the person and the kettlebell (the red thing on the other end). Determine analytic expressions for r¨\ddot{r} and ϕ¨\ddot{\phi} for both the person and the kettlebell. Then simulate the motion. I have provided some starter code for you. (Ignore the fact that the rope gets shorter as it wraps around the pole, and ignore friction between the rope and the pole. This will make your result somewhat different from the video.)

Solution


Assumptions

*The person and the kettle bell is a point mass.

*There is friction between the rope and the pole. (BUT IGNORE IT)

*Initial conditions start at rest.

*The rope gets shorter as it wraps around the pole. (BUT IGNORE IT)

*The person lives in the end.

Diagrams

Include interaction diagrams and free body diagrams with axes indicated. ![Person Diagram](Person Diagram.png)

![Kettlebell Diagram](Kettlebell Diagram.png)

Draw the free body diagram for the kettle bell at some angle so that you can determine the components of the forces acting on it.

Analysis

Newtons Second Law in polar coordinates person and the kettle bell.

Sum of Forces: Kettle Bell

r^:\hat{r}:  FEBGsinϕFRBT=mgsinϕFRBT=m(r¨rϕ˙2)\ F^G_{EB}\sin\phi - F^T_{RB}= mg\sin\phi - F^T_{RB} = m(\ddot{r} - r\dot{\phi}^2)

 FRBT=mgsinϕm(r¨rϕ˙2)\ F^T_{RB} = mg\sin\phi - m(\ddot{r} - r\dot{\phi}^2)

ϕ^:\hat{\phi}:  FEBGcosϕ=mgcosϕ=m(rϕ¨+2r˙ϕ˙)\ F^G_{EB}\cos\phi = mg\cos\phi = m(r\ddot{\phi} + 2\dot{r}\dot{\phi})

 ϕ¨=gsinϕ2r˙ϕ˙r\ \ddot{\phi} = \frac{-g\sin\phi - 2\dot{r}\dot{\phi}}{r}

r^:\hat{r}:  FEBGFRBT=mgFRBT=m(r¨rϕ˙2)\ F^G_{EB} - F^T_{RB}= mg - F^T_{RB} = m(\ddot{r} - r\dot{\phi}^2)

 FRBT=m(r¨rϕ˙2)mg\ F^T_{RB}= m(\ddot{r} - r\dot{\phi}^2) - mg

ϕ^:\hat{\phi}: ϕ¨=0\ddot{\phi} = 0

Also check special cases.

Check

To check these solutions you must set  FRBT\ F^T_{RB} equations equal to one another to find the shared tension force.

 mgsinϕm(r¨rϕ˙2)=m(r¨rϕ˙2)mg\ mg\sin\phi - m(\ddot{r} - r\dot{\phi}^2) = m(\ddot{r} - r\dot{\phi}^2) - mg r¨P=mgcosϕmg+mrϕ˙2M+m\ \ddot{r}_{P} = \frac{mg\cos\phi - mg + mr\dot\phi^2}{M + m} r¨B=mgmgcosϕmrϕ˙2M+m\ \ddot{r}_{B} = \frac{mg - mg\cos\phi - mr\dot\phi^2}{M + m}

There is an implicit assumption here (which was not stated), that r¨P=r¨B\ddot{r}_P=-\ddot{r}_B.

For  r¨P=mgcosϕmg+mrϕ˙2M+m\ \ddot{r}_{P} = \frac{mg\cos\phi - mg + mr\dot\phi^2}{M + m} :

 ms2=kg×ms2kg×ms2+kg×m×rad2s2kg\ \frac{m}{s^2} = \frac{kg \times \frac{m}{s^2} - kg \times \frac{m}{s^2} + kg \times m \times \frac{rad^2}{s^2}}{kg}

ms2=ms2+ms2+m×rads2s2 \frac{m}{s^2} = \frac{m}{s^2} + \frac{m}{s^2} + \frac{m \times rads^2}{s^2}

For  r¨B=mgmgcosϕmrϕ˙2M+m\ \ddot{r}_{B} = \frac{mg - mg\cos\phi - mr\dot\phi^2}{M + m} :

ms2=kg×ms2kg×ms2kg×m×rad2s2kg\frac{m}{s^2} = \frac{kg \times \frac{m}{s^2} - kg \times \frac{m}{s^2} - kg \times m \times \frac{rad^2}{s^2}}{kg}

ms2=ms2+ms2+m×rads2s2 \frac{m}{s^2} = \frac{m}{s^2} + \frac{m}{s^2} + \frac{m \times rads^2}{s^2}

For  ϕ¨=gsinϕ2r˙ϕ˙r\ \ddot{\phi} = \frac{-g\sin\phi - 2\dot{r}\dot{\phi}}{r} :

 radss2=ms2ms×radssm\ \frac{rads}{s^2} = \frac {- \frac{m}{s^2} - \frac{m}{s} \times \frac{rads}{s}}{m}

 radss2=radss2radss2\ \frac{rads}{s^2} = -\frac{rads}{s^2} - \frac{rads}{s^2}

Interpretation

The weight was released and the person dropped. The rope tightened around the pole as the person dropped safely. Thus proving that things rotate faster when they approach a central point.

The simulation ends up looking different since we ignored the fact that the rope got shorter.

#initial conditions rb=10 #r-coordinate of bell drb = 0 # initial velocity of bell phib=-pi/2 #angle of bell relative to vertical with counterclockwise positive dphib = 0 # initial angle of bell rp=2 #r-coordinate of person drp = 0 #velocity of person ddrp = 0 #acceleration of the person phip=0 #angle of person relative to vertical with counterclockwise positive g = 9.8 # gravity, m/s^2 dt = 0.01 # Time increment M = 60 #mass of person m = 8 #mass of bell t = 0 #starting time #draw the scene scene=canvas() bell=sphere(pos=vec(rb*sin(phib),-rb*cos(phib),0),radius=0.2,color=color.red) #draw the kettle bell person=cylinder(pos=vec(rp*sin(phip),-rp*cos(phip),0), axis=vec(0,-1,0),radius=0.5) #draw the person (as a cylinder of course) pole=cylinder(pos=vec(0,0,-1),axis=vec(0,0,2),radius=0.1) #draw the pole rope1=cylinder(pos=vec(0,0,0),axis=bell.pos,radius=0.05) #draw the portion of the rope from the kettle bell to the pole rope2=cylinder(pos=vec(0,0,0),axis=person.pos,radius=0.05) #draw the portion of the rope from the person to the pole person.v = vec(0,0,0) print(bell.pos) while (t <= 10): rate(1/dt) #set the speed of the animation ddrb = (-M*g + m*g*cos(phib) + m*rb*dphib**2)/(M + m) #acceleration of bell in r direction ddphib = (-g*sin(phib) - 2*drb*dphib)/rb #torque of bell in phi direction print (ddphib) dphib = dphib + ddphib * dt #updates the angular frequency of bell based on the torque drb = drb + ddrb*dt #updates velocity of bell based on acceleration phib = phib + dphib*dt #updates angle of bell based in angular frequency rb = rb + drb*dt bell.pos = vec(rb*sin(phib),-rb*cos(phib),0) rope1.axis = vec(rb*sin(phib),-rb*cos(phib),0) ddrp = -(-M*g + m*g*cos(phib) + m*rb*dphib*dphib)/(M + m) drp = drp + ddrp*dt rp = rp + drp*dt person.v = person.v + vec(0,-ddrp,0)*dt person.pos = person.pos + person.v*dt #person.pos = vec(rp*sin(phip),-rp*cos(phip),0) rope2.axis = person.pos t = t + dt
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-f6072558345f> in <module>() 2 rb=10 #r-coordinate of bell 3 drb = 0 # initial velocity of bell ----> 4 phib=-pi/2 #angle of bell relative to vertical with counterclockwise positive 5 dphib = 0 # initial angle of bell 6 rp=2 #r-coordinate of person NameError: name 'pi' is not defined

You need to import some packages to get this to work.

Rubric

SectionPointsMax Points
Assumptions11
Diagrams01
Analysis33
Check01
Interpretation01
Code23