{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"To toggle on/off the raw code, click here ."
],
"text/plain": [
""
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import HTML\n",
"hide_me = ''\n",
"HTML('''\n",
"To toggle on/off the raw code, click here .''')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"hide_me\n",
"\n",
"import ipywidgets as widgets\n",
"from IPython.display import display, Math, Latex, HTML, IFrame\n",
"from ipywidgets import IntSlider, Label\n",
"from ipywidgets import interact, interactive\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.animation import FuncAnimation\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# Uniform Motion and Uniformly Accelerated Motion\n",
"\n",
"Grade 11\n",
"\n",
" \n",
"\n",
" https://giphy.com/gifs/usain-bolt-sgjJkkJutglMY \n",
"\n",
"## Introduction\n",
"\n",
"Everything in the universe is constantly moving. Objects can be moving incredibly slow, so slow that they appear to be at rest, or so incredibly fast that you may not even see it. Even if you're standing still on Earth, you're moving and incomprehensible speeds. On Earth, you are moving around the Sun at approximately 108,000 km/h, and the Sun is orbiting galactic center at approximately 720,000 km/h. But that's not it: our galaxy the Milky Way is moving at approximately 2,268,000 km/h. As motion is so universal, understanding motion is an important topic of physics. Motion is defined by the change of position of an object with respect to other surrounding objects. For example a car is moving with respect to trees on the roadside. Motion can be described using three important quantities: velocity, speed and acceleration. In this notebook, we will familiarize ourselves with two types of motion: uniform motion, and uniformly accelerated motion."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Concepts of Uniform Motion\n",
"\n",
"Motion is described by three variables: distance ($d$), velocity ($\\vec{v}$), and acceleration ($\\vec{a}$). Let's define and explore these quantities below.\n",
"\n",
"### Distance Vs. Displacement\n",
"To begin, let us outline the difference between distance and displacement. \n",
"> Distance describes the length of the actual path travelled to travel from one point to another.\n",
"\n",
"> Displacement is identical to distance as it describes the amount of space between two points. However, displacement is a vector quantity which means it also specifies the _direction_ of travel, as well as the amount of space between two points.\n",
"\n",
"Below is a video which demonstrates the difference between distance and displacement:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"VIDEO \n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html\n",
"VIDEO "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Practise**\n",
"\n",
"Calculate the distance and displacement based on the image below. Imagine you start at point $\\textrm{A}$ and you move around the field in the following order \n",
"\n",
"$$\\textrm{A} \\rightarrow \\textrm{B} \\rightarrow \\textrm{C} \\rightarrow \\textrm{D} \\rightarrow \\textrm{E} \\rightarrow \\textrm{A}$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Calculate the distance and displacement at point B?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "dcf68954feb64e75b496f7d0ed110162",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Distance: 2m and Displacement: 2m', '…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"Distance: 2m and Displacement: 2m East\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Displacement contains both measurement and direction\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Calculate the distance and displacement at point B?\")\n",
"\n",
"a1 = 'Distance: 2m and Displacement: 2m'\n",
"a2 = \"Distance: 2m and Displacement: 2m East\"\n",
"a3 = \"Distance: 2m North and Displacement: 2m\"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Calculate the distance and displacement at point E?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cb45688c30fe4b88a00e35bdd8a93cef",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Distance: 9m and Displacement: 7m', '…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_2(val):\n",
" if val == \"Distance: 9m North and Displacement: 2.2m NW\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Distance: Actual path covered and Displacement: Shortest path covered with direction\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Calculate the distance and displacement at point E?\")\n",
"\n",
"a1 = 'Distance: 9m and Displacement: 7m'\n",
"a2 = \"Distance: 3m and Displacement: 2.2m NW\"\n",
"a3 = \"Distance: 9m North and Displacement: 2.2m NW\"\n",
"interact(q_2, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Speed Vs. Velocity\n",
"\n",
"Analogous to distance and displacement are speed and velocity, however now these quantities also imply that the object's distance/displacement is _changing_. Let's take a look at how speed and velocity are defined.\n",
"\n",
"Speed is the rate of change of distance over time.\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\textrm{speed } = \\frac{\\textrm{change} \\ \\textrm{of} \\ \\textrm{distance (m)}}{\\textrm{time (s)}}\n",
"\\end{equation}\n",
"$$\n",
"\n",
"Velocity is the rate of change of displacement over time.\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\textrm{velocity, } \\vec{v} = \\frac{\\textrm{change} \\textrm{ of} \\textrm{ displacement (m)}}{\\textrm{time (s)}} \\\\\n",
"\\textrm{m} = \\textrm{meter } \\textrm{and} \\textrm{ s} = \\textrm{second}\n",
"\\end{equation}\n",
"$$\n",
"\n",
"**Practise**\n",
"\n",
"Now, let's repeat a similar question as we did with displacement and distance, but now include velocity. The required time of one point to another point is given below:\n",
"\n",
"* $\\textrm{A} \\rightarrow \\textrm{C}: 4 \\textrm{ sec}$\n",
"* $\\textrm{A} \\rightarrow \\textrm{D}: 10 \\textrm{ sec}$\n",
"* $\\textrm{A} \\rightarrow \\textrm{E}: 16 \\textrm{ sec}$\n",
"* $\\textrm{A} \\rightarrow \\textrm{A}: 20 \\textrm{ sec}$\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Calculate the speed and velocity at point C?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fed96bb516c94d309e533bcfb7c33977",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Speed: 0.75 m/s and Velocity: 0.55 m/…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"Speed: 0.75 m/s and Velocity: 0.55 m/s NE\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Velocity contains both measurement and direction as it relates to displacement\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Calculate the speed and velocity at point C?\")\n",
"\n",
"a1 = 'Speed: 0.75 m/s and Velocity: 0.55 m/s NE'\n",
"a2 = \"Speed: 0.55 m/s and Velocity: 0.75 m/s NE\"\n",
"a3 = \"Speed: 1 m/s and Velocity: 0.55 m/s NE\"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Calculate the speed and velocity at point D?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8f1a364d47404cee8ad2d74b8f3c5284",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Speed: 0.80 m/s and Velocity: 0.60 m/…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_2(val):\n",
" if val == \"Speed: 0.60 m/s and Velocity: 0.20 m/s South\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Speed and Velocity are not always equivalent\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Calculate the speed and velocity at point D?\")\n",
"\n",
"a1 = 'Speed: 0.80 m/s and Velocity: 0.60 m/s South'\n",
"a2 = \"Speed: 0.60 m/s and Velocity: 0.20 m/s South\"\n",
"a3 = \"Speed: 0.60 m/s and Velocity: 0.60 m/s South\"\n",
"interact(q_2, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Acceleration\n",
"\n",
"Velocity can also change with respect to time. A change in velocity requires _acceleration_, which is defined as rate of change of velocity over time. As acceleration depends on the change in the vector quantity velocity, acceleration is also a vector. Below is an example of acceleration.\n",
"\n",
" \n",
" https://giphy.com/gifs/cell-concept-acceleration-139Qnnkbg2pefe \n",
"\n",
" Acceleration is the rate of change of velocity over time. Acceleration is a vector quantity as it depends on velocity. \n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\textrm{acceleration, } \\vec{a} = \\frac{\\textrm{change} \\textrm{ of} \\textrm{ velocity } (\\frac{\\text{m}}{\\text{s}}) } {\\textrm{time (s)}} \n",
"\\end{equation}\n",
"$$\n",
"\n",
" [Here is an interactive animation demonstrating acceleration further.](https://faraday.physics.utoronto.ca/PVB/Harrison/Flash/ClassMechanics/MotionDiagram/MotionDiagram.html)\n",
"\n",
"**Practice**\n",
"\n",
"Let's go back to our field example and think about where we may see acceleration. Once again we are traveling from $\\textrm{A} \\rightarrow \\textrm{B} \\rightarrow \\textrm{C} \\rightarrow \\textrm{D} \\rightarrow \\textrm{E} \\rightarrow \\textrm{A}$: \n",
"\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Calculate the acceleration at point B?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9fd5fc1edf14414990167aa8837dc15d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Acceleration: 0 m/s² East', 'Accelera…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"Acceleration: 0 m/s\\u00b2 East\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"No change in velocity and direction is also straight line\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Calculate the acceleration at point B?\")\n",
"\n",
"a1 = 'Acceleration: 0 m/s\\u00b2 East'\n",
"a2 = \"Acceleration: 1 m/s\\u00b2 East\"\n",
"a3 = \"Acceleration: 2 m/s\\u00b2 East\"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Does a change in direction imply that there was acceleration?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "71ea3e4e06e746cfacd7358729984d7d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'Yes', 'No'), value=' '), Output()), _…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"Why?"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0371ab1fbd574d398bf95a7b789e8d28",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'To change direction is to change your…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"Yes\":\n",
" display(Latex(\"Correct!\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"Does a change in direction imply that there was acceleration?\")\n",
"\n",
"a1 = 'Yes'\n",
"a2 = \"No\"\n",
"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2 ],value = ' ',description = 'Choose One:',disabled = False));\n",
"\n",
"def q_2(val):\n",
" if val == 'To change direction is to change your velocity, and this requires acceleration':\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Velocity is a vector quantity. To change your direction requires acceleration in another direction.\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(Latex(\"Why?\"))\n",
"\n",
"a1 = 'To change direction is to change your velocity, and this requires acceleration'\n",
"a2 = 'When you change direction you gain speed, and this requires acceleration'\n",
"\n",
"\n",
"interact(q_2, val = widgets.Dropdown(options=[' ',a1 ,a2],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Uniform Motion\n",
"\n",
"Now that we have an understanding of distance, displacement, velocity and acceleration, let's use those quantities to describe \"uniform motion\".\n",
"\n",
"Uniform motion has the following two properties:\n",
"\n",
"* Motion is constant or steady that means object covers equal distance in equal time interval.\n",
"\n",
"* The object travels in a straight line.\n",
"\n",
"Consider the blue car in the animation below\n",
"\n",
" \n",
" http://www.ninetyeast.net/physics/grade-9-10-gcse-hsc/forces/newtons-laws-of-motion/newtons-first-law-of-motion \n",
"\n",
"The blue car is travelling at a velocity of $10 \\textrm{ ms}^{-1}$ to the right. That means every second the car is travelling $10 \\textrm{ m}$. If we record this car's displacement and velocity for $10 \\textrm{ sec}$, we get the following table. \n",
"\n",
"\n",
"| Time $(sec$) | Displacement ($m$) | Velocity ($ms^{-1}$)|\n",
"|:-------------:|:-----------------:|:--------:|\n",
"| $ 1$ | $ 10$ | $10$ | \n",
"| $ 2$ |$ 20$ | $10$ | \n",
"| $ 3$ |$30$ | $10$ | \n",
"| $4$ |$40$ | $10$ | \n",
"| $ 5$ | $ 50$ | $10$ | \n",
"| $ 6$ |$ 60$ | $10$ | \n",
"| $ 7$ |$70$ | $10$ | \n",
"| $8$ |$80$ | $10$ | \n",
"| $ 9$ |$90$ | $10$ | \n",
"| $10$ |$100$ | $10$ | \n",
"\n",
"We can also use this table to create the animation below:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" Your browser does not support the video tag.\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hide_me\n",
"\n",
"# Data\n",
"t = np.linspace(0,10,11)\n",
"d = np.linspace(0,100,11)\n",
"v = np.linspace(10,10,11)\n",
"\n",
"# Create a figure with two subplots\n",
"fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10, 4), dpi= 90, facecolor='w', edgecolor='k')\n",
"\n",
"# Same X axis limt and grid initalizations\n",
"for ax in [ax1, ax2]:\n",
" ax.set_xlim(0, 10)\n",
" ax.grid()\n",
" \n",
"ax1.set_ylim(0,100)\n",
"ax2.set_ylim(0,20) \n",
"\n",
"# Initialize the plot\n",
"l1, = ax1.plot([],[], 'go-', label='Displacement', linewidth=2)\n",
"leg = ax1.legend(loc='best')\n",
"l2, = ax2.plot([],[], 'rs-', label='Velocity')\n",
"leg = ax2.legend(loc='best')\n",
"\n",
"fig.suptitle('Uniform Motion')\n",
"ax1.set_xlabel('Time (sec)')\n",
"ax2.set_xlabel('Time (sec)')\n",
"ax1.set_ylabel('Displacement (m)')\n",
"ax2.set_ylabel (r'$\\mathrm{Velocity} \\ (\\mathrm{m/s})$')\n",
" \n",
"# Initiate the animation\n",
"def animate(i): \n",
" l1.set_data(t[:i+1], d[:i+1])\n",
" l2.set_data(t[:i+1], v[:i+1])\n",
" \n",
"ani = FuncAnimation(fig, animate, interval = 800, frames=len(t))\n",
"plt.close()\n",
"\n",
"# Convert animation to video\n",
"from IPython.display import HTML\n",
"HTML(ani.to_html5_video())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the table and animations, we find that the blue car's displacement is changing and its velocity is constant. This is an example of uniform motion. The car travels equal distance in equal time.\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\textrm{velocity, } \\vec{v} = \\frac{\\textrm{change} \\ \\textrm{of} \\ \\textrm{displacement (m)}}{\\textrm{time (s)}} = \\textrm{constant}\n",
"\\end{equation}\n",
"$$\n",
"\n",
"**Based on your knowledge of uniform motion, what is the blue car's acceleration?**\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "168ce5b96e4e4fbe820cfd21e3a2072f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', '0', 'Constant', 'Variable'), value=' …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"0\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(\"Speed is constant and direction is in a straight line\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"a1 = '0'\n",
"a2 = 'Constant'\n",
"a3 = 'Variable'\n",
"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Uniform Accelerated Motion"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"hide_me\n",
"\n",
"from IPython.display import HTML\n",
"# Youtube\n",
"#HTML('VIDEO ')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"VIDEO \n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html\n",
"VIDEO "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Uniformly accelerated motion is a little different than the uniform motion we discussed earlier. In the case of uniformly accelerated motion, your velocity is increasing constantly and equally in time. Your velocity is changing in a way similar to how displacement changes if you're traveling at constant velocity. Suppose you start at rest and begin running in order to catch a ball. In this scenario, you will need to _accelerate_. Suppose after each second, you are traveling 2 $\\frac{\\textrm{m}}{\\textrm{s}}$ faster than the second previous. In such a case, you have a uniform acceleration of 2 $\\frac{\\textrm{m}}{\\textrm{s}^2}$ (the seconds are squared in the units of acceleration as you are increasing your velocity constantly - i.e. you gain more velocity per second). Let's write down displacement, velocity and acceleration as you try to catch this ball in a table:\n",
"\n",
"| Time $(\\textrm{sec}$) | Displacement ($\\textrm{m}$) | Velocity ($\\textrm{ms}^{-1}$)| Acceleration ($\\textrm{ms}^{-2}$) \n",
"|:-------------:|:-----------------:|:--------:|:--------:|\n",
"| $ 0$ | $ 0$ | $0$ | $2$ |\n",
"| $ 1$ |$ 1$ | $2$ | $2$ |\n",
"| $ 2$ |$4$ | $4$ | $2$ |\n",
"| $3$ |$9$ | $6$ | $2$ |\n",
"| $ 4$ |$16$ | $8$ | $2$ |\n",
"| $5$ |$25$ | $10$ | $2$ |\n",
"| $6$ |$36$ | $12$ | $2$ |\n",
"| $ 7$ |$49$ | $14$ | $2$ |\n",
"| $8$ |$64$ | $16$ | $2$ |\n",
"\n",
"Using the table, we can also create an animation"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" Your browser does not support the video tag.\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hide_me\n",
"\n",
"# Data\n",
"t = np.linspace(0,8,9);\n",
"d = ([0,1,4,9,16,25,36,49,64]);\n",
"v = ([0,2,4,6,8,10,12,14,16]);\n",
"a = np.linspace(2,2,9);\n",
"\n",
"# Create a figure with three subplots\n",
"fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(12.5, 4), dpi= 80, facecolor='w', edgecolor='k')\n",
"\n",
"# Same X axis limt and grid initalizations\n",
"for ax in [ax1, ax2, ax3]:\n",
" ax.set_xlim(0, 8);\n",
" ax.grid();\n",
" \n",
"ax1.set_ylim(0,70);\n",
"ax2.set_ylim(0,16); \n",
"ax3.set_ylim(0,5);\n",
"\n",
"# Initialize the plot\n",
"l, = ax1.plot([],[], 'go-', label='Displacement', linewidth=2);\n",
"leg = ax1.legend(loc='best');\n",
"l1, = ax2.plot([],[], 'rs-', label='Velocity');\n",
"leg = ax2.legend(loc='best');\n",
"l2, = ax3.plot([],[], 'b*-', label='Acceleration', linewidth=2);\n",
"leg = ax3.legend(loc='best');\n",
"\n",
"fig.suptitle('Uniformly Accelerated Motion');\n",
"ax1.set_xlabel('Time (sec)');\n",
"ax2.set_xlabel('Time (sec)');\n",
"ax3.set_xlabel('Time (sec)');\n",
"ax1.set_ylabel('Displacement (m)');\n",
"ax2.set_ylabel (r'$\\mathrm{Velocity} \\ (\\mathrm{m/s})$');\n",
"ax3.set_ylabel (r'$\\mathrm{Acceleration} \\ (\\mathrm{m/s}^{2})$');\n",
"\n",
"# Initiate the animation\n",
"def animate(i):\n",
" l.set_data(t[:i+1], d[:i+1]);\n",
" l1.set_data(t[:i+1], v[:i+1]);\n",
" l2.set_data(t[:i+1], a[:i+1]);\n",
" \n",
"ani=FuncAnimation(fig, animate, interval = 800, frames=len(t));\n",
"plt.close()\n",
"\n",
"# Convert animation to video\n",
"from IPython.display import HTML\n",
"HTML(ani.to_html5_video())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how with constant acceleration, your velocity increases _linearly_. As well, when you're accelerating, your displacement changes _parabolically_. These relationships are explained further with the equations of motion below.\n",
"\n",
"\n",
"## Equations of Motion\n",
"\n",
"Using our relationships between displacement, velocity, acceleration and time, we can define \"equations of motion\" for a moving object. There are four such equations relevant to the principles of uniform motion and uniform acceleration.\n",
"\n",
"Suppose an object with initial velocity $\\vec{\\textrm{v}}_i$ $\\textrm{ms}^{-1}$ is travelling with uniform acceleration $\\vec{\\textrm{a}}$ $\\textrm{ms}^{-2}$. After traveling a displacement $\\vec{\\textrm{s}}$ in time $\\textrm{t}$ the object's final velocity would be $\\vec{\\textrm{v}_f}$ $\\textrm{ms}^{-1}$, these quantities are described by the following equations\n",
"\n",
"$$\n",
"\\begin{align}\n",
" \\vec{\\textrm{v}_f}=\\vec{\\textrm{v}_i}+\\vec{\\textrm{a}} \\textrm{t} \\ \\ \\ \\ \\ \\ \\ \\ (1) \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \n",
" \\vec{\\textrm{s}} = (\\frac{\\vec{\\textrm{v}_i}+\\vec{\\textrm{v}_f}}{2})\\textrm{t} \\; \\; (2)\n",
"\\end{align}\n",
"$$\n",
"\n",
"\n",
"$$\n",
"\\begin{align}\n",
"\\vec{\\textrm{s}} = \\vec{\\textrm{v}_i}\\textrm{t}+\\frac{1}{2}\\vec{\\textrm{a}}\\textrm{t}^{2} \\; (3) \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \n",
"\\vec{\\textrm{v}_f} = \\textrm{v}_i^{2}+2 \\vec{\\textrm{a}} \\; \\vec{\\textrm{s}} \\; \\; \\; \\; (4)\n",
"\\end{align}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equations above describe both uniform motion and uniformly accelerated motion. Equation (1) describes your final velocity given an intial velocity, and an acceleration over time. Notice how this is the equation of a line. This is what we see in the center plot of the animation above. Equation (3) describes your displacement moving at some initial velocity and accelerating uniformly for some time. Notice how time is squared in this equation. This means that this is the equation of a parabola. Equation (3) is what we see in the first plot of the animation above. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Mathematical Problems\n",
"\n",
"As we work through the problems below, we will outline the following steps as we come to the solution. Breaking the problem down in this way makes the problem less intimidating, and makes the path to solution more straight foreward.\n",
"\n",
"> 1. Identify and write what information is given in the problem, and the answer that we are asked for.\n",
"2. Using the information we know, and and the problem identified in step one, identify which equation(s) of motion we need to use to solve the problem.\n",
"3. Ensure that all the values are in the correct units and fill them in the selected equation.\n",
"4. Quote the answer and check the units."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Problem 1\n",
"\n",
"A bus accelerates from rest at $4 \\textrm{ms}^{-2}$ until it reaches a final velocity of $40 \\ \\textrm{ms}^{-1}$. For how many seconds was the bus accelerating?\n",
"\n",
"#### Solution\n",
"\n",
"**Step 1:**\n",
"\n",
"Given,\n",
"\n",
"initial velocity, $\\vec{\\textrm{v}_i} = 0 \\ \\textrm{ms}^{-1}$ \n",
"\n",
"final velocity, $\\vec{\\textrm{v}_f} = 40 \\ \\textrm{ms}^{-1}$ \n",
"\n",
"acceleration, $\\vec{\\textrm{a}} = 4 \\ \\textrm{ms}^{-2}$\n",
"\n",
"time, $\\textrm{t} = ?$\n",
"\n",
"**Step 2:**\n",
"\n",
"In this problem, the value of $\\vec{\\textrm{v}_i}$, $\\vec{\\textrm{v}_f}$ and $\\vec{\\textrm{a}}$ are given and $\\textrm{t}$ is required. Now, check the above $4$ motion equations, find the equation is related to$\\vec{\\textrm{v}_i}$, $\\vec{\\textrm{v}_f}$ and $\\vec{\\textrm{a}}$ and $\\textrm{t}$. We find the equation and it is $\\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}+\\vec{\\textrm{a}}\\textrm{t}$.\n",
"\n",
"**Step 3:** After checking all the units of the given variable $\\textrm{v}_i$, $\\textrm{v}_f$ and $\\textrm{a}$, we find that they are correct. Then fill them in selected equation:\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}+\\vec{\\textrm{a}}\\textrm{t} \\\\\n",
"\\Rightarrow \\vec{\\textrm{a}}\\textrm{t} = \\vec{\\textrm{v}_f} - \\vec{\\textrm{v}_i} \\\\\n",
"\\Rightarrow \\textrm{t} = \\frac{\\vec{\\textrm{v}_f}-\\vec{\\textrm{v}_i}}{\\vec{\\textrm{a}}} \\\\\n",
"\\Rightarrow \\textrm{t} = \\frac{40\\textrm{ms}^{-1}-0\\textrm{ms}^{-1}}{4\\textrm{ms}^{-2}} \\\\\n",
"\\Rightarrow \\textrm{t} = 10\\textrm{ s}\n",
"\\end{equation}\n",
"$$\n",
"\n",
"**Step 4:**\n",
"\n",
"time = $10\\textrm{ s}$ $(Ans)$\n",
"\n",
"This answer can be seen graphically in the animation below:\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" Your browser does not support the video tag.\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hide_me\n",
"\n",
"# Data frame to create table\n",
"df = pd.DataFrame()\n",
"df['Velocity'] = np.arange(0,41,4)\n",
"df['Time'] = df['Velocity']/4\n",
"\n",
"# Create a figure with two subplots\n",
"fig,(ax1,ax2) = plt.subplots(1,2,figsize=(6.8, 4), dpi= 100)\n",
"\n",
"# Limit and label axis\n",
"ax1.set_ylim(0,10)\n",
"ax1.set_xlim(0,40)\n",
"ax1.set_xlabel('Velocity ($ms^{-1}$)')\n",
"ax1.set_ylabel('Time (s)')\n",
"ax1.grid()\n",
"\n",
"# Initiate table properties\n",
"font_size=14\n",
"bbox=[0, 0, 1, 1]\n",
"ax2.axis('off')\n",
"\n",
"# Initialize the plot\n",
"l, = ax1.plot([],[], 'go-', label='Time', linewidth=2)\n",
"leg = ax1.legend(loc='best')\n",
"\n",
"# Initiate the animation\n",
"def animate(i):\n",
" l.set_data(df['Velocity'][:i+1], df['Time'][:i+1])\n",
" table = ax2.table(cellText = df.values[:i+1],bbox=bbox, colLabels=df.columns)\n",
" \n",
" \n",
"ani = FuncAnimation(fig, animate, interval = 800, frames=len(df.index))\n",
"plt.close()\n",
"\n",
"# Convert animation to video\n",
"from IPython.display import HTML\n",
"HTML(ani.to_html5_video())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Problem 2\n",
"\n",
"A car accelerates uniformly from $16 \\ \\textrm{m/s}$ to $38.8 \\ \\textrm{m/s}$ in $3.1$ seconds. Calculate the distance travelled by the car.\n",
"\n",
"#### Solution\n",
"\n",
"**Step 1:**\n",
"\n",
"Given,\n",
"\n",
"$\\textrm{initial} \\ \\textrm{velocity}, \\vec{\\textrm{v}_i} = 16 \\ \\textrm{m/s}$\n",
"\n",
"$\\textrm{final} \\ \\textrm{velocity}, \\vec{\\textrm{v}_f} = 38.8 \\ \\textrm{m/s}$\n",
"\n",
"$\\textrm{time, t} = 3.1 \\ \\textrm{s}$ \n",
"\n",
"$\\textrm{displacement, } \\vec{\\textrm{s}} = ?$\n",
"\n",
"**Step 2:**\n",
"\n",
"Try yourself!"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Which equation can be chosen to solve this problem?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b0006abaa15541b689c38834e6ddc089",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_f}=\\\\vec{\\\\textrm{v}_i}+\\\\vec{\\\\textrm{a}} \\\\textrm{t}$'…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "03433623aa54469eb634e337531d2e21",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{s}} = (\\\\frac{\\\\vec{\\\\textrm{v}_i}+\\\\vec{\\\\textrm{v}_f}}{2}…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8ae2628b58c642eebe43a4fcfbd7c865",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{s}} = \\\\vec{\\\\textrm{v}_i}\\\\textrm{t}+\\\\frac{1}{2}\\\\vec{\\\\t…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "35ca569a084e43a8a213121c6fef0fdf",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_f} = \\\\vec{\\\\textrm{v}_i}^{2}+2 \\\\vec{\\\\textrm{a}} \\\\; \\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2288d1346b0447aabf6da16120b0802a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(description='check', style=ButtonStyle())"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"display('Which equation can be chosen to solve this problem?')\n",
"\n",
"#Create the box to select m=Motion of Equations\n",
"a=widgets.Checkbox(\n",
" value=False,\n",
" description=r\"$\\vec{\\textrm{v}_f}=\\vec{\\textrm{v}_i}+\\vec{\\textrm{a}} \\textrm{t}$\",\n",
" disabled=False\n",
")\n",
"\n",
"b=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{s}} = (\\frac{\\vec{\\textrm{v}_i}+\\vec{\\textrm{v}_f}}{2})\\textrm{t}$')\n",
"\n",
"c=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{s}} = \\vec{\\textrm{v}_i}\\textrm{t}+\\frac{1}{2}\\vec{\\textrm{a}}\\textrm{t}^{2}$'\n",
")\n",
"d=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}^{2}+2 \\vec{\\textrm{a}} \\; \\vec{\\textrm{s}}$',\n",
" disabled=False\n",
")\n",
"\n",
"#Display the check box\n",
"display(a)\n",
"display(b)\n",
"display(c)\n",
"display(d)\n",
"\n",
"#create a button to check the answer\n",
"button_check = widgets.Button(description=\"check\")\n",
"display(button_check)\n",
"\n",
"#Check the answer\n",
"def check_button(x):\n",
" if a.value==False and b.value==True and c.value==False and d.value==False:\n",
" display(Latex(\"Correct. Well done!\"))\n",
" else: \n",
" display(Latex(\"Wrong one!\"))\n",
"\n",
"button_check.on_click(check_button)\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'What is your final displacement?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fcb0ae83ac8349a18a5473948bc4758c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', '84.94 m', '65.26 m', '89.5 m'), value…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"84.94 m\":\n",
" display(Latex(\"Correct!\"))\n",
" display(Latex(r'$\\vec{\\textrm{s}} = (\\frac{\\vec{\\textrm{v}_i}+\\vec{\\textrm{v}_f}}{2})\\textrm{t}$'))\n",
" display(Latex(r'$\\vec{\\textrm{s}} = (\\frac{(16 + 38.8)} {2} \\times 3.1) \\textrm{ m}$'))\n",
" display(Latex(r'$\\vec{\\textrm{s}} = 84.94 \\textrm{ m}$'))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"What is your final displacement?\")\n",
"\n",
"a1 = '84.94 m'\n",
"a2 = '65.26 m'\n",
"a3 = '89.5 m'\n",
"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Problem 3\n",
"\n",
"A racing car is traveling with a velocity of $72 \\ \\textrm{km/h}$ N and accelerates at $5 \\ \\textrm{m/s}^{2}$ for $10 \\ \\textrm{s}$ N. What is the final velocity of the car and how far will it travel as it accelerates?\n",
"\n",
"#### Solution\n",
"\n",
"**Step 1:**\n",
"\n",
"\n",
"Given\n",
"$\\textrm{initial} \\ \\textrm{velocity,} \\vec{\\textrm{v}_i} = 72 \\ \\textrm{km/h}$ N\n",
"\n",
"$\\textrm{acceleration, } \\vec{\\textrm{a}} = 5 \\ \\textrm{m/s}^{2}$ N\n",
"\n",
"$\\textrm{time}, \\textrm{t} = 10 \\ \\textrm{s}$\n",
"\n",
"$\\textrm{final} \\ \\textrm{velocity}, \\vec{\\textrm{v}_f} = ?$\n",
"\n",
"$\\textrm{displacement}, \\vec{\\textrm{s}} = ?$\n",
"\n",
"**Step 2:** Let's try,\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Which equations can be chosen to solve this problem?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "56da11e356354448a501da57204b2e9e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_f}=\\\\vec{\\\\textrm{v}_i}+\\\\vec{\\\\textrm{a}} \\\\textrm{t}$'…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f1610003d7dc410387f68dc318277a46",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{s}} = (\\\\frac{\\\\vec{\\\\textrm{v}_i}+\\\\vec{\\\\textrm{v}_f}}{2}…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c4704c466b9b47d88b8ac1005d66b0c4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{s}} = \\\\vec{\\\\textrm{v}_i}\\\\textrm{t}+\\\\frac{1}{2}\\\\vec{\\\\t…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4fc5f7dd4adb420f95f2aed67a97c7c7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_f} = \\\\vec{\\\\textrm{v}_i}^{2}+2 \\\\vec{\\\\textrm{a}} \\\\; \\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "83896d08508f43c3800030fd0714b3ba",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(description='check', style=ButtonStyle())"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"display('Which equations can be chosen to solve this problem?')\n",
"\n",
"#Create the box to select m=Motion of Equations\n",
"a=widgets.Checkbox(\n",
" value=False,\n",
" description=r\"$\\vec{\\textrm{v}_f}=\\vec{\\textrm{v}_i}+\\vec{\\textrm{a}} \\textrm{t}$\",\n",
" disabled=False\n",
")\n",
"\n",
"b=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{s}} = (\\frac{\\vec{\\textrm{v}_i}+\\vec{\\textrm{v}_f}}{2})\\textrm{t}$')\n",
"\n",
"c=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{s}} = \\vec{\\textrm{v}_i}\\textrm{t}+\\frac{1}{2}\\vec{\\textrm{a}}\\textrm{t}^{2}$'\n",
")\n",
"d=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}^{2}+2 \\vec{\\textrm{a}} \\; \\vec{\\textrm{s}}$',\n",
" disabled=False\n",
")\n",
"\n",
"#Display the check box\n",
"display(a)\n",
"display(b)\n",
"display(c)\n",
"display(d)\n",
"\n",
"#create a button to check the answer\n",
"button_check = widgets.Button(description=\"check\")\n",
"display(button_check)\n",
"\n",
"#Check the answer\n",
"def check_button(x):\n",
" if a.value==True and b.value==True and c.value==True and d.value==True:\n",
" display(Latex(\"Correct. Well done!\"))\n",
" display(Latex(\"yes, all the equations can be used. It depends on which one you are picking.\")) \n",
" else: \n",
" display(Latex(\"Try Again!\"))\n",
" display(Latex('Hint: More than one answers')) \n",
"\n",
"button_check.on_click(check_button)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Step 3:**\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\textrm{initial} \\ \\textrm{velocity,} \\vec{\\textrm{v}_i} = 72 \\ \\textrm{km/h} N = \\frac{72\\times1000}{3600} \\ \\textrm{m/s} = 20 \\ \\textrm{m/s} \\; N \n",
"\\end{equation}\n",
"$$\n",
"\n",
"Calculate final velocity,\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}+\\vec{\\textrm{a}}\\textrm{t} \\\\\n",
"\\vec{\\textrm{v}_f}= 20+(5\\times10) \\\\\n",
"\\vec{\\textrm{v}_f}= 70 \\ \\textrm{m/s} N\n",
"\\end{equation}\n",
"$$\n",
"\n",
"Calculate displacement,\n",
"\n",
"$$\n",
"\\begin{equation}\n",
"\\vec{\\textrm{s}} = \\vec{\\textrm{v}_i}\\textrm{t}+\\frac{1}{2}{\\vec{\\textrm{a}}}{\\textrm{t}^{2}} \\\\\n",
"\\vec{\\textrm{s}}=20\\times10+\\frac{1}{2}{5\\times}{10^{2}} \\\\\n",
"\\vec{\\textrm{s}}=(200+250)\\ \\textrm{m} \\\\\n",
"\\vec{\\textrm{s}}=450 \\ \\textrm{m} \\; N\n",
"\\end{equation}\n",
"$$\n",
"\n",
"**Step 4:**\n",
"\n",
"$$\n",
"\\begin{align}\n",
"\\textrm{final} \\ \\textrm{velocity}, \\vec{\\textrm{v}_f}=70 \\ \\textrm{m/s}\\ \\; N \\;\\;(Ans) \\\\\n",
"\\textrm{displacement} = 84.94 \\ \\textrm{m} \\ \\; N \\;\\; (Ans)\n",
"\\end{align}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Problem 4\n",
"\n",
"An Air Canada plane requires a takeoff speed of $78.5 \\ \\textrm{m/s}$ and $1690 \\ \\textrm{m}$ of runway to reach that speed. Determine the acceleration of this plane and the time required to reach this speed.\n",
"\n",
"#### Solution\n",
"\n",
"**Step 1:** Let's try,"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"'Which values are given in this problem?'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9c2437eec6d14c60b76742b876a6de54",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_i}$')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b46fe17c874440c2bd4ebf8cb6ce8c77",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{v}_f}$')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "185b76c66dc64b02958b33c73e8e960e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{a}}$')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bc99b083a9364432b8dff5c3abb6e4c9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$\\\\vec{\\\\textrm{s}}$')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "044f4d4afb074951b338736d88465206",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Checkbox(value=False, description='$t$')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e61a152cd920402aa2b9cc6811f11ee8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(description='check', style=ButtonStyle())"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"display('Which values are given in this problem?')\n",
"\n",
"#Create the box to select m=Motion of Equations\n",
"a=widgets.Checkbox(\n",
" value=False,\n",
" description=r\"$\\vec{\\textrm{v}_i}$\",\n",
" disabled=False\n",
")\n",
"\n",
"b=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{v}_f}$')\n",
"\n",
"c=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{a}}$'\n",
")\n",
"d=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$\\vec{\\textrm{s}}$',\n",
" disabled=False\n",
")\n",
"\n",
"e=widgets.Checkbox(\n",
" value=False,\n",
" description=r'$t$',\n",
" disabled=False\n",
")\n",
"\n",
"\n",
"#Display the check box\n",
"display(a)\n",
"display(b)\n",
"display(c)\n",
"display(d)\n",
"display(e)\n",
"\n",
"#create a button to check the answer\n",
"button_check = widgets.Button(description=\"check\")\n",
"display(button_check)\n",
"\n",
"#Check the answer\n",
"def check_button(x):\n",
" if a.value==True and b.value==True and c.value==False and d.value==True and e.value==False:\n",
" display(Latex(\"Correct. Well done!\"))\n",
" display(Latex(\"Initial velocity is also given as initially plane will start from $0$ $ms^{-1}$\"))\n",
" else: \n",
" display(Latex(\"Wrong one!\"))\n",
" \n",
"\n",
"button_check.on_click(check_button)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Step 2:**\n",
"\n",
"$$\n",
"\\begin{align}\n",
"\\textrm{Motion} \\ \\textrm{equation, } \\vec{\\textrm{v}_f} = \\vec{\\textrm{v}_i}^{2}+2 \\vec{\\textrm{a}} \\; \\vec{\\textrm{s}} \\textrm{ and }\n",
"\\vec{\\textrm{v}_f}=\\vec{\\textrm{v}_i}+\\vec{\\textrm{a}} \\textrm{t}\n",
"\\end{align}\n",
"$$\n",
"\n",
"**Step 3**\n",
"\n",
"Let's calculate,"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"\"What is the plane's required acceleration, and how long was it accelerating?\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "81f2fea564fa4956a134c40a98219b35",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Choose One:', options=(' ', 'acceleration = 1.91 ms² and time = 48…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hide_me\n",
"\n",
"def q_1(val):\n",
" if val == \"acceleration = 1.82 ms\\u00b2 and time = 43.06 s\":\n",
" display(Latex(\"Correct!\"))\n",
" elif val == ' ':\n",
" None\n",
" else:\n",
" display(Latex(\"Try Again!\"))\n",
"\n",
"display(\"What is the plane's required acceleration, and how long was it accelerating?\")\n",
"\n",
"a1 = 'acceleration = 1.91 ms\\u00b2 and time = 48.1 s'\n",
"a2 = 'acceleration = 1.82 ms\\u00b2 and time = 43.06 s'\n",
"a3 = 'acceleration = 1.82 ms\\u00b2 and time = 45.4 s'\n",
"\n",
"interact(q_1, val = widgets.Dropdown(options=[' ',a1 ,a2, a3 ],value = ' ',description = 'Choose One:',disabled = False));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise\n",
"\n",
" **Question 1**: \n",
" A car starting from rest in straight moves with uniform acceleration of $5 \\ \\textrm{ms}^{-2}$. What will be the velocity while crossing a person at a distance $40 \\ \\textrm{m}$? (Ans: $20 \\ \\textrm{ms}^{-1}$)\n",
"\n",
" **Question 2**:\n",
" A bike accelerates uniformly from rest to a speed of $1 \\ \\frac{\\textrm{km}}{\\textrm{min}}$ over a distance of $65 \\ \\textrm{m}$. Determine the acceleration of the bike. (Ans: $2.137 \\ \\textrm{ms}^{-1}$)\n",
"\n",
" **Question 3**:\n",
" A bullet leaves a rifle with a velocity of $521 \\ \\textrm{ms}^{-1}$. While accelerating through the barrel of the rifle, the bullet moves a distance of $0.840 \\ \\textrm{m}$. Determine the acceleration of the bullet (Consider a uniform acceleration). (Ans: $1.62 \\times 10^{5} \\ \\textrm{ms}^{-1}$)\n",
"\n",
" **Question 4**:\n",
" The Velocity of a jeep decreases uniformly from $35 \\ \\textrm{ms}^{-1}$ and after $8 \\ \\textrm{s}$ it becomes $10 \\ \\textrm{ms}^{-1}$. Find the acceleration of the car? (Ans: $-3.125 \\ \\textrm{ms}^{-2}$, You do not have worry about the '-' sign. It defines the direction as velocity is decreasing)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion\n",
"\n",
"In this notebook, we introduced two important concepts of motion: Uniform and Uniformly accelerated motion. We demonstrated how motion is related to distance, speed, velocity and acceleration. We also showed the various linear relationships between displacement, velocity and uniform acceleration using both the equations of motion, and the graphs of those functions. Using these equations, we then demonstrated several cases where they we can apply the ideas of uniform motion and uniformly accelerated motion to solve classic physics problems. This notebook serves as an introduction to the concept of uniform and uniformly accelerated motion, and will allow you to solve a great many problems using these concepts, and should act as a reasonable primer for more complex kinematic problems."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[](https://github.com/callysto/curriculum-notebooks/blob/master/LICENSE.md)"
]
}
],
"metadata": {
"celltoolbar": "Edit Metadata",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}