Forced two-mass oscillator: block with a load on top
A block of mass $M$ lies on a smooth horizontal plane, tied to a wall by a spring of stiffness $k_1$ and driven by $F(t) = F_0\sin\omega t$. A load of mass $m$ rides on the block's smooth top, tied to the block by a spring of stiffness $k_2$. Find the equations of motion, including the small-oscillation case.
Explanation of Method
Take the block position and the load's displacement relative to the block as generalized coordinates. Write the kinetic and potential energy, apply the variational principle and Lagrange's equations, and linearize for small oscillations. The simulator shows resonance and the vibration absorber.
A block on a smooth floor is tied to a wall by a spring and driven by a harmonic force. A second mass rides on its smooth top surface, tied to it by another spring. The equations of motion come from the variational principle and Lagrange's equations. The simulator shows resonance and the vibration-absorber effect.
Problem statement
A block of mass \(M\) lies on a smooth horizontal plane. It is connected to a wall by a horizontal spring of stiffness \(k_1\) and driven by the force
On the smooth upper surface of the block lies a load of mass \(m\), connected to the block by a spring of stiffness \(k_2\).
Find: the equations of motion without approximation, and for the case of small oscillations.
The variational method in brief
The paper contrasts two ways of deriving equations of motion. The direct method writes force and kinematic relations for each element and then eliminates variables. This is laborious for larger systems. The variational method starts from energies and is usually shorter and more systematic. Its main ideas:
- Geometrically admissible variations: small changes \(\delta x_i\) from one admissible configuration to a neighbouring one.
- The variational indicator \(\sum_i F_i\,\delta x_i\) vanishes for arbitrary admissible variations if and only if the forces are in equilibrium.
- Attractive energy \(\mathcal{A} = \int F\,de\) (potential energy, \(\delta\mathcal{A} = F\,\delta x\)) and repulsive coenergy \(\mathcal{R}^* = \int v\,d\mathcal{P}\) (kinetic coenergy, \(\mathcal{P}\) = momentum).
- For dynamic systems, Hamilton's principle in the form of the variational indicator:
Requiring the V.I. to vanish for every admissible variation of each independent coordinate gives Lagrange's equations:
Here \(\Xi_i\) are the generalized forces of everything not contained in \(\mathcal{L}\), in this case the driving force \(F(t)\).
Coordinates and energies
Two independent coordinates are needed:
- \(x_1\): displacement of the block, equal to the elongation of spring \(k_1\),
- \(x_2\): displacement of the load relative to the block, measured to the left, equal to the deformation of spring \(k_2\).
The load therefore moves with absolute velocity
The motion is horizontal, so gravity does no work. The potential energy is stored only in the springs:
The paper writes the kinetic energy as \(\tfrac12 mv_1^2 + Mv_2^2\) and the Lagrangian with \(m\,v_2^2\) instead of \(\tfrac12 m v_2^2\). These are typos: its derivatives use the correct \(\tfrac12 M v_1^2 + \tfrac12 m v_2^2\).
Generalized forces
The force \(F(t)\) acts on the block, whose displacement is \(x_1\). Its virtual work is \(F\,\delta x_1\), so
The paper correctly notes that the force acts on the load only indirectly, through the block, so it must not appear in the second equation.
Lagrange equations
Coordinate \(x_1\)
The paper writes the result as
Subtracting \(\partial\mathcal{L}/\partial x_1 = -k_1x_1\) gives \(+k_1x_1\). The correct equation is
Coordinate \(x_2\)
The paper obtains the right-hand form of (5). It also makes a sign slip here: it writes \(d/dt(\partial\mathcal{L}/\partial\dot x_2)\) as \(m\ddot x_1 - m\ddot x_2\) and then also flips the sign of the spring term. The two slips cancel, so equation (5) is correct.
"Small oscillations" in the paper
For the second part of the task the paper replaces \(\sin\omega t\) by \(\omega t\):
This is discussed in section 7.
Simulink model
The paper builds the model from two integrator chains, \(\ddot x_1\to\dot x_1\to x_1\) and \(\ddot x_2\to\dot x_2\to x_2\), using the relations
The input is generated from a Clock, a Product with \(\omega\), a sine block and a gain \(F_0/m\). For the "approximate" model the sine block is simply removed. The two accelerations depend on each other directly, which creates an algebraic loop. Combining the two equations removes it:
Simulation results from the paper
The paper varies one parameter at a time (\(m\), \(M\), \(k_1\), \(k_2\), \(F_0\), \(\omega\)) starting from rest. It shows \(x_1\), \(x_2\) and both together. In almost every plot \(x_1\) grows monotonically and often exponentially, reaching values of 10³⁸–10⁷² in the longer runs, while \(x_2\) oscillates on top. The paper interprets this physically: "the spring will break", or "the heavy block suppresses oscillations".
Simulating the paper's own equations (4)–(5) reproduces these plots. Examples: \(x_1(5\,\text{s}) = 1.22\) for \(M=10\); \(x_1(25\,\text{s}) = 0.05\) for \(M=1000\); \(x_1(10\,\text{s}) = 0.031\) for \(k_1=0.1\); \(x_1\approx 2400\) at 45 s for \(k_1=1\); \(x_1(10\,\text{s}) = 0.038\) for \(F_0=0.01\); \(x_1(10\,\text{s}) = 45.7\) for \(\omega=0.1\). The exceptions are the first panels of the \(m\) study, where the stated parameters appear to differ from those used. The growth is therefore not physics. It is the signature of the sign error in equation (4).
M = 10 (paper)
m = 0.1, k₁ = 1, k₂ = 5, F₀ = 3, ω = π/2. x₁ creeps up to 1.2 in 5 s.
k₁ = 1 (paper)
m = 2, M = 10, k₂ = 1, F₀ = 0.05. Paper: "oscillates for ~10 s, then grows to infinity, so the spring breaks".
ω = 0.01 vs 1 (approximation)
m = 0.5, M = 5, k₁ = 0.5, k₂ = 1, F₀ = 10. sin ωt vs ωt: they agree for ω = 0.01 and differ strongly for ω = 1.
Critical review
A sign error turns spring k₁ into a "negative spring"
With \(-k_1x_1\) in equation (4), the spring pushes the block away from equilibrium instead of pulling it back. The paper's model has a real positive eigenvalue: an exponentially growing solution. That is why \(x_1\) runs away in nearly every simulation, faster for larger \(k_1\) and slower for larger \(M\). It explains the paper's surprising conclusions: that a stiffer spring makes the system blow up, that a heavy block "prevents oscillations", and that the spring "breaks". With the correct sign, every simulation stays bounded. Without damping, the response is a sum of the forced oscillation and the two free oscillations.
A quick physical check would have caught this. The two springs and the two masses are passive elements. Without the input, energy is conserved, so the motion cannot grow. With a bounded sinusoidal input, unbounded growth is possible only at exact resonance, and even then it grows linearly, not exponentially.
"Small oscillations" does not mean sin ωt ≈ ωt
The system is already linear: the springs are linear and the motion is horizontal, so there is nothing to linearize. The small-oscillation equations are identical to the exact ones. The paper's step \(\sin\omega t\approx\omega t\) is something else entirely. It replaces the bounded harmonic force with a linearly growing ramp \(F_0\omega t\), which is valid only while \(\omega t\ll1\), i.e. for \(t\ll1/\omega\). The paper's comparison (ω = 0.01, 0.1, 1 over 10 s) confirms only this. For ω = 0.01, \(\omega t\le0.1\) and the curves agree. For ω = 1 they differ completely. The approximation concerns the input over a short time window, not the size of the oscillations.
Smaller slips
The kinetic energy and Lagrangian are written with the factors misplaced (\(\tfrac12 mv_1^2 + Mv_2^2\), \(m v_2^2\)). In equation (5), two sign slips cancel. The conclusion that changing \(\omega\) "only changes the frequency" overlooks resonance: near a natural frequency the amplitude grows strongly.
Corrected model, natural frequencies and resonance
Equation (5) is written here in its symmetric form (multiplied by −1). As in every Lagrangian model, \(\mathbf M\) is symmetric. The natural frequencies follow from \(\det(\mathbf K - \omega^2\mathbf M) = 0\):
For \(M = 1\), \(m = 0.1\), \(k_1 = 1\), \(k_2 = 5\) this gives \(\omega_1 = 0.95\) and \(\omega_2 = 7.42\) rad/s. The paper's forcing frequency \(\pi/2 = 1.57\) rad/s lies between them.
The vibration absorber
The steady-state amplitude of the block is
It vanishes when \(\omega = \sqrt{k_2/m}\). At that frequency the load oscillates so that its spring force exactly cancels the driving force, and the block stands still. This is the classic undamped dynamic vibration absorber, used to protect machines driven at a fixed frequency. The simulator's frequency-response chart shows both resonances and this anti-resonance.
Interactive simulator
The simulator solves the equations numerically (4th-order Runge–Kutta, 2 ms step) from the given initial displacements and velocities. An optional viscous friction \(c\) between block and floor lets the free oscillations die out, leaving the steady forced response.
Cases
System parameters
Force and initial conditions
Results table (every 0.2 s)
Review questions
Why does the driving force appear only in the first Lagrange equation?
The generalized force is obtained from virtual work: \(\delta W = F\,\delta x_1\), because the force acts on the block, whose position depends only on \(x_1\). The load is affected through the spring \(k_2\), which is already in the Lagrangian.
How can you tell from the equations, without simulating, that the paper's model is wrong?
Check the static case: with \(F\) constant and no motion, equation (4) gives \(-k_1x_1 = F\), so a push to the right would move the block to the left. Or check stability: \(\mathbf M\) and \(\mathbf K\) of a passive mechanical system must be symmetric and positive definite. A negative stiffness entry signals an error.
What does "small oscillations" mean, and why is it not needed here?
It means linearizing nonlinear terms (e.g. \(\sin\theta\approx\theta\) for a pendulum angle) around equilibrium. Here all elements are linear and the motion is horizontal, so the exact equations are already linear.
When is replacing sin ωt by ωt acceptable?
Only for short times, \(\omega t\ll 1\). Over longer times the ramp grows without bound while the real force stays bounded. This is an approximation of the input, not of the system.
What happens if ω equals one of the natural frequencies?
Without damping, the amplitude grows linearly in time (resonance). With damping it settles at a large but finite value. Try the "Resonance" preset, with and without friction \(c\).
How can the block be kept completely still despite the driving force?
Tune the load so that \(\sqrt{k_2/m} = \omega\). In steady state the load's spring then exerts on the block a force equal and opposite to \(F(t)\). This is the dynamic vibration absorber. The "Absorber" preset starts the load already in its steady motion, \(x_2 = (F_0/k_2)\sin\omega t\) (so \(\dot x_2(0) = F_0\omega/k_2\)), and the block then stays exactly at rest. Set \(\dot x_2(0) = 0\) to see the free oscillations that a start from rest adds.