Iterative Prediction: Difference between revisions

From Physics Book
Jump to navigation Jump to search
No edit summary
No edit summary
Tag: Manual revert
 
(197 intermediate revisions by 7 users not shown)
Line 1: Line 1:
'''''JENNIFER YU (FALL 2016)'''
''
Editted by Joshua Barua (jbarua3)


By tconnors3




==An Overview==
This page describes iterative prediction, a technique used to predict the motion of particles over a period of time often used in simulations.
Iterative Prediction is a process used to approximate the effects of a force, be it constant or varying, on the motion of an object. This process does this approximation splitting the time interval up into many small intervals, finding the force on the object at each of the intervals, and then calculation the change of momentum and change of position for the object across each of the time intervals. Understanding Iterative Prediction also requires an understanding of the Momentum Principle, because you are constantly using the equation dp = F * deltat to update your momentum followed by your position.  


Iterative Prediction is a necessary technique to employ when doing physics because, even though our fundamental principles are based on calculus and derivatives and you should be able to solve these problems using integrals, it is often impossible to solve the integrals required to solve complex problems. Iterative Prediction also becomes much more convenient when you implement it using a program, such as vPython, which allows you to make the approximation use as many steps as your processing power can handle, which can make your prediction much more accurate.
==The Main Idea==


Iterative prediction is a mathematical technique for approximating the behavior of one or more particles over an interval of time. An iteration is a repeated procedure, so iterative prediction uses repeated procedures to predict the motion of a system. Specifically, 'iterate' means to repeat; in physics, it means to perform the same calculation repeatedly using information produced by the previous calculation. To perform iterative prediction, the initial position, initial momentum, and mass of each particle must be known, and the forces acting on each particle must be known. This information is used to update the position of each particle periodically.
To apply the momentum principle:
'''1.''' Chose your system
'''2.''' Draw a force diagram (no internal forces, everything depends on interactions with the environment)
'''3.''' Chose your time interval
'''4.''' Substitute known values and solve for unknowns
'''5.''' Check your units and reasonableness of your answer
To perform iterative prediction, the time interval of interest must be divided into small sub-intervals of duration <math>\Delta t</math> called time steps. For each time step, the following steps should be performed:
<ol>
<li>The [[Net Force]] acting on each particle should be calculated,</li>
<li>The [[Linear Momentum]] of each particle should be updated from the last time step using the newly calculated net force, and</li>
<li>The position of each particle should be updated from the last time step using its newly calculated [[Velocity]]. Repeat for the total number of time steps.</li>
</ol>
[[File:Iterative_Model.png|center]]
<center>This is a visual representation of iterative prediction being used to repeatedly update a particle's momentum. It was found on [https://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:iterativepredict this page] of the Projects & Practices in Physics website, where it is provided under a [https://creativecommons.org/licenses/by-nc-sa/3.0/ CC Attribution-Noncommercial-Share Alike 3.0 Unported] license. It is shown here under the same license.</center>
The size of the time steps used during iterative prediction is referred to as the resolution of the model. Dividing a time interval into a few large time steps is called low resolution while dividing the same time interval into many small time steps is called high resolution. Performing iterative prediction with a higher resolution requires more computations but produces more accurate results. This is because steps 2 and 3 assume constant force and velocity respectively during the duration of each time step (see the "mathematical model" section). In reality, force and velocity change continually, so this is where inaccuracy is introduced. However, if the time steps are small enough that force and velocity do not significantly change during any time step, the iterative prediction is a sufficiently accurate model. In the limit where the time interval is divided into an infinite number of infinitely small time steps, iterative prediction becomes a perfectly accurate model. However, this would require an infinite number of computations, and is therefore impossible to do, although, in some simple situations, analytic approaches can be used to this end instead. Deciding what time step to use requires consideration of both the computational resources available and the resolution required to accurately approximate the situation. When performing iterative prediction by hand, it is impractical to perform more than a few time steps, which cannot be used to accurately model much. If computers are available, it becomes feasible to divide the time interval into thousands of time steps, which can accurately simulate most day-to-day situations. Some of the most sensitive simulations, however, require incredibly small time steps. For example, some physicists perform atom-by-atom simulations of molecular structures interacting. A slight change in the position of an atom can cause a huge change in the forces acting on it, so tiny time steps must be used in order to ensure that force and velocity do not significantly change during any one time step. These simulations are run on the world's most powerful supercomputers and often take weeks to complete. They can simulate time intervals of several nanoseconds (<math>10^{-9}</math> s) using time steps of only a few femtoseconds. (<math>10^{-15}</math> s) [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6286305/ (Click here for an example of a paper about such a simulation.)] Most of the VPython simulations on this wiki use time steps of about .01s.
Iterative prediction is only an approximation, but it is a very powerful tool because it can model complex systems that are impossible to model using known analytical approaches such as calculus and kinematics due to unsolvable differential equations and other obstacles.
===Relation between Newton's 2nd Law and Momentum Principle===
The rate of change of momentum of an object is directly proportional to the net force applied and is in the direction of the net force; the net force is equal to the rate of change of momentum.
[[File:Fma_.jpg]]
- F = net force in newtons (N)
- m = mass in kilograms (kg)
- a = acceleration in meters per second per second (ms-2)
[[File:rate-of-change-of-momentum-2.jpg]]
- F  = net force in newtons (N)
- <math>\Delta mv</math> = change in momentum in kilogram metres per second (kg ms-1)
- t = change in time in seconds (s)


===A Mathematical Model===
===A Mathematical Model===


By starting from the general equation for the Momentum Principle, a formula can derived to predict the momentum of a given system at a specified point in the future. This is often referred to as the ''momentum update form'' of the Momentum Principle:
Below are the mathematical formulas required for each of the three steps outlined above.
 
<ol>
 
<li>The net force acting on each particle should be calculated.</li>
 
This step varies widely from program to program, depending on what system is being modeled. Sometimes, the forces acting on each particle are constant, such as when modeling the motion of a ball with a specific weight thrown near the surface of the earth. Other times, the forces are functions of properties such as the particles' positions, such as when modeling the motion of celestial bodies whose gravitational attraction is greater when they are closer together. Sometimes, there is only one force acting on each particle, and other times, the net force must be found by adding together the individual force vectors.


<div style="text-align: center;"><math>{{(1)}\frac{d\vec{p}}{dt}}_{system} = \vec{F}_{net}</math></div>
<li>The momentum of each particle should be updated from the last time step using the newly calculated net force.</li>


<div style="text-align: center;"><math>{{(2)}\vec{p}_{f} - \vec{p}_{i} = \vec{F}_{net}{&Delta;t}}</math></div>
This step uses the [[Impulse and Momentum|impulse-momentum theorem]]. The impulse-momentum theorem states that <math>\vec{p}_f = \vec{p}_i + \vec{J} = \vec{p}_i + \vec{F}_{net, avg} * \Delta t</math>. In iterative prediction, the initial momentum is always known; it is simply the momentum the particle had during the previous time step (or if there is no previous time step, the initial momentum of the particle). <math>\vec{F}_{net, avg}</math> represents the average net force that has been acting on the particle since the previous time step, resulting in a new momentum this time step. To calculate it, the net force found in step 1 should be used. Note that in reality, the net force acting on the particle is constantly changing, and the net force found in step 1 is the final net force, which is not truly the average net force over the course of the previous time step (except in a scenario with constant force). As described in the introductory section, this introduces inaccuracy that can be reduced by using shorter time steps; if short time steps are used, the net force does not have much time to change over the course of the time step, meaning the average net force is very similar to the final net force.


<div style="text-align: center;"><math>{{(3)}\vec{p}_{f} = \vec{p}_{i} + \vec{F}_{net}{&Delta;t}}</math></div>
<li>The position of each particle should be updated from the last time step using its newly calculated velocity.</li>


Equation <math>{(3)}</math> gives the momentum update form of the momentum principle. As it shows, the momentum of a system can be predicted if the time period of the interaction and the external net force on the system are known. Momentum can be iteratively predicted like such for uniform or non-uniform time periods. Additionally, with update of momentum, velocity and position can be updated similarly to better reflect the motion over time of the system:
This step uses the kinematic equation <math>\vec{r}_f = \vec{r}_i + \vec{v}_{avg} * \Delta t</math>. In iterative prediction, the initial position is always known; it is simply the position the particle had during the previous time step (or if there is no previous time step, the initial position of the particle). <math>\vec{v}_{avg}</math> represents the average velocity with which the particle has been moving since the previous time step, resulting in a new position this time step. To calculate it, the momentum found in step 2 should simply be divided by the mass of the particle: <math>\vec{v}_f = \frac{\vec{p}_f}{m}</math>. Note that in reality, the velocity of the particle is constantly changing, and the velocity found above is the final velocity, which is not truly the average velocity over the course of the previous time step (even in a scenario with constant force). As described in the introductory section, this introduces inaccuracy that can be reduced by using shorter time steps; if short time steps are used, the velocity does not have much time to change over the course of the time step, meaning the average velocity is very similar to the final velocity.


<div style="text-align: center;">'''Velocity Update Formula''':
</ol>


<math>{\vec{v}_{f} = \vec{v}_{i} + \frac{\vec{F}_{net}}{m}}{&Delta;t}</math>
===A Computational Model===


'''Position Update Formula''':
Iterative prediction is typically done on computers because many computations are necessary in order to perform it at a meaningful resolution. VPython is a useful program to perform iterative prediction because it can graphically display the positions of the particles each time step. Below is an example of a VPython program that uses iterative prediction to simulate a ball thrown near the surface of the earth. Be sure to read and understand the source code by clicking on "view this program" in the top left corner; there are comments for each line designed to introduce readers to their first iterative prediction program.


<math>{\vec{r}_{f} = \vec{r}_{i} + \vec{v}_{avg}{&Delta;t}}</math></div>
[https://www.glowscript.org/#/user/YorickAndeweg/folder/PhysicsBookFolder/program/IterativePrediction1 high-resolution ball trajectory simulation]


===A Visual Model===
To demonstrate differing resolutions, here is a lower resolution version of the same simulation, which uses larger time steps:


As the momentum update formula suggests, the final momentum (shown here as <math>\vec{p}_{future}</math>) of a system after a given change in time should be the vector sum of the initial momentum (denoted <math>\vec{p}_{now}</math>) and the net force on the system multiplied by the scalar time change (<math>\vec{F}_{net}{&Delta;t}</math>).
[https://www.glowscript.org/#/user/YorickAndeweg/folder/PhysicsBookFolder/program/IterativePrediction2 low-resolution ball trajectory simulation]
[[Image:MOTION.png|center|650x300px|]]


As the diagram suggests, each individual step can be analyzed through application of the momentum update form of the Momentum Principle. Once the final momentum is calculated, by utilizing the position and velocity update formula, the final velocity and position of the system can be determined at the end of the time interval of interest.
Note that the first program is more realistic; the more frequent position updates result in a smoother curve that more closely approximates the true trajectory of a ball. On the other hand, the second program has fewer calculations to do. Both programs are artificially slowed using the "rate" command in order to simulate a realistic travel time, but if both programs were allowed to run as quickly as possible, the second program would finish first. For larger, more complicated simulations, time can be a significant factor.


You can observe this Iterative Prediction in action by viewing this Vpython Script[http://www.glowscript.org/#/user/JBarua/folder/Public/program/ProjectilePublic] (http://www.glowscript.org/#/user/JBarua/folder/Public/program/ProjectilePublic). It shows the flight path of a ball given an initial positive x and y velocity until it hits the ground, calculated using Iterative Prediction. In order to get a visual cue on how changing the time step of an Iterative Prediction calculation, try changing the deltat value from .15 to .05. You will see that making deltat smaller will place the approximation points closer together, which will give the ball's flight path a more consistent curve.
Here is another more complicated simulation that uses iterative prediction to simulate the motion of a mass swinging on a spring. This is an example of iterative prediction with a varying force; during each time step, the forces acting on the mass must be calculated depending on its position using [[Hooke's Law]].


==Example Calculations==
[https://www.glowscript.org/#/user/YorickAndeweg/folder/PhysicsBookFolder/program/SpringMass spring mass simulation]


There are a variety of different problems that can be solved by utilizing the momentum update form of the Momentum Principle. They can vary in difficulty and require any number of iterations. It is often prudent to calculate these iterations in a program loop to save time and avoid miscalculations.
Note: both projectile motion and spring-mass systems can be analytically modeled; that is, in both of the above systems, analytical techniques such as calculus and kinematics can be used to find the position of the particles as a function of time. However, for some other, more complicated systems, analytical approaches may not exist, while iterative prediction often still works. For example, it would be easy to modify the projectile motion simulation to include the effects of [[Air Resistance]], which is difficult to take into account analytically.


===Example #1 - Momentum Update===
==Examples==


'''A boy standing on level ground throws a 2 kg ball into the air at an initial velocity of <math>{<8,6,0> m/s}</math>. If the only force acting on the ball is gravity, what is the final momentum of the ball after 0.2 seconds?'''
In addition to the example below, know how to create V-Python simulations using iterative prediction with both constant and varying forces.


This problem can be solved simply by solving for final momentum in the momentum update equation:
===1. (Middling)===


<div style="text-align: center;"><math>{\vec{p}_{f} = {m}\vec{v} + \vec{F}_{grav}{&Delta;t}}</math></div>
A 2kg particle is released from rest at time t=0. A constant force of 6N is applied to it. How far has the particle traveled after 4 seconds?


<div style="text-align: center;"><math>{\vec{p}_{f} = <16,12,0> + <0,-3.92,0>}</math></div>
Solve this question


<div style="text-align: center;"><math>{\vec{p}_{f} = <16,8.08,0>}</math></div>
A.) analytically (using kinematic equations)


===Example #2 - Trajectory Maxima===
B.) using iterative prediction with 12 equal time steps


'''A 1 kg ball is kicked from location <math>{<9,0,0> m}</math> giving it an initial velocity of <math>{<-10,13,0> m/s}</math>. What is the maximum height that the ball will reach along its trajectory?'''
C.) using iterative prediction with 4 equal time steps


This problem is a bit more complicated than the previous one. Before calculating the maximum height of the ball, we must know the time it takes for the ball to reach its maximum height by analyzing the motion of the ball in the +y direction through the momentum update equation:
D.) using iterative prediction with a single time step


<div style="text-align: center;"><math>{t}_{f} = {v}_{i,y}{m}/{F}_{net,y}</math></div>
Pay attention to how the resolution of the iterative prediction affects the accuracy of the answer. The analytical answer is completely accurate.


<div style="text-align: center;"><math>{t}_{f} = \frac{(13)(1)}{(1)(9.8)} = 1.326 s</math></div>


Now that we know how long it takes for the ball to reach its maximum height, we can solve for the final height of the ball by utilizing the position update equation:
A.) To solve this analytically, the following kinematic equation should be used:


<div style="text-align: center;"><math>{r}_{f,y} = {r}_{i,y} + {v}_{avg,y}{&Delta;t}</math></div>
<math>\Delta x = \frac{1}{2} a t^2 + v_0 t</math>


<div style="text-align: center;"><math>{r}_{f,y} = 0 + \frac{13+0}{2}(1.326) = 8.64 m</math></div>
Using [[Newton's Second Law: the Momentum Principle]], we know that <math>a = \frac{f}{m} = 3</math>m/s^2. We are also given that <math>v_0 = 0</math>, and we are interested in the time t=4. Substituting these values into the kinematic equation yields


===Example #3 - Varying Force===
<math>\Delta x = \frac{1}{2} (3) (4)^2 = 24</math>m.
'''Model the motion of a spring with a ball attached to the end, taken into consideration of two forces, gravity (constant) and spring force (non-constant)'''


This is a good example of a problem that can most easily be solved using a computer program and knowledge of Iterative Prediction. In order to iteratively update the position of the ball and spring, three steps need to be taken inside of our while loop.
B.) To solve this using iterative prediction, a computational tool should be used. Since animation isn't necessary for this problem, I used Microsoft Excel; each row populates itself based on the information in the previous row using formula functions. Google Spreadsheets can also be used, as can V-Python or any other programming language.


Step 1: Calculate net force
[[File:12steps.PNG]]
Calculating the net force requires you first to calculate both the spring force vector and gravitational force vector based on the current position of the ball, then add them to get a net force vector.


[[File:Spring1.PNG]]
Using 12-time steps of 1/3 seconds each results in a simulated displacement of 26m, which is fairly close to the actual amount of 24m.


Step 2: Apply Momentum Principle
C.)
Now that we know our net force vector, we need to use the Momentum Principle to find the change in momentum when that force is applied for our time step.


[[File:Spring2.PNG]]
[[File:4steps.PNG]]


Step 3: Update Position
using 4-time steps of 1 second each results in a simulated displacement of 30m, which is fairly different from the actual amount of 24m.
Finally, now that we know the change in momentum(and in turn the change in velocity), we can use our position update formula to update the position of both the ball and the axis of the spring. Don't forget to update your time!


[[File:Spring4.PNG]]
D.)
 
[[File:1step.PNG]]
 
using a 1-time step of 4 seconds results in a simulated displacement of 48m, which is twice the actual amount!
 
This demonstrates that higher-resolution simulations with smaller time steps are able to predict the motion of particles more accurately than lower-resolution simulations with larger time steps. It also demonstrates that as the length of each time step approaches 0, the predicted motion of the particles approaches their actual motion. It is important to choose a resolution that keeps error within an acceptable margin.


==Connectedness==
==Connectedness==


Iterative Prediction serves as a basis for modeling complex motion throughout time. While some of the basic examples do not appear to be too trivial, iterative prediction can be used to solve more difficult problems. Having now almost completed a semester of mechanics, one topic that I became interested in almost right away was this idea of being able to solve problems in which we aren't necessarily concerned with the physics of the system at the current moment in time. Iterative Prediction of motion is just one of the many different techniques we have used to study the "physics of the future."
===Application: video game industry===


Iterative Prediction can have many applications to the field of Chemical Engineering, namely in the principles governing momentum transfer in chemical processes. A simple example is in studying fluid flow in a process. By making use of iterative prediction and the momentum principle, a chemical engineer can model the change in momentum of the fluid flow by analyzing the net force on the fluid (likely due to pressure) and the initial momentum of the fluid flow. In industry, this can be important so as to predict accumulation in a process and thus allow for modeling of an efficient process to maximize output.
One popular application of iterative prediction is in physics-based video games. These are often little more than physics simulations with player input. Iterative prediction is used in most major video games to predict the motion of in-game objects. It can be used even if the laws of physics within the video game are different from those of the real world.


==History==
==History==


The physics behind iterative prediction is nothing more than simple application of the momentum principle and projectile motion, which has existed in classical mechanics for quite some time. However, the practical application of iterative prediction for analyzing systems has evolved due to advances in computational methods and technology. With the computational power of a computer to iteratively calculate changes in momentum through time, one can analyze a system's motion extremely quickly without tedious and difficult mathematical calculations.
The impulse-momentum theorem, which is used in iterative prediction to update the momenta of particles, is derived from Newton's Second Law, which Isaac Newton (1643-1727) publish in his 1687 book Principia Mathematica. From this point onward, all of the math necessary for iterative prediction was known, but it was not useful to perform iterative prediction until significant computational advances in the twentieth century allowed for high resolutions.


== See also ==
== See also ==


There are many public resources that delve further into iterative prediction examples of more complex motion.
*[[Linear Momentum]]
*[[Impulse and Momentum]]
*[[Analytical Prediction]]
*[[Iterative Prediction of Spring-Mass System]]
*[[Determinism]]


===External links===
===External links===


[http://en.wikipedia.org/wiki/Portal:Physics Physics Portal]
*[http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:modeling_with_vpython Iterative Prediction with VPython]
 
[http://hyperphysics.phy-astr.gsu.edu/hbase/hph.html HyperPhysics Concept Map]
 
[http://ocw.mit.edu/resources/res-8-002-a-wikitextbook-for-introductory-mechanics-fall-2009/index.htm MIT Open Courseware Introductory Mechanics]
 
[http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:modeling_with_vpython Iterative Prediction with VPython]


==References==
==References==


Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2015. Wednesday, Week 2 Lecture Slides. Fenton, Flavio H
*Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. '''Wednesday, Week 2 Lecture Slides. Fenton, Flavio H'''
 
*Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. '''Monday, Week 3 Lecture Slides. Fenton, Flavio H'''
Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2015. Monday, Week 3 Lecture Slides. Fenton, Flavio H
*Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. Lab 07 Fancart Energy & Spring-Mass Instructions, Greco, Edwin
 
*http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:iterativepredict
Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2015. Lab 07 Fancart Energy & Spring-Mass Instructions, Greco, Edwin
*http://physicsnet.co.uk/a-level-physics-as-a2/mechanics/newtons-laws-of-motion/
*Bañó-Polo, M., Baeza-Delgado, C., Tamborero, S., Hazel, A., Grau, B., Nilsson, I., … Mingarro, I. (2018). Transmembrane but not soluble helices fold inside the ribosome tunnel. Nature communications, 9(1), 5246. doi:10.1038/s41467-018-07554-7

Latest revision as of 17:27, 3 December 2022


This page describes iterative prediction, a technique used to predict the motion of particles over a period of time often used in simulations.

The Main Idea

Iterative prediction is a mathematical technique for approximating the behavior of one or more particles over an interval of time. An iteration is a repeated procedure, so iterative prediction uses repeated procedures to predict the motion of a system. Specifically, 'iterate' means to repeat; in physics, it means to perform the same calculation repeatedly using information produced by the previous calculation. To perform iterative prediction, the initial position, initial momentum, and mass of each particle must be known, and the forces acting on each particle must be known. This information is used to update the position of each particle periodically.

To apply the momentum principle:


1. Chose your system

2. Draw a force diagram (no internal forces, everything depends on interactions with the environment)

3. Chose your time interval

4. Substitute known values and solve for unknowns

5. Check your units and reasonableness of your answer


To perform iterative prediction, the time interval of interest must be divided into small sub-intervals of duration [math]\displaystyle{ \Delta t }[/math] called time steps. For each time step, the following steps should be performed:

  1. The Net Force acting on each particle should be calculated,
  2. The Linear Momentum of each particle should be updated from the last time step using the newly calculated net force, and
  3. The position of each particle should be updated from the last time step using its newly calculated Velocity. Repeat for the total number of time steps.
This is a visual representation of iterative prediction being used to repeatedly update a particle's momentum. It was found on this page of the Projects & Practices in Physics website, where it is provided under a CC Attribution-Noncommercial-Share Alike 3.0 Unported license. It is shown here under the same license.


The size of the time steps used during iterative prediction is referred to as the resolution of the model. Dividing a time interval into a few large time steps is called low resolution while dividing the same time interval into many small time steps is called high resolution. Performing iterative prediction with a higher resolution requires more computations but produces more accurate results. This is because steps 2 and 3 assume constant force and velocity respectively during the duration of each time step (see the "mathematical model" section). In reality, force and velocity change continually, so this is where inaccuracy is introduced. However, if the time steps are small enough that force and velocity do not significantly change during any time step, the iterative prediction is a sufficiently accurate model. In the limit where the time interval is divided into an infinite number of infinitely small time steps, iterative prediction becomes a perfectly accurate model. However, this would require an infinite number of computations, and is therefore impossible to do, although, in some simple situations, analytic approaches can be used to this end instead. Deciding what time step to use requires consideration of both the computational resources available and the resolution required to accurately approximate the situation. When performing iterative prediction by hand, it is impractical to perform more than a few time steps, which cannot be used to accurately model much. If computers are available, it becomes feasible to divide the time interval into thousands of time steps, which can accurately simulate most day-to-day situations. Some of the most sensitive simulations, however, require incredibly small time steps. For example, some physicists perform atom-by-atom simulations of molecular structures interacting. A slight change in the position of an atom can cause a huge change in the forces acting on it, so tiny time steps must be used in order to ensure that force and velocity do not significantly change during any one time step. These simulations are run on the world's most powerful supercomputers and often take weeks to complete. They can simulate time intervals of several nanoseconds ([math]\displaystyle{ 10^{-9} }[/math] s) using time steps of only a few femtoseconds. ([math]\displaystyle{ 10^{-15} }[/math] s) (Click here for an example of a paper about such a simulation.) Most of the VPython simulations on this wiki use time steps of about .01s.

Iterative prediction is only an approximation, but it is a very powerful tool because it can model complex systems that are impossible to model using known analytical approaches such as calculus and kinematics due to unsolvable differential equations and other obstacles.

Relation between Newton's 2nd Law and Momentum Principle

The rate of change of momentum of an object is directly proportional to the net force applied and is in the direction of the net force; the net force is equal to the rate of change of momentum.

- F = net force in newtons (N)

- m = mass in kilograms (kg)

- a = acceleration in meters per second per second (ms-2)

- F = net force in newtons (N)

- [math]\displaystyle{ \Delta mv }[/math] = change in momentum in kilogram metres per second (kg ms-1)

- t = change in time in seconds (s)

A Mathematical Model

Below are the mathematical formulas required for each of the three steps outlined above.

  1. The net force acting on each particle should be calculated.
  2. This step varies widely from program to program, depending on what system is being modeled. Sometimes, the forces acting on each particle are constant, such as when modeling the motion of a ball with a specific weight thrown near the surface of the earth. Other times, the forces are functions of properties such as the particles' positions, such as when modeling the motion of celestial bodies whose gravitational attraction is greater when they are closer together. Sometimes, there is only one force acting on each particle, and other times, the net force must be found by adding together the individual force vectors.
  3. The momentum of each particle should be updated from the last time step using the newly calculated net force.
  4. This step uses the impulse-momentum theorem. The impulse-momentum theorem states that [math]\displaystyle{ \vec{p}_f = \vec{p}_i + \vec{J} = \vec{p}_i + \vec{F}_{net, avg} * \Delta t }[/math]. In iterative prediction, the initial momentum is always known; it is simply the momentum the particle had during the previous time step (or if there is no previous time step, the initial momentum of the particle). [math]\displaystyle{ \vec{F}_{net, avg} }[/math] represents the average net force that has been acting on the particle since the previous time step, resulting in a new momentum this time step. To calculate it, the net force found in step 1 should be used. Note that in reality, the net force acting on the particle is constantly changing, and the net force found in step 1 is the final net force, which is not truly the average net force over the course of the previous time step (except in a scenario with constant force). As described in the introductory section, this introduces inaccuracy that can be reduced by using shorter time steps; if short time steps are used, the net force does not have much time to change over the course of the time step, meaning the average net force is very similar to the final net force.
  5. The position of each particle should be updated from the last time step using its newly calculated velocity.
  6. This step uses the kinematic equation [math]\displaystyle{ \vec{r}_f = \vec{r}_i + \vec{v}_{avg} * \Delta t }[/math]. In iterative prediction, the initial position is always known; it is simply the position the particle had during the previous time step (or if there is no previous time step, the initial position of the particle). [math]\displaystyle{ \vec{v}_{avg} }[/math] represents the average velocity with which the particle has been moving since the previous time step, resulting in a new position this time step. To calculate it, the momentum found in step 2 should simply be divided by the mass of the particle: [math]\displaystyle{ \vec{v}_f = \frac{\vec{p}_f}{m} }[/math]. Note that in reality, the velocity of the particle is constantly changing, and the velocity found above is the final velocity, which is not truly the average velocity over the course of the previous time step (even in a scenario with constant force). As described in the introductory section, this introduces inaccuracy that can be reduced by using shorter time steps; if short time steps are used, the velocity does not have much time to change over the course of the time step, meaning the average velocity is very similar to the final velocity.

A Computational Model

Iterative prediction is typically done on computers because many computations are necessary in order to perform it at a meaningful resolution. VPython is a useful program to perform iterative prediction because it can graphically display the positions of the particles each time step. Below is an example of a VPython program that uses iterative prediction to simulate a ball thrown near the surface of the earth. Be sure to read and understand the source code by clicking on "view this program" in the top left corner; there are comments for each line designed to introduce readers to their first iterative prediction program.

high-resolution ball trajectory simulation

To demonstrate differing resolutions, here is a lower resolution version of the same simulation, which uses larger time steps:

low-resolution ball trajectory simulation

Note that the first program is more realistic; the more frequent position updates result in a smoother curve that more closely approximates the true trajectory of a ball. On the other hand, the second program has fewer calculations to do. Both programs are artificially slowed using the "rate" command in order to simulate a realistic travel time, but if both programs were allowed to run as quickly as possible, the second program would finish first. For larger, more complicated simulations, time can be a significant factor.

Here is another more complicated simulation that uses iterative prediction to simulate the motion of a mass swinging on a spring. This is an example of iterative prediction with a varying force; during each time step, the forces acting on the mass must be calculated depending on its position using Hooke's Law.

spring mass simulation

Note: both projectile motion and spring-mass systems can be analytically modeled; that is, in both of the above systems, analytical techniques such as calculus and kinematics can be used to find the position of the particles as a function of time. However, for some other, more complicated systems, analytical approaches may not exist, while iterative prediction often still works. For example, it would be easy to modify the projectile motion simulation to include the effects of Air Resistance, which is difficult to take into account analytically.

Examples

In addition to the example below, know how to create V-Python simulations using iterative prediction with both constant and varying forces.

1. (Middling)

A 2kg particle is released from rest at time t=0. A constant force of 6N is applied to it. How far has the particle traveled after 4 seconds?

Solve this question

A.) analytically (using kinematic equations)

B.) using iterative prediction with 12 equal time steps

C.) using iterative prediction with 4 equal time steps

D.) using iterative prediction with a single time step

Pay attention to how the resolution of the iterative prediction affects the accuracy of the answer. The analytical answer is completely accurate.


A.) To solve this analytically, the following kinematic equation should be used:

[math]\displaystyle{ \Delta x = \frac{1}{2} a t^2 + v_0 t }[/math]

Using Newton's Second Law: the Momentum Principle, we know that [math]\displaystyle{ a = \frac{f}{m} = 3 }[/math]m/s^2. We are also given that [math]\displaystyle{ v_0 = 0 }[/math], and we are interested in the time t=4. Substituting these values into the kinematic equation yields

[math]\displaystyle{ \Delta x = \frac{1}{2} (3) (4)^2 = 24 }[/math]m.

B.) To solve this using iterative prediction, a computational tool should be used. Since animation isn't necessary for this problem, I used Microsoft Excel; each row populates itself based on the information in the previous row using formula functions. Google Spreadsheets can also be used, as can V-Python or any other programming language.

Using 12-time steps of 1/3 seconds each results in a simulated displacement of 26m, which is fairly close to the actual amount of 24m.

C.)

using 4-time steps of 1 second each results in a simulated displacement of 30m, which is fairly different from the actual amount of 24m.

D.)

using a 1-time step of 4 seconds results in a simulated displacement of 48m, which is twice the actual amount!

This demonstrates that higher-resolution simulations with smaller time steps are able to predict the motion of particles more accurately than lower-resolution simulations with larger time steps. It also demonstrates that as the length of each time step approaches 0, the predicted motion of the particles approaches their actual motion. It is important to choose a resolution that keeps error within an acceptable margin.

Connectedness

Application: video game industry

One popular application of iterative prediction is in physics-based video games. These are often little more than physics simulations with player input. Iterative prediction is used in most major video games to predict the motion of in-game objects. It can be used even if the laws of physics within the video game are different from those of the real world.

History

The impulse-momentum theorem, which is used in iterative prediction to update the momenta of particles, is derived from Newton's Second Law, which Isaac Newton (1643-1727) publish in his 1687 book Principia Mathematica. From this point onward, all of the math necessary for iterative prediction was known, but it was not useful to perform iterative prediction until significant computational advances in the twentieth century allowed for high resolutions.

See also

External links

References

  • Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. Wednesday, Week 2 Lecture Slides. Fenton, Flavio H
  • Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. Monday, Week 3 Lecture Slides. Fenton, Flavio H
  • Georgia Institute of Technology. Physics Department. PHYS 2211. Fall 2016. Lab 07 Fancart Energy & Spring-Mass Instructions, Greco, Edwin
  • http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:iterativepredict
  • http://physicsnet.co.uk/a-level-physics-as-a2/mechanics/newtons-laws-of-motion/
  • Bañó-Polo, M., Baeza-Delgado, C., Tamborero, S., Hazel, A., Grau, B., Nilsson, I., … Mingarro, I. (2018). Transmembrane but not soluble helices fold inside the ribosome tunnel. Nature communications, 9(1), 5246. doi:10.1038/s41467-018-07554-7