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  coupled_osc_1.gif, is fixed.  The first spring, the spring connected to the left of coupled_osc_2.gif, can be "jiggled" from the left with displacement coupled_osc_3.gif. The system of equations to solve is :
coupled_osc_4.gifX = A X +F
where, for an example of 3 masses,
coupled_osc_5.gif
coupled_osc_6.gif
coupled_osc_7.gif
We can make this system dimensionless by using coupled_osc_8.gifas the time scale: coupled_osc_9.gif.  The dimensionless system will be written as
coupled_osc_10.gif,
where now all the coupled_osc_11.gif and coupled_osc_12.gif should be interpreted as the ratio of the dimensional value to coupled_osc_13.gifand coupled_osc_14.gif, respectively.  For example, if all coupled_osc_15.gifand coupled_osc_16.gif, then
coupled_osc_17.gif
Also,
coupled_osc_18.gif
Let the eigenvectors of A be written as coupled_osc_19.gif and the eigenvalues be coupled_osc_20.gif.
Construct a matrix P with the columns being the eigenvectors coupled_osc_21.gif.
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:

coupled_osc_22.gif
coupled_osc_23.gifcoupled_osc_24.gif

coupled_osc_25.gif

where D is a diagonal matrix of the eigenvalues.  Let
coupled_osc_26.gif.   This is really cool: there are uncoupled O.D.E.s for the amplitudes of each of the eigenvectors:
coupled_osc_27.gif
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
coupled_osc_28.gif and coupled_osc_29.gif.  The general homogeneous solution is:
coupled_osc_30.gif
where
coupled_osc_31.gif
Let coupled_osc_32.gifAnd let C be a column vector of the coupled_osc_33.gif.
coupled_osc_34.gif
coupled_osc_35.gif
As a matrix problem, this gives
coupled_osc_36.gif
and
coupled_osc_37.gif
where Q=P D.

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

In[1]:=

coupled_osc_38.gif

In[2]:=

coupled_osc_39.gif

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]:=

coupled_osc_40.gif

Out[3]=

coupled_osc_41.gif

coupled_osc_42.gif

coupled_osc_43.gif

In[4]:=

coupled_osc_44.gif

Out[4]=

coupled_osc_45.gif

First, enjoy the exercise of finding eigenvalues without using the "canned" routine.  
Note from the graph we expect negative roots for λ.

In[5]:=

coupled_osc_46.gif

Out[5]=

coupled_osc_47.gif

In[6]:=

coupled_osc_48.gif

Out[6]=

coupled_osc_49.gif

In[7]:=

coupled_osc_50.gif

Out[7]=

coupled_osc_51.gif

Or use the canned routine:

In[8]:=

coupled_osc_52.gif

Out[8]=

coupled_osc_53.gif

We will solve the homogeneous equation coupled_osc_54.gifby proposing coupled_osc_55.gif.   Obviously, coupled_osc_56.gif.  Let's make a list of these "eigenfrequencies":

In[9]:=

coupled_osc_57.gif

Out[9]=

coupled_osc_58.gif

Let Mathematica find the eigenvectors:

In[10]:=

coupled_osc_59.gif

Out[10]=

coupled_osc_60.gif

Store the eigenvectors are columns in P:

In[11]:=

coupled_osc_61.gif

Calculate coupled_osc_62.gif:

In[12]:=

coupled_osc_63.gif

Have a look at coupled_osc_64.gif:

In[13]:=

coupled_osc_65.gif

Out[13]//MatrixForm=

coupled_osc_66.gif

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

In[14]:=

coupled_osc_68.gif

Out[14]//MatrixForm=

coupled_osc_69.gif

In[15]:=

coupled_osc_70.gif

Out[15]//MatrixForm=

coupled_osc_71.gif

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

In[16]:=

coupled_osc_73.gif

Out[16]=

coupled_osc_74.gif

Project the forcing onto the eigenvectors:

In[17]:=

coupled_osc_75.gif

Out[17]=

coupled_osc_76.gif

A little  "pencil and paper math" yields the amplitudes of the
eigenvectors as caused by the jiggling:

In[18]:=

coupled_osc_77.gif

Out[18]=

coupled_osc_78.gif

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

In[19]:=

coupled_osc_79.gif

Out[19]=

coupled_osc_80.gif

In[20]:=

coupled_osc_81.gif

Out[20]=

coupled_osc_82.gif

In[21]:=

coupled_osc_83.gif

Out[21]=

coupled_osc_84.gif

In[22]:=

coupled_osc_85.gif

Out[22]=

coupled_osc_86.gif

In[23]:=

coupled_osc_87.gif

Out[23]=

coupled_osc_88.gif

In[24]:=

coupled_osc_89.gif

Out[24]=

coupled_osc_90.gif

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

In[25]:=

coupled_osc_91.gif

Out[25]=

coupled_osc_92.gif

In[26]:=

coupled_osc_93.gif

Out[26]=

coupled_osc_94.gif

In[27]:=

coupled_osc_95.gif

Out[27]=

coupled_osc_96.gif

In[28]:=

coupled_osc_97.gif

Out[28]=

coupled_osc_98.gif

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]:=

coupled_osc_99.gif

Out[29]=

coupled_osc_100.gif

In[30]:=

coupled_osc_101.gif

Check that we really did satisfy initial conditions:

In[31]:=

coupled_osc_102.gif

Out[31]=

coupled_osc_103.gif

In[32]:=

coupled_osc_104.gif

Out[32]=

coupled_osc_105.gif

In[33]:=

coupled_osc_106.gif

Out[33]=

coupled_osc_107.gif

In[34]:=

coupled_osc_108.gif

Out[34]=

coupled_osc_109.gif

In[35]:=

coupled_osc_110.gif

Out[35]=

coupled_osc_111.gif

In[36]:=

coupled_osc_112.gif

Out[36]=

coupled_osc_113.gif

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

In[37]:=

coupled_osc_114.gif

Out[37]=

coupled_osc_115.gif

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]:=

coupled_osc_116.gif

In[39]:=

coupled_osc_117.gif

Out[39]=

coupled_osc_118.gif

Spikey Created with Wolfram Mathematica 8.0