#set document(title: "3.6 Second order systems and applications", author: "Jiří Lebl") #set page(width: 8.5in, height: auto, margin: 1in) #import "@preview/cetz:0.5.2" #set text(font: ("STIX Two Text", "Libertinus Serif", "New Computer Modern"), size: 10.5pt, lang: "en") #show math.equation: set text(font: ("STIX Two Math", "New Computer Modern Math")) #set par(justify: true, leading: 0.62em, spacing: 0.9em) #set enum(spacing: 1.1em) // room between list items so tall inline fractions don't collide #set list(spacing: 1.1em) #set table(stroke: 0.5pt + rgb("#c7ccd3")) #let BLUE = rgb("#183B6F") // brand navy — section bars + example/solution labels (white on navy 11.09:1) #let ORANGE = rgb("#A94509") // brand primary-700 — AA-safe deep orange for TEXT (5.93:1 on white; raw brand #F37021 is 2.94:1 and must never carry text) #let RED = rgb("#DC2626") // brand error-600 #let GREEN = rgb("#059669") // brand success-600 (decoration only; small green text uses green-text #007942) #show heading.where(level: 1): it => block(width: 100%, above: 0pt, below: 16pt, fill: gradient.linear(BLUE, rgb("#2C5AA0")), inset: (x: 14pt, y: 12pt), radius: 3pt, text(fill: white, weight: "bold", size: 19pt, it.body)) #show heading.where(level: 2): it => block(width: 100%, above: 18pt, below: 10pt, fill: BLUE, inset: (x: 10pt, y: 6pt), radius: 2pt, text(fill: white, weight: "bold", size: 12pt, it.body)) #show heading.where(level: 3): it => text(fill: ORANGE, weight: "bold", size: 12.5pt, it.body) #show heading.where(level: 4): it => text(fill: BLUE, weight: "bold", size: 10.5pt, it.body) #let examplebox(label, title, body) = block(width: 100%, breakable: true, fill: rgb("#EFF1F5"), stroke: 0.5pt + rgb("#CFDDF0"), radius: 4pt, inset: 10pt, above: 12pt, below: 12pt)[ #block(below: 6pt)[#box(fill: BLUE, inset: (x: 6pt, y: 2pt), radius: 2pt, text(fill: white, weight: "bold", size: 8.5pt, label)) #h(0.4em) #strong[#title]] #body] // rail = decorative left rule (raw brand token); labelcolor = AA-safe label text shade #let notebox(label, rail, labelcolor, tint, body) = block(width: 100%, breakable: true, fill: tint, stroke: (left: 3pt + rail), inset: (left: 10pt, rest: 8pt), radius: (right: 4pt), above: 11pt, below: 11pt)[ #text(fill: labelcolor, weight: "bold", size: 7.5pt, tracking: 0.5pt)[#upper(label)] #linebreak() #body] #let solutionbox(body) = block(above: 4pt, below: 8pt)[ #text(fill: BLUE, weight: "bold", size: 8.5pt)[Solution] #linebreak() #body] #let figph(msg) = block(width: 100%, height: 60pt, fill: rgb("#f6f7f9"), stroke: (paint: rgb("#c7ccd3"), dash: "dashed"), radius: 4pt, inset: 10pt)[ #align(center + horizon, text(fill: rgb("#889"), style: "italic", size: 9pt, msg))] // Standardize inlined figure sizes: measure the natural CeTZ canvas, then scale to a // consistent envelope (aspect-aware; see build_typst.py FIG_* constants). Unlike the // print preamble, dimensions are FLOORED: in an editor a user can trim a figure to a // degenerate 1-D shape (a bare line), and w/h or tw/w would then divide by zero. #let _STD_W = 3.5 #let _WIDE_W = 5.6 #let _MAX_H = 3.4 #let _ASPECT_WIDE = 2.2 #let _UPSCALE_MAX = 1.15 #let stdfig(body) = context { let m = measure(body) let w = calc.max(m.width / 1in, 0.01) let h = calc.max(m.height / 1in, 0.01) let tw = if w / h > _ASPECT_WIDE { _WIDE_W } else { _STD_W } let s = calc.min(tw / w, _MAX_H / h, _UPSCALE_MAX) align(center, box(scale(x: s * 100%, y: s * 100%, reflow: true, body))) } #show figure: set block(breakable: false) #set figure(gap: 8pt) #show figure.caption: set text(size: 8.5pt, fill: rgb("#555")) == 3.6#h(0.6em)Second order systems and applications === Undamped Mass-Spring Systems While we did say that we will usually only look at first order systems, it is sometimes more convenient to study the system in the way it arises naturally. For example, suppose we have 3 masses connected by springs between two walls. We could pick any higher number, and the math would be essentially the same, but for simplicity we pick 3 right now. Let us also assume no friction, that is, the system is undamped. The masses are #math.equation(block: false, alt: "m sub 1 , m sub 2")[$m_(1) , m_(2)$], and #math.equation(block: false, alt: "m sub 3")[$m_(3)$] and the spring constants are #math.equation(block: false, alt: "k sub 1 , k sub 2 , k sub 3")[$k_(1) , k_(2) , k_(3)$], and #math.equation(block: false, alt: "k sub 4")[$k_(4)$]. Let #math.equation(block: false, alt: "x sub 1")[$x_(1)$] be the displacement from rest position of the first mass, and #math.equation(block: false, alt: "x sub 2")[$x_(2)$] and #math.equation(block: false, alt: "x sub 3")[$x_(3)$] the displacement of the second and third mass. We will make, as usual, positive values go right (as #math.equation(block: false, alt: "x sub 1")[$x_(1)$] grows, the first mass is moving right). See Figure #math.equation(block: false, alt: "1")[$1$]. #figure(figph[Diagram of three wheeled carts m sub 1, m sub 2 and m sub 3 in a row, linked in series by four coil springs k sub 1 through k sub 4 that also anchor the chain to a wall at each end.], alt: "Diagram of three wheeled carts m sub 1, m sub 2 and m sub 3 in a row, linked in series by four coil springs k sub 1 through k sub 4 that also anchor the chain to a wall at each end.", caption: none) Figure #math.equation(block: false, alt: "1")[$1$]: System of masses and springs. This simple system turns up in unexpected places. For example, our world really consists of many small particles of matter interacting together. When we try the above system with many more masses, we obtain a good approximation to how an elastic material behaves. By somehow taking a limit of the number of masses going to infinity, we obtain the continuous one dimensional wave equation (that we study in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/4%3A_Fourier_series_and_PDEs/4.07%3A_One_dimensional_wave_equation")[Section 4.7]). But we digress. Let us set up the equations for the three mass system. By Hooke’s law we have that the force acting on the mass equals the spring compression times the spring constant. By Newton’s second law we have that force is mass times acceleration. So if we sum the forces acting on each mass and put the right sign in front of each term, depending on the direction in which it is acting, we end up with the desired system of equations. #math.equation(block: true, alt: "m sub 1 x 1 ″ equals minus k sub 1 x sub 1 plus k sub 2 open parenthesis x sub 2 minus x sub 1 close parenthesis equals minus open parenthesis k sub 1 plus k sub 2 close parenthesis x sub 1 plus k sub 2 x sub 2 ,; m sub 2 x 2 ″ equals minus k sub 2 open parenthesis x sub 2 minus x sub 1 close parenthesis plus k sub 3 open parenthesis x sub 3 minus x sub 2 close parenthesis equals k sub 2 x sub 1 minus open parenthesis k sub 2 plus k sub 3 close parenthesis x sub 2 plus k sub 3 x sub 3 ,; m sub 3 x 3 ″ equals minus k sub 3 open parenthesis x sub 3 minus x sub 2 close parenthesis minus k sub 4 x sub 3 equals k sub 3 x sub 2 minus open parenthesis k sub 3 plus k sub 4 close parenthesis x sub 3 .")[$m_(1) x_(1)^(″) = − k_(1) x_(1) + k_(2) ( x_(2) − x_(1) ) #h(1em) = − ( k_(1) + k_(2) ) x_(1) + k_(2) x_(2) , \ m_(2) x_(2)^(″) = − k_(2) ( x_(2) − x_(1) ) + k_(3) ( x_(3) − x_(2) ) #h(1em) = k_(2) x_(1) − ( k_(2) + k_(3) ) x_(2) + k_(3) x_(3) , \ m_(3) x_(3)^(″) = − k_(3) ( x_(3) − x_(2) ) − k_(4) x_(3) #h(1em) = k_(3) x_(2) − ( k_(3) + k_(4) ) x_(3) .$] We define the matrices #math.equation(block: true, alt: "m sub 1 0 0; 0 m sub 2 0; 0 0 m sub 3")[$m_(1) 0 0 \ 0 m_(2) 0 \ 0 0 m_(3)$] We write the equation simply as #math.equation(block: true, alt: "M x → double prime equals K x → .")[$M arrow(x)^(″) = K arrow(x) .$] At this point we could introduce 3 new variables and write out a system of 6 first order equations. We claim this simple setup is easier to handle as a second order system. We call #math.equation(block: false, alt: "x →")[$arrow(x)$] the displacement vector, #math.equation(block: false, alt: "M")[$M$] the mass matrix, and #math.equation(block: false, alt: "K")[$K$] the stiffness matrix. #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Repeat this setup for 4 masses (find the matrices #math.equation(block: false, alt: "M")[$M$] and #math.equation(block: false, alt: "K")[$K$]). Do it for 5 masses. Can you find a prescription to do it for #math.equation(block: false, alt: "n")[$n$] masses? ] As with a single equation we want to “divide by #math.equation(block: false, alt: "M")[$M$].” This means computing the inverse of #math.equation(block: false, alt: "M")[$M$]. The masses are all nonzero and #math.equation(block: false, alt: "M")[$M$]is a diagonal matrix, so comping the inverse is easy: #math.equation(block: true, alt: "the fraction 1 over m sub 1 0 0; 0 the fraction 1 over m sub 2 0; 0 0 the fraction 1 over m sub 3")[$frac(1, m_(1)) 0 0 \ 0 frac(1, m_(2)) 0 \ 0 0 frac(1, m_(3))$] This fact follows readily by how we multiply diagonal matrices. As an exercise, you should verify that #math.equation(block: false, alt: "M M to the power minus 1 equals M to the power minus 1 M equals I .")[$M M^(− 1) = M^(− 1) M = I .$] Let #math.equation(block: false, alt: "A equals M to the power minus 1 K")[$A = M^(− 1) K$]. We look at the system #math.equation(block: false, alt: "x → double prime equals M to the power minus 1 K x →")[$arrow(x)^(″) = M^(− 1) K arrow(x)$], or #math.equation(block: true, alt: "x → double prime equals A x → .")[$arrow(x)^(″) = A arrow(x) .$] Many real world systems can be modeled by this equation. For simplicity, we will only talk about the given masses-and-springs problem. We try a solution of the form #math.equation(block: true, alt: "x → equals v → e to the power α t .")[$arrow(x) = arrow(v) e^(α t) .$] We compute that for this guess, #math.equation(block: false, alt: "x → double prime equals α squared v → e to the power α t .")[$arrow(x)^(″) = α^(2) arrow(v) e^(α t) .$] We plug our guess into the equation and get #math.equation(block: true, alt: "α squared v → e to the power α t equals A v → e to the power α t .")[$α^(2) arrow(v) e^(α t) = A arrow(v) e^(α t) .$] We divide by #math.equation(block: false, alt: "e to the power α t")[$e^(α t)$] to arrive at #math.equation(block: false, alt: "α squared v → equals A v →")[$α^(2) arrow(v) = A arrow(v)$]. Hence if #math.equation(block: false, alt: "α squared")[$α^(2)$] is an eigenvalue of #math.equation(block: false, alt: "A")[$A$] and #math.equation(block: false, alt: "v →")[$arrow(v)$] is a corresponding eigenvector, we have found a solution. In our example, and in other common applications, #math.equation(block: false, alt: "A")[$A$] has only real negative eigenvalues (and possibly a zero eigenvalue). So we study only this case. When an eigenvalue #math.equation(block: false, alt: "λ")[$λ$] is negative, it means that #math.equation(block: false, alt: "α squared equals λ")[$α^(2) = λ$] is negative. Hence there is some real number #math.equation(block: false, alt: "ω")[$ω$] such that #math.equation(block: false, alt: "minus ω squared equals λ")[$− ω^(2) = λ$]. Then #math.equation(block: false, alt: "α equals ± i ω")[$α = ± i ω$]. The solution we guessed was #math.equation(block: true, alt: "x → equals v → open parenthesis cos open parenthesis ω t close parenthesis plus i sin open parenthesis ω t close parenthesis close parenthesis .")[$arrow(x) = arrow(v) ( cos ( ω t ) + i sin ( ω t ) ) .$] By taking the real and imaginary parts (note that #math.equation(block: false, alt: "v →")[$arrow(v)$] is real), we find that #math.equation(block: false, alt: "v → cos open parenthesis ω t close parenthesis")[$arrow(v) cos ( ω t )$] and #math.equation(block: false, alt: "v → sin open parenthesis ω t close parenthesis")[$arrow(v) sin ( ω t )$] are linearly independent solutions. If an eigenvalue is zero, it turns out that both #math.equation(block: false, alt: "v →")[$arrow(v)$] and #math.equation(block: false, alt: "v → t")[$arrow(v) t$] are solutions, where #math.equation(block: false, alt: "v →")[$arrow(v)$] is an eigenvector corresponding to the eigenvalue 0. #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Show that if #math.equation(block: false, alt: "A")[$A$] has a zero eigenvalue and #math.equation(block: false, alt: "v →")[$arrow(v)$] is a corresponding eigenvector, then #math.equation(block: false, alt: "x → equals v → open parenthesis a plus b t close parenthesis")[$arrow(x) = arrow(v) ( a + b t )$] is a solution of #math.equation(block: false, alt: "x → double prime equals A x →")[$arrow(x)^(″) = A arrow(x)$] for arbitrary constants #math.equation(block: false, alt: "a")[$a$] and #math.equation(block: false, alt: "b")[$b$]. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Let #math.equation(block: false, alt: "A")[$A$] be an #math.equation(block: false, alt: "n times n")[$n × n$] matrix with #math.equation(block: false, alt: "n")[$n$] distinct real negative eigenvalues we denote by #math.equation(block: false, alt: "minus ω 1 2 greater than minus ω 2 2 greater than ⋯ greater than minus ω n 2")[$− ω_(1)^(2) > − ω_(2)^(2) > ⋯ > − ω_(n)^(2)$], and corresponding eigenvectors by #math.equation(block: false, alt: "v → sub 1 , v → sub 2 , … , v → sub n .")[$arrow(v)_(1) , arrow(v)_(2) , … , arrow(v)_(n) .$] If #math.equation(block: false, alt: "A")[$A$] is invertible (that is, if #math.equation(block: false, alt: "ω sub 1 greater than 0")[$ω_(1) > 0$]), then #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals ∑ i equals 1 n v → sub i open parenthesis a sub i cos open parenthesis ω sub i t close parenthesis plus b sub i sin open parenthesis ω sub i t close parenthesis close parenthesis ,")[$arrow(x) ( t ) = ∑_(i = 1)^(n) arrow(v)_(i) ( a_(i) cos ( ω_(i) t ) + b_(i) sin ( ω_(i) t ) ) ,$] is the general solution of #math.equation(block: true, alt: "x → double prime equals A x → ,")[$arrow(x)^(″) = A arrow(x) ,$] for some arbitrary constants #math.equation(block: false, alt: "a sub i")[$a_(i)$] and #math.equation(block: false, alt: "b sub i")[$b_(i)$]. If #math.equation(block: false, alt: "A")[$A$] has a zero eigenvalue, that is #math.equation(block: false, alt: "ω sub 1 equals 0")[$ω_(1) = 0$], and all other eigenvalues are distinct and negative, then the general solution can be written as #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals v → sub 1 open parenthesis a sub 1 plus b sub 1 t close parenthesis plus ∑ i equals 2 n v → sub i open parenthesis a sub i cos open parenthesis ω sub i t close parenthesis plus b sub i sin open parenthesis ω sub i t close parenthesis close parenthesis .")[$arrow(x) ( t ) = arrow(v)_(1) ( a_(1) + b_(1) t ) + ∑_(i = 2)^(n) arrow(v)_(i) ( a_(i) cos ( ω_(i) t ) + b_(i) sin ( ω_(i) t ) ) .$] ] We use this solution and the setup from the introduction of this section even when some of the masses and springs are missing. For example, when there are only 2 masses and only 2 springs, simply take only the equations for the two masses and set all the spring constants for the springs that are missing to zero. #examplebox("Example 1")[][ Suppose we have the system in Figure #math.equation(block: false, alt: "2")[$2$], with #math.equation(block: false, alt: "m sub 1 equals 2 , m sub 2 equals 1 , k sub 1 equals 4 ,")[$m_(1) = 2 , m_(2) = 1 , k_(1) = 4 ,$] and #math.equation(block: false, alt: "k sub 2 equals 2 .")[$k_(2) = 2 .$] #figure(figph[Diagram of two wheeled carts: spring k sub 1 joins the left wall to cart m sub 1, and spring k sub 2 joins it to cart m sub 2, which is free on the right.], alt: "Diagram of two wheeled carts: spring k sub 1 joins the left wall to cart m sub 1, and spring k sub 2 joins it to cart m sub 2, which is free on the right.", caption: [Figure #math.equation(block: false, alt: "2")[$2$]: System of masses and springs.]) The equations we write down are #math.equation(block: true, alt: "2 0; 0 1")[$2 0 \ 0 1$] or #math.equation(block: true, alt: "minus 3 1; 2 minus 2")[$− 3 1 \ 2 − 2$] We find the eigenvalues of #math.equation(block: false, alt: "A")[$A$] to be #math.equation(block: false, alt: "λ equals minus 1 , minus 4")[$λ = − 1 , − 4$] (exercise). We find corresponding eigenvectors to be #math.equation(block: false, alt: "1; 2")[$1 \ 2$] and #math.equation(block: false, alt: "1; minus 1")[$1 \ − 1$] respectively (exercise). We check the theorem and note that #math.equation(block: false, alt: "ω sub 1 equals 1")[$ω_(1) = 1$] and #math.equation(block: false, alt: "ω sub 2 equals 2")[$ω_(2) = 2$]. Hence the general solution is #math.equation(block: true, alt: "1; 2")[$1 \ 2$] The two terms in the solution represent the two so-called natural or normal modes of oscillation. And the two (angular) frequencies are the natural frequencies. The first natural frequency is #math.equation(block: false, alt: "1")[$1$], and second natural frequency is #math.equation(block: false, alt: "2")[$2$]. The two modes are plotted in Figure #math.equation(block: false, alt: "3")[$3$]. #figure(figph[Two displacement-versus-time plots, t from 0 to 10. Left: green and blue curves move in unison, period about 6.3, amplitudes 2 and 1. Right: both amplitude 1, opposite in phase, twice as fast.], alt: "Two displacement-versus-time plots, t from 0 to 10. Left: green and blue curves move in unison, period about 6.3, amplitudes 2 and 1. Right: both amplitude 1, opposite in phase, twice as fast.", caption: [Figure #math.equation(block: false, alt: "3")[$3$]: The two modes of the mass-spring system. In the left plot the masses are moving in unison and in the right plot are masses moving in the opposite direction.]) Let us write the solution as ] #math.equation(block: true, alt: "1; 2")[$1 \ 2$] The first term, #math.equation(block: true, alt: "1; 2")[$1 \ 2$] corresponds to the mode where the masses move synchronously in the same direction. The second term, #math.equation(block: true, alt: "1; minus 1")[$1 \ − 1$] corresponds to the mode where the masses move synchronously but in opposite directions. The general solution is a combination of the two modes. That is, the initial conditions determine the amplitude and phase shift of each mode. As an example, suppose we have initial conditions #math.equation(block: true, alt: "x → open parenthesis 0 close parenthesis equals [ 1; minus 1 ] , x → prime open parenthesis 0 close parenthesis equals [ 0; 6 ] .")[$arrow(x) ( 0 ) = [ 1 \ − 1 ] , #h(2em) arrow(x)^(′) ( 0 ) = [ 0 \ 6 ] .$] We use the #math.equation(block: false, alt: "a sub j , b sub j")[$a_(j) , b_(j)$] constants to solve for initial conditions. First #math.equation(block: true, alt: "[ 1; minus 1 ] equals x → open parenthesis 0 close parenthesis equals [ 1; 2 ] a sub 1 plus [ 1; minus 1 ] a sub 2 equals [ a sub 1 plus a sub 2; 2 a sub 1 minus a sub 2 ] .")[$[ 1 \ − 1 ] = arrow(x) ( 0 ) = [ 1 \ 2 ] a_(1) + [ 1 \ − 1 ] a_(2) = [ a_(1) + a_(2) \ 2 a_(1) − a_(2) ] .$] We solve (exercise) to find #math.equation(block: false, alt: "a sub 1 equals 0")[$a_(1) = 0$], #math.equation(block: false, alt: "a sub 2 equals 1")[$a_(2) = 1$]. To find the #math.equation(block: false, alt: "b sub 1")[$b_(1)$] and #math.equation(block: false, alt: "b sub 2")[$b_(2)$], we differentiate first: #math.equation(block: true, alt: "x → prime equals [ 1; 2 ] open parenthesis minus a sub 1 sin open parenthesis t close parenthesis plus b sub 1 cos open parenthesis t close parenthesis close parenthesis plus [ 1; minus 1 ] open parenthesis minus 2 a sub 2 sin open parenthesis 2 t close parenthesis plus 2 b sub 2 cos open parenthesis 2 t close parenthesis close parenthesis .")[$arrow(x)^(′) = [ 1 \ 2 ] ( − a_(1) sin ( t ) + b_(1) cos ( t ) ) + [ 1 \ − 1 ] ( − 2 a_(2) sin ( 2 t ) + 2 b_(2) cos ( 2 t ) ) .$] Now we solve: #math.equation(block: true, alt: "[ 0; 6 ] equals x → prime open parenthesis 0 close parenthesis equals [ 1; 2 ] b sub 1 plus [ 1; minus 1 ] 2 b sub 2 equals [ b sub 1 plus 2 b sub 2; 2 b sub 1 minus 2 b sub 2 ] .")[$[ 0 \ 6 ] = arrow(x)^(′) ( 0 ) = [ 1 \ 2 ] b_(1) + [ 1 \ − 1 ] 2 b_(2) = [ b_(1) + 2 b_(2) \ 2 b_(1) − 2 b_(2) ] .$] Again solve (exercise) to find #math.equation(block: false, alt: "b sub 1 equals 2")[$b_(1) = 2$], #math.equation(block: false, alt: "b sub 2 equals minus 1")[$b_(2) = − 1$]. So our solution is #math.equation(block: true, alt: "x → equals [ 1; 2 ] 2 sin open parenthesis t close parenthesis plus [ 1; minus 1 ] open parenthesis cos open parenthesis 2 t close parenthesis minus sin open parenthesis 2 t close parenthesis close parenthesis equals [ 2 sin open parenthesis t close parenthesis plus cos open parenthesis 2 t close parenthesis minus sin open parenthesis 2 t close parenthesis; 4 sin open parenthesis t close parenthesis minus cos open parenthesis 2 t close parenthesis plus sin open parenthesis 2 t close parenthesis ] .")[$arrow(x) = [ 1 \ 2 ] 2 sin ( t ) + [ 1 \ − 1 ] ( cos ( 2 t ) − sin ( 2 t ) ) = [ 2 sin ( t ) + cos ( 2 t ) − sin ( 2 t ) \ 4 sin ( t ) − cos ( 2 t ) + sin ( 2 t ) ] .$] The graphs of the two displacements, #math.equation(block: false, alt: "x sub 1")[$x_(1)$] and #math.equation(block: false, alt: "x sub 2")[$x_(2)$] of the two carts is in Figure #math.equation(block: false, alt: "4")[$4$]. #figure(figph[Plot of two displacement curves against t from 0 to 10: the green one is larger, ranging from about 5.2 down to -3.9, while the smaller blue one is visibly rippled by the faster mode.], alt: "Plot of two displacement curves against t from 0 to 10: the green one is larger, ranging from about 5.2 down to -3.9, while the smaller blue one is visibly rippled by the faster mode.", caption: [Figure #math.equation(block: false, alt: "4")[$4$]: Superposition of the two modes given the initial conditions.]) #examplebox("Example 2")[][ We have two toy rail cars. Car 1 of mass #math.equation(block: false, alt: "2 kg")[$2 " kg"$] is traveling at #math.equation(block: false, alt: "3 the fraction m over s")[$3 #h(0.222em) frac("m", "s")$] towards the second rail car of mass #math.equation(block: false, alt: "1 kg")[$1 " kg"$]. There is a bumper on the second rail car that engages at the moment the cars hit (it connects to two cars) and does not let go. The bumper acts like a spring of spring constant #math.equation(block: false, alt: "k equals 2 the fraction N over m")[$k = 2 #h(0.222em) frac("N", "m")$]. The second car is #math.equation(block: false, alt: "10")[$10$] meters from a wall. See Figure #math.equation(block: false, alt: "5")[$5$]. #figure(figph[Diagram of two rail cars: m sub 1 rolls right toward m sub 2, which carries a coil spring bumper k on its left face, with 10 meters marked from m sub 2 to a wall.], alt: "Diagram of two rail cars: m sub 1 rolls right toward m sub 2, which carries a coil spring bumper k on its left face, with 10 meters marked from m sub 2 to a wall.", caption: [Figure #math.equation(block: false, alt: "5")[$5$]: The crash of two rail cars.]) We want to ask several questions. At what time after the cars link does impact with the wall happen? What is the speed of car 2 when it hits the wall? ] OK, let us first set the system up. Let #math.equation(block: false, alt: "t equals 0")[$t = 0$] be the time when the two cars link up. Let #math.equation(block: false, alt: "x sub 1")[$x_(1)$] be the displacement of the first car from the position at #math.equation(block: false, alt: "t equals 0")[$t = 0$], and let #math.equation(block: false, alt: "x sub 2")[$x_(2)$] be the displacement of the second car from its original location. Then the time when #math.equation(block: false, alt: "x sub 2 open parenthesis t close parenthesis equals 10")[$x_(2) ( t ) = 10$] is exactly the time when impact with wall occurs. For this #math.equation(block: false, alt: "t , x 2 ′ open parenthesis t close parenthesis")[$t , x_(2)^(′) ( t )$] is the speed at impact. This system acts just like the system of the previous example but without #math.equation(block: false, alt: "k sub 1")[$k_(1)$]. Hence the equation is #math.equation(block: true, alt: "2 0; 0 1")[$2 0 \ 0 1$] or #math.equation(block: true, alt: "minus 1 1; 2 minus 2")[$− 1 1 \ 2 − 2$] We compute the eigenvalues of #math.equation(block: false, alt: "A")[$A$]. It is not hard to see that the eigenvalues are #math.equation(block: false, alt: "0")[$0$] and #math.equation(block: false, alt: "minus 3")[$− 3$] (exercise). Furthermore, eigenvectors are #math.equation(block: false, alt: "1; 1")[$1 \ 1$] and #math.equation(block: false, alt: "1; minus 2")[$1 \ − 2$] respectively (exercise). Then #math.equation(block: false, alt: "ω sub 2 equals the square root of 3")[$ω_(2) = sqrt(3)$] and by the second part of the theorem we find our general solution to be #math.equation(block: true, alt: "x → equals [ 1; 1 ] open parenthesis a sub 1 plus b sub 1 t close parenthesis plus [ 1; minus 2 ] open parenthesis a sub 2 cos open parenthesis the square root of 3 t close parenthesis plus b sub 2 sin open parenthesis the square root of 3 t close parenthesis close parenthesis; equals [ a sub 1 plus b sub 1 t plus a sub 2 cos open parenthesis the square root of 3 t close parenthesis plus b sub 2 sin open parenthesis the square root of 3 t close parenthesis; a sub 1 plus b sub 1 t minus 2 a sub 2 cos open parenthesis the square root of 3 t close parenthesis minus 2 b sub 2 sin open parenthesis the square root of 3 t close parenthesis ]")[$arrow(x) = [ 1 \ 1 ] ( a_(1) + b_(1) t ) + [ 1 \ − 2 ] ( a_(2) cos ( sqrt(3) t ) + b_(2) sin ( sqrt(3) t ) ) \ = [ a_(1) + b_(1) t + a_(2) cos ( sqrt(3) t ) + b_(2) sin ( sqrt(3) t ) \ a_(1) + b_(1) t − 2 a_(2) cos ( sqrt(3) t ) − 2 b_(2) sin ( sqrt(3) t ) ]$] We now apply the initial conditions. First the cars start at position #math.equation(block: false, alt: "0")[$0$] so #math.equation(block: false, alt: "x sub 1 open parenthesis 0 close parenthesis equals 0")[$x_(1) ( 0 ) = 0$] and #math.equation(block: false, alt: "x sub 2 open parenthesis 0 close parenthesis equals 0")[$x_(2) ( 0 ) = 0$]. The first car is traveling at #math.equation(block: false, alt: "3 the fraction m over s")[$3 #h(0.222em) frac("m", "s")$], so #math.equation(block: false, alt: "x 1 ′ open parenthesis 0 close parenthesis equals 3")[$x_(1)^(′) ( 0 ) = 3$] and the second car starts at rest, so #math.equation(block: false, alt: "x 2 ′ open parenthesis 0 close parenthesis equals 0")[$x_(2)^(′) ( 0 ) = 0$]. The first conditions says #math.equation(block: true, alt: "a sub 1 plus a sub 2; a sub 1 minus 2 a sub 2")[$a_(1) + a_(2) \ a_(1) − 2 a_(2)$] It is not hard to see that #math.equation(block: false, alt: "a sub 1 equals a sub 2 equals 0")[$a_(1) = a_(2) = 0$]. We set #math.equation(block: false, alt: "a sub 1 equals 0")[$a_(1) = 0$] and #math.equation(block: false, alt: "a sub 2 equals 0")[$a_(2) = 0$] in #math.equation(block: false, alt: "x → open parenthesis t close parenthesis")[$arrow(x) ( t )$] and differentiate to get #math.equation(block: true, alt: "b sub 1 plus the square root of 3 b sub 2 cos open parenthesis the square root of 3 t close parenthesis; b sub 1 minus 2 the square root of 3 b sub 2 cos open parenthesis the square root of 3 t close parenthesis")[$b_(1) + sqrt(3) b_(2) cos ( sqrt(3) t ) \ b_(1) − 2 sqrt(3) b_(2) cos ( sqrt(3) t )$] So #math.equation(block: true, alt: "3; 0")[$3 \ 0$] Solving these two equations we find #math.equation(block: false, alt: "b sub 1 equals 2")[$b_(1) = 2$] and #math.equation(block: false, alt: "b sub 2 equals the fraction 1 over the square root of 3")[$b_(2) = frac(1, sqrt(3))$]. Hence the position of our cars is (until the impact with the wall) #math.equation(block: true, alt: "2 t plus the fraction 1 over the square root of 3 sin open parenthesis the square root of 3 t close parenthesis; 2 t minus the fraction 2 over the square root of 3 sin open parenthesis the square root of 3 t close parenthesis")[$2 t + frac(1, sqrt(3)) sin ( sqrt(3) t ) \ 2 t − frac(2, sqrt(3)) sin ( sqrt(3) t )$] Note how the presence of the zero eigenvalue resulted in a term containing #math.equation(block: false, alt: "t")[$t$]. This means that the carts will be traveling in the positive direction as time grows, which is what we expect. What we are really interested in is the second expression, the one for #math.equation(block: false, alt: "x sub 2")[$x_(2)$]. We have #math.equation(block: false, alt: "x sub 2 open parenthesis t close parenthesis equals 2 t minus the fraction 2 over the square root of 3 sin open parenthesis the square root of 3 t close parenthesis")[$x_(2) ( t ) = 2 t − frac(2, sqrt(3)) sin ( sqrt(3) t )$]. See Figure #math.equation(block: false, alt: "6")[$6$] for the plot of #math.equation(block: false, alt: "x sub 2")[$x_(2)$] versus time. #figure(figph[Plot of the second car's position against time, t from 0 to 6, rising like a staircase: it climbs to a flat shelf near 7.3, pauses, then surges to about 12.9, never turning back.], alt: "Plot of the second car's position against time, t from 0 to 6, rising like a staircase: it climbs to a flat shelf near 7.3, pauses, then surges to about 12.9, never turning back.", caption: [Figure #math.equation(block: false, alt: "6")[$6$]: Position of the second car in time (ignoring the wall).]) Just from the graph we can see that time of impact will be a little more than 5 seconds from time zero. For this we have to solve the equation #math.equation(block: false, alt: "10 equals x sub 2 open parenthesis t close parenthesis equals 2 t minus the fraction 2 over the square root of 3 sin open parenthesis the square root of 3 t close parenthesis")[$10 = x_(2) ( t ) = 2 t − frac(2, sqrt(3)) sin ( sqrt(3) t )$]. Using a computer (or even a graphing calculator) we find that #math.equation(block: false, alt: "t sub impact approximately equals 5.22")[$t_("impact") ≈ 5.22$] seconds. As for the speed we note that #math.equation(block: false, alt: "x 2 ′ equals 2 minus 2 cos open parenthesis the square root of 3 t close parenthesis")[$x_(2)^(′) = 2 − 2 cos ( sqrt(3) t )$]. At time of impact (#math.equation(block: false, alt: "5.22")[$5.22$] seconds from #math.equation(block: false, alt: "t equals 0")[$t = 0$]) we get that #math.equation(block: false, alt: "x 2 ′ open parenthesis t sub i m p a c t close parenthesis approximately equals 3.85")[$x_(2)^(′) ( t_(upright(i) upright(m) upright(p) upright(a) upright(c) upright(t)) ) ≈ 3.85$]. The maximum speed is the maximum of #math.equation(block: false, alt: "2 minus 2 cos open parenthesis the square root of 3 t close parenthesis")[$2 − 2 cos ( sqrt(3) t )$], which is #math.equation(block: false, alt: "4")[$4$]. We are traveling at almost the maximum speed when we hit the wall. Suppose that Bob is a tiny person sitting on car 2. Bob has a Martini in his hand and would like not to spill it. Let us suppose Bob would not spill his Martini when the first car links up with car 2, but if car 2 hits the wall at any speed greater than zero, Bob will spill his drink. Suppose Bob can move car 2 a few meters towards or away from the wall (he cannot go all the way to the wall, nor can he get out of the way of the first car). Is there a “safe” distance for him to be at? A distance such that the impact with the wall is at zero speed? Car 2's position x₂(t) = 2t − (2/√3)·sin(√3·t) (solid), the wall as a movable line at distance d (dashed), and the impact speed x₂′(t) = 2 − 2·cos(√3·t) (dotted); the horizontal axis is time t in seconds. At Lebl's d = 10 m the wall cuts the curve on a steep stretch — impact at t ≈ 5.22 s, speed ≈ 3.85 m/s. Drag d down and the crossing slides left and flattens until, at d ≈ 7.26 m (= 4π/√3), the line is tangent to the plateau at t = 2π/√3, right where the dotted speed curve touches zero. That tangency is Bob's safe distance; drag past it and the curve steepens again. {"functions":\[{"color":"\#1f4e79","domain":\[0,7\],"expression":"2\*x - (2/sqrt(3))\*sin(sqrt(3)\*x)","expression2":"","id":"x2-position","inequality":"lt","lineDash":\[\],"lineWidth":2.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#b8442a","domain":\[0,7\],"expression":"d","expression2":"","id":"wall","inequality":"lt","lineDash":\[8,5\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#2e6b3f","domain":\[0,7\],"expression":"2 - 2\*cos(sqrt(3)\*x)","expression2":"","id":"x2-speed","inequality":"lt","lineDash":\[2,4\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":1,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"lebl-3-6-d","label":"Distance from car 2 to the wall","max":11,"min":5,"name":"d","step":0.05,"unit":"m","value":10}\],"title":"Rail cars: position, the wall, and the impact speed","version":1,"viewport":{"centerX":3.5,"centerY":5.6,"scale":40}} The answer is yes. Looking at Figure #math.equation(block: false, alt: "6")[$6$], we note the “plateau” between #math.equation(block: false, alt: "t equals 3")[$t = 3$] and #math.equation(block: false, alt: "t equals 4")[$t = 4$]. There is a point where the speed is zero. To find it we need to solve #math.equation(block: false, alt: "x 2 ′ open parenthesis t close parenthesis equals 0")[$x_(2)^(′) ( t ) = 0$]. This is when #math.equation(block: false, alt: "cos open parenthesis the square root of 3 t close parenthesis equals 1")[$cos ( sqrt(3) t ) = 1$] or in other words when #math.equation(block: false, alt: "t equals the fraction 2 π over the square root of 3 , the fraction 4 π over the square root of 3 , …")[$t = frac(2 π, sqrt(3)) , frac(4 π, sqrt(3)) , …$] and so on. We plug in the first value to obtain #math.equation(block: false, alt: "x sub 2 open parenthesis the fraction 2 π over the square root of 3 close parenthesis equals the fraction 4 π over the square root of 3 approximately equals 7.26")[$x_(2) ( frac(2 π, sqrt(3)) ) = frac(4 π, sqrt(3)) ≈ 7.26$]. So a “safe” distance is about 7 and a quarter meters from the wall. Alternatively Bob could move away from the wall towards the incoming car 2 where another safe distance is #math.equation(block: false, alt: "the fraction 8 π over the square root of 3 approximately equals 14.51")[$frac(8 π, sqrt(3)) ≈ 14.51$] and so on, using all the different #math.equation(block: false, alt: "t")[$t$] such that #math.equation(block: false, alt: "x 2 ′ open parenthesis t close parenthesis equals 0")[$x_(2)^(′) ( t ) = 0$]. Of course #math.equation(block: false, alt: "t equals 0")[$t = 0$] is always a solution here, corresponding to #math.equation(block: false, alt: "x sub 2 equals 0")[$x_(2) = 0$], but that means standing right at the wall. === Forced Oscillations Finally we move to forced oscillations. Suppose that now our system is #math.equation(block: true, alt: "x → double prime equals A x → plus F → cos open parenthesis ω t close parenthesis .")[$arrow(x)^(″) = A arrow(x) + arrow(F) cos ( ω t ) .$] That is, we are adding periodic forcing to the system in the direction of the vector #math.equation(block: false, alt: "F →")[$arrow(F)$]. As before, this system just requires us to find one particular solution #math.equation(block: false, alt: "x → sub p")[$arrow(x)_(p)$], add it to the general solution of the associated homogeneous system #math.equation(block: false, alt: "x → sub c")[$arrow(x)_(c)$], and we will have the general solution to (3.6.1). Let us suppose that #math.equation(block: false, alt: "ω")[$ω$] is not one of the natural frequencies of #math.equation(block: false, alt: "x → double prime equals A x →")[$arrow(x)^(″) = A arrow(x)$], then we can guess #math.equation(block: true, alt: "x → sub p equals c → cos open parenthesis ω t close parenthesis ,")[$arrow(x)_(p) = arrow(c) cos ( ω t ) ,$] where #math.equation(block: false, alt: "c →")[$arrow(c)$] is an unknown constant vector. Note that we do not need to use sine since there are only second derivatives. We solve for #math.equation(block: false, alt: "c →")[$arrow(c)$] to find #math.equation(block: false, alt: "x → sub p")[$arrow(x)_(p)$]. This is really just the method of undetermined coefficients for systems. Let us differentiate #math.equation(block: false, alt: "x → sub p")[$arrow(x)_(p)$] twice to get #math.equation(block: true, alt: "x → p ″ equals minus ω squared c → cos open parenthesis ω t close parenthesis .")[$arrow(x)_(p)^(″) = − ω^(2) arrow(c) cos ( ω t ) .$] Plug #math.equation(block: false, alt: "x → sub p")[$arrow(x)_(p)$] and #math.equation(block: false, alt: "x → p ″")[$arrow(x)_(p)^(″)$] into the equation (3.6.1): #math.equation(block: true, alt: "minus ω squared c → cos open parenthesis ω t close parenthesis ⏞ x → sub p double prime equals A c → cos open parenthesis ω t close parenthesis ⏞ A x → sub p plus F → cos open parenthesis ω t close parenthesis .")[$limits(overbrace(− ω^(2) arrow(c) cos ( ω t )))^(arrow(x)_(p)^(″)) = limits(overbrace(A arrow(c) cos ( ω t )))^(A arrow(x)_(p)) + arrow(F) cos ( ω t ) .$] We cancel out the cosine and rearrange the equation to obtain #math.equation(block: true, alt: "open parenthesis A plus ω squared I close parenthesis c → equals minus F → .")[$( A + ω^(2) I ) arrow(c) = − arrow(F) .$] So #math.equation(block: true, alt: "c → equals open parenthesis A plus ω squared I close parenthesis to the power minus 1 open parenthesis minus F → close parenthesis .")[$arrow(c) = ( A + ω^(2) I )^(− 1) ( − arrow(F) ) .$] Of course this is possible only if #math.equation(block: false, alt: "open parenthesis A plus ω squared I close parenthesis equals open parenthesis A minus open parenthesis minus ω squared close parenthesis I close parenthesis")[$( A + ω^(2) I ) = ( A − ( − ω^(2) ) I )$] is invertible. That matrix is invertible if and only if #math.equation(block: false, alt: "minus ω squared")[$− ω^(2)$] is not an eigenvalue of #math.equation(block: false, alt: "A")[$A$]. That is true if and only if #math.equation(block: false, alt: "ω")[$ω$] is not a natural frequency of the system. We simplified things a little bit. If we wish to have the forcing term to be in the units of force, say Newtons, then we must write #math.equation(block: true, alt: "M x → double prime equals K x → plus G → cos open parenthesis ω t close parenthesis .")[$M arrow(x)^(″) = K arrow(x) + arrow(G) cos ( ω t ) .$] If we then write things in terms of #math.equation(block: false, alt: "A equals M to the power minus 1 K")[$A = M^(− 1) K$], we have #math.equation(block: true, alt: "x → double prime equals M to the power minus 1 K x → plus M to the power minus 1 G → cos open parenthesis ω t close parenthesis or x → double prime equals A x → plus F → cos open parenthesis ω t close parenthesis ,")[$arrow(x)^(″) = M^(− 1) K arrow(x) + M^(− 1) arrow(G) cos ( ω t ) #h(2em) "or" #h(2em) arrow(x)^(″) = A arrow(x) + arrow(F) cos ( ω t ) ,$] where #math.equation(block: false, alt: "F → equals M to the power minus 1 G →")[$arrow(F) = M^(− 1) arrow(G)$]. #examplebox("Example 3")[][ Let us take the example in Figure #math.equation(block: false, alt: "2")[$2$] with the same parameters as before: #math.equation(block: false, alt: "m sub 1 equals 2 , m sub 2 equals 1 , k sub 1 equals 4 ,")[$m_(1) = 2 , m_(2) = 1 , k_(1) = 4 ,$] and #math.equation(block: false, alt: "k sub 2 equals 2")[$k_(2) = 2$]. Now suppose that there is a force #math.equation(block: false, alt: "2 cos open parenthesis 3 t close parenthesis")[$2 cos ( 3 t )$] acting on the second cart. The equation is #math.equation(block: true, alt: "[ 2, 0; 0, 1 ] x → double prime equals [ minus 4, 2; 2, minus 2 ] x → plus [ 0; 2 ] cos open parenthesis 3 t close parenthesis or x → double prime equals [ minus 3, 1; 2, minus 2 ] x → plus [ 0; 2 ] cos open parenthesis 3 t close parenthesis .")[$[ 2 & 0 \ 0 & 1 ] arrow(x)^(″) = [ − 4 & 2 \ 2 & − 2 ] arrow(x) + [ 0 \ 2 ] cos ( 3 t ) #h(2em) "or" #h(2em) arrow(x)^(″) = [ − 3 & 1 \ 2 & − 2 ] arrow(x) + [ 0 \ 2 ] cos ( 3 t ) .$] We solved the associated homogeneous equation before and found the complementary solution to be #math.equation(block: true, alt: "1; 2")[$1 \ 2$] The natural frequencies are #math.equation(block: false, alt: "1")[$1$] and #math.equation(block: false, alt: "2")[$2$]. Hence as #math.equation(block: false, alt: "3")[$3$] is not a natural frequency, we can try #math.equation(block: false, alt: "c → cos open parenthesis 3 t close parenthesis")[$arrow(c) cos ( 3 t )$]. We invert #math.equation(block: false, alt: "open parenthesis A plus 3 squared I close parenthesis")[$( A + 3^(2) I )$]: #math.equation(block: true, alt: "minus 3 1; 2 minus 2")[$− 3 1 \ 2 − 2$] Hence, #math.equation(block: true, alt: "the fraction 7 over 40 the fraction minus 1 over 40; the fraction minus 1 over 20 the fraction 3 over 20")[$frac(7, 40) frac(− 1, 40) \ frac(− 1, 20) frac(3, 20)$] Combining with what we know the general solution of the associated homogeneous problem to be, we get that the general solution to #math.equation(block: false, alt: "x → double prime equals A x → plus F → cos open parenthesis ω t close parenthesis")[$arrow(x)^(″) = A arrow(x) + arrow(F) cos ( ω t )$] is #math.equation(block: true, alt: "1; 2")[$1 \ 2$] The constants #math.equation(block: false, alt: "a sub 1 , a sub 2 , b sub 1 ,")[$a_(1) , a_(2) , b_(1) ,$] and #math.equation(block: false, alt: "b sub 2")[$b_(2)$] must then be solved for given any initial conditions. ] Note that given force #math.equation(block: false, alt: "f →")[$arrow(f)$], we write the equation as #math.equation(block: false, alt: "M x → double prime equals K x → plus f →")[$M arrow(x)^(″) = K arrow(x) + arrow(f)$] to get the units right. Then we write #math.equation(block: false, alt: "x → double prime equals M to the power minus 1 K x → plus M to the power minus 1 f →")[$arrow(x)^(″) = M^(− 1) K arrow(x) + M^(− 1) arrow(f)$]. The term #math.equation(block: false, alt: "g → equals M to the power minus 1 f →")[$arrow(g) = M^(− 1) arrow(f)$] in #math.equation(block: false, alt: "x → double prime equals A x → plus g →")[$arrow(x)^(″) = A arrow(x) + arrow(g)$] is in units of force per unit mass. If #math.equation(block: false, alt: "ω")[$ω$] is a natural frequency of the system resonance occurs because we will have to try a particular solution of the form #math.equation(block: true, alt: "x → sub p equals c → t sin open parenthesis ω t close parenthesis plus d → t cos open parenthesis ω t close parenthesis .")[$arrow(x)_(p) = arrow(c) t sin ( ω t ) + arrow(d) t cos ( ω t ) .$] That is assuming that the eigenvalues of the coefficient matrix are distinct. Next, note that the amplitude of this solution grows without bound as #math.equation(block: false, alt: "t")[$t$] grows.