It is a common joke that theoretical physics is just largely the study of a single system – the harmonic oscillator. It is true that this system is primarily the most complicated system that can be fully solved analytically, but it is also true that it is so simple that nearly any high school student is familiar with its general form. A harmonic oscillator stems from a restoring force, or a force that is negatively proportional to some measurable quantity:
where is the proportional factor and is the measurable quantity. The equation of motion corresponding to this force can be found by considering Newton’s Second Law :
By rearranging this equation and defining , we can see that we have an eigenequation for the second order differential operator with eigenfunction and eigenvalue :
Our goal then is to find the function that has the property that when it is acted upon by the operator , it results in the same function multiplied by a constant . When it comes to differentiating functions and returning the same function, the exponential function immediately comes to mind. Let’s try for our eigenfunction then. Differentiating twice, we see that . Unfortunately, we are missing a minus sign. What other function could we try? Interestingly, we find that we can resolve this issue by introducing the imaginary number . If we try for our eigenfunction, we find that and . Thus we can conclude that is an eigenfunction of our equation above. Since our operator is a second-order and linear, we know that the general solution must be the sum of two linearly independent solutions. We already found one solution, , and it is easy to show that another solution is both also a solution to the eigenequation and is linearly independent of the first solution (since it cannot be obtained by multiplying the first solution by a constant). Thus our general solution for the harmonic oscillator eigenfunction is:
We have included the constants and due to the linearity of the operator (i.e. if is a solution then must also be a solution where is an arbitrary constant). In our case, the two constants will be determined by the initial conditions of the system (of which there must be two to completely define the system). Now that we have a solution in hand, what does it mean? What does the harmonic oscillator actually look like? Using Euler’s formula, we can rewrite our general solution as:
Taking the real part of this, we get:
So we can see that the harmonic oscillator behaves like a sine wave. Simple enough – anyone who has ever observed a spring can tell you that this is indeed its behavior. However, if we want to model real systems, sometimes a single spring isn’t enough. For example, let’s consider the case of the structure of a protein. A protein is a polymer made up of subunits called amino acids. Each amino acid sits in a linear chain and is connected to its neighbors by a chemical bond. We can represent this chemical bond as a spring, which means that the protein as a whole is just a collection of springs that are coupled to each other. In other words, each spring no longer oscillates independently – its motion depends also on the springs it is coupled to, and vice versa. How do we describe the motion of the harmonic oscillators in this case?
Let’s try to look at a simpler system first and see how the tools of mathematics allow us to solve the system. Let’s consider the simplest case of coupled oscillators – two masses and three springs. Consider the system shown in the figure below, where we have two masses of mass and connected by a total of three springs with spring constants , , and . The spring with constant connects the mass to a wall, the spring with constant connects masses and , and the spring with constant connects mass to another wall. The walls do not move.
Let us assume that when the springs are at their equilibrium position (i.e. when they are unstretched or uncompressed and there is no restoring force present), they are all of equal length and all the masses are at rest. We can describe any perturbation of the masses from this equilibrium position using the parameters and . These are the only two variables we will need to determine the system, as there are two degrees of freedom present (the positions of the two masses). Note that it is not three degrees of freedom since if we know the positions of the two masses, we can also deduce the lengths of each of the three springs. Using the Lagrangian approach described in a previous post, our first step is to write the kinetic and potential energies of this system in terms of our two parameters and . The kinetic energy terms are simply the kinetic energy given by the motion of the two masses:
The potential energy terms are a little trickier. The energy of a spring can be obtained through the general force-energy relationship:
So all we need to know is the displacement of the spring and we can write the energy. From looking at the diagram, it is clear that the displacement for spring 1 is just and the displacement for spring 3 is just . What about the displacement for spring 2? Let us imagine moving both of the masses some distance and , respectively. Then spring 2 will have been shifted by a displacement , as long as we assume that “right” is the positive direction. Now that we have our displacements, we can write the total potential energy of the system:
Now we can write the Lagrangian:
Since we have two degrees of freedom here, we will write two Euler-Lagrange equations, each one corresponding to either the parameter or . The first one is shown below:
The second one is:
So now we have obtained our two coupled equations of motion of the system from the Euler-Lagrange equations:
Note that we can write these equations in matrix form:
where we call the mass matrix and the spring constant matrix. By multiplying out the matrices you can convince yourself that this does accurately represent our two coupled equations of motion. Note that our matrix equation is also just a generalization of the one-dimensional spring force equation .
Now, our goal is to solve for the vector as a function of time, as this will fully describe the motion of the system. To do this, since we know our differential operator is linear from earlier, we just need to find two linearly independent solutions for . Then a linear combination of those two solutions will give us our general solution. The reason we choose two solutions specifically is because we have already determined that our system only has two degrees of freedom. Two linearly independent solutions, then, will be able to span the whole space of the system.
How do we go about finding these two linearly independent solutions? The first step to solving any differential equation is guessing – let us guess a solution, plug it into our equations of motion, and see if it works! Luckily for us, we already have a good starting point – we have already determined that a solution is a solution for the single harmonic oscillator. What if we tried this solution for our coupled oscillator system? In other words, let’s try the solution:
Note that in our “made-up” solution, we have that both masses are oscillating at the same frequency , albeit at different amplitudes – mass 1 is oscillating with an amplitude and mass 2 is oscillating with an amplitude . Cases like these, where all the parts in a system are oscillating at the same frequency, are called normal modes. The next step is to plug our solution into our differential equation. Computing the derivatives of our solution, we have:
Plugging these into our differential equation , we get:
Cancelling out the ‘s on both sides, we get:
Note that what we have here is an eigenequation, similar to what we had before for the single oscillator case. In this case, our operator is the matrix and it is acting on the vector to return a value of 0. Our goal is to solve for the eigenvalue that makes this relation true, which we can then use to find our eigenvector . First, we see that is obviously one possible solution. In this solution, neither of the masses are moving – thus this is the equilibrium solution. Clearly this solution, while certainly a valid one, is of little interest to us. So let’s take a leap of faith and postulate that there must exist nontrivial solutions. Representing our matrix as simply , we shall state that the equation does not only have the trivial solution . If this is true, then it tells us that our matrix is not an invertible matrix. A property of an invertible matrix is that . Since we know our matrix is not invertible, it must be true that . In short, in order to find our eigenvalue , we just have to solve the equation , i.e. . Proceeding, we have that:
Finding the determinant of a 2×2 matrix is easy, so we compute:
Trying to solve this with a symbolic solver such as Wolfram Alpha gives the following result:
Clearly a solution does exist, but it is so unwieldy that we cannot really do much more with it. Let’s try a simpler case, then. Let’s reframe our problem so that all the masses and all the springs are identical, i.e. and . Then our spring constant and mass matrices simplify to:
And we can solve :
We see that we have two solutions for , which suggests that we have two normal mode frequencies. Note that we have excluded the negative solutions of , since frequencies are invariant to sign change. Now that we have the eigenvalues in hand, we can solve for the corresponding eigenvectors by plugging the eigenvalues back into the equation . For the first eigenvalue , we have:
We can solve this matrix problem by row-reducing the following equivalent matrix:
So we have that for our first normal mode. In other words, in this mode our masses are oscillating at the same frequencies and the same amplitudes. Since we only have one equation for two variables, our variables are undetermined and can be set to anything, so let’s just set . So our first normal mode solution is:
For the second eigenvalue , we have:
In the second normal mode, the masses are oscillating at the same frequency but with exactly opposite amplitudes. Like before, the specific amplitude is undetermined, so we can just set . So our second normal mode solution is:
So now we can write our general solution as a linear sum of these two normal modes:
Note that we expect four total constants in this equation to account for the four total initial conditions we need to completely determine the system (the initial positions and velocities of each of the two masses). At a first glance, it appears that we only have two, and . However, our amplitude values can be complex, so we can separate out the imaginary part from the real part:
And we have our final solution:
Note that the appearance of the ‘s allow for there to be a phase difference between the two different frequencies, leading to some very complicated waveforms in the general solution. To plot an example of a solution, we can use the following Matlab code:
t = linspace(0,10,1000); k = 50; m = 5; omega_1 = sqrt(k/m); omega_2 = sqrt(3*k/m); alpha_1 = 1; alpha_2 = 0.7; delta_1 = 0; delta_2 = pi/2; x = alpha_1*[1;1]*exp(i*(omega_1*t-delta_1))+alpha_2*[1;-1]*exp(i*(omega_2*t-delta_2)); x_real = real(x); plot(t,x_real) set(gca,'FontSize',18) xlabel('Time') ylabel('Position') legend('Mass 1','Mass 2')
This results in a nice plot of the positions of our two masses as a function of time:
It should be clear now what the general approach to solving coupled-oscillator problems is. In a nutshell:
- Write the Lagrangian of the system and use the Euler-Lagrange equations to write the equations of motion.
- Write the matrix form of the equations of motion:
- Find the normal mode frequencies by solving .
- Plug these normal mode frequencies back into the equation to solve for the eigenvectors .
- Write the general solution as a sum of each normal mode frequency: