**Contents**

- A Two-Mass Vibrating System
- Example: Modes of vibration and oscillation in a 2 mass system
- Extending to an n×n system

Eigenvalue/Eigenvector analysis is useful for a wide variety of differential equations. This page describes how it can be used in the study of vibration problems for a simple lumped parameter systems by considering a very simple system in detail. The next page describes gives a physical interpretation of the results and considers more complicated system.

Consider the system shown below with 2 masses and 3 springs. The masses are constrained to move only in the horizontal direction (they can't move up an down):

We can draws the free body diagram for this system:

From this, we can get the equations of motion:

We can rearrange these into a matrix form (and use α and β for notational convenience).

Now we proceed by assuming the form of solution (just as with differential equations). In this case, since there is no damping, we choose a purely oscillatory solution.

so

This is obviously just an eigenvalue problem.

We can solve for the eigenvalues by finding the characteristic
equation (note the "+" sign in the determinant rather than the
"-" sign, because of the opposite signs of λ
and ω^{2}).

To make the notation easier we will now consider the specific
case where k_{1}=k_{2}=m=1 so

Now we can also find the eigenvectors. For the first eigenvector:

which clearly has the solution:

So we'll choose the first eigenvector (which can be multiplied by an arbitrary constant).

For the second eigenvector:

We can come up with a general form for the equations of motion for the two-mass system. The general solution is

Note that each frequency is used twice, because our solution was for the
square of the frequency, which has two solutions (positive and
negative). We will use initial condition to solve for the unknown
coefficients, just like we did with differential equations. For a
real response, the quantities c_{1} and c_{2} must be complex
conjugates of each other, as are c_{3} and c_{4}. The
equation can then be re-written (the ordering of the γ coefficients
becomes clear in a few steps):

We can use initial conditions to solve for the unknowns

Now let's consider the case when the initial condition on velocity is zero, and there is an arbitrary initial condition on position (this is the case we'll most often use):

Using the zero condition on initial velocity, we can write

which leads to the set of equations

Since we know that the frequencies are not equal to zero, we know the only solution is

Therefore, if the initial velocities are zero, only the cosine terms are needed and a general form for the solution simplifies to:

(Now the choice of the ordering of the γ coefficients is clear; this
equation has γ_{1} and γ_{2} instead of γ_{1} and γ_{3})

We can find
the coefficients γ_{1} and γ_{2} from the initial conditions.

This yields a 2×2 set of equations that can be solved
in a number of ways. Not surprisingly, the easiest way when using a
computer is to formulate it as a matrix equation and solve. Start by
forming a 2x2 matrix **v** whose columns are the eigenvectors of the problem

The equation for the initial conditions then becomes

The coefficient γ_{1} and γ_{2} are then easily found as the inverse of **v**
multiplied by **x**(0)

Consider the case when k_{1}=k_{2}=m=1,
as before, with initial conditions on the masses of

Assuming a solution of

we know that

We can write this as a set of two equations in two unknowns.

so

Thus the equations of motion is given by

or

Note: The two unknowns can also be solved for using only matrix manipulations by starting with the initial conditions and re-writing:

Now it is a simple task to find
γ_{1}
and γ_{2}. This is the method
used in the MatLab code shown below.

>> A=[-2 1;1 -2]; %Matrix determined by equations of motion. >> [v,d]=eig(A) %Find Eigenvalues and vectors. The eigenvectors are the columns of "v," the eigenvectors are %the diagonal elements of "d" v = 0.7071 0.7071 -0.7071 0.7071 d = -3.0000 0 0 -1.0000 >> x0=[1 0]' %Initial conditions x0 = 1 0 >> gamma=inv(v)*x0 %Find unknown coefficients

gamma = 0.7071 0.7071

%Define Array from equations of motion. A=[-2 1;1 -2]; %2 masses [v,d]=eig(A); %Find Eigenvalues and vectors. omega=sqrt(diag(-d)); %Get frequencies x0=[1 0]' %Initial condition gam=inv(v)*x0 %Find unknown coefficients %nxn array with coefficients of gamma along the diagonal g=diag(gam); t=0:0.2:20; %1xM Time vector (for plotting) % cos(omega*t) is an nxM array with % cos(w1*t),...,cos(wn*t) in rows x=v*g*cos(omega*t); %Calculate output % Display pertinent information about the system disp('A matrix'); disp(A) disp('Eigenvalues'); disp(diag(d)') disp('Eigenvectors (each column is an eigenvector)'); disp(v) disp(['Frequencies, omega=' sprintf('%4.2f, ',omega)]); disp(['Initial Conditions, x(0)=' sprintf('%4.2f, ',x0)]); disp(['Unknown coefficients, gamma=' sprintf('%4.2f, ',gam)]); %This next code does some string manipulation to make %legends for the plots, no calculations. It is not necessary %to understand this code to understand the graphs; N=size(A,1); outLeg=''; modLeg=''; for i=1:N, outLeg=strvcat(outLeg, strcat('Out_',int2str(i))); mstr=sprintf('Mode_%d',i); modLeg=strvcat(modLeg, mstr); end %Plot the output trajectories subplot(2,1,1); plot(t,x) xlabel('Time'); ylabel('Output'); title(['Output vs. time, x_i(0)=' sprintf('%4.2f, ',x0) ... ' \gamma_i=' sprintf('%4.2f, ',gam)]); legend(outLeg); %Plot the mode shapes subplot(2,1,2) plot(v,':'); xlabel('Elements'); ylabel('Mode amplitude'); title(['Mode shapes, \omega=' sprintf('%4.2f, ',omega)]); axis([0.5 N*1.5 -1 1]); set(gca,'XTick',[1:N]); legend(modLeg); hold on stem(v); hold off %Arrays for various numbers of masses. A=[-2 1;1 -2]; %2 masses A=[-2 1 0; 1 -2 1; 0 1 -2]; %3 masses A=[-2 1 0 0; 1 -2 1 0; 0 1 -2 1; 0 0 1 -2]; %4 masses A=[-2 1 0 0 0; 1 -2 1 0 0; 0 1 -2 1 0; 0 0 1 -2 1; 0 0 0 1 -2]; %5 masses

A matrix -2 1 1 -2 Eigenvalues -3 -1 Eigenvectors (each column is an eigenvector) 0.7071 0.7071 -0.7071 0.7071 Frequencies, omega=1.73, 1.00, Initial Conditions, x(0)=1.00, 0.00, Unknown coefficients, gamma=0.71, 0.71,

The last graph has two subplots. The top one shows the transient
response of the system starting from the given initial conditions. The
bottom one shows the eigenvectors (or "mode shapes") of the system.
The vertical axis is magnitude, the horizontal axis is the index of the
eigenvalue. The eigenvalue **v**_{1} is [0.7071;
-0.7071], this is shown in blue; the first element is 0.7071 and the second
element is -0.7071. The eigenvector **v**_{2} is
[0.7071; 0.7071], this is shown in green. The dotted line is there
simply to guide the eye (because some elements of the eigenvectors may be
hidden behind another, as in the case of the first element of **v**_{1}. The relevance of these
shapes is discussed on the next page.

The procedure described above is easily extended to larger systems (the next page has solutions for a 3×3 and a 5×5 system). In brief:

- From the equations of motion of the system obtain an n×n second
order matrix differential equation

- Find the eigenvalues (and frequencies of vibration) and eigenvectors

- Assume a form of the solutions

- Solve for the unknown coefficients (γ
_{i}) from initial conditions

© Copyright 2005 to 2019 Erik Cheever This page may be freely used for educational purposes.

Erik Cheever Department of Engineering Swarthmore College