The central enterprise of physics is making and testing models of physical systems. These models we developed are based on the assumptions we make about the physical systems we are studying. As we characterize the system, we make simplifying assumptions that allow us to describe the system in terms of a few key quantities. These quantities are often called the “degrees of freedom” of the system.
In Classical Mechanics, we will use formulations of physics, such as Newton’s Laws, to describe the motion of particles. We can also use the Lagrangian and Hamiltonian formulations of mechanics. These formulations are mathematical expressions of the physical laws that govern the motion of particles.
Typically, those expressions are differential equations that describe how the system evolves in time. Our work in classical mechanics is to develop techniques and tools that let us investigate the solutions to these equations. These differential equations are commonly called equations of motion (EOM). An equation of motion describes the evolution of the agents (particles) as they interact with their surroundings and each other.
Newtonian Examples of Classical Models¶
From a Newtonian perspective, our equations of motion are often second-order differential equations. This stems from the fact that Newton’s second law relates the acceleration of a particle to the forces acting on it. The second law is given by the equation:
where is the position vector and is the acceleration vector. Thus, Newton’s second law is a general EOM that describes the dynamics of a particle of mass, :
Example: Falling Ball with No Air Resistance¶
Consider a ball of mass falling down. We define the positive direction to be down as in the figure showing the FBD of the ball.

We can apply Newton’s laws to obtain the specific EOM for the ball.
This is a 1D case in the direction,
Thus,
is the specific EOM for the ball.
Example: Simple Harmonic Oscillator¶
We will spend a lot of time studying the simple harmonic oscillator (SHO) in this course. The SHO is a system that oscillates back and forth around an equilibrium position. It is a very common system in physics and is used a base model for many more complex systems. Consider a mass, , attached to a spring with spring constant, , sitting on a frictionless horizontal plane as in the figure below.

The EOM for the SHO can be derived form Newton’s Second Law.
This is a 1D case in the direction,
And thus,
is the specific EOM for the SHO. As we will learn, this restoring force causes the mass to oscillate back and forth around the equilibrium position, with a well known frequency, .
Turning Observations into Models¶
One of the more challenging aspects of physics is how we work to make models of the observations we have. This a long and challenging process in general, but if we have a general schematic, we can make progress. The hand drawn figure below provides such a schematic.

In the schematic, our observations are the starting point. Using our framework for physics (e.g., Newton’s Laws) and making the appropriate assumptions (in blue), we can develop a model (in red) of the system. By conducting analysis and investigating the evolution of the model, we produce predictions (in green). We can then compare those predictions to our observations to evaluate how well our model describes the system.
In this class, we mostly focus on the elements circled in purple where we develop models, and use them to predict. The core part of this class is the orange circled elements of modeling and predicting. We will spend a lot of time developing the tools and techniques to make these predictions.
Modeling Process¶
Making models of physical systems is greatly helped by considering the following steps:
Identify the phenomenon or system of interest.
Identify the interactions the system has with its surroundings.
Choose an appropriate physics framework to investigate the system (Newton? Lagrange? Hamilton? Continuous or Discrete?).
Sketch the system and identify the interactions, name them, and assign them to the appropriate framework.
Choose your coordinate system and define your variables.
Apply the appropriate physics framework to the system.
Obtain the equations of motion, and make predictions.
Let’s turn to an example you have seen before: the falling ball.
Example: Falling Ball in 1D¶
Consider a ball of mass falling with air resistance. Here, we have already done some of the work above. We have identified the phenomenon, and started to indicate the interactions.

In the figure above, we have identified the forces acting on the ball. We have the gravitational force, , and the air resistance, . We have chosen the linear mode for air-resistance, which is a choice of model given the assumption that the ball moves very slowly -- this is not a good assumption in this case, but makes the mathematical analysis simpler.
We have also chosen our coordinate system, with the positive direction pointing down.
We choose a Newtonian framework for our physics because we are familiar with it. And thus, we can develop the EOM:
In 1d,
So that the EOM is,
Question: What happens with ?¶
Once the ball has no acceleration, the two forces are balanced. This is the terminal velocity of the ball. We can solve for this by setting :
This is the terminal velocity of the ball for linear drag. When the ball reaches this speed (and does so asymptotically), the forces are balanced and the ball will fall at a constant speed.
Question can we solve this differential equation?¶
The differential equation is a second-order differential equation for . We can solve this equation analytically by recasting it as a first-order differential equation for , which we solve for and then integrate to find .
We will do that later, for now, let’s hack off the drag bit and return to the simple falling ball. Our simplified EOM is:
Note this is written as a second order ODE for :
It is possible also to recast these kinds of second-order differential equations as a pair of 1st order differential equations for and :
This is a common technique in physics and engineering to solve second-order differential equations. Let’s solve this for completeness.
We can integrate:
We obtain the velocity as a function of time for constant acceleration:
Now we can integrate the velocity to obtain the position as a function of time:
We obtain the position as a function of time for constant acceleration, the standard kinematic equation:
Why the ‘plus’ sign on the last term? Because we choose positive to be down, and the ball is accelerating down.
Discrete Formulation of Newtonian Mechanics¶
Most of our experience so far has been solving problems where we can find continuous functions that are the anti-derivatives of the functions we are integrating. This leads to standard formulae that we can use to predict or plot our results.
However, there are very few systems for which we can write down EOMs that have known solutions. In these cases, we need to turn to numerical methods to solve the equations of motion. To do this, we need a discrete formulation of the EOMs.
Let’s focus on 1D:
We can write this as a pair of first-order differential equations:
Let’s allow ourselves to consider instead a small time interval of the evolution, . We can then write the velocity equation as:
We can turn this into a discrete equation by multiplying through by : prediction of the velocity at the next time step:
This is the “velocity update” equation, or more generally, the Euler step for velocity. Given the information at time , , , and , we can predict the velocity at the next time step.
Great! But that is just for velocity, can we do the same for position?
Yes
We can use the same logic to predict the position at the next time step:
If we discretize this, we realize we just have the definition of the average velocity:
We can then write the position update equation:
What is left is to determine what should be the estimate for .
Euler-Cromer Step¶
Taken together, we obtain the Euler-Cromer step for the position and velocity:
This method was accidentally discovered by a high-school physics student called Abby Aspel. It was later explored by Alan Cromer, who wrote up this method in the American Journal of Physics.
In three-dimensions, this method is simply written in a vector form:
Let’s check that the Euler-Cromer step actually reproduces motion we already know how to solve analytically. For the simple falling ball with no drag, we can compare the discrete steps against the exact kinematic equation, .
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('seaborn-v0_8-colorblind')
g = 9.8
y0, v0 = 0.0, 0.0
dt = 0.05
t_max = 2.0
n_steps = int(t_max/dt)
t = np.zeros(n_steps+1)
y = np.zeros(n_steps+1)
v = np.zeros(n_steps+1)
y[0], v[0] = y0, v0
for i in range(n_steps):
v[i+1] = v[i] + g*dt
y[i+1] = y[i] + v[i+1]*dt
t[i+1] = t[i] + dt
t_analytic = np.linspace(0, t_max, 200)
y_analytic = y0 + v0*t_analytic + 0.5*g*t_analytic**2
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(t_analytic, y_analytic, 'k-', lw=2, label='Analytic: $y_0+v_0t+\\frac{1}{2}gt^2$')
ax.plot(t, y, 'C1o', markersize=5, label='Euler-Cromer, $\\Delta t=0.05$ s')
ax.set_xlabel('Time, $t$ (s)')
ax.set_ylabel('Position, $y$ (m)')
ax.set_title('Euler-Cromer Integration vs. the Analytic Solution')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()
Analytical Solutions to the Air-Resistance Problem¶
We can solve the air-resistance problem analytically. We have the EOM for velocity:
Linear Drag¶
Let’s take the linear limit first, .
We can solve this equation by separating variables:
We can integrate both sides:
We can solve for :
We can solve for the constant by using the initial condition :
When , we find:
And as , we find the terminal velocity:
Quadratic Drag¶
In the case of quadratic drag, we have:
We can find the terminal velocity by setting :
Thus, we recast the problem in terms of the terminal velocity:
We can separate variables and integrate:
Assume we start at rest, ¶
We can solve for , by using the proper limits:
This is a known integral and yields:
With the initial condition , we find:
And thus, we find the velocity as a function of time:
The plot below compares how a falling object approaches the same terminal velocity under linear drag (exponential approach) versus quadratic drag ( approach).
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('seaborn-v0_8-colorblind')
g = 9.8
v_term = 40.0
t = np.linspace(0, 15, 300)
v_linear = v_term*(1 - np.exp(-g*t/v_term))
v_quadratic = v_term*np.tanh(g*t/v_term)
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(t, v_linear, label='Linear drag: $v_{term}(1-e^{-gt/v_{term}})$')
ax.plot(t, v_quadratic, label=r'Quadratic drag: $v_{term}\tanh(gt/v_{term})$')
ax.axhline(v_term, color='k', ls='--', lw=1, label='Terminal velocity')
ax.set_xlabel('Time, $t$ (s)')
ax.set_ylabel('Speed, $v$ (m/s)')
ax.set_title('Approach to Terminal Velocity: Linear vs. Quadratic Drag')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()