Uploaded by Stokes Wallis

expphyfin ver 2 (1)

Spring Pendulum Simulation
Building a computer simulation capable of accurately predicting nontrivial physical system is a
vital ability of a modern physicist. Our goal in this experiment is to explore the complications
that arise while building the computer simulation of a spring pendulum. We aim to explain the
simulation method and explore what causes our simulation to fail or become far from reality.
In physics, theories can usually describe how a simple
system behaves with a mathematical equation to a high
degree of precision. However, when the system of interest
is composed of a combination of simple systems, a simple mathematical solution to describe its behaviour often
ceases to exist.
It is of interest to humans to be able to predict many
such systems. For example: being able to predict Earth’s
climate enables governments of the world to make preparations against upcoming changes and set reasonable carbon emission goals; being able to rule out flaws in the design of a rocket before launch can save trillions of dollars
and the lives of astronauts. This is why computer experiments have such an important place in modern science,
it provides the means to provide a reasonable prediction
of systems which are too complicated to calculate or are
too expensive to perform live trials on. As such, acquiring
the ability to build a computer simulation of real-world
physics is vital for a modern physicist.
With this purpose in mind, we’ve elected to build a
computer simulation of a system which combines two elementary system in classical mechanics: springs and pendulums. We attempted to simulate a system in which a
point mass experiences a combination of constant gravity and the pull of a massless spring, which is connected
between the point mass and the origin. The combination
of these two produces a system that produces chaotic
behaviour, for which analytic solutions expressed in elementary functions do not exist. Thus, such a system
requires computer simulation to predict its future state
if the current initial conditions are observed.
We use the program MATLAB to run our simulations,
and employ two approaches to simulate the spring pendulum. The first approach is by iteration: using the
fundamental equation,
F = ma
, we can change the velocity (or angular velocity) according to the acceleration (or torque) it experiences at that
moment over an infinitesimal period of time to its current
velocity. As long as the time-step is reasonably small, the
simulation will be reasonably representative of the actual
behaviour. The second approach utilizes what was taught
during the end of this semester in theoretical mechanics
and the ODE solving capability of MATLAB: by using
the ode45 function, MATLAB can numerically solve the
two ODEs derived from the system’s Lagrangian.
The equation of motion is:
r̈ +
− gcosθ = 0
θ̈ + gr sinθ
= 0
We also explored MATLAB’s ability to represent the solution graphically or with animations, as the information
of a graph or an animation is more easily digested compared to numbers. The specific methods we explored include: telling MATLAB to draw on the same plot every
time the for-loop repeats while incorporating a 0.1 second pause for every loop; using the ”drawnow” command
to add geometric objects to our animation to represent
the point mass.
In this section, we will introduce how we did the simulation and what we had done. To check our code can
be used in simulation or not, we first consider the simple
pendulum. The equation of motion (EM) of simple pendulum and spring pendulum are not linear and their analytical solution can’t be expressed by elementary functions. Therefore, we have to our numerical method to
approach it.
At first, we used the simplest form of iteration, the
Euler method, to approach the solution. However, we
quickly discovered that the total energy of the simulation
increases very quickly even over a very short duration.
Shortening the time-step between iterations helped slow
down the rate at which the total energy rises, but the
time required for the computer increases drastically. It
soon became impractical as we needed to wait more than
10 minutes for the computer to complete a 10 second
We then tried another method: ode45. It is based
on the Runge-Kutta method, and it would automatically
take an appropriate time step to make simulation. Most
importantly, it is able to complete the simulation of longduration trials in a matter of seconds. Here are the simple
pendulum case based on ode45 (The initial angle goes
from 0 to π/2 at an interval of π/16) :
(a) Phase plot of simple pendulum(50s)
(a) Initial angle π/16
(b) Phase plot of simple pendulum(100s)
FIG. 1. Different Simulation Time
We can observe that for small angle, the solution is
satisfactory. However, the closed loop gradually widens
over time as the simulation duration and initial angle
increases. It is clear that the energy is nearly conserved
in this system. However, longer simulation inevitably
causes the increase to become apparent. Therefore, we
will keep all our following simulations under 50 seconds.
(b) Initial angle π/8
We want to apply the same method to spring pendulum. Here we plot the potential energy against the
kinetic energy. If the total energy is conserved, the plot
should be a straight line.
We make the simulation with:
k = 10, m = 1, r(0) = 5, d = 2, and no initial velocity.
The energy is given by:
k(r − d)2 − mgrcosθ
(c) Initial angle π/6
FIG. 2. Different Initial angle
T =
1 2 1 2 2
mṙ + mr θ̇
We can observe that the larger the initial angle be-
comes, the wider the plot gets. That is, for a larger
initial angle, though total energy is still bounded, the error(difference with reality) is larger. We have tried different ode solver, such as ode23, ode113, ode15s, we found
that ode45 can approach relatively exactly. Therefore,
in the following section, we are going to find the reason behind this phenomenon, and we would discuss the
difference behavior with lower error situation.
route back and forth. We determine that the motion in
this situation can not be defined as chaos since it just
went through the specific point.
In this part, we change our initial length to 6 meter, and the simulation stopped at 1 second. We thought
that the reason behind this failure is due to the spring
compressing more than it possibly could. In this case,
the compression length is longer than its natural length.
In reality, this situation would not happen.
The following plots are the results of our simulations.
First, we make an (r,θ)-Time Plot and a spacial plot
showing the trajectory of the spring pendulum under the
initial conditions: k = 10, m = 1, r(0) = 5, d = 2, no
initial velocity.
As we further varied the initial conditions, we discovered another case where θ resembles SHM but r does not.
The initial conditions are: m = 1, k = 10, d = 10, r(0) =
10, θ(0) = π/3, and no initial velocity. The potentialkinetic energy plot is:
(a) Position(r,θ)-Time Plot
FIG. 4. Potential-Kinetic energy plot
(b) x-y(2D space) plot
FIG. 3. Spring pendulum example1
In example 1, we can observe that the the motion in
the r direction (the direction of the spring) resembles
simple harmonic motion, and the θ direction has a seemingly chaotic behaviour. However, we can observe than
the motion repeats itself every three peaks. Therefore,
the motion under these initial conditions has regularity.
In figure3(b), the mass point goes through the specific
We observe that in this case, the value of total energy
doesn’t change a lot, the slope of these spots (according
to the curve fitting tool) is almost -1 and the distribution
of spots are not too wide. That is, this simulation is good
enough to simulate the real situation. Then we started
to make the same two plots as we made in figure 3:
(a) Position(r,θ)-Time Plot
(b) x-y(2D space) plot
FIG. 5. Spring pendulum example2
We can notice that under this initial condition, the
r and θ exchange their roles. Three peaks of r form a
period just as θ was, and the θ wave resembles SHM.
As previously said, we classify this kind of situation as
periodic motion but not chaos. We had also simulated
different initial conditions, we just take the simplest two
examples to show our result.With above two examples,
we can make the conclusions.
First, with different initial conditions, to check the
simulation whether close to reality or not, we make
the energy(potential and kinetic) to check the total
energy or not. If we get the almost conserved energy,
the simulation is a good approximation and vice versa.
In our researching process, we notice that it is hard to
tell whether the simulation is good or not by checking
initial conditions. When the initial angle becomes larger,
iteration via Euler method loses accuracy, but ode45
doesn’t. We also found that the simulation duration
does not affect the accuracy of ode45 i.e. the width of
the potential-kinetic plot does not increase when the
simulation time lengthens. To get a more exact solution,
reducing the time step is the best way, but it takes a lot
of time. And the accuracy is not affected by just one of
the initial conditions, but many of them at once.
Second, we are going to compare the difference between
the two examples we listed. In example 1, we extended
the spring a lot initially, while in example 2, we let the
spring maintain its natural length. The behaviour of r
and θ differs drastically in these two cases. By the Lagrangian equations listed in section two, we notice that
the r-directional motion and the θ-directional motion of
the point mass are not independent of one another. In
the first example, the initial angle is small, but the length
was extended a lot. The erratic behaviour of θ can be
explained by equation 1-2: the angular acceleration is
erratic because r changes very frequently.
And in example 2, the reverse is true. Then rdirectional position behaves erratically because of the
rapid change of θ. If we take small perturbation in both
direction, it would become the simple pendulum. We
tried to simulate the system with larger initial angle
and extension, but the energy of the system increased
too rapidly. We think that we have to use advanced
computer to make more accurate simulations of these
extreme initial conditions.
Through this project, we learned more about how to
use MATLAB to solve physics problems and use numerical methods to solve ode. We also found how to make
animation using MATLAB. However, as animations
can’t be shown in the form of written report, we’ve
attached the code in our appendix (where we hand in
the code). Though we did not use MATLAB to solve
more complex or difficult problem, we have begun to use
different thinking and method to solve physical problems.