5.5 Introduction to vibration of systems with many degrees of freedom
The simple 1DOF systems analyzed in the preceding section are very helpful to develop a feel for the general characteristics of vibrating systems. They are too simple to approximate most real systems, however. Real systems have more than just one degree of freedom. Real systems are also very rarely linear. You may be feeling cheated are the simple idealizations that you get to see in intro courses really any use? It turns out that they are, but you can only really be convinced of this if you know how to analyze more realistic problems, and see that they often behave just like the simple idealizations.
The motion of systems with many degrees of freedom, or nonlinear systems, cannot usually be described using simple formulas. Even when they can, the formulas are so long and complicated that you need a computer to evaluate them. For this reason, introductory courses typically avoid these topics. However, if you are willing to use a computer, analyzing the motion of these complex systems is actually quite straightforward in fact, often easier than using the nasty formulas we derived for 1DOF systems.
This section of the notes is intended mostly for advanced students, who may be insulted by simplified models. If you are feeling insulted, read on…
5.5.1 Equations of motion for undamped linear systems with many degrees of freedom.
We always express the equations of motion for a system with many degrees of freedom in a standard form. The two degree of freedom system shown in the picture can be used as an example. We won’t go through the calculation in detail here (you should be able to derive it for yourself draw a FBD, use Newton’s law and all that tedious stuff), but here is the final answer:
To solve vibration problems, we always write the equations of motion in matrix form. For an undamped system, the matrix equation of motion always looks like this
where x is a vector of the variables describing the motion, M is called the ‘mass matrix’ and K is called the ‘Stiffness matrix’ for the system. For the two spring-mass example, the equation of motion can be written in matrix form as
For a system with two masses (or more generally, two degrees of freedom), M and K are 2x2 matrices. For a system with n degrees of freedom, they are nxn matrices.
The spring-mass system is linear. A nonlinear system has more complicated equations of motion, but these can always be arranged into the standard matrix form by assuming that the displacement of the system is small, and linearizing the equation of motion. For example, the full nonlinear equations of motion for the double pendulum shown in the figure are
Here, a single dot over a variable represents a time derivative, and a double dot represents a second time derivative (i.e. acceleration). These equations look horrible (and indeed they are the motion of a double pendulum can even be chaotic), but if we assume that if , , and their time derivatives are all small, so that terms involving squares, or products, of these variables can all be neglected, that and recall that and for small x, the equations simplify to
Or, in matrix form
This is again in the standard form.
Throughout the rest of this section, we will focus on exploring the behavior of systems of springs and masses. This is not because spring/mass systems are of any particular interest, but because they are easy to visualize, and, more importantly the equations of motion for a spring-mass system are identical to those of any linear system. This could include a realistic mechanical system, an electrical system, or anything that catches your fancy. (Then again, your fancy may tend more towards nonlinear systems, but if so, you should keep that to yourself).
5.5.2 Natural frequencies and mode shapes for undamped linear systems with many degrees of freedom.
First, let’s review the definition of natural frequencies and mode shapes. Recall that we can set a system vibrating by displacing it slightly from its static equilibrium position, and then releasing it. In general, the resulting motion will not be harmonic. However, there are certain special initial displacements that will cause harmonic vibrations. These special initial deflections are called mode shapes, and the corresponding frequencies of vibration are called natural frequencies.
The natural frequencies of a vibrating system are its most important property. It is helpful to have a simple way to calculate them.
Fortunately, calculating natural frequencies turns out to be quite easy (at least on a computer). Recall that the general form of the equation of motion for a vibrating system is
where x is a time dependent vector that describes the motion, and M and K are mass and stiffness matrices. Since we are interested in finding harmonic solutions for x, we can simply assume that the solution has the form , and substitute into the equation of motion
The vectors u and scalars that satisfy a matrix equation of the form are called ‘generalized eigenvectors’ and ‘generalized eigenvalues’ of the equation. It is impossible to find exact formulas for and u for a large matrix (formulas exist for up to 5x5 matrices, but they are so messy they are useless), but MATLAB has built-in functions that will compute generalized eigenvectors and eigenvalues given numerical values for M and K.
The special values of satisfying are related to the natural frequencies by
The special vectors X are the ‘Mode shapes’ of the system. These are the special initial displacements that will cause the mass to vibrate harmonically.
If you only want to know the natural frequencies (common) you can use the MATLAB command
d = eig(K,M)
This returns a vector d, containing all the values of satisfying (for an nxn matrix, there are usually n different values). The natural frequencies follow as .
If you want to find both the eigenvalues and eigenvectors, you must use
[V,D] = eig(K,M)
This returns two matrices, V and D. Each column of the matrix V corresponds to a vector u that satisfies the equation, and the diagonal elements of D contain the corresponding value of . To extract the ith frequency and mode shape, use
omega = sqrt(D(i,i))
X = V(:,i)
For example, here is a MATLAB function that uses this function to automatically compute the natural frequencies of the spring-mass system shown in the figure.
function [freqs,modes] = compute_frequencies(k1,k2,k3,m1,m2)
M = [m1,0;0,m2];
K = [k1+k2,-k2;-k2,k2+k3];
[V,D] = eig(K,M);
for i = 1:2
freqs(i) = sqrt(D(i,i));
modes = V;
You could try running this with
>> [freqs,modes] = compute_frequencies(2,1,1,1,1)
This gives the natural frequencies as , and the mode shapes as (i.e. both masses displace in the same direction) and (the two masses displace in opposite directions.
If you read textbooks on vibrations, you will find that they may give different formulas for the natural frequencies and vibration modes. (If you read a lot of textbooks on vibrations there is probably something seriously wrong with your social life). This is partly because solving for and u is rather complicated (especially if you have to do the calculation by hand), and partly because this formula hides some subtle mathematical features of the equations of motion for vibrating systems. For example, the solutions to are generally complex ( and u have real and imaginary parts), so it is not obvious that our guess actually satisfies the equation of motion. It turns out, however, that the equations of motion for a vibrating system can always be arranged so that M and K are symmetric. In this case and u are real, and is always positive or zero. The old fashioned formulas for natural frequencies and vibration modes show this more clearly. But our approach gives the same answer, and can also be generalized rather easily to solve damped systems (see Section 5.5.5), whereas the traditional textbook methods cannot.
5.5.3 Free vibration of undamped linear systems with many degrees of freedom.
As an example, consider a system with n identical masses with mass m, connected by springs with stiffness k, as shown in the picture. Suppose that at time t=0 the masses are displaced from their static equilibrium position by distances , and have initial speeds . We would like to calculate the motion of each mass as a function of time.
It is convenient to represent the initial displacement and velocity as n dimensional vectors u and v, as
, and . In addition, we must calculate the natural frequencies and mode shapes , i=1..n for the system. The motion can then be calculated using the following formula
Here, the dot represents an n dimensional dot product (to evaluate it in matlab, just use the dot() command).
This expression tells us that the general vibration of the system consists of a sum of all the vibration modes, (which all vibrate at their own discrete frequencies). You can control how big the contribution is from each mode by starting the system with different initial conditions. The mode shapes have the curious property that the dot product of two different mode shapes is always zero ( , etc) so you can see that if the initial displacements u happen to be the same as a mode shape, the vibration will be harmonic.
The figure on the right animates the motion of a system with 6 masses, which is set in motion by displacing the leftmost mass and releasing it. The graph shows the displacement of the leftmost mass as a function of time. You can download the MATLAB code for this computation here, and see how the formulas listed in this section are used to compute the motion. The program will predict the motion of a system with an arbitrary number of masses, and since you can easily edit the code to type in a different mass and stiffness matrix, it effectively solves any transient vibration problem.
5.5.4 Forced vibration of lightly damped linear systems with many degrees of freedom.
It is quite simple to find a formula for the motion of an undamped system subjected to time varying forces. The predictions are a bit unsatisfactory, however, because their vibration of an undamped system always depends on the initial conditions. In a real system, damping makes the steady-state response independent of the initial conditions. However, we can get an approximate solution for lightly damped systems by finding the solution for an undamped system, and then neglecting the part of the solution that depends on initial conditions.
As an example, we will consider the system with two springs and masses shown in the picture. Each mass is subjected to a harmonic force, which vibrates with some frequency (the forces acting on the different masses all vibrate at the same frequency). The equations of motion are
We can write these in matrix form as
or, more generally,
To find the steady-state solution, we simply assume that the masses will all vibrate harmonically at the same frequency as the forces. This means that , , where are the (unknown) amplitudes of vibration of the two masses. In vector form we could write , where . Substituting this into the equation of motion gives
This is a system of linear equations for X. They can easily be solved using MATLAB. As an example, here is a simple MATLAB function that will calculate the vibration amplitude for a linear system with many degrees of freedom, given the stiffness and mass matrices, and the vector of forces f.
function X = forced_vibration(K,M,f,omega)
% Function to calculate steady state amplitude of
% a forced linear system.
% K is nxn the stiffness matrix
% M is the nxn mass matrix
% f is the n dimensional force vector
% omega is the forcing frequency, in radians/sec.
% The function computes a vector X, giving the amplitude of
% each degree of freedom
X = (K-M*omega^2)\f;
The function is only one line long!
As an example, the graph below shows the predicted steady-state vibration amplitude for the spring-mass system, for the special case where the masses are all equal , and the springs all have the same stiffness . The first mass is subjected to a harmonic force , and no force acts on the second mass. Note that the graph shows the magnitude of the vibration amplitude the formula predicts that for some frequencies some masses have negative vibration amplitudes, but the negative sign has been ignored, as the negative sign just means that the mass vibrates out of phase with the force.
Several features of the result are worth noting:
If the forcing frequency is close to any one of the natural frequencies of the system, huge vibration amplitudes occur. This phenomenon is known as resonance. You can check the natural frequencies of the system using the little matlab code in section 5.5.2 they turn out to be and . At these frequencies the vibration amplitude is theoretically infinite.
The figure predicts an intriguing new phenomenon at a magic frequency, the amplitude of vibration of mass 1 (that’s the mass that the force acts on) drops to zero. This is called ‘Anti-resonance,’ and it has an important engineering application. Suppose that we have designed a system with a serious vibration problem (like the London Millenium bridge). Usually, this occurs because some kind of unexpected force is exciting one of the vibration modes in the system. We can idealize this behavior as a mass-spring system subjected to a force, as shown in the figure. So how do we stop the system from vibrating? Our solution for a 2DOF system shows that a system with two masses will have an anti-resonance. So we simply turn our 1DOF system into a 2DOF system by adding another spring and a mass, and tune the stiffness and mass of the new elements so that the anti-resonance occurs at the appropriate frequency. Of course, adding a mass will create a new vibration mode, but we can make sure that the new natural frequency is not at a bad frequency. We can also add a dashpot in parallel with the spring, if we want this has the effect of making the anti-resonance phenomenon somewhat less effective (the vibration amplitude will be small, but finite, at the ‘magic’ frequency), but the new vibration modes will also have lower amplitudes at resonance. The added spring mass system is called a ‘tuned vibration absorber.’ This approach was used to solve the Millenium Bridge vibration problem.
5.5.5 The effects of damping
In most design calculations, we don’t worry about accounting for the effects of damping very accurately. This is partly because it’s very difficult to find formulas that model damping realistically, and even more difficult to find values for the damping parameters. Also, the mathematics required to solve damped problems is a bit messy. Old textbooks don’t cover it, because for practical purposes it is only possible to do the calculations using a computer. It is not hard to account for the effects of damping, however, and it is helpful to have a sense of what its effect will be in a real system. We’ll go through this rather briefly in this section.
Equations of motion: The figure shows a damped spring-mass system. The equations of motion for the system can easily be shown to be
To solve these equations, we have to reduce them to a system that MATLAB can handle, by re-writing them as first order equations. We follow the standard procedure to do this define and as new variables, and then write the equations in matrix form as
(This result might not be obvious to you if so, multiply out the vector-matrix products to see that the equations are all correct). This is a matrix equation of the form
where y is a vector containing the unknown velocities and positions of the mass.
Free vibration response: Suppose that at time t=0 the system has initial positions and velocities , and we wish to calculate the subsequent motion of the system. To do this, we must solve the equation of motion. We start by guessing that the solution has the form (the negative sign is introduced because we expect solutions to decay with time). Here, is a constant vector, to be determined. Substituting this into the equation of motion gives
This is another generalized eigenvalue problem, and can easily be solved with MATLAB. The solution is much more complicated for a damped system, however, because the possible values of and that satisfy the equation are in general complex that is to say, each can be expressed as , where and are positive real numbers, and . This makes more sense if we recall Euler’s formula
(if you haven’t seen Euler’s formula, try doing a Taylor expansion of both sides of the equation you will find they are magically equal. If you don’t know how to do a Taylor expansion, you probably stopped reading this ages ago, but if you are still hanging in there, just trust me…). So, the solution is predicting that the response may be oscillatory, as we would expect. Once all the possible vectors and have been calculated, the response of the system can be calculated as follows:
1. Construct a matrix H , in which each column is one of the possible values of (MATLAB constructs this matrix automatically)
2. Construct a diagonal matrix (t), which has the form
where each is one of the solutions to the generalized eigenvalue equation.
3. Calculate a vector a (this represents the amplitudes of the various modes in the vibration response) that satisfies
4. The vibration response then follows as
All the matrices and vectors in these formulas are complex valued but all the imaginary parts magically disappear in the final answer.
HEALTH WARNING: The formulas listed here only work if all the generalized eigenvalues satisfying are different. For some very special choices of damping, some eigenvalues may be repeated. In this case the formula won’t work. A quick and dirty fix for this is just to change the damping very slightly, and the problem disappears. Your applied math courses will hopefully show you a better fix, but we won’t worry about that here.
This all sounds a bit involved, but it actually only takes a few lines of MATLAB code to calculate the motion of any damped system. As an example, a MATLAB code that animates the motion of a damped spring-mass system shown in the figure (but with an arbitrary number of masses) can be downloaded here. You can use the code to explore the behavior of the system. In addition, you can modify the code to solve any linear free vibration problem by modifying the matrices M and D.
Here are some animations that illustrate the behavior of the system. The animations below show vibrations of the system with initial displacements corresponding to the three mode shapes of the undamped system (calculated using the procedure in Section 5.5.2). The results are shown for k=m=1 . In each case, the graph plots the motion of the three masses if a color doesn’t show up, it means one of the other masses has the exact same displacement.
Mode 1 Mode 2 Mode 3
1. For each mode, the displacement history of any mass looks very similar to the behavior of a damped, 1DOF system.
2. The amplitude of the high frequency modes die out much faster than the low frequency mode.
This explains why it is so helpful to understand the behavior of a 1DOF system. If a more complicated system is set in motion, its response initially involves contributions from all its vibration modes. Soon, however, the high frequency modes die out, and the dominant behavior is just caused by the lowest frequency mode. The animation to the right demonstrates this very nicely here, the system was started by displacing only the first mass. The initial response is not harmonic, but after a short time the high frequency modes stop contributing, and the system behaves just like a 1DOF approximation. For design purposes, idealizing the system as a 1DOF damped spring-mass system is usually sufficient.
Notice also that light damping has very little effect on the natural frequencies and mode shapes so the simple undamped approximation is a good way to calculate these.
Of course, if the system is very heavily damped, then its behavior changes completely the system no longer vibrates, and instead just moves gradually towards its equilibrium position. You can simulate this behavior for yourself using the matlab code try running it with or higher. Systems of this kind are not of much practical interest.
Steady-state forced vibration response. Finally, we take a look at the effects of damping on the response of a spring-mass system to harmonic forces. The equations of motion for a damped, forced system are
This is an equation of the form
where we have used Euler’s famous formula again. We can find a solution to
by guessing that , and substituting into the matrix equation
This equation can be solved for . Similarly, we can solve
by guessing that , which gives an equation for of the form . You actually don’t need to solve this equation you can simply calculate by just changing the sign of all the imaginary parts of . The full solution follows as
This is the steady-state vibration response. Just as for the 1DOF system, the general solution also has a transient part, which depends on initial conditions. We know that the transient solution will die away, so we ignore it.
The solution for y(t) looks peculiar, because of the complex numbers. If we just want to plot the solution as a function of time, we don’t have to worry about the complex numbers, because they magically disappear in the final answer. In fact, if we use MATLAB to do the computations, we never even notice that the intermediate formulas involve complex numbers. If we do plot the solution, it is obvious that each mass vibrates harmonically, at the same frequency as the force (this is obvious from the formula too). It’s not worth plotting the function we are really only interested in the amplitude of vibration of each mass. This can be calculated as follows
1. Let , denote the components of and
2. The vibration of the jth mass then has the form
are the amplitude and phase of the harmonic vibration of the mass.
If you know a lot about complex numbers you could try to derive these formulas for yourself. If not, just trust me your math classes should cover this kind of thing. MATLAB can handle all these computations effortlessly. As an example, here is a simple MATLAB script that will calculate the steady-state amplitude of vibration and phase of each degree of freedom of a forced n degree of freedom system, given the force vector f, and the matrices M and D that describe the system.
function [amp,phase] = damped_forced_vibration(D,M,f,omega)
% Function to calculate steady state amplitude of
% a forced linear system.
% D is 2nx2n the stiffness/damping matrix
% M is the 2nx2n mass matrix
% f is the 2n dimensional force vector
% omega is the forcing frequency, in radians/sec.
% The function computes a vector ‘amp’, giving the amplitude of
% each degree of freedom, and a second vector ‘phase’,
% which gives the phase of each degree of freedom
Y0 = (D+M*i*omega)\f; % The i here is sqrt(-1)
% We dont need to calculate Y0bar - we can just change the sign of
% the imaginary part of Y0 using the 'conj' command
for j =1:length(f)/2
amp(j) = sqrt(Y0(j)*conj(Y0(j)));
phase(j) = log(conj(Y0(j))/Y0(j))/(2*i);
Again, the script is very simple.
Here is a graph showing the predicted vibration amplitude of each mass in the system shown. Note that only mass 1 is subjected to a force.
The important conclusions to be drawn from these results are:
1. We observe two resonances, at frequencies very close to the undamped natural frequencies of the system.
2. For light damping, the undamped model predicts the vibration amplitude quite accurately, except very close to the resonance itself (where the undamped model has an infinite vibration amplitude)
3. In a damped system, the amplitude of the lowest frequency resonance is generally much greater than higher frequency modes. For this reason, it is often sufficient to consider only the lowest frequency mode in design calculations. This means we can idealize the system as just a single DOF system, and think of it as a simple spring-mass system as described in the early part of this chapter. The relative vibration amplitudes of the various resonances do depend to some extent on the nature of the force it is possible to choose a set of forces that will excite only a high frequency mode, in which case the amplitude of this special excited mode will exceed all the others. But for most forcing, the lowest frequency one is the one that matters.
4. The ‘anti-resonance’ behavior shown by the forced mass disappears if the damping is too high.