Beating the Train

Activity Information

Learning Goals

  • Use Newton’s 2nd Law to accurately predict changes in motion of macroscopic objects ( HS-PS2-1)
  • Use kinematic equations to determine the necessary acceleration to move an object
    • a certain distance
    • for a certain amount of time

Prior Knowledge Required

  • Units
  • Kinematic Equations
  • Newton’s 2nd Law of Motion

Code Manipulation

Activity

Handout – Beating the Train

A train is approaching a crossing, traveling at a constant velocity if 15 m/s to the east. You are on an afternoon ride on your motorcycle when you get stopped at a stoplight 50 m south of the crossing. At the instant the light turns green, the train is 90 m west of the crossing. Your mass, including the motorcycle, is 400 kg

  1. Determine the amount of time required for the train to reach the crossing.
  2. Using the time found in #1, determine the minimum acceleration required for you and your motorcycle to beat the train and safely cross to the other side.
  3. Given a frictional force of 100 N that opposes you as you accelerate to the train crossing, what is the minimum force exerted by the motorcycle that is necessary to miss the train?
  4. Modify the Colliding Crates program to fit this scenario.

Code

Link

GlowScript 2.7 VPython
 
#Creating the objects
floor = box(pos=vector(0,-30,0), size=vector(100,4,12), color=color.white)      #I've created the floor that the crate will slide across
crate = box(pos=vector(0,0,0), size=vector(20,20,5), color=color.red)           #I've created the crate, along with its dimensions and initial position resting on the floor
 
#Setting the time interval
t=0                                                                             #I've set the initial time to zero.
tf=0.940                                                                        #I've set the final time to 0, which gives the crate enough time to slide across the floor
dt=0.01                                                                         #I want my time interval set at 1/100th of a time unit
 
#Creates velocity vectors as a function of time
get_library('https://rawgit.com/perlatmsu/physutil/master/js/physutil.js')      #The program needed to know what a motion map is defined as
motionMap = MotionMap(crate, tf, 5, markerScale=0.1)                            #I want to display 5 arrows showing the motion of the crate
 
#Giving the objects an initial velocity
cratev=vector(75,0,0)                                                           #I'm defining the constant velocity of my crate to be 75 in the x-direction(left to right)                                       
while crate.pos.x<35:                                                           #I want the crate to stop before it slides off the floor
    rate(50)                                                                    #This rate can speed up or slow down the replay
    crate.pos=crate.pos+cratev*dt                                               #I'm moving the crate by adding the change in position (cratev*dt) to the previous position (crate.pos)
    t=t+dt                                                                      #I'm updating the time
 
#This updates the velocity vectors
    motionMap.update(t,cratev)                                                  #This updates the motion map and display of the arrows as the crate slides across the floor
 
#This creates the graph of the kinetic energy of the crate
#f1 = gcurve(color=color.blue)                                                  #Setting up a graph to show the kinetic energy of the crate as a function of time
#for t in arange(0, 0.94, 0.01):                                                # Time goes from 0 to 0.94 in 0.01 time intervals
#    f1.plot(pos=(t,cratev.mag**2))

Answer Key

Handout

To find the time it will take for the train to reach the crossing, divide the distance between the train and the crossing by the velocity of the train:t=90m15m/s=6s

We can use the following kinematic equation to solve for the minimum acceleration required to beat the train: x=x0+v0t+12at2where:

x is your final position (You must travel 50 m)

x0 is your initial position (We can assume we start at 0 m)

v0 is your initial velocity (you start from rest, so v0=0 m/s)

a is your acceleration (We will solve for this)

t is the time you have to beat the trainWe just calculated this to be 6 seconds

Rearranging to solve for acceleration: a=2(x−x0−v0t)/(t^2)

Plugging in our known values: a=2(50m−0m−0m/s∗6s)/(6s)^2=100m36s2=2.78m/s²

To find out the minimum force your motorcycle must exert, we must first create a free body diagram. From this diagram, we know that the sum of the frictional force Ff and the force of your motorcycle Fm must be equal to the total mass of you and the motorcycle (400 kg) multiplied by the acceleration we just calculated (2.78 m/s²). Mathematically, this looks like: Ff+Fm=ma

Solving for the force of your motorcycle: Fm=ma−Ff

Plugging in our known values: Fm=400kg∗2.78m/s²−(−100N)=1212N

Note that Ff is negative because it points in the negative y-direction. This is determined from your free body diagram

See below

Code

Link

GlowScript 2.7 VPython
#Creating the objects
train = box(pos=vector(-100,-5,0), size=vector(20,5,8), color=color.red)           #I've created the crate, along with its dimensions and initial position resting on the floor
cycle = box(pos=vector(0,-51,0), size=vector(2,2,2), color=color.white)
 
#Setting the time interval
t=0                                                                             #I've set the initial time to zero.
dt=0.01                                                                         #I want my time interval set at 1/100th of a time unit
 
#Creates velocity vectors as a function of time
get_library('https://rawgit.com/perlatmsu/physutil/master/js/physutil.js')      #The program needed to know what a motion map is defined as
#motionMap1 = MotionMap(crate1, tf, 5, markerScale=0.1)                           #I want to display 5 arrows showing the motion of the crate
#motionMap2 = MotionMap(crate2, tf, 5, markerScale=0.1)
 
#Giving the objects an initial velocity
trainv=vector(15,0,0)                                                           #I'm defining the constant velocity of my crate to be 75 in the x-direction(left to right)                                       
cyclev=vector(0,0,0)
cycleacc=vec(0,2.78,0)
while cycle.pos.y<=10:                                                           #I want the crate to stop before it slides off the floor
    rate(100)                                                                    #This rate can speed up or slow down the replay
    train.pos=train.pos+trainv*dt                                               #I'm moving the crate by adding the change in position (cratev*dt) to the previous position (crate.pos)
    cyclev=cyclev + cycleacc*dt
    cycle.pos=cycle.pos+cyclev*dt
    t=t+dt                                                                      #I'm updating the time
 
#This updates the velocity vectors
    #motionMap1.update(t,crate1v)                                                  #This updates the motion map and display of the arrows as the crate slides across the floor
    #motionMap2.update(t,crate2v)
 
#This creates the graph of the kinetic energy of the crate
#f1 = gcurve(color=color.blue)                                                   #Setting up a graph to show the kinetic energy of the crate as a function of time
#for t in arange(0, 0.94, 0.01):                                                 # Time goes from 0 to 0.94 in 0.01 time intervals
 #   f1.plot(pos=(t,crate1v.mag**2))                                                # plot time vs. kinetic energy of the crate