<jupyter_start><jupyter_text>Experiment 3: Projectile Motion Objectives- To learn to take good measurements- To learn how to estimate and propagate uncertainties- To learn how to apply the kinematic equations to projectile motion Equipment- One PASCO Ballistic Pendulum apparatus with plastic projectile- Two (2) C-Clamps- One stopwatch- One 30 cm ruler- One two-meter stick- One sheet of carbon paper- Plain white or ruled paper- Tape Safety1. **DO NOT STAND ON LAB CHAIRS**2. **Treat the launcher like a weapon:**    - **NEVER fire the launcher at anyone**---even in jest.    - **DO NOT “arm” the launcher until you’re ready to fire it.**3. When “arming” the launcher, place the ball on the pin and press down on the ball. Trying to press down on the bare pin can hurt your hand.  IntroductionProjectile motion is two-dimensional motion where one direction is under constant accelerationand the other direction is unaccelerated. In this lab, your job will be to compare the prediction for the range of a projectile given by the kinematic equations with the experimentally determined ranges.  Theory KinematicsLet us recall the four important equations in kinematics. First, the definitions of velocity and acceleration in the x-direction:  \begin{equation} v_{x} \equiv \frac{\Delta x}{\Delta t} \tag{1} \end{equation}  \begin{equation}a_{x} \equiv \frac{\Delta v_{x}}{\Delta t}\tag{2}\end{equation}  Second, the two equations useful for objects moving under constant accelerations:  \begin{equation}x(t) = \frac{1}{2} a_{x} t^2 + v_{o,x} t + x_{o}\tag{3}\end{equation}  \begin{equation}v_{f,x}^2 - v_{o,x}^2 = 2 a_{x} \Delta x\tag{4}\end{equation}  The same equations can be used in the y-direction by replacing all the x’s with y’s.In the horizontal direction (the x-direction), there is no acceleration, so that $a_x = 0 m/s^2$. However, gravity contributes a constant acceleration downwards (the –y direction) such that $a_y= -g$ where $g \equiv 9.81 \pm 0.005 m/s^2$ so that $ \delta g = 0.005 m/s^2$.When you want to predict the distance that the projectile will go, you will need to combine two of the above equations. Because there is no acceleration in the x-direction, you can use equation ([1](mjx-eqn)) to start. But you will need to know how long the ball is in flight for. This requires solving for time in equation ([3](mjx-eqn)) for the y-direction. You may need to use the quadratic formula.  Computing the “Muzzle Velocity”One of the most important values you will need for this experiment will be the “muzzlevelocity,” $v_o$, of the launcher. One way to compute that velocity is to fire the launcher purely horizontally and use equation ([1](mjx-eqn)). But we can also fire the launcher straight up and utilize the y version of equation ([4](mjx-eqn)). Remember that, in our coordinate system, $a_y$ is a negative value. By measuring the height that the ball attains and knowing the value of $a_y$, we can compute the “muzzle velocity” of the launcher.  Theoretical Range PredictionOnce the muzzle velocity has been determined, the theoretical range of the projectile can bepredicted. Equation ([1](mjx-eqn)) states that the range is completely determined by the x-component of the launch velocity and the time in the air:  \begin{equation}\Delta x = v_{x} (\Delta t) = v_{o} \cos{\theta} (\Delta t)\tag{5}\end{equation}What remains is to determine the time, $ \Delta t$, that the ball is in the air. This is completely determined by the vertical motion governed by equation ([3](mjx-eqn)). This equation can be rearranged as a quadratic equation in standard form: \begin{equation}A (\Delta t)^2 + B (\Delta t) + C = 0\tag{6}\end{equation}  which has a solution given by the quadratic formula:\begin{equation}\Delta t = \frac{-B \pm \sqrt{B^2 - 4 A C}}{2 A}\tag{7}\end{equation}  The positive root yeilds the predicted range for the projectile.  Uncertainty Analysis:   Uncertainty in Launch VelocityIt will be important to know what the uncertainties are in our computed positions and velocities. First, recall that a difference in position is a subtraction of two quantities:  \begin{equation}  \Delta y = y_{2} - y_{1}\tag{8}\end{equation}  Therefore, we can use the addition/subtraction rule to compute the uncertainty in the difference:  \begin{equation} (\delta (\Delta y)^2 = (\delta (\Delta y_{2})^2 - (\delta (\Delta y_{1})^2\tag{9}\end{equation}  This time, the uncertainties $\delta y_{1}$ and $\delta y_{2}$may not be the same, so we can’t further reduce this uncertainty.  The uncertainty in “muzzle velocity,” $\delta v_{o}$, depends on how it is computed. If one uses a horizontal shot and measures the distance and time it travels, then this is a straightforward application of the product/quotient rule. Looking at equation ([1](mjx-eqn)) we have  \begin{equation} \left(\frac{\delta v}{v}\right)^2 = \left(\frac{\delta (\Delta x)}{\Delta x}\right)^2 + \left(\frac{\delta (\Delta t)}{\Delta t}\right)^2\tag{10}\end{equation}This time, the uncertainty in time, $\delta t$ , will be mostly caused by reaction time. This uncertainty is at least 0.1 s, but could be more. Use your best judgment to estimate this. The uncertainty in position will be the standard deviation of a number of trials.When using equation ([4](mjx-eqn)) to determine “muzzle velocity,” we arrive at the following equation:  \begin{equation} v_{o} = \sqrt{2 g \Delta y}\tag{11}\end{equation}  To compute the uncertainty, we will have to use both the product/quotient and power rules. First, we rewrite the equation as $v_{o} = \sqrt{q}$ where $q = 2 g \Delta y$  Then the power rule says  \begin{equation} \frac{\delta v_{o}}{v_{o}} = \frac{1}{2} \frac{\delta q}{q} \nonumber\end{equation}  So now we work on $\delta q$. The product/quotient rule says  \begin{equation} \left(\frac{\delta q}{q}\right)^2 = \left(\frac{\delta g}{g}\right)^2 + \left(\frac{\delta (\Delta y)}{\Delta y}\right)^2 \nonumber\end{equation}  Combining them we find  \begin{equation} \frac{\delta v_{o}}{v_{o}} = \frac{1}{2} \sqrt{(\frac{\delta g}{g})^2 + (\frac{\delta (\Delta y)}{\Delta y})^2}\tag{12}\end{equation}    Uncertainty in Calculated Range The uncertainty in the calculated range is one of the more difficult computations in this lab---especially because our standard three rules will actually underestimate this uncertainty. For this lab you may use the following relationship:  \begin{equation}(\frac{\delta R}{R})^2 \approx 2 (\frac{\delta v_{o}}{v_{o}})^2\tag{13}\end{equation}  where $v_{o}$ is your launch velocity.  Using Standard DeviationsOftentimes, computing uncertainties can be tedious. Another method that is useful is to collect enough data so that one can trust the standard deviations in the collected data. For the purposes of this course---wherever you are allowed to do so---if you have taken at least five data points, you may use the standard deviation of those data points as your measurement uncertainty. Be aware that this number may be greater than your computed uncertainty; especially if you have few data points.  Experimental Procedure Measuring the “muzzle velocity”For this part of the experiment, you will determine the muzzle velocity of the launcher by firing the projectile vertically and measuring the maximum height that the ball attains. Equation ([4](mjx-eqn)) can then be used to find the (initial) muzzle velocity.   1. Mount the projectile launcher to the lab table using a C-clamp (see Figure 1). Set the launcher so the protractor measures an angle of $90^o$. This ensures that the ball will fire vertically.     - To adjust the launcher angle, loosen the bolts on the back of launcher. Be careful not to remove screws completely.2. Clamp the two-meter stick to the side of the launcher using the second C-clamp. Ensure that the metric side faces you. Align the side of the two-meter stick to the edge of the launcher frame so that the two-meter stick is as vertical as possible.3. Note the initial height of the ball, $y_{1}$, (indicated on the front of the launcher). Enter this into the cell below.4. Set the ball into the launcher and use the ramrod to push ball into launcher. **Stop after the second click**.5. Fire the ball vertically by pulling the string on the release lever. Determine the final height, $y_{2}$, by locating the center of the ball when it stops rising. (Taking a short video with your cell phone might help with this step). Enter your result in the cell below.6. Repeat step 5 *at least* five times and enter your data for Table 1 in the cell below.7. Use Equation ([4](mjx-eqn)) to determine the initial velocity of the ball, $v_{o}$ when it left the launcher. This is called the ‘**muzzle velocity**’ of the launcher.**Where does the ball begin its flight?** Is the uncertainty in $y_{1}$ the same as the uncertainty in $y_{2}$? (Translation: Do you know $y_{2}$ as well as you know $y_{1}$? Try it a few times before answering.)<jupyter_code># Raw Data 1
# Table 1: Muzzle Velocity Data

# Import Numpy and Pandas with standard names
import pandas as pd
import numpy as np

# Create an empty numpy array to hold the raw data
raw_data_1 = np.empty((5,4))

# Set the trial number column identifiers for each Trial
raw_data_1[0][0]=1
raw_data_1[1][0]=2
raw_data_1[2][0]=3
raw_data_1[3][0]=4
raw_data_1[4][0]=5

# Create a Pandas dataframe, and convert the Trial number column to integer format
df1 = pd.DataFrame(raw_data_1, columns=["Trial", 
                                        "Initial Height (m)", 
                                        "Final Height (m)",
                                       "Vertical Displacement (m)"])
df1['Trial'] = df1['Trial'].astype(int)


#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Enter the values of the initial height (y1) and its uncertainty
df1['Initial Height (m)'] = [0.27,0.27,0.27,0.27,0.27]
uncertainty_y1 = 0.001

# Enter the values of the final height (y2) and its uncertainty
df1['Final Height (m)'] = [1.54,1.53,1.55,1.56,1.54]
uncertainty_y2 = 0.002

###########################################


# Calculate the vertical displacement: Δy = y2 - y1
df1['Vertical Displacement (m)'] = df1['Final Height (m)'] - df1['Initial Height (m)']

# Calculates the mean of the vertical displacement
mean_y = sum(df1['Vertical Displacement (m)'])/len(df1['Vertical Displacement (m)'])

# Calculates the uncertainty of the vertical displacement using standard deviation
uncertainty_Delta_y = np.std(df1['Vertical Displacement (m)'])

# Display the dataframe
from IPython.display import display
print ("Table 1: Muzzle Velocity Data")
display(df1)

print("𝛿y1 = %0.4fm         𝛿y2 = %0.4f" % (uncertainty_y1, uncertainty_y2))
print()
print("Mean Δy = %0.4fm     𝛿(Δy) = %0.4f" % (mean_y, uncertainty_Delta_y))
print()<jupyter_output>Table 1: Muzzle Velocity Data<jupyter_text>With this data, you should now be able to compute:<jupyter_code># Raw Data 2

#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Initial Velocity (m/s) and its uncertainty
ini_v = 0.001
delta_ini_v = 0.002

###########################################

print(u'v\u2092 =', ini_v, "m/s")
print("𝛿"u'v\u2092 =', delta_ini_v)
print()<jupyter_output>vₒ = 0.001 m/s
𝛿vₒ = 0.002<jupyter_text>The Horizontal Shot: Range Prediction and Verification and Second Measurement of the “Muzzle Velocity”Using your value for the muzzle velocity, you should now be able to predict the range of the projectile when it is fired horizontally. Use the following procedure to set up the horizontal shot:  1. Remove the two-meter stick.2. Loosen the two screws and rotate the launcher so that the protractor reads $\theta = 0^o$ (See Figure 2). Re-tighten the two screws.3. Measure the vertical distance, $\Delta y$, from the bottom of the ball as labeled on your launcher to the floor. Record this value in the cell below.4. Use Equation ([3](mjx-eqn)) to determine the time, $\Delta t$, for a ball released from rest, ($v_{oy} = 0 m/s$), to fall the vertical distance, $\Delta y$, to the floor.     - **Include this calculation in your Sample Calculations section.**5. Because the horizontal and vertical components for projectile motion are independent, the time for a ball fired horizontally from the table to reach the floor is the same as that calculated in step 4. Use Equation ([5](mjx-eqn)) to predict the horizontal distance, $\Delta x$, that the ball will travel in this time.     - Note that the initial horizontal velocity, $v_{ox}$, will be the “muzzle velocity” found earlier. This distance is called the range, R.       - Show your work in your Sample Calculations section.Compute your predicted range and enter it into the cell below. **Stop here and have your instructor to check your data before continuing:**<jupyter_code># Raw Data 3

#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Verticle distance traveled (m) and its uncertainty
Delta_y = 1.027
Unc_Delta_y = 0.005

# Predicted Range (m) and its uncertainty
Delta_x = 5
uncertainty_Delta_x = 0.002

###########################################

print("Δy = %0.03f m               𝛿(Δy) = %0.03f" % (Delta_y,Unc_Delta_y))
print("Predicted Δx = %0.03f m     𝛿(Δx_p) = %0.03f" % (Delta_x,uncertainty_Delta_x))
print("")<jupyter_output>Δy = 1.027 m               𝛿(Δy) = 0.005
Predicted Δx = 5.000 m     𝛿(Δx_p) = 0.002<jupyter_text>6. Place the center of the wooden “catcher” at your predicted range and tape a piece of white paper to the bottom. At the center of the paper, you might make a fiducial mark and label it with the horizontal distance from the initial firing location to the mark. This allows you to measure the distance to the actual landing point by adding (or subtracting) the distance from the mark that the ball makes to the fiducial mark.7. Cover the white paper with a sheet of carbon paper (carbon side down) and lightly tape it down. **When you fire the ball, it should land on the carbon paper and make a black mark on the white paper.**8. Fire the ball five times and complete Table 2 in the cell below.  **Time each shot** and use the table below to record and analyze your range data:<jupyter_code># Raw Data 4
# Table 2: Horizontal Range Data

# Create an empty numpy array to hold the raw data
raw_data_2 = np.empty((5,4))

# Set the trial number column identifiers for each Trial
raw_data_2[0][0]=1
raw_data_2[1][0]=2
raw_data_2[2][0]=3
raw_data_2[3][0]=4
raw_data_2[4][0]=5

# Create a Pandas dataframe, and convert the Trial number column to integer format
df2 = pd.DataFrame(raw_data_2, columns=["Trial", 
                                        "Range Δx (m)", 
                                        "Time of Flight Δt (s)",
                                       "Velocity (m/s)"])
df2['Trial'] = df2['Trial'].astype(int)


#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Horizontal Distance Traveled (m)
df2['Range Δx (m)'] = [2.316,2.317,2.300,2.295,2.285]

# Time for each trial (s)
df2['Time of Flight Δt (s)'] = [0.5,0.5,0.5,0.5,0.5]

###########################################


# From equation 1 in the theory section
df2['Velocity (m/s)'] = df2['Range Δx (m)']/df2['Time of Flight Δt (s)']

# Display the dataframe
from IPython.display import display
display(df2)
print ("Table 2: Horizontal Range Data")
print("")<jupyter_output><empty_output><jupyter_text>The Angled Shot: Range Prediction and Verification 1. Loosen the screws and adjust the launcher to an angle between $55^o$ and $80^o$ (Your lab instructor may suggest an angle). Retighten the screws and record your chosen angle in the cell below.2. Measure the new vertical distance, $\Delta y$, from the bottom of the ball in the launcher to the floor. Record this value in the cell below.3. Using your measured muzzle velocity and chosen angle, predict the new range, $\Delta x$, for the projectile. Place this value in the cell below.Compute your predicted range and enter it into the cell below. **Stop here and have your instructor to check your data before continuing:**<jupyter_code># Raw Data 5

#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Chosen angle value
theta = 30

# Verticle distance traveled (m) and its uncertainty
Delta_y = 1.031
Uncertainty_Delta_y = 0.005

# Predicted Range (m) and its uncertainty
Delta_x = 5
uncertainty_Delta_x = 0.002

###########################################

print("θ =", theta)
print("Δy = %0.03fm               𝛿(Δy) = %0.03f" % (Delta_y,Unc_Delta_y))
print("Predicted Δx = %0.03fm     𝛿(Δx_p) = %0.03f" % (Delta_x,uncertainty_Delta_x))
print("")<jupyter_output>θ = 30
Δy = 1.031m               𝛿(Δy) = 0.005
Predicted Δx = 5.000m     𝛿(Δx_p) = 0.002<jupyter_text>4. Place the center of the wooden “catcher” at your predicted range and tape a piece of white paper to the bottom. At the center of the paper, you might make a fiducial mark and label it with the horizontal distance from the initial firing location to the mark. This allows you to measure the distance to the actual landing point by adding (or subtracting) the distance from the mark that the ball makes to the fiducial mark.5. Cover the white paper with a sheet of carbon paper (carbon side down) and lightly tape it down. **When you fire the ball, it should land on the carbon paper and make a black mark on the white paper.**6. Fire the ball five times and complete Table 3 in the cell below.<jupyter_code># Raw Data 6
# Table 3. Angled Shot Range

# Create an empty numpy array to hold the raw data
raw_data_3 = np.empty((5,2))

# Set the trial number column identifiers for each Trial
raw_data_3[0][0]=1
raw_data_3[1][0]=2
raw_data_3[2][0]=3
raw_data_3[3][0]=4
raw_data_3[4][0]=5

# Create a Pandas dataframe, and convert the Trial number column to integer format
df3 = pd.DataFrame(raw_data_3, columns=["Trial", 
                                        "Range Δx (m)"])
df3['Trial'] = df3['Trial'].astype(int)


#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Horizontal Distance Traveled (m)
df3['Range Δx (m)'] = [3.43, 3.456, 3.432,3.43, 3.447]

###########################################


# Calculates the average Δx
av_Delta_x = sum(df3['Range Δx (m)'])/len(df3['Range Δx (m)'])

# Calculates 𝛿(Δx) by using the standard deviation
unc_range = np.std(df3['Range Δx (m)'])

# Display the dataframe
from IPython.display import display
display(df3)
print ("Table 3. Angled Shot Range")
print("")
print("Average Δx = %0.5f m  𝛿(Δx) = %0.5f" % (av_Delta_x,unc_range))<jupyter_output><empty_output><jupyter_text>*** Your Report Experimental ProcedureYou will need to write a few paragraphs to *carefully* describe the following things:  - Carefully describe how you set up your experiments- For the vertical shot:    - Explain your procedure for verifying that the ball was fired purely vertically.    - Explain your procedure for measuring the height that the ball reached.- For the horizontal and angled shots:    - Explain your procedure for measuring the height of the ball.    - Explain your procedure for measuring the horizontal travel of each shot.- How did you make each of these measurements as accurate as possible?  Write this section so that someone else could perform the experiment by just reading this section (but do not write instructions). Talk about any problems you encountered and how you handled them.  Data*Report the following values and their uncertainties*:- What was your final determination of your “muzzle velocity?” (Hint: Look at the result for your vertical shot.)- What was the angle at which you fired the “angled” shot?- Fill in the values in the cell below:<jupyter_code># Table 4: Theoretical and Experimental Projectile Ranges

# Create an empty numpy array to hold the raw data
raw_data_4 = np.empty((2,4))

# Create a Pandas dataframe, and convert the Trial number column to integer format
df4 = pd.DataFrame(raw_data_4, columns=[" ", 
                                        "Theoretical (m)", 
                                        "Mean (m)",
                                       "Std. Deviation (m)"])
df4[' '] = ["Horizontal", "Angled"]


#### Enter Raw Data Here!!!!!!!!!!!!!! ####

# Theoretical ranges for horizontal and angled shots
df4['Theoretical (m)'] = [2.327,2.807]

# Mean of ranges for horizontal and angled shots
df4['Mean (m)'] = [2.24638,2.7602]

# Standard Deviation of ranges for horizontal and angled shots
df4['Std. Deviation (m)'] = [0.005,2.468]

###########################################


# Display the dataframe
from IPython.display import display
display(df4)
print ("Table 4: Theoretical and Experimental Projectile Ranges")
print("")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11569239777495853, 'fraction_numerical': 0.024592563677173808, 'mean_word_length': 4.109698329593617, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '327037', 'license': 'MIT', 'n_tokens_mistral': 6288, 'n_tokens_neox': 5841, 'n_words': 2743, 'path': 'PHYS201/Lab3.ipynb', 'repo_name': 'JNichols-19/PhysicsLabs', 'size': '20494'}