Breadcrumbs

 

 

 

Download ModelDownload SourceembedLaunch Website ES WebEJS

About

Intro Page

Projectile Motion: Experiment and Computational Model

Developed by Todd Zimmerman

Connecting computation to experiment is at the heart of physics. This set of exercises requires students to create a computational model for a ball launched into the air to determine the distance traveled and total time in the air. The students then must perform the experiment by launching the ball with a spring launcher. Data from the experiment must be entered into the computational model and the experimental results are compared to the computer model.

Subject Areas Mechanics and Experimental Labs
Level First Year
Available Implementations IPython/Jupyter Notebook and Sage Worksheet
Learning Objectives
  • Explain that the time an object is in the air depends only on motion in the y-direction (Exercise 4)
  • Relate the initial velocity of a launched ball to the horizontal velocity when the ball is launched horizontally (Exercise 2)
  • Make use of the fact that horizontal and vertical motion are independent to solve a 2D motion problem by breaking problem up into two 1D problems (Exercise 1)
  • Convert equations of motion into a computational model (program) with discrete time-steps (Exercise 1)
  • Use experimental data as an input into a computational model (Exercise 6)
  • Explain the limitations of computational models in predicting experimental results (Exercise 6)
Time to Complete 180 min
ball_launch_lab_activity(Exercise 1).ipynb

#Exercise 1

from vpython import *

from math import *

import matplotlib.pyplot as plt

%matplotlib inline

scene=canvas(title='Ball Spring Launcher') #Sets title for graphics window

scene.range=5 #Determines how wide graphics window is (sorta)

scene.center=vector(0,0,0)

dt = 0.01 #dt is the time step 'Delta t'

t=0 #Set initial time to zero

g = vector(0,-9.8,0)

h = 2 #initial height of ball

v_init=10

ball = sphere(pos=vector(0,h,0), radius=.2, color=color.red,make_trail=True) #Create sphere that will appear on screen

ground = box(pos=vector(0,0,0),color=color.green,size=vector(10,.1,5)) #Create green "grass" to give a reference frame

table = box(pos=vector(-0.5,h/2,0), color=color.blue, size=vector(1,h,1)) #Create a "table" for reference

ball.m = 1 #Mass of ball

ball.v = vector(v_init,0,0) #Initial velocity vector of ball

scene.waitfor("click") #Don't go onto the next step until you have clicked on the screen

while ball.pos.y>0: #Stop when ball hits floor

rate(40) #Determines how quickly program runs (roughly 30 frames per second)

ball.pos = ball.pos + ball.v*dt #Update position of ball

ball.v = ball.v + g*dt #Update velocity of ball

t+=dt #Calculate total time elapsed

print("Time elapsed = ", t)

print("Horizontal distance traveled = ", ball.pos.x)

Exercise 1

EXERCISE 1

Create a computational model of ball launched with some velocity in the horizontal direction. Create a visual representation of the motion (either 2D animation or a graph of the 2D trajectory.

Your model should include the mass and size of the ball, the initial horizontal speed, and the initial height of the ball above the floor. The model should stop when the ball hits the floor. The model should return the horizontal distance the ball travels before hitting the floor as well as the total time it is in the air.

The equations that model the motion of the ball are

(3)style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">dstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">rstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">dstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">tstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">=style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">vstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">

and

(4)style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">dstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">vstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">dstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">tstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">=style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Fstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">mstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">.style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">

These equations involve derivatives but computer models must use time steps that have a finite size (called discrete time steps). In terms of finite differences these two equations can be written as

(5)style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">rstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">tstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">=style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">vstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">

and

(6)style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">vstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">tstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">=style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">Fstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">mstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">.style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; width: 668px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">

Remember that the Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal"> symbol means “change in …” so Δstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">tstyle="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal">style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-top-width: 0px; border-right-style: none; border-right-width: 0px; border-bottom-style: none; border-bottom-width: 0px; border-left-style: none; border-left-width: 0px; display: inline; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: normal"> is the “change in time”. Use these equations to find two equations that allow you to update the position and velocity of the particle at each time step.

Hint: Remember that you have motion along the x-axis and motion along the y-axis.

Exercise 3

EXERCISE 3

Modify your code so you can vary the angle at which the ball is launched in addition to the launch speed.

ball_launch_lab_activity(Exercise 3).ipynb

#Exercise 3

from vpython import *

from math import *

scene=canvas(title='Ball Spring Launcher') #Sets title for graphics window

scene.range=5 #Determines how wide graphics window is (sorta)

scene.center=vector(0,0,0)

dt = 0.01 #dt is the time step 'Delta t'

t=0 #Set initial time to zero

g = vector(0,-9.8,0)

h = 2 #initial height of ball

theta=pi/4

v_init=5

v=vector(v_init*cos(theta),v_init*sin(theta),0)

ball = sphere(pos=vector(0,h,0), radius=.2, color=color.red, make_trail=True) #Create sphere that will appear on screen

ground = box(pos=vector(0,0,0),color=color.green,size=vector(10,.1,5)) #Create green "grass" to give a reference frame

table = box(pos=vector(-0.5,h/2,0), color=color.blue, size=vector(1,h,1)) #Create a "table" for reference

ball.m = 1 #Mass of ball

ball.v = v #Initial momentum vector of ball

scene.waitfor("click") #You must click on the image before it will start moving

while ball.pos.y>0+ball.radius: #Stop when ball hits floor

rate(40) #Determines how quickly program runs (roughly 30 frames per second)

ball.pos = ball.pos + ball.v*dt #Update position of ball

ball.v = ball.v + g*dt #Update momentum of ball

t+=dt #Calculate total time elapsed

print("Time elapsed = ", t)

print("Horizontal distance traveled = ", ball.pos.x)

 

Translations

Code Language Translator Run

Credits

Fremont Teng; Loo Kang Wee; based on codes by Todd Zimmerman

Briefing Document: PICUP Projectile Motion Simulation

Date: October 26, 2023 Subject: Review of "PICUP Projectile Motion: Experiment and Computational Model Ex 1 n 3 JavaScript HTML5 Applet Simulation Model"

This briefing document summarizes the main themes and important ideas presented in the provided excerpts from the PICUP Projectile Motion open educational resource. The resource focuses on teaching projectile motion concepts through a combination of experimentation and computational modeling, primarily targeting first-year mechanics students.

Main Themes and Important Ideas:

  1. Independence of Horizontal and Vertical Motion:
  • The resource explicitly emphasizes the fundamental principle that horizontal and vertical components of projectile motion are independent of each other. This allows for the simplification of 2D motion problems into two separate 1D problems.
  • The learning objectives clearly state this: "Make use of the fact that horizontal and vertical motion are independent to solve a 2D motion problem by breaking problem up into two 1D problems ( Exercise 1 )".
  • Exercise 4 further reinforces this by focusing on the time of flight depending solely on the vertical motion: "Explain that the time an object is in the air depends only on motion in the y-direction ( Exercise 4 )".
  1. Relating Initial Velocity to Horizontal Velocity in Horizontal Launch:
  • For the specific case of a horizontally launched projectile, the initial velocity is entirely in the horizontal direction. The resource aims to help students understand this relationship.
  • The learning objective states: "Relate the initial velocity of a launched ball to the horizontal velocity when the ball is launched horizontally ( Exercise 2 )".
  1. Converting Equations of Motion into Computational Models:
  • A core aspect of this resource is the translation of continuous equations of motion into discrete computational models using programming. This involves approximating derivatives with finite differences and using small time steps (dt).
  • The learning objective highlights this: "Convert equations of motion into a computational model (program) with discrete time-steps ( Exercise 1 )".
  • The provided code snippet from Exercise 1 demonstrates this process using the vpython library in Python. It initializes parameters like the time step (dt = 0.01), gravity (g = vector(0,-9.8,0)), initial height (h = 2), and creates a visual representation of a ball.
  • The theoretical basis for this conversion is presented with the continuous equations of motion:
  • d r ⃗ d t = v ⃗ (3)
  • d v ⃗ d t = F ⃗ m . (4)
  • These are then converted into finite difference equations:
  • Δ r ⃗ Δ t = v ⃗ (5)
  • Δ v ⃗ Δ t = F ⃗ m . (6)
  • The resource explicitly guides users to "Use these equations to find two equations that allow you to update the position and velocity of the particle at each time step."
  1. Updating Position and Velocity in Discrete Time Steps:
  • The finite difference equations are used to iteratively update the position and velocity of the projectile in the computational model. This is evident in the while loop in the Exercise 3 code:
  • ball.pos = ball.pos + ball.v*dt #Update position of ball
  • ball.v = ball.v + g*dt #Update momentum of ball
  • This demonstrates how, at each small time interval dt, the ball's position is updated based on its current velocity, and its velocity is updated based on the forces acting on it (in this case, gravity).
  1. Incorporating Launch Angle:
  • Exercise 3 expands on the basic model by introducing the capability to vary the launch angle. This adds complexity to the initial velocity vector, requiring trigonometric functions to decompose it into horizontal and vertical components.
  • The description for Exercise 3 states: "Modify your code so you can vary the angle at which the ball is launched in addition to the launch speed."
  1. Using Experimental Data in Computational Models and Understanding Limitations:
  • The resource intends for students to bridge the gap between theoretical models and real-world experiments. This involves using experimental data to inform the parameters of the computational model.
  • Crucially, it also aims to foster an understanding of the limitations inherent in computational models when predicting experimental outcomes. Factors like air resistance, measurement errors, and simplifications in the model can lead to discrepancies.
  • The learning objectives include:
  • "Use experimental data as an input into a computational model ( Exercise 6 )"
  • "Explain the limitations of computational models in predicting experimental results ( Exercise 6 )"
  1. Structure and Implementation:
  • The resource is designed for a 180-minute completion time and provides implementations in IPython/Jupyter Notebook and Sage Worksheet. This suggests an interactive, hands-on learning approach.
  • The use of vpython library allows for 3D visualization of the projectile motion, enhancing understanding.
  • The code snippets include elements like setting up the scene (scene=canvas(...)), creating a sphere to represent the ball (ball = sphere(...)), and implementing a simulation loop.

Key Takeaways:

  • This PICUP module provides a comprehensive approach to teaching projectile motion by integrating theoretical concepts with computational modeling and experimental considerations.
  • It emphasizes the independence of horizontal and vertical motion as a key principle for solving projectile motion problems.
  • Students will learn how to translate physical equations into computational algorithms using discrete time steps.
  • The resource encourages students to analyze the relationship between initial conditions (velocity, angle) and the resulting trajectory.
  • A significant component involves using experimental data to validate and refine computational models, while also acknowledging the inherent limitations of such models.

This resource appears to be a valuable tool for first-year mechanics students to develop a deeper understanding of projectile motion through active engagement with computational simulations and experimental data.

 

 

Projectile Motion Study Guide

Key Concepts:

  • 2D Motion: Motion that occurs in a plane, having both horizontal and vertical components.
  • Independence of Motion: The principle that the horizontal and vertical components of motion in a projectile are independent of each other.
  • Projectile Motion: The motion of an object launched into the air, subject only to the force of gravity (neglecting air resistance).
  • Velocity Vector: A vector quantity that describes both the speed and direction of motion. It has horizontal (x) and vertical (y) components.
  • Acceleration due to Gravity (g): The constant downward acceleration experienced by objects near the Earth's surface, approximately 9.8 m/s². This acceleration only affects the vertical component of motion.
  • Initial Velocity: The velocity of the object at the moment it is launched. It can have both horizontal and vertical components depending on the launch angle.
  • Horizontal Velocity (vₓ): The component of the velocity vector in the horizontal direction. In the absence of air resistance, this component remains constant throughout the projectile's flight.
  • Vertical Velocity (v<0xE1><0xB5><0xB3>): The component of the velocity vector in the vertical direction. This component changes due to the acceleration of gravity.
  • Time of Flight: The total time the projectile remains in the air.
  • Range: The horizontal distance traveled by the projectile before returning to its initial vertical height (or another specified height).
  • Trajectory: The path followed by the projectile through the air, which is typically parabolic.
  • Computational Model: A computer program that simulates a real-world system or phenomenon using mathematical equations and discrete time steps.
  • Discrete Time Steps (dt): Small, finite intervals of time used in computational models to approximate continuous motion.
  • Finite Difference: An approximation of the derivative of a function using the difference between its values at nearby points, used in converting continuous equations of motion into discrete steps.

Short-Answer Quiz:

  1. Explain why the horizontal velocity of a projectile remains constant (ignoring air resistance).
  2. How is the initial velocity of a ball launched horizontally related to its horizontal velocity during its flight?
  3. Describe how solving a 2D projectile motion problem can be simplified by considering the horizontal and vertical motions separately.
  4. What factor solely determines the time an object spends in the air when undergoing projectile motion? Explain your reasoning.
  5. What is the purpose of using discrete time steps in a computational model of projectile motion?
  6. Describe how experimental data can be incorporated into a computational model of projectile motion.
  7. Give one reason why the predictions of a computational model might differ from the results of a real projectile motion experiment.
  8. In the provided code snippet for Exercise 1, what does the variable dt represent, and why is it important in the simulation?
  9. Based on the equations provided (equations 5 and 6), write down the two update equations that would be used in the computational model to find the new position and velocity of the ball after a small time step dt.
  10. In Exercise 3, how is the code modified to allow for varying the launch angle of the ball?

Answer Key:

  1. The horizontal velocity of a projectile remains constant because there is no horizontal force acting on it (ignoring air resistance). Gravity acts only in the vertical direction, so it does not affect the horizontal motion.
  2. When a ball is launched horizontally, its initial velocity is entirely in the horizontal direction. Therefore, the initial horizontal velocity is equal to the horizontal velocity throughout its flight (again, ignoring air resistance).
  3. Solving a 2D projectile motion problem is simplified by treating the horizontal and vertical motions independently because each can be analyzed using 1D kinematic equations. The only link between them is the time of flight, which is the same for both motions.
  4. The time an object is in the air depends solely on its initial vertical velocity and the acceleration due to gravity. The horizontal motion has no effect on how long it takes for the object to reach its maximum height and fall back down.
  5. Discrete time steps are used in computational models to approximate the continuous changes in position and velocity over time. By breaking the motion into small intervals, the model can update the object's state based on the forces acting on it at each step.
  6. Experimental data, such as measured initial velocity or positions at different times, can be used to set the initial conditions or to validate and refine the parameters of a computational model. This allows the model to simulate the specific experimental scenario.
  7. Limitations of computational models in predicting experimental results can arise from factors like the neglect of air resistance, inaccuracies in measuring initial conditions, or the finite size of the time steps used in the simulation, which introduces approximations.
  8. The variable dt represents the discrete time step (Delta t) in the simulation. It is crucial because it determines the frequency at which the model updates the ball's position and velocity, approximating the continuous motion of the projectile.
  9. The update equations are:
  • ball.pos = ball.pos + ball.v * dt (updates the position based on the current velocity and time step).
  • ball.v = ball.v + g * dt (updates the velocity based on the acceleration due to gravity and the time step).
  1. Exercise 3 mentions modifying the code to vary the launch angle in addition to the launch speed. While the specific code modification isn't fully shown, this would typically involve introducing a variable for the launch angle and using trigonometric functions (sine and cosine) to calculate the initial horizontal and vertical components of the velocity vector based on the launch speed and angle.

Essay Format Questions:

  1. Discuss the principle of the independence of horizontal and vertical motion in projectile motion. Provide examples of how this principle simplifies the analysis of such motion and how it is implemented in computational models.
  2. Explain how the equations of motion for constant acceleration are adapted and applied to model projectile motion in two dimensions. Describe the role of initial conditions and gravity in determining the trajectory of a projectile.
  3. Compare and contrast the use of analytical methods (kinematic equations) and computational models for solving projectile motion problems. What are the advantages and limitations of each approach, particularly in scenarios with varying levels of complexity?
  4. Describe the process of converting continuous equations of motion into a discrete computational model using finite differences. Explain the significance of the time step (dt) in the accuracy and stability of the simulation.
  5. Analyze the factors that can cause discrepancies between the results of a computational model and a real-world projectile motion experiment. Discuss how these limitations can be addressed or minimized in both the modeling and experimental design.

Glossary of Key Terms:

  • 2D Motion: Movement of an object within a two-dimensional plane, characterized by changes in both horizontal and vertical position over time.
  • Acceleration due to Gravity (g): The constant acceleration experienced by objects near the Earth's surface, directed downwards with an approximate magnitude of 9.8 m/s².
  • Computational Model: A simulation of a real-world system or process created using computer programs and mathematical equations, often involving discrete time steps.
  • Discrete Time Steps (dt): Small, finite intervals of time used in numerical simulations to approximate continuous changes in variables.
  • Finite Difference: A numerical method for approximating the derivative of a function by using the difference between function values at nearby points, allowing continuous equations to be applied in discrete steps.
  • Horizontal Velocity (vₓ): The component of an object's velocity that is parallel to the ground. In projectile motion without air resistance, this component remains constant.
  • Independence of Motion: The principle that the horizontal and vertical components of a projectile's motion are separate and do not affect each other.
  • Initial Velocity: The velocity of a projectile at the moment it is launched, often having both horizontal and vertical components.
  • Projectile Motion: The motion of an object moving through the air under the influence of gravity alone (neglecting air resistance).
  • Trajectory: The path followed by a projectile as it moves through the air, typically a parabola.
  • Velocity Vector: A vector quantity that describes both the speed and direction of an object's motion, having both magnitude and direction, and can be broken down into horizontal and vertical components.
  • Vertical Velocity (v<0xE1><0xB5><0xB3>): The component of an object's velocity that is perpendicular to the ground, affected by gravity in projectile motion.

 

Versions

  1. https://www.compadre.org/PICUP/exercises/exercise.cfm?I=155&A=proj_mot
  2. https://weelookang.blogspot.com/2018/06/projectile-motion-experiment-and.html 

Other resources

  1. http://www.compadre.org/Physlets/mechanics/illustration3_4.cfm Illustration 3.4: Projectile Motion by W. Christian and M. Belloni 
  2. http://physics.weber.edu/amiri/director-dcrversion/newversion/airresi/AirResi_1.0.html Trajectory of a ball with air resistance by Farhang Amiri
  3. http://www.walter-fendt.de/html5/phen/projectile_en.htm HTML5 version of Projectile Motion by Walter Fendt
  4. http://www.compadre.org/OSP/items/detail.cfm?ID=7299&S=7 Ejs Intro 2DMotionLab Model by  Anne Cox, Wolfgang Christian, and Mario Belloni 
  5. http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=623.0 Projectile motion with equations by Fu-Kwun Hwang
  6. http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=1832.0 Airdrag by Fu-Kwun Hwang and ahmedelshfie
  7. http://archive.geogebra.org/en/upload/files/english/lewws/basketballsimulation_counterspeed_simulationspeed_updated1r.html Simulation of BasketBall Throw by Lew W. S.
  8. http://ophysics.com/k8.html by This email address is being protected from spambots. You need JavaScript enabled to view it.
  9. http://ophysics.com/k9.html by This email address is being protected from spambots. You need JavaScript enabled to view it.
 

Frequently Asked Questions: Projectile Motion and Computational Modeling

1. How are horizontal and vertical motion treated in projectile motion problems?

Projectile motion in two dimensions is analyzed by considering the horizontal and vertical components of the motion independently. The horizontal motion occurs at a constant velocity (assuming no air resistance), while the vertical motion is affected by gravity, resulting in constant acceleration downwards. This independence allows us to solve 2D problems by breaking them down into two separate 1D problems, one for each direction.

2. What determines the time an object stays in the air during projectile motion?

The time an object remains airborne in projectile motion is solely determined by its motion in the vertical (y) direction. Factors such as the initial vertical velocity and the acceleration due to gravity influence the time of flight. The horizontal component of the initial velocity does not affect how long the object stays in the air.

3. For a ball launched horizontally, how is its initial velocity related to its horizontal velocity throughout its flight?

When a ball is launched horizontally, its initial velocity has only a horizontal component. In the absence of air resistance, there is no horizontal acceleration. Therefore, the horizontal velocity of the ball remains constant throughout its flight and is equal to its initial horizontal velocity.

4. How can the equations of motion be converted into a computational model?

The continuous equations of motion, which involve derivatives, can be approximated in a computational model by using discrete time steps. Derivatives are replaced by finite differences over these small time intervals (Δt). For example, velocity (the rate of change of position) can be approximated as the change in position (Δr⃗) divided by the change in time (Δt), and acceleration (the rate of change of velocity) can be approximated as the change in velocity (Δv⃗) divided by the change in time (Δt). These finite difference equations are then used to update the position and velocity of an object at each discrete time step in the simulation.

5. What are the fundamental equations used to update the position and velocity of a projectile in a computational model with discrete time steps?

Based on the continuous equations of motion and the concept of finite differences, the equations used to update the position (r⃗) and velocity (v⃗) of a projectile in a computational model at each time step are:

  • Update Position: Δr⃗ = v⃗ * Δt which leads to r⃗_new = r⃗_old + v⃗_old * Δt
  • Update Velocity: Δv⃗ = (F⃗ / m) * Δt which, considering gravity (g) as the primary force and assuming constant mass (m), leads to v⃗_new = v⃗_old + g * Δt

These equations are applied iteratively for each small time step to simulate the motion of the projectile.

6. How can experimental data be incorporated into a computational model of projectile motion?

Experimental data, such as measurements of initial launch velocity, launch angle, or recorded positions at different times, can be used as input parameters for a computational model. By setting the initial conditions in the simulation to match the experimental setup and using measured values where applicable, the model can then predict the trajectory and other aspects of the motion. Comparing the simulation results with the actual experimental outcomes allows for validation and refinement of the model.

7. What are some limitations of computational models when predicting experimental results in projectile motion?

Computational models are simplifications of reality and have several limitations. They often neglect factors present in experiments, such as air resistance, variations in the launch mechanism, and measurement errors in initial conditions. The use of discrete time steps introduces approximations, and the accuracy of the model depends on the size of these steps. Additionally, the model relies on the correctness of the underlying physical principles and equations used. Discrepancies between the model's predictions and experimental results can arise from these neglected factors and approximations.

8. Besides launch speed, what other initial condition can be varied in a projectile motion simulation?

In addition to the launch speed (the magnitude of the initial velocity), the angle at which the projectile is launched is another crucial initial condition that can be varied in a projectile motion simulation. The launch angle significantly affects the trajectory, range, and maximum height achieved by the projectile. Computational models can be easily modified to allow users to input and change the launch angle to observe its impact on the simulated motion

 
1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)