Coupled oscillators,

jiggled from one end

A one-dimensional system of n masses connected by springs. The far end of the last spring, the spring connected to the right , is fixed. The first spring, the spring connected to the left of , can be "jiggled" from the left with displacement . The system of equations to solve is :

X = A X +F

where, for an example of 3 masses,

We can make this system dimensionless by using as the time scale: . The dimensionless system will be written as

,

where now all the and should be interpreted as the ratio of the dimensional value to and , respectively. For example, if all and , then

Also,

Let the eigenvectors of *A* be written as and the eigenvalues be .

Construct a matrix *P* with the columns being the eigenvectors .

Let X=P Y, which means Y is the amplitude of the eigenvectors that

are summed to represent the displacment. Here is the clever way

to solve the coupled problem:

where *D* is a diagonal matrix of the eigenvalues. Let

. This is really cool: there are uncoupled O.D.E.s for the amplitudes of each of the eigenvectors:

Finding a particular solution of the above equation is rather elementary.

We next present a technique for finding the homogeneous solution,

and in particular an efficient way to satisfy the initial conditions

and . The general homogeneous solution is:

where

Let And let *C* be a column vector of the .

As a matrix problem, this gives

and

where Q=P D.

I like to turn off warnings about variable names being similar:

In[1]:=

In[2]:=

Create a matrix using "Input"-> "Create Table/Matrix/Pallette".

Then check "Matrix". The matrix is stored (and can also be input)

as a list of lists, with the inner lists being the rows of A. Comment

one of these A matrices as text, "uncomment" as needed. Note the

use of one decimal number forces the use of numerical computation, as opposed to

symbolic.

In[3]:=

Out[3]=

In[4]:=

Out[4]=

First, enjoy the exercise of finding eigenvalues without using the "canned" routine.

Note from the graph we expect negative roots for λ.

In[5]:=

Out[5]=

In[6]:=

Out[6]=

In[7]:=

Out[7]=

Or use the canned routine:

In[8]:=

Out[8]=

We will solve the homogeneous equation by proposing . Obviously, . Let's make a list of these "eigenfrequencies":

In[9]:=

Out[9]=

Let Mathematica find the eigenvectors:

In[10]:=

Out[10]=

Store the eigenvectors are columns in *P*:

In[11]:=

Calculate :

In[12]:=

Have a look at :

In[13]:=

Out[13]//MatrixForm=

Have a look at , just to see that it yields the expected diagonal matrix (except for round-off error):

In[14]:=

Out[14]//MatrixForm=

In[15]:=

Out[15]//MatrixForm=

In this particular example, we set . In doing so, we have implicitly nondimensionalized displacement in terms of the amplitude of the "jiggle".

In[16]:=

Out[16]=

Project the forcing onto the eigenvectors:

In[17]:=

Out[17]=

A little "pencil and paper math" yields the amplitudes of the

eigenvectors as caused by the jiggling:

In[18]:=

Out[18]=

Let's consider a particular value of Ω, so that we can have something

to plot out:

In[19]:=

Out[19]=

In[20]:=

Out[20]=

In[21]:=

Out[21]=

In[22]:=

Out[22]=

In[23]:=

Out[23]=

In[24]:=

Out[24]=

Now with all the masses assumed to have no displacement and no velocity at t=0, we have

In[25]:=

Out[25]=

In[26]:=

Out[26]=

In[27]:=

Out[27]=

In[28]:=

Out[28]=

It is amazing what Mathematica can do with a list. Exp[list] makes a list. list*list makes a list of the product of the elements...

In[29]:=

Out[29]=

In[30]:=

Check that we really did satisfy initial conditions:

In[31]:=

Out[31]=

In[32]:=

Out[32]=

In[33]:=

Out[33]=

In[34]:=

Out[34]=

In[35]:=

Out[35]=

In[36]:=

Out[36]=

Check close up to see that initial conditions are really satisfied:

In[37]:=

Out[37]=

Here we plot all the *X*, with a shift added to the displacements to

make them easier to see. The shift makes a plot look like the

displacement from a common origin, as it might naturally appear

if the masses are hanging from a ceiling.

In[38]:=

In[39]:=

Out[39]=