Coupled Oscillators

Alexei Gilchrist

Coupling together two or more oscillators introduces a whole new level of complexity. It turns out that there is a particular way of looking at the system that makes it simple to solve the motion.

1 Introduction

In various other articles we have looked at the behaviour of a single oscillator. If more than one oscillator interacts, the resulting motion can get incredibly complex and the task of describing the motion would seem rather daunting. Luckily by looking at the system in just the right way all this complexity disappears and you can describe the system as a whole lot of independent oscillators, and that is much easier to understand!

2 How to solve

Imagine we have \(n\) coupled oscillators whose amplitudes are described by the variables \(x_1(t), x_1(t), \ldots, x_n(t)\). In general, the steps you will need to follow to solve the motion of the system will be the following:

  1. Perturb each oscillator from its rest position, write down the forces, and use Newton’s 2nd law \(F=m \ddot{x}\) to get the equations of motion for each oscillator.
  2. Use trial solutions of the form \(x_1(t) = A_1 e^{-i\omega t}, x_2(t) = A_2 e^{-i\omega t}, \ldots, x_n(t) = A_n e^{-i\omega t}\) (notice they all have the same \(\omega\)) and write the resulting coupled equations in the matrix form
    \[\begin{equation*}M \begin{pmatrix} A_1\\A_2\\ \vdots\\ A_n\end{pmatrix} = \lambda \begin{pmatrix} A_1\\A_2\\ \vdots\\ A_n\end{pmatrix}\end{equation*}\]
    where \(M\) is a completely determined matrix, and \(\lambda\) will be some function of \(\omega\). This is an eigenvalue equation!
  3. Find the eigenvalues \(\lambda_j\) that solve this equation and from these find the normal mode frequencies \(\omega_j\). The exact function will depend on the form of the matrix equation in the previous step.
  4. For each eigenvalue \(\lambda_j\), find the corresponding eigenvector \(\vec{v}_j\). These will yield the normal mode variables. Specifically, the physical variables \(\vec{x} = [x_1, x_2, \ldots, x_n]^T\) can be written in terms of new variables \(X_1, X_2, \ldots, X_n\) as

    \[\begin{equation}\label{eq:physical-to-normal-variables} \vec{x} = \sum_j X_j \vec{v}_j,\end{equation}\]
    where each of the new variables has the solution \(X_j(t)=C_j\cos(\omega_j t+\phi_j)\). The constants \(C_j\) and \(\phi_j\) are determined by the initial conditions as usual.

    The equation \eqref{eq:physical-to-normal-variables} can be inverted to get the normal mode variables \(X_j\) in term of the physical variables \(x_j\).

3 Example: two gliders connected by springs

To illustrate the methodology we’ll look at two coupled gliders.

Two gliders free to move horizontally and connected by springs as shown.

In the system in the picture, two gliders are free to move horizontally and are connected by identical springs with spring constant \(k\) to the walls and joined together by another spring with spring constant \(k'\). If we fix one glider then the other will undergo simple harmonic motion and is simple to describe. Allowing both to move proves to be remarkably complicated. If you ever have the chance to observe such a system, start it off by moving a single glider then try and point and track that glider. You will find all your years on this planet have not prepared you to be able to predict the motion of even this simple coupled system!

Looking at each mass in turn and labelling the displacements by \(x_1\) and \(x_2\) as shown, we can quickly write down the equations of motion using Newton’s second law:

\[\begin{align}m \ddot{x}_1 &= -k x_1 - k'(x_1-x_2) \\ m \ddot{x}_2 &= -k'(x_2-x_1) - k x_2\end{align}\]

Substituting in the trial solutions \(x_1 = A_1 e^{i\omega t}\) and \(x_2 = A_2 e^{i\omega t}\) and we get

\[\begin{align*}- m A_1 \omega^2 e^{i\omega t} &= -k A_1 e^{i\omega t} - k'(A_1 e^{i\omega t}-A_2 e^{i\omega t}) \\ - m A_2 \omega^2 e^{i\omega t} &= -k'(A_2 e^{i\omega t}-A_1 e^{i\omega t}) - k A_2 e^{i\omega t}\end{align*}\]
which after a little rearranging gives
\[\begin{align*}m \omega^2 A_1 &= (k+k') A_1 -k'A_2 \\ m \omega^2 A_2 &= (k+k') A_2 -k'A_1 .\end{align*}\]

These two equations can be written as a matrix equation

\[\begin{equation}\label{eq:2gliderevalue} \begin{pmatrix} k+k' & -k' \\ -k' & k+k' \end{pmatrix} \begin{pmatrix} A_1 \\ A_2 \end{pmatrix} = m \omega^2 \begin{pmatrix} A_1 \\ A_2 \end{pmatrix},\end{equation}\]
which is an eigenvalue equation. Following the standard techniques, we find the eigenvalues by solving the determinant equation \(|M-\lambda I|=0\), in this case
\[\begin{equation*}\left|\begin{array}{cc} k+k'-\lambda & -k' \\ -k' & k+k'-\lambda \end{array}\right| = 0.\end{equation*}\]
The determinant evaluates to \((k+k'-\lambda)^2-k'^2=0\), which has two solutions \(\lambda_1 = k\) and \(\lambda_2 = k+2k'\). Looking at the eigenvalue equation \eqref{eq:2gliderevalue} we can see that the eigenvalues are related to the angular frequencies \(\omega\) in our trial solution by \(\lambda = m \omega^2\), or reversing the relationship \(\omega = \sqrt{\lambda/m}\) so that the two normal mode frequencies will be \(\omega_1 = \sqrt{k/m}\) and \(\omega_2 = \sqrt{(k+2k')/m}\).

Now we need to find the eigenvectors associated with each eigenvalue. We do this by solving the equation \((M-\lambda_j I)\vec{v}=0\). This will be an under-determined equation! For our purposes the magnitude of the vector is unimportant so we are free to choose convenient values. For \(\lambda = k\) we get the equation

\[\begin{equation*} \begin{pmatrix} k+k'-\lambda & -k' \\ -k' & k+k'-\lambda \end{pmatrix} \begin{pmatrix} A_1 \\ A_2 \end{pmatrix} = \begin{pmatrix} k' & -k' \\ -k' & k' \end{pmatrix} \begin{pmatrix} A_1 \\ A_2 \end{pmatrix} = 0\end{equation*}\]
so we get the eigenvector \(v_1 = \begin{pmatrix}1\\1\end{pmatrix}\).

For \(\lambda = k+2k'\) we get the equation

\[\begin{equation*} \begin{pmatrix} k+k'-\lambda & -k' \\ -k' & k+k'-\lambda \end{pmatrix} \begin{pmatrix} A_1 \\ A_2 \end{pmatrix} = \begin{pmatrix} -k' & -k' \\ -k' & -k' \end{pmatrix} \begin{pmatrix} A_1 \\ A_2 \end{pmatrix} = 0\end{equation*}\]
and hence the eigenvector \(v_2 = \begin{pmatrix}1\\-1\end{pmatrix}\).

Using \eqref{eq:physical-to-normal-variables} we can relate the physical positions of the coupled gliders to the normal mode variables with

\[\begin{align*}x_1 &= X_1+X_2\\ x_2 &= X_1-X_2.\end{align*}\]
Inverting these equations and scaling them so they have a nice form we get
\[\begin{align*}X_1 &= x_1+x_2\\ X_2 &= x_1-x_2.\end{align*}\]
(normally the two sets of equations are not so symmetric).

What does all this mean? Well the normal modes will behave as independent simple harmonic oscillators so the solution for each mass will be

\[\begin{align*}x_1(t) &= X_1(t)+X_2(t) = C_1\cos(\omega_1 t + \phi_1) + C_2\cos(\omega_2 t + \phi_2)\\ x_2(t) &= X_1(t)-X_2(t) = C_1\cos(\omega_1 t + \phi_1) - C_2\cos(\omega_2 t + \phi_2),\end{align*}\]
where \(\omega_1 = \sqrt{k/m}\) and \(\omega_2 = \sqrt{(k+2k')/m}\). Note: that because we have arbitrary constants \(C_1\) and \(C_2\) that will be determined by the initial conditions, the scaling of the eigenvectors doesn’t really matter—it gets absorbed into the constants.

4 Initial conditions

To evaluate the constants \(C_1\), \(C_2\), \(\phi_1\), and \(\phi_2\), the initial conditions for the coupled gliders have to be translated to initial conditions for the normal mode variables.

Say initially the gliders start from rest (\(\dot{x}_1(0) = \dot{x}_2(0) = 0\)) and at positions \(x_1(0)\) and \(x_2(0)\). This means that the initial conditions for the normal mode variables are

\[\begin{align*}\dot{X}_1(0) &= \dot{x}_1(0) + \dot{x}_2(0) = 0 \\ \dot{X}_2(0) &= \dot{x}_1(0) - \dot{x}_2(0) = 0\end{align*}\]
this means we have \(\dot{X}_1(0) = -C_1\omega_1\sin(\phi_1)=0\) and \(\dot{X}_2(0) = -C_2\omega_2\sin(\phi_2)=0\) from which we can get \(\phi_1=\phi_2=0\). Now the initial positions give \(X_1(0) = C_1 = x_1(0)+x_2(0)\) and \(X_2(0) = C_2 = x_1(0)-x_2(0)\). So in total the equations of motion will be
\[\begin{align*}x_1(t) &= [x_1(0)+x_2(0)]\cos(\omega_1 t) + [x_1(0)-x_2(0)]\cos(\omega_2 t)\\ x_2(t) &= [x_1(0)+x_2(0)]\cos(\omega_1 t) - [x_1(0)-x_2(0)]\cos(\omega_2 t).\end{align*}\]

Below is a simulation of the two gliders. If you start one glider at its rest position and the coupling is weak, you will see beats between the two gliders!

Click figure to download the CDF demo.
Two gliders coupled together by springs. The outer springs have been set at \(k=4\) and you can adjust the spring constant of the middle spring and the initial positions.
© Copyright 2021 Alexei Gilchrist