#set document(title: "2.6 Forced Oscillations and Resonance", 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")) == 2.6#h(0.6em)Forced Oscillations and Resonance Let us consider to the example of a mass on a spring. We now examine the case of forced oscillations, which we did not yet handle. That is, we consider the equation #math.equation(block: true, alt: "m x double prime plus c x prime plus k x equals F open parenthesis t close parenthesis")[$m x^(″) + c x^(′) + k x = F ( t )$] for some nonzero #math.equation(block: false, alt: "F open parenthesis t close parenthesis")[$F ( t )$]. The setup is again: #math.equation(block: false, alt: "m")[$m$] is mass, #math.equation(block: false, alt: "c")[$c$] is friction, #math.equation(block: false, alt: "k")[$k$] is the spring constant, and #math.equation(block: false, alt: "F open parenthesis t close parenthesis")[$F ( t )$] is an external force acting on the mass. #figure(figph[Diagram of a horizontal mass-spring system: a hatched wall, spring k, block m, an arrow F of t driving it to the right, and damping c labelled beneath.], alt: "Diagram of a horizontal mass-spring system: a hatched wall, spring k, block m, an arrow F of t driving it to the right, and damping c labelled beneath.", caption: [Figure #math.equation(block: false, alt: "1")[$1$]]) What we are interested in is periodic forcing, such as noncentered rotating parts, or perhaps loud sounds, or other sources of periodic force. Once we learn about Fourier series in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/4%3A_Fourier_series_and_PDEs")[Chapter 4], we will see that we cover all periodic functions by simply considering #math.equation(block: false, alt: "F open parenthesis t close parenthesis equals F sub 0 cos open parenthesis ω t close parenthesis")[$F ( t ) = F_(0) cos ( ω t )$] (or sine instead of cosine, the calculations are essentially the same). === Undamped Forced Motion and Resonance First let us consider undamped #math.equation(block: false, alt: "c equals 0")[$c = 0$] motion for simplicity. We have the equation #math.equation(block: true, alt: "m x double prime plus k x equals F sub 0 cos open parenthesis ω t close parenthesis")[$m x^(″) + k x = F_(0) cos ( ω t )$] This equation has the complementary solution (solution to the associated homogeneous equation) #math.equation(block: true, alt: "x sub c equals C sub 1 cos open parenthesis ω sub 0 t close parenthesis plus C sub 2 sin open parenthesis ω sub 0 t close parenthesis")[$x_(c) = C_(1) cos ( ω_(0) t ) + C_(2) sin ( ω_(0) t )$] where #math.equation(block: false, alt: "ω sub 0 equals the square root of the fraction k over m")[$ω_(0) = sqrt(frac(k, m))$] is the #emph[natural frequency] (angular), which is the frequency at which the system “wants to oscillate” without external interference. Let us suppose that #math.equation(block: false, alt: "ω sub 0 not equal to ω")[$ω_(0) ≠ ω$]. We try the solution #math.equation(block: false, alt: "x sub p equals A cos open parenthesis ω t close parenthesis")[$x_(p) = A cos ( ω t )$] and solve for #math.equation(block: false, alt: "A")[$A$]. Note that we need not have sine in our trial solution as on the left hand side we will only get cosines anyway. If you include a sine it is fine; you will find that its coefficient will be zero. We solve using the method of undetermined coefficients. We find that #math.equation(block: true, alt: "x sub p equals the fraction F sub 0 over m open parenthesis ω 0 2 minus ω squared close parenthesis cos open parenthesis ω t close parenthesis")[$x_(p) = frac(F_(0), m ( ω_(0)^(2) − ω^(2) )) cos ( ω t )$] We leave it as an exercise to do the algebra required. The general solution is #math.equation(block: true, alt: "x equals C sub 1 cos open parenthesis ω sub 0 t close parenthesis plus C sub 2 sin open parenthesis ω sub 0 t close parenthesis plus the fraction F sub 0 over m open parenthesis ω 0 2 minus ω squared close parenthesis cos open parenthesis ω t close parenthesis")[$x = C_(1) cos ( ω_(0) t ) + C_(2) sin ( ω_(0) t ) + frac(F_(0), m ( ω_(0)^(2) − ω^(2) )) cos ( ω t )$] or written another way #math.equation(block: true, alt: "x equals C cos open parenthesis ω sub 0 t minus y close parenthesis plus the fraction F sub 0 over m open parenthesis ω 0 2 minus ω squared close parenthesis cos open parenthesis ω t close parenthesis")[$x = C cos ( ω_(0) t − y ) + frac(F_(0), m ( ω_(0)^(2) − ω^(2) )) cos ( ω t )$] Hence it is a superposition of two cosine waves at different frequencies. #examplebox("Example 1")[][ Take #math.equation(block: true, alt: "0.5 x double prime plus 8 x equals 10 cos open parenthesis π t close parenthesis , x open parenthesis 0 close parenthesis equals 0 , x prime open parenthesis 0 close parenthesis equals 0")[$0.5 x^(″) + 8 x = 10 cos ( π t ) , #h(1em) x ( 0 ) = 0 , #h(1em) x^(′) ( 0 ) = 0$] Let us compute. First we read off the parameters: #math.equation(block: false, alt: "ω equals π , ω sub 0 equals the square root of the fraction 8 over 0.5 equals 4 , F sub 0 equals 10 , m equals 0.5")[$ω = π , ω_(0) = sqrt(frac(8, 0.5)) = 4 , F_(0) = 10 , m = 0.5$]. The general solution is #math.equation(block: true, alt: "x equals C sub 1 cos open parenthesis 4 t close parenthesis plus C sub 2 sin open parenthesis 4 t close parenthesis plus the fraction 20 over 16 minus π squared cos open parenthesis π t close parenthesis")[$x = C_(1) cos ( 4 t ) + C_(2) sin ( 4 t ) + frac(20, 16 − π^(2)) cos ( π t )$] Solve for #math.equation(block: false, alt: "C sub 1")[$C_(1)$] and #math.equation(block: false, alt: "C sub 2")[$C_(2)$] using the initial conditions. It is easy to see that #math.equation(block: false, alt: "C sub 1 equals the fraction minus 20 over 16 minus π squared")[$C_(1) = frac(− 20, 16 − π^(2))$] and #math.equation(block: false, alt: "C sub 2 equals 0")[$C_(2) = 0$]. Hence #math.equation(block: true, alt: "x equals the fraction 20 over 16 minus π squared open parenthesis cos open parenthesis π t close parenthesis minus cos open parenthesis 4 t close parenthesis close parenthesis")[$x = frac(20, 16 − π^(2)) ( cos ( π t ) − cos ( 4 t ) )$] #figure(figph[Plot of a blue beats curve over time 0 to 20 on a scale from -10 to 10: a fast oscillation of period about 1.7 whose envelope swells to about plus or minus 6.5 and pinches shut every 7.5 units.], alt: "Plot of a blue beats curve over time 0 to 20 on a scale from -10 to 10: a fast oscillation of period about 1.7 whose envelope swells to about plus or minus 6.5 and pinches shut every 7.5 units.", caption: [Figure #math.equation(block: false, alt: "2")[$2$]: Graph of #math.equation(block: false, alt: "the fraction 20 over 16 minus π squared open parenthesis cos open parenthesis π t close parenthesis minus cos open parenthesis 4 t close parenthesis close parenthesis")[$frac(20, 16 − π^(2)) ( cos ( π t ) − cos ( 4 t ) )$].]) Notice the “beating” behavior in Figure #math.equation(block: false, alt: "2")[$2$]. First use the trigonometric identity #math.equation(block: true, alt: "2 sin open parenthesis the fraction A minus B over 2 close parenthesis sin open parenthesis the fraction A plus B over 2 close parenthesis equals cos B minus cos A")[$2 sin ( frac(A − B, 2) ) sin ( frac(A + B, 2) ) = cos B − cos A$] to get that #math.equation(block: true, alt: "x equals the fraction 20 over 16 minus π squared open parenthesis 2 sin open parenthesis the fraction 4 minus π over 2 t close parenthesis sin open parenthesis the fraction 4 plus π over 2 t close parenthesis close parenthesis")[$x = frac(20, 16 − π^(2)) ( 2 sin ( frac(4 − π, 2) t ) sin ( frac(4 + π, 2) t ) )$] Notice that #math.equation(block: false, alt: "x")[$x$] is a high frequency wave modulated by a low frequency wave. ] Now suppose that #math.equation(block: false, alt: "ω sub 0 equals ω")[$ω_(0) = ω$]. Obviously, we cannot try the solution #math.equation(block: false, alt: "A cos open parenthesis ω t close parenthesis")[$A cos ( ω t )$] and then use the method of undetermined coefficients. We notice that #math.equation(block: false, alt: "cos open parenthesis ω t close parenthesis")[$cos ( ω t )$] solves the associated homogeneous equation. Therefore, we need to try #math.equation(block: false, alt: "x sub p equals A t cos open parenthesis ω t close parenthesis plus B t sin open parenthesis ω t close parenthesis")[$x_(p) = A t cos ( ω t ) + B t sin ( ω t )$]. This time we do need the sine term since the second derivative of #math.equation(block: false, alt: "t cos open parenthesis ω t close parenthesis")[$t cos ( ω t )$] does contain sines. We write the equation #math.equation(block: true, alt: "x double prime plus ω squared x equals the fraction F sub 0 over m cos open parenthesis ω t close parenthesis")[$x^(″) + ω^(2) x = frac(F_(0), m) cos ( ω t )$] Plugging #math.equation(block: false, alt: "x sub p")[$x_(p)$] into the left hand side we get #math.equation(block: true, alt: "2 B ω cos open parenthesis ω t close parenthesis minus 2 A ω sin open parenthesis ω t close parenthesis equals the fraction F sub 0 over m cos open parenthesis ω t close parenthesis")[$2 B ω cos ( ω t ) − 2 A ω sin ( ω t ) = frac(F_(0), m) cos ( ω t )$] Hence #math.equation(block: false, alt: "A equals 0")[$A = 0$] and #math.equation(block: false, alt: "B equals the fraction F sub 0 over 2 m ω")[$B = frac(F_(0), 2 m ω)$]. Our particular solution is #math.equation(block: false, alt: "the fraction F sub 0 over 2 m ω t sin open parenthesis ω t close parenthesis")[$frac(F_(0), 2 m ω) t sin ( ω t )$] and our general solution is #math.equation(block: true, alt: "x equals C sub 1 cos open parenthesis ω t close parenthesis plus C sub 2 sin open parenthesis ω t close parenthesis plus the fraction F sub 0 over 2 m ω t sin open parenthesis ω t close parenthesis")[$x = C_(1) cos ( ω t ) + C_(2) sin ( ω t ) + frac(F_(0), 2 m ω) t sin ( ω t )$] The important term is the last one (the particular solution we found). We can see that this term grows without bound as #math.equation(block: false, alt: "t → infinity")[$t → ∞$]. In fact it oscillates between #math.equation(block: false, alt: "the fraction F sub 0 t over 2 m ω")[$frac(F_(0) t, 2 m ω)$] and #math.equation(block: false, alt: "the fraction minus F sub 0 t over 2 m ω")[$frac(− F_(0) t, 2 m ω)$]. The first two terms only oscillate between #math.equation(block: false, alt: "± the square root of C 1 2 plus C 2 2")[$± sqrt(C_(1)^(2) + C_(2)^(2))$], which becomes smaller and smaller in proportion to the oscillations of the last term as #math.equation(block: false, alt: "t")[$t$] gets larger. In Figure #math.equation(block: false, alt: "3")[$3$] we see the graph with #math.equation(block: false, alt: "C sub 1 equals C sub 2 equals 0 , F sub 0 equals 2 , m equals 1 , ω equals π")[$C_(1) = C_(2) = 0 , F_(0) = 2 , m = 1 , ω = π$]. #figure(figph[Plot of a blue oscillation over time 0 to 20 with fixed period about 2 and amplitude growing without bound, peaks climbing almost linearly to roughly 6 by time 19.], alt: "Plot of a blue oscillation over time 0 to 20 with fixed period about 2 and amplitude growing without bound, peaks climbing almost linearly to roughly 6 by time 19.", caption: [Figure #math.equation(block: false, alt: "3")[$3$]: Graph of #math.equation(block: false, alt: "the fraction 1 over π t sin open parenthesis π t close parenthesis")[$frac(1, π) t sin ( π t )$].]) By forcing the system in just the right frequency we produce very wild oscillations. This kind of behavior is called resonance or perhaps pure resonance. Sometimes resonance is desired. For example, remember when as a kid you could start swinging by just moving back and forth on the swing seat in the “correct frequency”? You were trying to achieve resonance. The force of each one of your moves was small, but after a while it produced large swings. This section's own example 0.5x″ + 8x = 10cos(ωt) with x(0) = x′(0) = 0, generalized to a draggable ω and drawn with the slow modulating wave Lebl's own product identity gives: x = 40/(16 − ω²)·sin(((4−ω)/2)t)·sin(((4+ω)/2)t). At the default ω = π it reproduces Figure 2 exactly. Drag ω toward ω₀ = 4 and the beat period 4π/(4 − ω) stretches from about 10 s to about 31 s while the peak amplitude 40/(16 − ω²) climbs from 4.9 to 13.2. That prefactor diverges at ω = ω₀ — which is precisely why this closed form breaks down at resonance, and why the resonant case needs the separate growing solution (F₀/2mω₀)·t·sin(ω₀t), the shape plotted in Figure 3. {"functions":\[{"color":"\#1f4e79","domain":\[0,40\],"expression":"20/(16 - w^2)\*(cos(w\*t) - cos(4\*t))","expression2":"","id":"beating-solution","inequality":"lt","lineDash":\[\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"t","visible":true},{"color":"\#b8442a","domain":\[0,40\],"expression":"(40/(16-w^2))\*sin(((4-w)/2)\*t)","expression2":"","id":"modulator-upper","inequality":"lt","lineDash":\[6,4\],"lineWidth":1.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"t","visible":true},{"color":"\#b8442a","domain":\[0,40\],"expression":"-(40/(16-w^2))\*sin(((4-w)/2)\*t)","expression2":"","id":"modulator-lower","inequality":"lt","lineDash":\[6,4\],"lineWidth":1.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"t","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":5,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"param-w","label":"Forcing frequency","max":3.6,"min":2.8,"name":"w","step":0.02,"unit":"rad/s","value":3.141592653589793}\],"title":"Beating becoming resonance: 0.5x\\u2033 + 8x = 10cos(\\u03c9t)","version":1,"viewport":{"centerX":19,"centerY":0,"scale":17}} On the other hand resonance can be destructive. In an earthquake some buildings collapse while others may be relatively undamaged. This is due to different buildings having different resonance frequencies. So figuring out the resonance frequency can be very important. A common (but wrong) example of destructive force of resonance is the Tacoma Narrows bridge failure. It turns out there was a different phenomenon at play.#math.equation(block: false, alt: "to the power 1")[$1$] === Damped Forced Motion and Practical Resonance In real life things are not as simple as they were above. There is, of course, some damping. Our equation becomes #math.equation(block: true, alt: "m x double prime plus c x prime plus k x equals F sub 0 cos open parenthesis ω t close parenthesis ,")[$m x^(″) + c x^(′) + k x = F_(0) cos ( ω t ) ,$] for some #math.equation(block: false, alt: "c greater than 0")[$c > 0$]. We have solved the homogeneous problem before. We let #math.equation(block: true, alt: "p equals the fraction c over 2 m ω sub 0 equals the square root of the fraction k over m")[$p = frac(c, 2 m) #h(1em) ω_(0) = sqrt(frac(k, m))$] We replace equation (2.6.1) with #math.equation(block: true, alt: "x double prime plus 2 p x prime plus ω 0 2 x equals the fraction F sub 0 over m cos open parenthesis ω t close parenthesis")[$x^(″) + 2 p x^(′) + ω_(0)^(2) x = frac(F_(0), m) cos ( ω t )$] The roots of the characteristic equation of the associated homogeneous problem are #math.equation(block: false, alt: "r sub 1 , r sub 2 equals minus p ± the square root of p squared minus ω 0 2")[$r_(1) , r_(2) = − p ± sqrt(p^(2) − ω_(0)^(2))$]. The form of the general solution of the associated homogeneous equation depends on the sign of #math.equation(block: false, alt: "p squared minus ω 0 2")[$p^(2) − ω_(0)^(2)$], or equivalently on the sign of #math.equation(block: false, alt: "c squared minus 4 k m")[$c^(2) − 4 k m$], as we have seen before. That is, #math.equation(block: true, alt: "x sub c equals { C sub 1 e to the power r sub 1 t plus C sub 2 e to the power r sub 2 t ,, if c squared greater than 4 k m ,; C sub 1 e to the power p t plus C sub 2 t e to the power minus p t ,, if c squared equals 4 k m ,; e to the power minus p t open parenthesis C sub 1 cos open parenthesis ω sub 1 t close parenthesis plus C sub 2 sin open parenthesis ω sub 1 t close parenthesis close parenthesis ,, if c squared less than 4 k m ,")[$x_(c) = \{ C_(1) e^(r_(1) t) + C_(2) e^(r_(2) t) , & "if " c^(2) > 4 k m , \ C_(1) e^(p t) + C_(2) t e^(− p t) , & "if " c^(2) = 4 k m , \ e^(− p t) ( C_(1) cos ( ω_(1) t ) + C_(2) sin ( ω_(1) t ) ) , & "if " c^(2) < 4 k m ,$] where #math.equation(block: false, alt: "ω sub 1 equals the square root of ω 0 2 minus p squared")[$ω_(1) = sqrt(ω_(0)^(2) − p^(2))$]. In any case, we can see that #math.equation(block: false, alt: "x sub c open parenthesis t close parenthesis → 0")[$x_(c) ( t ) → 0$] as #math.equation(block: false, alt: "t → infinity")[$t → ∞$]. Furthermore, there can be no conflicts when trying to solve for the undetermined coefficients by trying #math.equation(block: false, alt: "x sub p equals A cos open parenthesis ω t close parenthesis plus B sin open parenthesis ω t close parenthesis")[$x_(p) = A cos ( ω t ) + B sin ( ω t )$]. Let us plug in and solve for #math.equation(block: false, alt: "A")[$A$] and #math.equation(block: false, alt: "B")[$B$]. We get (the tedious details are left to reader) #math.equation(block: true, alt: "open parenthesis open parenthesis ω 0 2 minus ω squared close parenthesis B minus 2 ω p A close parenthesis sin open parenthesis ω t close parenthesis plus open parenthesis open parenthesis ω 0 2 minus ω squared close parenthesis A plus 2 ω p B close parenthesis cos open parenthesis ω t close parenthesis equals the fraction F sub 0 over m cos open parenthesis ω t close parenthesis")[$( ( ω_(0)^(2) − ω^(2) ) B − 2 ω p A ) sin ( ω t ) + ( ( ω_(0)^(2) − ω^(2) ) A + 2 ω p B ) cos ( ω t ) = frac(F_(0), m) cos ( ω t )$] We get that #math.equation(block: true, alt: "A equals the fraction open parenthesis ω 0 2 minus ω squared close parenthesis F sub 0 over m open parenthesis 2 ω p close parenthesis squared plus m open parenthesis ω 0 2 minus ω squared close parenthesis squared")[$A = frac(( ω_(0)^(2) − ω^(2) ) F_(0), m attach(( 2 ω p ), t: 2) + m attach(( ω_(0)^(2) − ω^(2) ), t: 2))$] #math.equation(block: true, alt: "B equals the fraction 2 ω p F sub 0 over m open parenthesis 2 ω p close parenthesis squared plus m open parenthesis ω 0 2 minus ω squared close parenthesis squared")[$B = frac(2 ω p F_(0), m attach(( 2 ω p ), t: 2) + m attach(( ω_(0)^(2) − ω^(2) ), t: 2))$] We also compute #math.equation(block: false, alt: "C equals the square root of A squared plus B squared")[$C = sqrt(A^(2) + B^(2))$] to be #math.equation(block: true, alt: "C equals the fraction F sub 0 over m the square root of open parenthesis 2 ω p close parenthesis squared plus open parenthesis ω 0 2 minus ω squared close parenthesis squared")[$C = frac(F_(0), m sqrt(attach(( 2 ω p ), t: 2) + attach(( ω_(0)^(2) − ω^(2) ), t: 2)))$] Thus our particular solution is #math.equation(block: true, alt: "x sub P equals the fraction open parenthesis ω 0 2 minus ω squared close parenthesis F sub 0 over m open parenthesis 2 ω p close parenthesis squared plus m open parenthesis ω 0 2 minus ω squared close parenthesis squared cos open parenthesis ω t close parenthesis plus the fraction 2 ω p F sub 0 over m open parenthesis 2 ω p close parenthesis squared plus m open parenthesis ω 0 2 minus ω squared close parenthesis squared sin open parenthesis ω t close parenthesis")[$x_(P) = frac(( ω_(0)^(2) − ω^(2) ) F_(0), m attach(( 2 ω p ), t: 2) + m attach(( ω_(0)^(2) − ω^(2) ), t: 2)) cos ( ω t ) + frac(2 ω p F_(0), m attach(( 2 ω p ), t: 2) + m attach(( ω_(0)^(2) − ω^(2) ), t: 2)) sin ( ω t )$] Or in the alternative notation we have amplitude #math.equation(block: false, alt: "C")[$C$] and phase shift #math.equation(block: false, alt: "γ")[$γ$] where (if #math.equation(block: false, alt: "ω not equal to ω sub 0")[$ω ≠ ω_(0)$]) #math.equation(block: true, alt: "tan γ equals the fraction B over A equals the fraction 2 ω p over ω 0 2 minus ω squared")[$tan γ = frac(B, A) = frac(2 ω p, ω_(0)^(2) − ω^(2))$] Hence we have #math.equation(block: true, alt: "x sub p equals the fraction F sub 0 over m the square root of open parenthesis 2 ω p close parenthesis squared plus open parenthesis ω 0 2 minus ω squared close parenthesis squared cos open parenthesis ω t minus γ close parenthesis")[$x_(p) = frac(F_(0), m sqrt(attach(( 2 ω p ), t: 2) + attach(( ω_(0)^(2) − ω^(2) ), t: 2))) cos ( ω t − γ )$] If #math.equation(block: false, alt: "ω equals ω sub 0")[$ω = ω_(0)$] we see that #math.equation(block: false, alt: "A equals 0 , B equals C equals the fraction F sub 0 over 2 m ω p , a n d γ equals the fraction π over 2")[$A = 0 , B = C = frac(F_(0), 2 m ω p) , " " upright(a) upright(n) upright(d) " " upright(γ) = frac(upright(π), 2)$]. The exact formula is not as important as the idea. Do not memorize the above formula, you should instead remember the ideas involved. For different forcing function #math.equation(block: false, alt: "F")[$F$], you will get a different formula for #math.equation(block: false, alt: "x sub p")[$x_(p)$]. So there is no point in memorizing this specific formula. You can always recompute it later or look it up if you really need it. For reasons we will explain in a moment, we call #math.equation(block: false, alt: "x sub c")[$x_(c)$]the transient solution and denote it by #math.equation(block: false, alt: "x sub t r")[$x_(t r)$]. We call the #math.equation(block: false, alt: "x sub p")[$x_(p)$] we found above the steady periodic solution and denote it by #math.equation(block: false, alt: "x sub s p")[$x_(s p)$]. The general solution to our problem is #math.equation(block: true, alt: "x equals x sub c plus x sub p equals x sub t r plus x sub s p")[$x = x_(c) + x_(p) = x_(t r) + x_(s p)$] We note that #math.equation(block: false, alt: "x sub c equals x sub t r")[$x_(c) = x_(t r)$] goes to zero as #math.equation(block: false, alt: "t → infinity")[$t → ∞$], as all the terms involve an exponential with a negative exponent. Hence for large #math.equation(block: false, alt: "t")[$t$], the effect of #math.equation(block: false, alt: "x sub t r")[$x_(t r)$] is negligible and we will essentially only see #math.equation(block: false, alt: "x sub s p")[$x_(s p)$]. Hence the name transient. Notice that #math.equation(block: false, alt: "x sub s p")[$x_(s p)$] involves no arbitrary constants, and the initial conditions will only affect #math.equation(block: false, alt: "x sub t r")[$x_(t r)$]. This means that the effect of the initial conditions will be negligible after some period of time. Because of this behavior, we might as well focus on the steady periodic solution and ignore the transient solution. See Figure #math.equation(block: false, alt: "4")[$4$] for a graph of different initial conditions. #figure(figph[Five solution curves over time 0 to 20 from initial displacements between about -5.3 and 4.7; the transients differ, then from about time 13 all five trace one steady oscillation of amplitude 1.2.], alt: "Five solution curves over time 0 to 20 from initial displacements between about -5.3 and 4.7; the transients differ, then from about time 13 all five trace one steady oscillation of amplitude 1.2.", caption: [Figure #math.equation(block: false, alt: "4")[$4$]: Solutions with different initial conditions for parameters #math.equation(block: false, alt: "k equals 1 , m equals 1 , F sub 0 equals 1 , c equals 0.7 ,")[$k = 1 , m = 1 , F_(0) = 1 , c = 0.7 ,$] and #math.equation(block: false, alt: "ω equals 1.1 .")[$ω = 1.1 .$]]) Notice that the speed at which #math.equation(block: false, alt: "x sub t r")[$x_(t r)$] goes to zero depends on #math.equation(block: false, alt: "P")[$P$] (and hence #math.equation(block: false, alt: "c")[$c$]). The bigger #math.equation(block: false, alt: "P")[$P$] is (the bigger #math.equation(block: false, alt: "c")[$c$] is), the “faster” #math.equation(block: false, alt: "x sub t r")[$x_(t r)$] becomes negligible. So the smaller the damping, the longer the “transient region.” This agrees with the observation that when #math.equation(block: false, alt: "c equals 0")[$c = 0$], the initial conditions affect the behavior for all time (i.e. an infinite “transient region”). Let us describe what we mean by resonance when damping is present. Since there were no conflicts when solving with undetermined coefficient, there is no term that goes to infinity. What we will look at however is the maximum value of the amplitude of the steady periodic solution. Let #math.equation(block: false, alt: "C")[$C$] be the amplitude of #math.equation(block: false, alt: "x sub s p")[$x_(s p)$]. If we plot #math.equation(block: false, alt: "C")[$C$] as a function of #math.equation(block: false, alt: "ω")[$ω$] (with all other parameters fixed) we can find its maximum. We call the #math.equation(block: false, alt: "ω")[$ω$] that achieves this maximum the practical resonance frequency. We call the maximal amplitude #math.equation(block: false, alt: "C open parenthesis ω close parenthesis")[$C ( ω )$] the practical resonance amplitude. Thus when damping is present we talk of practical resonance rather than pure resonance. A sample plot for three different values of #math.equation(block: false, alt: "c")[$c$] is given in Figure #math.equation(block: false, alt: "5")[$5$]. As you can see the practical resonance amplitude grows as damping gets smaller, and any practical resonance can disappear when damping is large. The steady-periodic amplitude C(ω) for this section's own parameters m = k = F₀ = 1, so ω₀ = 1 and p = c/2. Figure 5's three frozen curves are three ticks of this one slider — set c to 0.4, 0.8 and 1.6 to reproduce them. Drag c upward and watch the peak slide left of ω₀ and collapse, then vanish entirely as c crosses √2 ≈ 1.414, the exact threshold ω₀² − 2p² \> 0 derived just below. {"functions":\[{"color":"\#1f4e79","domain":\[0,4\],"expression":"1/sqrt((c\*x)^2 + (1 - x^2)^2)","expression2":"","id":"practical-resonance-amplitude","inequality":"lt","lineDash":\[\],"lineWidth":2.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":0.5,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"param-c","label":"Damping coefficient","max":2,"min":0.3,"name":"c","step":0.05,"unit":"N\\u00b7s/m","value":0.4}\],"title":"Practical resonance amplitude C(omega), m = k = F0 = 1","version":1,"viewport":{"centerX":2,"centerY":1.5,"scale":116}} #figure(figph[Plot of three amplitude-response curves against forcing frequency 0 to 3, all starting at 1: blue peaks sharply at about 2.55, green gently at about 1.37, dark red not at all, so less damping gives a taller peak.], alt: "Plot of three amplitude-response curves against forcing frequency 0 to 3, all starting at 1: blue peaks sharply at about 2.55, green gently at about 1.37, dark red not at all, so less damping gives a taller peak.", caption: [Figure #math.equation(block: false, alt: "5")[$5$]: Graph of #math.equation(block: false, alt: "C open parenthesis ω close parenthesis")[$C ( ω )$] showing practical resonance with parameters #math.equation(block: false, alt: "k equals 1 , m equals 1 , F sub 0 equals 1")[$k = 1 , m = 1 , F_(0) = 1$]. The top line is with #math.equation(block: false, alt: "c equals 0.4")[$c = 0.4$], the middle line with #math.equation(block: false, alt: "c equals 0.8")[$c = 0.8$], and the bottom line with #math.equation(block: false, alt: "c equals 1.6")[$c = 1.6$].]) To find the maximum we need to find the derivative #math.equation(block: false, alt: "C prime open parenthesis ω close parenthesis")[$C^(′) ( ω )$]. Computation shows #math.equation(block: true, alt: "C prime open parenthesis ω close parenthesis equals the fraction minus 4 ω open parenthesis 2 p squared plus ω squared minus ω 0 2 close parenthesis F sub 0 over m open parenthesis open parenthesis 2 ω p close parenthesis squared plus open parenthesis ω 0 2 minus ω squared close parenthesis close parenthesis to the power 3 / 2")[$C^(′) ( ω ) = frac(− 4 ω ( 2 p^(2) + ω^(2) − ω_(0)^(2) ) F_(0), m attach(( attach(( 2 ω p ), t: 2) + ( ω_(0)^(2) − ω^(2) ) ), t: 3 / 2))$] This is zero either when #math.equation(block: false, alt: "ω equals 0")[$ω = 0$] or when #math.equation(block: false, alt: "2 p squared plus ω squared minus ω 0 2 equals 0")[$2 p^(2) + ω^(2) − ω_(0)^(2) = 0$]. In other words, #math.equation(block: false, alt: "C prime open parenthesis ω close parenthesis equals 0")[$C^(′) ( ω ) = 0$] when #math.equation(block: true, alt: "ω equals the square root of ω 0 2 minus 2 p squared o r ω equals 0")[$ω = sqrt(ω_(0)^(2) − 2 p^(2)) " " upright(o) upright(r) " " upright(ω) = 0$] It can be shown that if #math.equation(block: false, alt: "ω 0 2 minus 2 p squared")[$ω_(0)^(2) − 2 p^(2)$] is positive, then #math.equation(block: false, alt: "the square root of ω 0 2 minus 2 p squared")[$sqrt(ω_(0)^(2) − 2 p^(2))$] is the practical resonance frequency (that is the point where #math.equation(block: false, alt: "C open parenthesis ω close parenthesis")[$C ( ω )$] is maximal, note that in this case #math.equation(block: false, alt: "C prime open parenthesis ω close parenthesis greater than 0")[$C^(′) ( ω ) > 0$] for small #math.equation(block: false, alt: "ω")[$ω$]). If #math.equation(block: false, alt: "ω equals 0")[$ω = 0$] is the maximum, then essentially there is no practical resonance since we assume that #math.equation(block: false, alt: "ω greater than 0")[$ω > 0$] in our system. In this case the amplitude gets larger as the forcing frequency gets smaller. If practical resonance occurs, the frequency is smaller than #math.equation(block: false, alt: "ω sub 0")[$ω_(0)$]. As the damping #math.equation(block: false, alt: "c")[$c$] (and hence #math.equation(block: false, alt: "P")[$P$]) becomes smaller, the practical resonance frequency goes to #math.equation(block: false, alt: "ω sub 0")[$ω_(0)$]. So when damping is very small, #math.equation(block: false, alt: "ω sub 0")[$ω_(0)$] is a good estimate of the resonance frequency. This behavior agrees with the observation that when #math.equation(block: false, alt: "c equals 0")[$c = 0$], then #math.equation(block: false, alt: "ω sub 0")[$ω_(0)$] is the resonance frequency. Another interesting observation to make is that when #math.equation(block: false, alt: "ω → infinity")[$ω → ∞$], then #math.equation(block: false, alt: "ω → 0")[$ω → 0$]. This means that if the forcing frequency gets too high it does not manage to get the mass moving in the mass-spring system. This is quite reasonable intuitively. If we wiggle back and forth really fast while sitting on a swing, we will not get it moving at all, no matter how forceful. Fast vibrations just cancel each other out before the mass has any chance of responding by moving one way or the other. The behavior is more complicated if the forcing function is not an exact cosine wave, but for example a square wave. A general periodic function will be the sum (superposition) of many cosine waves of different frequencies. The reader is encouraged to come back to this section once we have learned about the Fourier series. === Footnotes #link("http://www.jirka.org/diffyqs/htmlver/diffyqsse15.html#fn1x2-bk")[#super[1]]K. Billah and R. Scanlan, Resonance, Tacoma Narrows Bridge Failure, and Undergraduate Physics Textbooks, American Journal of Physics, 59(2), 1991, 118–124, #link("http://www.ketchum.org/billah/Billah-Scanlan.pdf")[http://www.ketchum.org/billah/Billah-Scanlan.pdf]