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 :![]()
![]()
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
be written as
and the eigenvalues be
.
Construct a matrix
with the columns being the eigenvectors
.
Let
, 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
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
be a column vector of the
.![]()
![]()
As a matrix problem, this gives![]()
and![]()
where
.
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]:=
![]()
![[Graphics:HTMLFiles/index_56.gif]](HTMLFiles/index_56.gif)
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
:
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]:=
![]()
![[Graphics:HTMLFiles/index_118.gif]](HTMLFiles/index_118.gif)
Out[34]=
![]()
In[35]:=
![]()
![[Graphics:HTMLFiles/index_121.gif]](HTMLFiles/index_121.gif)
Out[35]=
![]()
In[36]:=
![]()
![[Graphics:HTMLFiles/index_124.gif]](HTMLFiles/index_124.gif)
Out[36]=
![]()
Check close up to see that initial conditions are really satisfied:
In[37]:=
![]()
![[Graphics:HTMLFiles/index_127.gif]](HTMLFiles/index_127.gif)
Out[37]=
![]()
Here we plot all the
, 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]:=
![]()
![[Graphics:HTMLFiles/index_132.gif]](HTMLFiles/index_132.gif)
Out[39]=
![]()
Converted by Mathematica (March 3, 2003)