#set document(title: "3.9 Nonhomogeneous systems", 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.9#h(0.6em)Nonhomogeneous systems === First Order Constant Coefficient ==== Integrating factor Let us first focus on the nonhomogeneous first order equation #math.equation(block: true, alt: "x → prime open parenthesis t close parenthesis equals A x → open parenthesis t close parenthesis plus f → open parenthesis t close parenthesis ,")[$arrow(x)^(′) ( t ) = A arrow(x) ( t ) + arrow(f) ( t ) ,$] where #math.equation(block: false, alt: "A")[$A$] is a constant matrix. The first method we will look at is the integrating factor method. For simplicity we rewrite the equation as #math.equation(block: true, alt: "x → prime open parenthesis t close parenthesis plus P x → open parenthesis t close parenthesis equals f → open parenthesis t close parenthesis ,")[$arrow(x)^(′) ( t ) + P arrow(x) ( t ) = arrow(f) ( t ) ,$] where #math.equation(block: false, alt: "P equals minus A")[$P = − A$]. We multiply both sides of the equation by #math.equation(block: false, alt: "e to the power t P")[$e^(t P)$] (being mindful that we are dealing with matrices that may not commute) to obtain #math.equation(block: true, alt: "e to the power t P x → open parenthesis t close parenthesis plus e to the power t P P x → open parenthesis t close parenthesis equals e to the power t P f → open parenthesis t close parenthesis .")[$e^(t P) arrow(x) ( t ) + e^(t P) P arrow(x) ( t ) = e^(t P) arrow(f) ( t ) .$] We notice that #math.equation(block: false, alt: "P e to the power t P equals e to the power t P P")[$P e^(t P) = e^(t P) P$]. This fact follows by writing down the series definition of #math.equation(block: false, alt: "e to the power t P")[$e^(t P)$], #math.equation(block: true, alt: "P e to the power t P equals P open parenthesis 𝐼 plus 𝐼 plus t P plus the fraction 1 over 2 open parenthesis t P close parenthesis squared plus ⋯ close parenthesis equals P plus t P squared plus the fraction 1 over 2 t squared P cubed plus ⋯; equals open parenthesis 𝐼 plus 𝐼 plus t P plus the fraction 1 over 2 open parenthesis t P close parenthesis squared plus ⋯ close parenthesis P equals P e to the power t P")[$P e^(t P) = P ( 𝐼 + 𝐼 + t P + frac(1, 2) attach(( t P ), t: 2) + ⋯ ) = P + t P^(2) + frac(1, 2) t^(2) P^(3) + ⋯ \ = ( 𝐼 + 𝐼 + t P + frac(1, 2) ( t P )^(2) + ⋯ ) P = P e^(t P)$] We have already seen that #math.equation(block: false, alt: "the fraction d over d x open parenthesis e to the power t P close parenthesis equals P e to the power t P equals e to the power t P P")[$frac(d, d x) ( e^(t P) ) = P e^(t P) = e^(t P) P$]. The product rule says, #math.equation(block: true, alt: "the fraction d over d t open parenthesis e to the power t P x → open parenthesis t close parenthesis close parenthesis equals e to the power t P x → prime open parenthesis t close parenthesis plus e to the power t P P x → open parenthesis t close parenthesis ,")[$frac(d, d t) ( e^(t P) arrow(x) ( t ) ) = e^(t P) arrow(x)^(′) ( t ) + e^(t P) P arrow(x) ( t ) ,$] and so #math.equation(block: true, alt: "the fraction d over d t open parenthesis e to the power t P x → open parenthesis t close parenthesis close parenthesis equals e to the power t P f → open parenthesis t close parenthesis .")[$frac(d, d t) ( e^(t P) arrow(x) ( t ) ) = e^(t P) arrow(f) ( t ) .$] We can now integrate. That is, we integrate each component of the vector separately #math.equation(block: true, alt: "e to the power t P x → open parenthesis t close parenthesis equals ∫ e to the power t P f → open parenthesis t close parenthesis d t plus c → .")[$e^(t P) arrow(x) ( t ) = ∫ e^(t P) arrow(f) ( t ) d t + arrow(c) .$] Recall from Exercise 3.8.6 that #math.equation(block: false, alt: "open parenthesis e to the power t P close parenthesis to the power minus 1 equals e to the power minus t P")[$attach(( e^(t P) ), t: − 1) = e^(− t P)$]. Therefore, we obtain #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals e to the power minus t P ∫ e to the power t P f → open parenthesis t close parenthesis d t plus e to the power minus t P c → .")[$arrow(x) ( t ) = e^(− t P) ∫ e^(t P) arrow(f) ( t ) d t + e^(− t P) arrow(c) .$] Perhaps it is better understood as a definite integral. In this case it will be easy to also solve for the initial conditions as well. Suppose we have the equation with initial conditions #math.equation(block: true, alt: "x → prime open parenthesis t close parenthesis plus P x → open parenthesis t close parenthesis equals f → open parenthesis t close parenthesis , x → open parenthesis 0 close parenthesis equals b → .")[$arrow(x)^(′) ( t ) + P arrow(x) ( t ) = arrow(f) ( t ) , #h(1em) arrow(x) ( 0 ) = arrow(b) .$] The solution can then be written as #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals e to the power minus t P ∫ 0 t e to the power s P f → open parenthesis s close parenthesis d s plus e to the power minus t P b → .")[$arrow(x) ( t ) = e^(− t P) ∫_(0)^(t) e^(s P) arrow(f) ( s ) d s + e^(− t P) arrow(b) .$] Again, the integration means that each component of the vector #math.equation(block: false, alt: "e to the power s P f → open parenthesis s close parenthesis")[$e^(s P) arrow(f) ( s )$] is integrated separately. It is not hard to see that (3.9.1) really does satisfy the initial condition #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis equals b →")[$arrow(x) ( 0 ) = arrow(b)$] #math.equation(block: true, alt: "x → open parenthesis 0 close parenthesis equals e to the power minus 0 P ∫ 0 0 e to the power s P f → d s plus e to the power minus 0 P b → equals 𝐼 b → equals b → .")[$arrow(x) ( 0 ) = e^(− 0 P) ∫_(0)^(0) e^(s P) arrow(f) d s + e^(− 0 P) arrow(b) = 𝐼 arrow(b) = arrow(b) .$] #examplebox("Example 1")[][ Suppose that we have the system #math.equation(block: true, alt: "x 1 ′ plus 5 x sub 1 minus 3 x sub 2 equals e to the power t ,; x 2 ′ plus 3 x sub 1 minus x sub 2 equals 0 ,")[$x_(1)^(′) + 5 x_(1) − 3 x_(2) = e^(t) , \ x_(2)^(′) + 3 x_(1) − x_(2) = 0 ,$] with initial conditions #math.equation(block: false, alt: "x sub 1 open parenthesis 0 close parenthesis equals 1 , x sub 2 open parenthesis 0 close parenthesis equals 0")[$x_(1) ( 0 ) = 1 , x_(2) ( 0 ) = 0$]. Let us write the system as #math.equation(block: true, alt: "x → prime plus [ 5, minus 3; 3, minus 1 ] x → equals [ e to the power t; 0 ] , x → open parenthesis 0 close parenthesis equals [ 1; 0 ] .")[$arrow(x)^(′) + [ 5 & − 3 \ 3 & − 1 ] arrow(x) = [ e^(t) \ 0 ] , #h(1em) arrow(x) ( 0 ) = [ 1 \ 0 ] .$] We have previously computed #math.equation(block: false, alt: "e to the power t P")[$e^(t P)$] for #math.equation(block: false, alt: "P equals [ 5, minus 3; 3, minus 1 ]")[$P = [ 5 & − 3 \ 3 & − 1 ]$]. We immediately have #math.equation(block: false, alt: "e to the power minus t P")[$e^(− t P)$], simply by negating #math.equation(block: false, alt: "t")[$t$]. #math.equation(block: true, alt: "e to the power t P equals [ open parenthesis 1 plus 3 t close parenthesis e to the power 2 t, minus 3 t e to the power 2 t; 3 t e to the power 2 t, open parenthesis 1 minus 3 t close parenthesis e to the power 2 t ] , e to the power minus t P equals [ open parenthesis 1 minus 3 t close parenthesis e to the power minus 2 t, 3 t e to the power minus 2 t; minus 3 t e to the power minus 2 t, open parenthesis 1 plus 3 t close parenthesis e to the power minus 2 t ] .")[$e^(t P) = [ ( 1 + 3 t ) e^(2 t) & − 3 t e^(2 t) \ 3 t e^(2 t) & ( 1 − 3 t ) e^(2 t) ] , #h(1em) e^(− t P) = [ ( 1 − 3 t ) e^(− 2 t) & 3 t e^(− 2 t) \ − 3 t e^(− 2 t) & ( 1 + 3 t ) e^(− 2 t) ] .$] Instead of computing the whole formula at once. Let us do it in stages. First #math.equation(block: true, alt: "∫ 0 t e to the power s P f → open parenthesis s close parenthesis d s equals ∫ 0 t [ open parenthesis 1 plus 3 s close parenthesis e to the power 2 s, minus 3 s e to the power 2 s; 3 s e to the power 2 s, open parenthesis 1 minus 3 s close parenthesis e to the power 2 s ] [ e to the power s; 0 ] d s; equals ∫ 0 t [ open parenthesis 1 plus 3 s close parenthesis e to the power 3 s; 3 s e to the power 3 s ] d s; equals [ ∫ 0 t open parenthesis 1 plus 3 s close parenthesis e to the power 3 s d s; ∫ 0 t 3 s e to the power 3 s d s ]; equals [ t e to the power 3 t; the fraction open parenthesis 3 t minus 1 close parenthesis e to the power 3 t plus 1 over 3 ] . (used integration by parts).")[$∫_(0)^(t) e^(s P) arrow(f) ( s ) d s = ∫_(0)^(t) [ ( 1 + 3 s ) e^(2 s) & − 3 s e^(2 s) \ 3 s e^(2 s) & ( 1 − 3 s ) e^(2 s) ] [ e^(s) \ 0 ] d s \ = ∫_(0)^(t) [ ( 1 + 3 s ) e^(3 s) \ 3 s e^(3 s) ] d s \ = [ ∫_(0)^(t) ( 1 + 3 s ) e^(3 s) d s \ ∫_(0)^(t) 3 s e^(3 s) d s ] \ = [ t e^(3 t) \ frac(( 3 t − 1 ) e^(3 t) + 1, 3) ] . #h(1em) "(used integration by parts)."$] Then #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals e to the power minus t P ∫ 0 t e to the power s P f → open parenthesis s close parenthesis d s plus e to the power minus t P b →; equals [ open parenthesis 1 minus 3 t close parenthesis e to the power minus 2 t, 3 t e to the power minus 2 t; minus 3 t e to the power minus 2 t, open parenthesis 1 plus 3 t close parenthesis e to the power minus 2 t ] [ t e to the power 3 t; the fraction open parenthesis 3 t minus 1 close parenthesis e to the power 3 t plus 1 over 3 ] plus [ open parenthesis 1 minus 3 t close parenthesis e to the power minus 2 t, 3 t e to the power minus 2 t; minus 3 t e to the power minus 2 t, open parenthesis 1 plus 3 t close parenthesis e to the power minus 2 t ] [ 1; 0 ]; equals [ t e to the power minus 2 t; minus the fracti")[$arrow(x) ( t ) = e^(− t P) ∫_(0)^(t) e^(s P) arrow(f) ( s ) d s + e^(− t P) arrow(b) \ = [ ( 1 − 3 t ) e^(− 2 t) & 3 t e^(− 2 t) \ − 3 t e^(− 2 t) & ( 1 + 3 t ) e^(− 2 t) ] [ t e^(3 t) \ frac(( 3 t − 1 ) e^(3 t) + 1, 3) ] + [ ( 1 − 3 t ) e^(− 2 t) & 3 t e^(− 2 t) \ − 3 t e^(− 2 t) & ( 1 + 3 t ) e^(− 2 t) ] [ 1 \ 0 ] \ = [ t e^(− 2 t) \ − frac(e^(t), 3) + ( frac(1, 3) + t ) e^(− 2 t) ] + [ ( 1 − 3 t ) e^(− 2 t) \ − 3 t e^(− 2 t) ] \ = [ ( 1 − 2 t ) e^(− 2 t) \ − frac(e^(t), 3) + ( frac(1, 3) − 2 t ) e^(− 2 t) ] .$] Phew! Let us confirm that this really works. #math.equation(block: true, alt: "x 1 ′ plus 5 x sub 1 minus 3 x sub 2 equals open parenthesis 4 t e to the power minus 2 t minus 4 e to the power minus 2 t close parenthesis plus 5 open parenthesis 1 minus 2 t close parenthesis e to the power minus 2 t plus e to the power t minus open parenthesis 1 minus 6 t close parenthesis e to the power minus 2 t equals e to the power t .")[$x_(1)^(′) + 5 x_(1) − 3 x_(2) = ( 4 t e^(− 2 t) − 4 e^(− 2 t) ) + 5 ( 1 − 2 t ) e^(− 2 t) + e^(t) − ( 1 − 6 t ) e^(− 2 t) = e^(t) .$] Similarly (exercise) #math.equation(block: false, alt: "x 2 ′ plus 3 x sub 1 minus x sub 2 equals 0")[$x_(2)^(′) + 3 x_(1) − x_(2) = 0$]. The initial conditions are also satisfied as well (exercise). ] For systems, the integrating factor method only works if #math.equation(block: false, alt: "P")[$P$] does not depend on #math.equation(block: false, alt: "t")[$t$], that is, #math.equation(block: false, alt: "P")[$P$] is constant. The problem is that in general #math.equation(block: true, alt: "the fraction d over d t [ e to the power ∫ P open parenthesis t close parenthesis d t ] not equal to P open parenthesis t close parenthesis e to the power ∫ P open parenthesis t close parenthesis d t ,")[$frac(d, d t) [ e^(∫ P ( t ) d t) ] ≠ P ( t ) e^(∫ P ( t ) d t) ,$] because matrix multiplication is not commutative. ==== Eigenvector Decomposition For the next method, we note that eigenvectors of a matrix give the directions in which the matrix acts like a scalar. If we solve our system along these directions these solutions would be simpler as we can treat the matrix as a scalar. We can put those solutions together to get the general solution. Take the equation #math.equation(block: true, alt: "x → prime open parenthesis t close parenthesis equals A x → open parenthesis t close parenthesis plus f → open parenthesis t close parenthesis")[$arrow(x)^(′) ( t ) = A arrow(x) ( t ) + arrow(f) ( t )$] Assume that #math.equation(block: false, alt: "A")[$A$] has #math.equation(block: false, alt: "n")[$n$] linearly independent eigenvectors #math.equation(block: false, alt: "x → sub 1 , … , x → sub n .")[$arrow(x)_(1) , … , arrow(x)_(n) .$] Let us write #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals v sub 1 → ξ sub 1 open parenthesis t close parenthesis plus v sub 2 → ξ sub 2 t plus ⋯ plus v sub n → ξ sub n open parenthesis t close parenthesis")[$arrow(x) ( t ) = arrow(v_(1)) ξ_(1) ( t ) + arrow(v_(2)) ξ_(2) t + ⋯ + arrow(v_(n)) ξ_(n) ( t )$] That is, we wish to write our solution as a linear combination of eigenvectors of #math.equation(block: false, alt: "A")[$A$]. If we can solve for the scalar functions #math.equation(block: false, alt: "ξ sub 1")[$ξ_(1)$]through #math.equation(block: false, alt: "ξ sub n")[$ξ_(n)$] we have our solution #math.equation(block: false, alt: "x →")[$arrow(x)$]. Let us decompose #math.equation(block: false, alt: "f →")[$arrow(f)$] in terms of the eigenvectors as well. We wish to write #math.equation(block: true, alt: "f → open parenthesis t close parenthesis equals v sub 1 → g sub 1 open parenthesis t close parenthesis plus v sub 2 → g sub 2 t plus ⋯ plus v sub n → g sub n open parenthesis t close parenthesis")[$arrow(f) ( t ) = arrow(v_(1)) g_(1) ( t ) + arrow(v_(2)) g_(2) t + ⋯ + arrow(v_(n)) g_(n) ( t )$] That is, we wish to find #math.equation(block: false, alt: "g sub 1")[$g_(1)$] through #math.equation(block: false, alt: "g sub n")[$g_(n)$] that satisfy (3.9.4). We note that since all the eigenvectors are independent, the matrix #math.equation(block: false, alt: "E equals [ v sub 1 →, v sub 2 →, ⋯, v sub n → ]")[$E = [ arrow(v_(1)) & arrow(v_(2)) & ⋯ & arrow(v_(n)) ]$] is invertible. We see that (3.9.4) can be written as #math.equation(block: false, alt: "f → equals E g →")[$arrow(f) = E arrow(g)$], where the components of #math.equation(block: false, alt: "g →")[$arrow(g)$]are the functions #math.equation(block: false, alt: "g sub 1")[$g_(1)$] through #math.equation(block: false, alt: "g sub n")[$g_(n)$]. Then #math.equation(block: false, alt: "g → equals E to the power minus 1 f →")[$arrow(g) = E^(− 1) arrow(f)$]. Hence it is always possible to find #math.equation(block: false, alt: "g →")[$arrow(g)$] when there are n linearly independent eigenvectors. We plug (3.9.3) into (3.9.2), and note that #math.equation(block: false, alt: "A v → sub k equals λ sub k v → sub k")[$A arrow(v)_(k) = λ_(k) arrow(v)_(k)$]. #math.equation(block: true, alt: "v → sub 1 ξ 1 ′ plus v → sub 2 ξ 2 ′ plus ⋯ plus v → sub n ξ n ′ ⏞ x → prime equals A open parenthesis v → sub 1 ξ sub 1 plus v → sub 2 ξ sub 2 plus ⋯ plus v → sub n ξ sub n close parenthesis ⏞ A x → plus v → sub 1 g sub 1 plus v → sub 2 g sub 2 plus ⋯ plus v → sub n g sub n ⏞ f →; equals A v sub 1 → ξ sub 1 plus A v sub 2 → ξ sub 2 plus ⋯ plus A v sub n → ξ sub n plus v sub 1 → g sub 1 plus v sub 2 → g sub 2 plus ⋯ plus v sub n → g sub n; equals v sub 1 → λ sub 1 ξ sub 1 plus v sub 2 → λ sub 2 ξ sub 2 plus ⋯ plus v sub n → λ sub n ξ sub n plus v sub 1 → g sub 1 plus v sub 2 → g sub 2 plus ⋯ plus v sub n → g sub n; equals v sub 1 → open parenthesis λ sub 1 ξ sub 1 plus g sub 1 close parenthesis plus v sub 2 → open parenthesis λ sub 2 ξ sub 2 plus g sub 2 close parenthesis plus ⋯ plus v sub")[$limits(overbrace(arrow(v)_(1) ξ_(1)^(′) + arrow(v)_(2) ξ_(2)^(′) + ⋯ + arrow(v)_(n) ξ_(n)^(′)))^(arrow(x)^(′)) = limits(overbrace(A ( arrow(v)_(1) ξ_(1) + arrow(v)_(2) ξ_(2) + ⋯ + arrow(v)_(n) ξ_(n) )))^(A arrow(x)) + limits(overbrace(arrow(v)_(1) g_(1) + arrow(v)_(2) g_(2) + ⋯ + arrow(v)_(n) g_(n)))^(arrow(f)) \ = A arrow(v_(1)) ξ_(1) + A arrow(v_(2)) ξ_(2) + ⋯ + A arrow(v_(n)) ξ_(n) + arrow(v_(1)) g_(1) + arrow(v_(2)) g_(2) + ⋯ + arrow(v_(n)) g_(n) \ = arrow(v_(1)) λ_(1) ξ_(1) + arrow(v_(2)) λ_(2) ξ_(2) + ⋯ + arrow(v_(n)) λ_(n) ξ_(n) + arrow(v_(1)) g_(1) + arrow(v_(2)) g_(2) + ⋯ + arrow(v_(n)) g_(n) \ = arrow(v_(1)) ( λ_(1) ξ_(1) + g_(1) ) + arrow(v_(2)) ( λ_(2) ξ_(2) + g_(2) ) + ⋯ + arrow(v_(n)) ( λ_(n) ξ_(n) + g_(n) ) .$] If we identify the coefficients of the vectors #math.equation(block: false, alt: "v → sub 1")[$arrow(v)_(1)$] through #math.equation(block: false, alt: "v → sub n")[$arrow(v)_(n)$] we get the equations #math.equation(block: true, alt: "ξ 1 ′ equals λ sub 1 ξ sub 1 plus g sub 1 ,; ξ 2 ′ equals λ sub 2 ξ sub 2 plus g sub 2 ,; ⋮; ξ n ′ equals λ sub n ξ sub n plus g sub n .")[$ξ_(1)^(′) = λ_(1) ξ_(1) + g_(1) , \ ξ_(2)^(′) = λ_(2) ξ_(2) + g_(2) , \ ⋮ \ ξ_(n)^(′) = λ_(n) ξ_(n) + g_(n) .$] Each one of these equations is independent of the others. They are all linear first order equations and can easily be solved by the standard integrating factor method for single equations. That is, for example for the #math.equation(block: false, alt: "k to the power t h")[$k^(t h)$]equation we write #math.equation(block: true, alt: "ξ k ′ open parenthesis t close parenthesis minus λ sub k ξ sub k open parenthesis t close parenthesis equals g sub k open parenthesis t close parenthesis .")[$ξ_(k)^(′) ( t ) − λ_(k) ξ_(k) ( t ) = g_(k) ( t ) .$] We use the integrating factor #math.equation(block: false, alt: "e to the power minus λ sub k t")[$e^(− λ_(k) t)$] to find that #math.equation(block: true, alt: "the fraction d over d x [ ξ sub k open parenthesis t close parenthesis e to the power minus λ sub k t ] equals e to the power minus λ sub k t g sub k open parenthesis t close parenthesis .")[$frac(d, d x) [ ξ_(k) ( t ) e^(− λ_(k) t) ] = e^(− λ_(k) t) g_(k) ( t ) .$] Now we integrate and solve for #math.equation(block: false, alt: "ξ sub k")[$ξ_(k)$] to get #math.equation(block: true, alt: "ξ sub k open parenthesis t close parenthesis equals e to the power λ sub k t ∫ e to the power minus λ sub k t g sub k open parenthesis t close parenthesis d t plus C sub k e to the power λ sub k t .")[$ξ_(k) ( t ) = e^(λ_(k) t) ∫ e^(− λ_(k) t) g_(k) ( t ) d t + C_(k) e^(λ_(k) t) .$] If we are looking for just any particular solution, we can set #math.equation(block: false, alt: "C sub k")[$C_(k)$] to be zero. If we leave these constants in, we get the general solution. Write #math.equation(block: false, alt: "x → open parenthesis t close parenthesis equals v → sub 1 ξ sub 1 open parenthesis t close parenthesis plus v → sub 2 ξ sub 2 open parenthesis t close parenthesis plus ⋯ plus v → sub n ξ sub n open parenthesis t close parenthesis")[$arrow(x) ( t ) = arrow(v)_(1) ξ_(1) ( t ) + arrow(v)_(2) ξ_(2) ( t ) + ⋯ + arrow(v)_(n) ξ_(n) ( t )$], and we are done. Again, as always, it is perhaps better to write these integrals as definite integrals. Suppose that we have an initial condition #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis equals b →")[$arrow(x) ( 0 ) = arrow(b)$]. We take #math.equation(block: false, alt: "c → equals E to the power minus 1 b →")[$arrow(c) = E^(− 1) arrow(b)$] and note #math.equation(block: false, alt: "b → equals v sub 1 → a sub 1 plus ⋯ plus v sub n → a sub n")[$arrow(b) = arrow(v_(1)) a_(1) + ⋯ + arrow(v_(n)) a_(n)$], just like before. Then if we write #math.equation(block: true, alt: "ξ sub k open parenthesis t close parenthesis equals e to the power λ sub k open parenthesis t close parenthesis ∫ 0 t e to the power minus λ sub k s g sub k open parenthesis s close parenthesis d t plus a sub k e to the power λ sub k t ,")[$ξ_(k) ( t ) = e^(λ_(k) ( t )) ∫_(0)^(t) e^(− λ_(k) s) g_(k) ( s ) d t + a_(k) e^(λ_(k) t) ,$] we will actually get the particular solution #math.equation(block: false, alt: "x → open parenthesis t close parenthesis equals v → sub 1 ξ sub 1 plus x → sub 2 ξ sub 2 plus ⋯ plus v → sub n ξ sub n")[$arrow(x) ( t ) = arrow(v)_(1) ξ_(1) + arrow(x)_(2) ξ_(2) + ⋯ + arrow(v)_(n) ξ_(n)$] satisfying #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis equals b →")[$arrow(x) ( 0 ) = arrow(b)$], because #math.equation(block: false, alt: "ξ sub k open parenthesis 0 close parenthesis equals a sub k")[$ξ_(k) ( 0 ) = a_(k)$]. Let us remark that the technique we just outlined is the eigenvalue method applied to nonhomogeneous systems. If a system is homogeneous, that is, if #math.equation(block: false, alt: "f → equals 0 →")[$arrow(f) = arrow(0)$], then the equations we get are #math.equation(block: false, alt: "ξ k ′ equals λ sub k ξ sub k")[$ξ_(k)^(′) = λ_(k) ξ_(k)$], and so #math.equation(block: false, alt: "ξ sub k equals C sub k e to the power λ sub k t")[$ξ_(k) = C_(k) e^(λ_(k) t)$] are the solutions and that’s precisely what we got in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/3%3A_Systems_of_ODEs/3.4%3A_Eigenvalue_Method")[Section 3.4]. #examplebox("Example 2")[][ Let #math.equation(block: false, alt: "A equals [ 1, 3; 3, 1 ]")[$A = [ 1 & 3 \ 3 & 1 ]$]. Solve #math.equation(block: false, alt: "x → prime equals A x → plus f →")[$arrow(x)^(′) = A arrow(x) + arrow(f)$] where #math.equation(block: false, alt: "f → open parenthesis t close parenthesis equals [ 2 e to the power t; 2 t ]")[$arrow(f) ( t ) = [ 2 e^(t) \ 2 t ]$] for #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis equals [ the fraction 3 over 16; the fraction minus 5 over 16 ]")[$arrow(x) ( 0 ) = [ frac(3, 16) \ frac(− 5, 16) ]$]. The eigenvalues of #math.equation(block: false, alt: "A")[$A$] are #math.equation(block: false, alt: "minus 2")[$− 2$] and #math.equation(block: false, alt: "4")[$4$] and corresponding eigenvectors are #math.equation(block: false, alt: "[ 1; minus 1 ]")[$[ 1 \ − 1 ]$] and #math.equation(block: false, alt: "[ 1; 1 ]")[$[ 1 \ 1 ]$] respectively. This calculation is left as an exercise. We write down the matrix #math.equation(block: false, alt: "E")[$E$] of the eigenvectors and compute its inverse (using the inverse formula for #math.equation(block: false, alt: "2 times 2")[$2 × 2$] matrices) #math.equation(block: true, alt: "E equals [ 1, 1; minus 1, 1 ] , E to the power minus 1 equals the fraction 1 over 2 [ 1, minus 1; 1, 1 ] .")[$E = [ 1 & 1 \ − 1 & 1 ] , #h(1em) E^(− 1) = frac(1, 2) [ 1 & − 1 \ 1 & 1 ] .$] We are looking for a solution of the form #math.equation(block: false, alt: "x → equals [ 1; minus 1 ] ξ sub 1 plus [ 1; 1 ] ξ sub 2")[$arrow(x) = [ 1 \ − 1 ] ξ_(1) + [ 1 \ 1 ] ξ_(2)$]. We also wish to write #math.equation(block: false, alt: "f →")[$arrow(f)$] in terms of the eigenvectors. That is we wish to write #math.equation(block: false, alt: "f → equals [ 2 e to the power t; 2 t ] equals [ 1; minus 1 ] g sub 1 plus [ 1; 1 ] g sub 2")[$arrow(f) = [ 2 e^(t) \ 2 t ] = [ 1 \ − 1 ] g_(1) + [ 1 \ 1 ] g_(2)$]. Thus #math.equation(block: true, alt: "g sub 1; g sub 2")[$g_(1) \ g_(2)$] So #math.equation(block: false, alt: "g sub 1 equals e to the power t minus t")[$g_(1) = e^(t) − t$] and #math.equation(block: false, alt: "g sub 2 equals e to the power t plus t")[$g_(2) = e^(t) + t$]. We further want to write #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis")[$arrow(x) ( 0 )$] in terms of the eigenvectors. That is, we wish to write #math.equation(block: false, alt: "x → open parenthesis 0 close parenthesis equals [ the fraction 3 over 16; the fraction minus 5 over 16 ] equals [ 1; minus 1 ] a sub 1 plus [ 1; 1 ] a sub 2")[$arrow(x) ( 0 ) = [ frac(3, 16) \ frac(− 5, 16) ] = [ 1 \ − 1 ] a_(1) + [ 1 \ 1 ] a_(2)$]. Hence #math.equation(block: true, alt: "[ a sub 1; a sub 2 ] equals E to the power minus 1 [ the fraction 3 over 16; the fraction minus 5 over 16 ] equals [ the fraction 1 over 4; the fraction minus 1 over 16 ] .")[$[ a_(1) \ a_(2) ] = E^(− 1) [ frac(3, 16) \ frac(− 5, 16) ] = [ frac(1, 4) \ frac(− 1, 16) ] .$] So #math.equation(block: false, alt: "a sub 1 equals the fraction 1 over 4")[$a_(1) = frac(1, 4)$] and #math.equation(block: false, alt: "a sub 2 equals the fraction minus 1 over 16")[$a_(2) = frac(− 1, 16)$]. We plug our #math.equation(block: false, alt: "x →")[$arrow(x)$] into the equation and get that #math.equation(block: true, alt: "[ 1; minus 1 ] ξ 1 ′ plus [ 1; 1 ] ξ 2 ′ ⏞ x → prime equals A [ 1; minus 1 ] ξ sub 1 plus A [ 1; 1 ] ξ sub 2 ⏞ A x → plus [ 1; minus 1 ] g sub 1 plus [ 1; 1 ] g sub 2 ⏞ f →; equals [ 1; minus 1 ] open parenthesis minus 2 ξ sub 1 close parenthesis plus [ 1; 1 ] 4 ξ sub 2 plus [ 1; minus 1 ] open parenthesis e to the power t minus t close parenthesis plus [ 1; 1 ] open parenthesis e to the power t plus t close parenthesis .")[$limits(overbrace([ 1 \ − 1 ] ξ_(1)^(′) + [ 1 \ 1 ] ξ_(2)^(′)))^(arrow(x)^(′)) = limits(overbrace(A [ 1 \ − 1 ] ξ_(1) + A [ 1 \ 1 ] ξ_(2)))^(A arrow(x)) + limits(overbrace([ 1 \ − 1 ] g_(1) + [ 1 \ 1 ] g_(2)))^(arrow(f)) \ = [ 1 \ − 1 ] ( − 2 ξ_(1) ) + [ 1 \ 1 ] 4 ξ_(2) + [ 1 \ − 1 ] ( e^(t) − t ) + [ 1 \ 1 ] ( e^(t) + t ) .$] We get the two equations #math.equation(block: true, alt: "ξ 1 ′ equals minus 2 ξ sub 1 plus e to the power t minus t , where ξ sub 1 open parenthesis 0 close parenthesis equals a sub 1 equals the fraction 1 over 4 ,; ξ 2 ′ equals 4 ξ sub 2 plus e to the power t plus t , where ξ sub 2 open parenthesis 0 close parenthesis equals a sub 2 equals the fraction minus 1 over 16 .")[$ξ_(1)^(′) = − 2 ξ_(1) + e^(t) − t , "where " ξ_(1) ( 0 ) = a_(1) = frac(1, 4) , \ ξ_(2)^(′) = 4 ξ_(2) + e^(t) + t , "where " ξ_(2) ( 0 ) = a_(2) = frac(− 1, 16) .$] We solve with integrating factor. Computation of the integral is left as an exercise to the student. Note that we will need integration by parts. #math.equation(block: true, alt: "ξ sub 1 equals e to the power minus 2 t ∫ e to the power 2 t open parenthesis e to the power t minus t close parenthesis d t plus C sub 1 e to the power minus 2 t equals the fraction e to the power t over 3 minus the fraction t over 2 plus the fraction 1 over 4 plus C sub 1 e to the power minus 2 t .")[$ξ_(1) = e^(− 2 t) ∫ e^(2 t) ( e^(t) − t ) d t + C_(1) e^(− 2 t) = frac(e^(t), 3) − frac(t, 2) + frac(1, 4) + C_(1) e^(− 2 t) .$] #math.equation(block: false, alt: "C sub 1")[$C_(1)$] is the constant of integration. As #math.equation(block: false, alt: "ξ sub 1 open parenthesis 0 close parenthesis equals the fraction 1 over 4")[$ξ_(1) ( 0 ) = frac(1, 4)$], then #math.equation(block: false, alt: "the fraction 1 over 4 equals the fraction 1 over 3 plus the fraction 1 over 4 plus C sub 1")[$frac(1, 4) = frac(1, 3) + frac(1, 4) + C_(1)$] and hence #math.equation(block: false, alt: "C sub 1 equals the fraction minus 1 over 3")[$C_(1) = frac(− 1, 3)$]. Similarly #math.equation(block: true, alt: "ξ sub 2 equals e to the power 4 t ∫ e to the power minus 4 t open parenthesis e to the power t plus t close parenthesis d t plus C sub 2 e to the power 4 t equals minus the fraction e to the power t over 3 minus the fraction t over 4 minus the fraction 1 over 16 plus C sub 2 e to the power 4 t .")[$ξ_(2) = e^(4 t) ∫ e^(− 4 t) ( e^(t) + t ) d t + C_(2) e^(4 t) = − frac(e^(t), 3) − frac(t, 4) − frac(1, 16) + C_(2) e^(4 t) .$] As #math.equation(block: false, alt: "ξ sub 2 open parenthesis 0 close parenthesis equals the fraction 1 over 16")[$ξ_(2) ( 0 ) = frac(1, 16)$] we have that #math.equation(block: false, alt: "the fraction minus 1 over 16 equals the fraction minus 1 over 3 minus the fraction 1 over 16 plus C sub 2")[$frac(− 1, 16) = frac(− 1, 3) − frac(1, 16) + C_(2)$] and hence #math.equation(block: false, alt: "C sub 2 equals the fraction 1 over 3")[$C_(2) = frac(1, 3)$]. The solution is #math.equation(block: true, alt: "1; minus 1")[$1 \ − 1$] That is, #math.equation(block: false, alt: "x sub 1 equals the fraction e to the power 4 t minus e to the power minus 2 t over 3 plus the fraction 3 minus 12 t over 16")[$x_(1) = frac(e^(4 t) − e^(− 2 t), 3) + frac(3 − 12 t, 16)$] and #math.equation(block: false, alt: "x sub 2 equals the fraction e to the power minus 2 t plus e to the power 4 t plus 2 e to the power t over 3 plus the fraction 4 t minus 5 over 16")[$x_(2) = frac(e^(− 2 t) + e^(4 t) + 2 e^(t), 3) + frac(4 t − 5, 16)$]. ] #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that #math.equation(block: false, alt: "x sub 1")[$x_(1)$] and #math.equation(block: false, alt: "x sub 2")[$x_(2)$] solve the problem. Check both that they satisfy the differential equation and that they satisfy the initial conditions. ] ==== Undetermined Coefficients We also have the method of undetermined coefficients for systems. The only difference here is that we will have to take unknown vectors rather than just numbers. Same caveats apply to undetermined coefficients for systems as for single equations. This method does not always work. Furthermore if the right hand side is complicated, we will have to solve for lots of variables. Each element of an unknown vector is an unknown number. So in system of #math.equation(block: false, alt: "3")[$3$] equations if we have say #math.equation(block: false, alt: "4")[$4$] unknown vectors (this would not be uncommon), then we already have #math.equation(block: false, alt: "12")[$12$] unknown numbers that we need to solve for. The method can turn into a lot of tedious work. As this method is essentially the same as it is for single equations, let us just do an example. #examplebox("Example 3")[][ Let #math.equation(block: false, alt: "minus 1 0; minus 2 1")[$− 1 0 \ − 2 1$] Find a particular solution of #math.equation(block: false, alt: "x → prime equals A x → plus f →")[$arrow(x)^(′) = A arrow(x) + arrow(f)$] where #math.equation(block: false, alt: "e to the power t; t")[$e^(t) \ t$] Note that we can solve this system in an easier way (can you see how?), but for the purposes of the example, let us use the eigenvalue method plus undetermined coefficients. The eigenvalues of #math.equation(block: false, alt: "A")[$A$] are #math.equation(block: false, alt: "minus 1")[$− 1$] and #math.equation(block: false, alt: "1")[$1$] and corresponding eigenvectors are #math.equation(block: false, alt: "1; 1")[$1 \ 1$] and #math.equation(block: false, alt: "0; 1")[$0 \ 1$] respectively. Hence our complementary solution is #math.equation(block: true, alt: "1; 1")[$1 \ 1$] for some arbitrary constants #math.equation(block: false, alt: "α sub 1")[$α_(1)$] and #math.equation(block: false, alt: "α sub 2")[$α_(2)$]. We would want to guess a particular solution of #math.equation(block: true, alt: "x → equals a → e to the power t plus b → t plus c → .")[$arrow(x) = arrow(a) e^(t) + arrow(b) t + arrow(c) .$] However, something of the form #math.equation(block: false, alt: "a → e to the power t")[$arrow(a) e^(t)$] appears in the complementary solution. Because we do not yet know if the vector #math.equation(block: false, alt: "a →")[$arrow(a)$] is a multiple of #math.equation(block: false, alt: "0; 1")[$0 \ 1$], we do not know if a conflict arises. It is possible that there is no conflict, but to be safe we should also try #math.equation(block: false, alt: "b → t e to the power t")[$arrow(b) t e^(t)$]. Here we find the crux of the difference for systems. We try both terms #math.equation(block: false, alt: "a → e to the power t")[$arrow(a) e^(t)$] and #math.equation(block: false, alt: "b → t e to the power t")[$arrow(b) t e^(t)$] in the solution, not just the term #math.equation(block: false, alt: "b → t e to the power t")[$arrow(b) t e^(t)$]. Therefore, we try #math.equation(block: true, alt: "x → equals a → e to the power t plus b → t e to the power t plus c → t plus d → .")[$arrow(x) = arrow(a) e^(t) + arrow(b) t e^(t) + arrow(c) t + arrow(d) .$] Thus we have #math.equation(block: false, alt: "8")[$8$] unknowns. We write #math.equation(block: false, alt: "a sub 1; a sub 2")[$a_(1) \ a_(2)$] and #math.equation(block: false, alt: "d sub 1; d sub 2")[$d_(1) \ d_(2)$] We plug #math.equation(block: false, alt: "x →")[$arrow(x)$] into the equation. First let us compute #math.equation(block: false, alt: "x → prime")[$arrow(x)^(′)$]. #math.equation(block: true, alt: "a → sub 1 plus b → sub 1; a → sub 2 plus b → sub 2")[$arrow(a)_(1) + arrow(b)_(1) \ arrow(a)_(2) + arrow(b)_(2)$] Now #math.equation(block: false, alt: "x → prime")[$arrow(x)^(′)$] must equal #math.equation(block: false, alt: "A x → plus f →")[$A arrow(x) + arrow(f)$], which is #math.equation(block: true, alt: "A x → plus f → equals A a → e to the power t plus A b → t e to the power t plus A c → t plus A d → plus f →; equals [ minus a → sub 1; minus 2 a → sub 1 plus a → sub 2 ] e to the power t plus [ minus b → sub 1; minus 2 b → sub 1 plus b → sub 2 ] t e to the power t plus [ minus c → sub 1; minus 2 c → sub 1 plus c → sub 2 ] t plus [ minus d → sub 1; minus 2 d → sub 1 plus d → sub 2 ] plus [ 1; 0 ] e to the power t plus [ 0; 1 ] t .; equals [ minus a sub 1 plus 1; minus 2 a sub 1 plus a sub 2 ] e to the power t plus [ minus b sub 1; minus 2 b sub 1 plus b sub 2 ] t e to the power t plus [ minus c sub 1; minus 2 c sub 1 plus c sub 2 plus 1 ] t plus [ minus d sub 1; minus 2 d sub 1 plus d sub 2 ] .")[$A arrow(x) + arrow(f) = A arrow(a) e^(t) + A arrow(b) t e^(t) + A arrow(c) t + A arrow(d) + arrow(f) \ = [ − arrow(a)_(1) \ − 2 arrow(a)_(1) + arrow(a)_(2) ] e^(t) + [ − arrow(b)_(1) \ − 2 arrow(b)_(1) + arrow(b)_(2) ] t e^(t) + [ − arrow(c)_(1) \ − 2 arrow(c)_(1) + arrow(c)_(2) ] t + [ − arrow(d)_(1) \ − 2 arrow(d)_(1) + arrow(d)_(2) ] + [ 1 \ 0 ] e^(t) + [ 0 \ 1 ] t . \ = [ − a_(1) + 1 \ − 2 a_(1) + a_(2) ] e^(t) + [ − b_(1) \ − 2 b_(1) + b_(2) ] t e^(t) + [ − c_(1) \ − 2 c_(1) + c_(2) + 1 ] t + [ − d_(1) \ − 2 d_(1) + d_(2) ] .$] We identify the coefficients of #math.equation(block: false, alt: "e to the power t , t e to the power t , t")[$e^(t) , t e^(t) , t$] and any constant vectors in #math.equation(block: false, alt: "x → prime")[$arrow(x)^(′)$] and in #math.equation(block: false, alt: "A x → plus f →")[$A arrow(x) + arrow(f)$] to find the equations: #math.equation(block: true, alt: "a sub 1 plus b sub 1 equals minus a sub 1 plus 1 , 0 equals minus c sub 1 ,; a sub 2 plus b sub 2 equals minus 2 a sub 1 plus a sub 2 , 0 equals minus 2 c sub 1 plus c sub 2 plus 1 ,; b sub 1 equals minus b sub 1 , c sub 1 equals minus d sub 1 ,; b sub 2 equals minus 2 b sub 1 plus b sub 2 , c sub 2 equals minus 2 d sub 1 plus d sub 2 .")[$a_(1) + b_(1) = − a_(1) + 1 , 0 = − c_(1) , \ a_(2) + b_(2) = − 2 a_(1) + a_(2) , 0 = − 2 c_(1) + c_(2) + 1 , \ b_(1) = − b_(1) , c_(1) = − d_(1) , \ b_(2) = − 2 b_(1) + b_(2) , c_(2) = − 2 d_(1) + d_(2) .$] We could write the #math.equation(block: false, alt: "8 times 9")[$8 × 9$] augmented matrix and start row reduction, but it is easier to just solve the equations in an ad hoc manner. Immediately we see that #math.equation(block: false, alt: "b sub 1 equals 0 , c sub 1 equals 0 , d sub 1 equals 0 .")[$b_(1) = 0 , c_(1) = 0 , d_(1) = 0 .$] Plugging these back in, we get that #math.equation(block: false, alt: "c sub 2 equals minus 1")[$c_(2) = − 1$] and #math.equation(block: false, alt: "d sub 2 equals minus 1")[$d_(2) = − 1$]. The remaining equations that tell us something are #math.equation(block: true, alt: "a sub 1 equals minus a sub 1 plus 1 ,; a sub 2 plus b sub 2 equals minus 2 a sub 1 plus a sub 2 .")[$a_(1) = − a_(1) + 1 , \ a_(2) + b_(2) = − 2 a_(1) + a_(2) .$] So #math.equation(block: false, alt: "a sub 1 equals the fraction 1 over 2")[$a_(1) = frac(1, 2)$] and #math.equation(block: false, alt: "b sub 2 equals minus 1")[$b_(2) = − 1$]. Finally, #math.equation(block: false, alt: "a sub 2")[$a_(2)$] can be arbitrary and still satisfy the equations. We are looking for just a single solution so presumably the simplest one is when #math.equation(block: false, alt: "a sub 2 equals 0")[$a_(2) = 0$]. Therefore, #math.equation(block: true, alt: "the fraction 1 over 2; 0")[$frac(1, 2) \ 0$] That is, #math.equation(block: false, alt: "x sub 1 equals the fraction 1 over 2 e to the power t , x sub 2 equals minus t e to the power t minus t minus 1")[$x_(1) = frac(1, 2) e^(t) , x_(2) = − t e^(t) − t − 1$]. We would add this to the complementary solution to get the general solution of the problem. Notice also that both #math.equation(block: false, alt: "a → e to the power t")[$arrow(a) e^(t)$] and #math.equation(block: false, alt: "b → t e to the power t")[$arrow(b) t e^(t)$] were really needed. ] #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that #math.equation(block: false, alt: "x sub 1")[$x_(1)$] and #math.equation(block: false, alt: "x sub 2")[$x_(2)$] solve the problem. Also try setting #math.equation(block: false, alt: "a sub 2 equals 1")[$a_(2) = 1$] and again check these solutions. What is the difference between the two solutions we obtained (one with #math.equation(block: false, alt: "a sub 2 equals 0")[$a_(2) = 0$] and one with #math.equation(block: false, alt: "a sub 2 equals 1")[$a_(2) = 1$])? ] As you can see, other than the handling of conflicts, undetermined coefficients works exactly the same as it did for single equations. However, the computations can get out of hand pretty quickly for systems. The equation we had done was very simple. === First Order Variable Coefficient ==== Variation of Parameters Just as for a single equation, there is the method of variation of parameters. In fact for constant coefficient systems, this is essentially the same thing as the integrating factor method we discussed earlier. However, this method will work for any linear system, even if it is not constant coefficient, provided we can somehow solve the associated homogeneous problem. Suppose we have the equation #math.equation(block: true, alt: "x → prime equals A open parenthesis t close parenthesis x → plus f → open parenthesis t close parenthesis .")[$arrow(x)^(′) = A ( t ) arrow(x) + arrow(f) ( t ) .$] Further, suppose we have solved the associated homogeneous equation #math.equation(block: false, alt: "x → prime equals A open parenthesis t close parenthesis x →")[$arrow(x)^(′) = A ( t ) arrow(x)$] and found the fundamental matrix solution #math.equation(block: false, alt: "X open parenthesis t close parenthesis")[$X ( t )$]. The general solution to the associated homogeneous equation is #math.equation(block: false, alt: "X open parenthesis t close parenthesis c →")[$X ( t ) arrow(c)$] for a constant vector #math.equation(block: false, alt: "c →")[$arrow(c)$]. Just like for variation of parameters for single equation we try the solution to the nonhomogeneous equation of the form #math.equation(block: true, alt: "x → sub p equals X open parenthesis t close parenthesis u → open parenthesis t close parenthesis ,")[$arrow(x)_(p) = X ( t ) arrow(u) ( t ) ,$] where #math.equation(block: false, alt: "u → open parenthesis t close parenthesis")[$arrow(u) ( t )$] is a vector valued function instead of a constant. Now we substitute into (3.9.5) to obtain #math.equation(block: true, alt: "x → sub p prime open parenthesis t close parenthesis equals X prime open parenthesis t close parenthesis u → open parenthesis t close parenthesis plus X open parenthesis t close parenthesis u → prime open parenthesis t close parenthesis ⏟ x → sub p prime open parenthesis t close parenthesis equals A open parenthesis t close parenthesis X open parenthesis t close parenthesis u → open parenthesis t close parenthesis ⏟ A open parenthesis t close parenthesis x → sub p open parenthesis t close parenthesis plus f → open parenthesis t close parenthesis .")[$arrow(x)_(p)^(′) ( t ) = limits(underbrace(X^(′) ( t ) arrow(u) ( t ) + X ( t ) arrow(u)^(′) ( t )))_(arrow(x)_(p)^(′) ( t )) = limits(underbrace(A ( t ) X ( t ) arrow(u) ( t )))_(A ( t ) arrow(x)_(p) ( t )) + arrow(f) ( t ) .$] But #math.equation(block: false, alt: "X open parenthesis t close parenthesis")[$X ( t )$] is a fundamental matrix solution to the homogeneous problem. So #math.equation(block: false, alt: "X prime open parenthesis t close parenthesis equals A open parenthesis t close parenthesis X open parenthesis t close parenthesis")[$X^(′) ( t ) = A ( t ) X ( t )$], and #math.equation(block: true, alt: "X prime open parenthesis t close parenthesis u → open parenthesis t close parenthesis plus X open parenthesis t close parenthesis u → prime open parenthesis t close parenthesis equals X prime open parenthesis t close parenthesis u → open parenthesis t close parenthesis plus f → open parenthesis t close parenthesis .")[$cancel(X^(′) ( t ) arrow(u) ( t )) + X ( t ) arrow(u)^(′) ( t ) = cancel(X^(′) ( t ) arrow(u) ( t )) + arrow(f) ( t ) .$] Hence #math.equation(block: false, alt: "X open parenthesis t close parenthesis u → prime open parenthesis t close parenthesis equals f → open parenthesis t close parenthesis")[$X ( t ) arrow(u)^(′) ( t ) = arrow(f) ( t )$]. If we compute #math.equation(block: false, alt: "[ X open parenthesis t close parenthesis ] to the power minus 1")[$[ X ( t ) ]^(− 1)$], then #math.equation(block: false, alt: "u → prime open parenthesis t close parenthesis equals [ X open parenthesis t close parenthesis ] to the power minus 1 f → open parenthesis t close parenthesis")[$arrow(u)^(′) ( t ) = [ X ( t ) ]^(− 1) arrow(f) ( t )$]. We integrate to obtain #math.equation(block: false, alt: "u →")[$arrow(u)$] and we have the particular solution #math.equation(block: false, alt: "x → sub p equals X open parenthesis t close parenthesis u → open parenthesis t close parenthesis")[$arrow(x)_(p) = X ( t ) arrow(u) ( t )$]. Let us write this as a formula #math.equation(block: true, alt: "x → sub p equals X open parenthesis t close parenthesis ∫ [ X open parenthesis t close parenthesis ] to the power minus 1 f → open parenthesis t close parenthesis d t .")[$arrow(x)_(p) = X ( t ) ∫ [ X ( t ) ]^(− 1) arrow(f) ( t ) d t .$] Note that if #math.equation(block: false, alt: "A")[$A$] is constant and we let #math.equation(block: false, alt: "X open parenthesis t close parenthesis equals e to the power t A")[$X ( t ) = e^(t A)$], then #math.equation(block: false, alt: "[ X open parenthesis t close parenthesis ] to the power minus 1 equals e to the power minus t A")[$[ X ( t ) ]^(− 1) = e^(− t A)$] and hence we get a solution #math.equation(block: false, alt: "x → sub p equals e to the power t A ∫ e to the power minus t A f → open parenthesis t close parenthesis d t")[$arrow(x)_(p) = e^(t A) ∫ e^(− t A) arrow(f) ( t ) d t$], which is precisely what we got using the integrating factor method. #examplebox("Example 4")[][ Find a particular solution to #math.equation(block: true, alt: "t minus 1; 1 t")[$t − 1 \ 1 t$] Here #math.equation(block: false, alt: "t minus 1; 1 t")[$t − 1 \ 1 t$] is most definitely not constant. Perhaps by a lucky guess, we find that #math.equation(block: false, alt: "t minus 1; 1 t")[$t − 1 \ 1 t$] solves #math.equation(block: false, alt: "X prime open parenthesis t close parenthesis equals A open parenthesis t close parenthesis X open parenthesis t close parenthesis")[$X^(′) ( t ) = A ( t ) X ( t )$]. Once we know the complementary solution we can easily find a solution to (3.9.6). First we find #math.equation(block: true, alt: "1 t; minus t 1")[$1 t \ − t 1$] Next we know a particular solution to (3.9.6) is #math.equation(block: true, alt: "x → sub p equals X open parenthesis t close parenthesis ∫ [ X open parenthesis t close parenthesis ] to the power minus 1 f → open parenthesis t close parenthesis d t; equals [ 1, minus t; t, 1 ] ∫ the fraction 1 over t squared plus 1 [ 1, t; minus t, 1 ] [ t; 1 ] open parenthesis t squared plus 1 close parenthesis d t; equals [ 1, minus t; t, 1 ] ∫ [ 2 t; minus t squared plus 1 ] d t; equals [ 1, minus t; t, 1 ] [ t squared; minus the fraction 1 over 3 t cubed plus t ]; equals [ the fraction 1 over 3 t to the power 4; the fraction 2 over 3 t cubed plus t ] .")[$arrow(x)_(p) = X ( t ) ∫ [ X ( t ) ]^(− 1) arrow(f) ( t ) d t \ = [ 1 & − t \ t & 1 ] ∫ frac(1, t^(2) + 1) [ 1 & t \ − t & 1 ] [ t \ 1 ] ( t^(2) + 1 ) d t \ = [ 1 & − t \ t & 1 ] ∫ [ 2 t \ − t^(2) + 1 ] d t \ = [ 1 & − t \ t & 1 ] [ t^(2) \ − frac(1, 3) t^(3) + t ] \ = [ frac(1, 3) t^(4) \ frac(2, 3) t^(3) + t ] .$] Adding the complementary solution we have that the general solution to (3.9.6). #math.equation(block: true, alt: "1 minus t; t 1")[$1 − t \ t 1$] ] #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that #math.equation(block: false, alt: "x sub 1 equals the fraction 1 over 3 t to the power 4")[$x_(1) = frac(1, 3) t^(4)$] and #math.equation(block: false, alt: "x sub 2 equals the fraction 2 over 3 t cubed plus t")[$x_(2) = frac(2, 3) t^(3) + t$] really solve (3.9.6). ] In the variation of parameters, just like in the integrating factor method we can obtain the general solution by adding in constants of integration. That is, we will add #math.equation(block: false, alt: "X open parenthesis t close parenthesis c →")[$X ( t ) arrow(c)$] for a vector of arbitrary constants. But that is precisely the complementary solution. === Second Order Constant Coefficients ==== Undetermined Coefficients We have already seen a simple example of the method of undetermined coefficients for second order systems in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/3%3A_Systems_of_ODEs/3.6%3A_Second_order_systems_and_applications")[Section 3.6]. This method is essentially the same as undetermined coefficients for first order systems. There are some simplifications that we can make, as we did in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/3%3A_Systems_of_ODEs/3.6%3A_Second_order_systems_and_applications")[Section 3.6]. Let the equation be #math.equation(block: true, alt: "x → double prime equals A x → plus f → open parenthesis t close parenthesis ,")[$arrow(x)^(″) = A arrow(x) + arrow(f) ( t ) ,$] where #math.equation(block: false, alt: "A")[$A$] is a constant matrix. If #math.equation(block: false, alt: "F → open parenthesis t close parenthesis")[$arrow(F) ( t )$] is of the form #math.equation(block: false, alt: "F → sub 0 cos open parenthesis ω t close parenthesis")[$arrow(F)_(0) cos ( ω t )$], then as two derivatives of cosine is again cosine we can try a solution of the form #math.equation(block: true, alt: "x → sub p equals c → cos open parenthesis ω t close parenthesis ,")[$arrow(x)_(p) = arrow(c) cos ( ω t ) ,$] and we do not need to introduce sines. If the #math.equation(block: false, alt: "F →")[$arrow(F)$] is a sum of cosines, note that we still have the superposition principle. If #math.equation(block: false, alt: "F → open parenthesis t close parenthesis equals F → sub 0 cos open parenthesis ω sub 0 t close parenthesis plus F → sub 1 cos open parenthesis ω sub 1 t close parenthesis")[$arrow(F) ( t ) = arrow(F)_(0) cos ( ω_(0) t ) + arrow(F)_(1) cos ( ω_(1) t )$], then we would try #math.equation(block: false, alt: "a → cos open parenthesis ω sub 0 t close parenthesis")[$arrow(a) cos ( ω_(0) t )$] for the problem #math.equation(block: false, alt: "x → double prime equals A x → plus F → sub 0 cos open parenthesis ω sub 0 t close parenthesis")[$arrow(x)^(″) = A arrow(x) + arrow(F)_(0) cos ( ω_(0) t )$], and we would try #math.equation(block: false, alt: "b → cos open parenthesis ω sub 1 t close parenthesis")[$arrow(b) cos ( ω_(1) t )$] for the problem #math.equation(block: false, alt: "x → double prime equals A x → plus F → sub 0 cos open parenthesis ω sub 1 t close parenthesis")[$arrow(x)^(″) = A arrow(x) + arrow(F)_(0) cos ( ω_(1) t )$]. Then we sum the solutions. However, if there is duplication with the complementary solution, or the equation is of the form #math.equation(block: false, alt: "x → double prime equals A x → prime plus B x → plus F → open parenthesis t close parenthesis")[$arrow(x)^(″) = A arrow(x)^(′) + B arrow(x) + arrow(F) ( t )$], then we need to do the same thing as we do for first order systems. You will never go wrong with putting in more terms than needed into your guess. You will find that the extra coefficients will turn out to be zero. But it is useful to save some time and effort. ==== Eigenvector Decomposition If we have the system #math.equation(block: true, alt: "x → double prime equals A x → plus F → open parenthesis t , close parenthesis")[$arrow(x)^(″) = A arrow(x) + arrow(F) ( t , )$] we can do #emph[eigenvector decomposition], just like for first order systems. Let #math.equation(block: false, alt: "λ sub 1 , … , λ sub n")[$λ_(1) , … , λ_(n)$] be the eigenvalues and #math.equation(block: false, alt: "v → sub 1 , … , v → sub n")[$arrow(v)_(1) , … , arrow(v)_(n)$] be eigenvectors. Again form the matrix #math.equation(block: false, alt: "E equals [ v → sub 1 ⋯ v → sub n ]")[$E = [ arrow(v)_(1) ⋯ arrow(v)_(n) ]$]. We write #math.equation(block: true, alt: "x → open parenthesis t close parenthesis equals v → sub 1 ξ sub 1 open parenthesis t close parenthesis plus v → sub 2 ξ sub 2 open parenthesis t close parenthesis plus ⋯ plus v → sub n ξ sub n open parenthesis t close parenthesis .")[$arrow(x) ( t ) = arrow(v)_(1) ξ_(1) ( t ) + arrow(v)_(2) ξ_(2) ( t ) + ⋯ + arrow(v)_(n) ξ_(n) ( t ) .$] We decompose #math.equation(block: false, alt: "F →")[$arrow(F)$] in terms of the eigenvectors #math.equation(block: true, alt: "f → open parenthesis t close parenthesis equals v → sub 1 g sub 1 open parenthesis t close parenthesis plus v → sub 2 g sub 2 open parenthesis t close parenthesis plus ⋯ plus v → sub n g sub n open parenthesis t close parenthesis .")[$arrow(f) ( t ) = arrow(v)_(1) g_(1) ( t ) + arrow(v)_(2) g_(2) ( t ) + ⋯ + arrow(v)_(n) g_(n) ( t ) .$] And again #math.equation(block: false, alt: "g → equals E to the power minus 1 F →")[$arrow(g) = E^(− 1) arrow(F)$]. Now we plug in and doing the same thing as before we obtain #math.equation(block: true, alt: "v → sub 1 ξ 1 ′ prime plus v → sub 2 ξ 2 ′ prime plus ⋯ v → sub n ξ n ′ prime ⏞ x → double prime equals A open parenthesis v → sub 1 ξ sub 1 plus v → sub 2 ξ sub 2 plus ⋯ v → sub n ξ sub n close parenthesis ⏞ A x → plus v → sub 1 g sub 1 plus v → sub 2 g sub 2 plus ⋯ plus v → sub n g sub n ⏞ f →; equals A v → sub 1 ξ sub 1 plus A v → sub 2 ξ sub 2 plus ⋯ A v → sub n ξ sub n plus v → sub 1 g sub 1 plus v → sub 2 g sub 2 plus ⋯ plus v → sub n g sub n; equals v → sub 1 λ sub 1 ξ sub 1 plus v → sub 2 λ sub 2 ξ sub 2 plus ⋯ v → sub n λ sub n ξ sub n plus v → sub 1 g sub 1 plus v → sub 2 g sub 2 plus ⋯ plus v → sub n g sub n; equals v → sub 1 open parenthesis λ sub 1 ξ sub 1 plus g sub 1 close parenthesis plus v → sub 2 open parenthesis λ sub 2 ξ sub 2 plus g sub 2 close parenthesis plus ⋯ plus")[$limits(overbrace(arrow(v)_(1) ξ_(1)^(′)^(′) + arrow(v)_(2) ξ_(2)^(′)^(′) + ⋯ arrow(v)_(n) ξ_(n)^(′)^(′)))^(arrow(x)^(″)) = limits(overbrace(A ( arrow(v)_(1) ξ_(1) + arrow(v)_(2) ξ_(2) + ⋯ arrow(v)_(n) ξ_(n) )))^(A arrow(x)) + limits(overbrace(arrow(v)_(1) g_(1) + arrow(v)_(2) g_(2) + ⋯ + arrow(v)_(n) g_(n)))^(arrow(f)) \ = A arrow(v)_(1) ξ_(1) + A arrow(v)_(2) ξ_(2) + ⋯ A arrow(v)_(n) ξ_(n) + arrow(v)_(1) g_(1) + arrow(v)_(2) g_(2) + ⋯ + arrow(v)_(n) g_(n) \ = arrow(v)_(1) λ_(1) ξ_(1) + arrow(v)_(2) λ_(2) ξ_(2) + ⋯ arrow(v)_(n) λ_(n) ξ_(n) + arrow(v)_(1) g_(1) + arrow(v)_(2) g_(2) + ⋯ + arrow(v)_(n) g_(n) \ = arrow(v)_(1) ( λ_(1) ξ_(1) + g_(1) ) + arrow(v)_(2) ( λ_(2) ξ_(2) + g_(2) ) + ⋯ + arrow(v)_(n) ( λ_(n) ξ_(n) + g_(n) ) .$] We identify the coefficients of the eigenvectors to get the equations #math.equation(block: true, alt: "ξ 1 ′ prime equals λ sub 1 ξ sub 1 plus g sub 1 ,; ξ 2 ′ prime equals λ sub 2 ξ sub 2 plus g sub 2 ,; ⋮; ξ n ′ prime equals λ sub n ξ sub n plus g sub n .")[$ξ_(1)^(′)^(′) = λ_(1) ξ_(1) + g_(1) , \ ξ_(2)^(′)^(′) = λ_(2) ξ_(2) + g_(2) , \ ⋮ \ ξ_(n)^(′)^(′) = λ_(n) ξ_(n) + g_(n) .$] Each one of these equations is independent of the others. We solve each equation using the methods of#link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/2%3A_Higher_order_linear_ODEs")[Chapter 2]. We write #math.equation(block: false, alt: "x → open parenthesis t close parenthesis equals v → sub 1 ξ sub 1 open parenthesis t close parenthesis plus ⋯ plus v → sub n ξ sub n open parenthesis t close parenthesis")[$arrow(x) ( t ) = arrow(v)_(1) ξ_(1) ( t ) + ⋯ + arrow(v)_(n) ξ_(n) ( t )$], and we are done; we have a particular solution. If we have found the general solution for #math.equation(block: false, alt: "ξ sub 1")[$ξ_(1)$] through #math.equation(block: false, alt: "ξ sub 2")[$ξ_(2)$], then again #math.equation(block: false, alt: "x → open parenthesis t close parenthesis equals v → sub 1 ξ sub 1 open parenthesis t close parenthesis plus ⋯ plus v → sub n ξ sub n open parenthesis t close parenthesis")[$arrow(x) ( t ) = arrow(v)_(1) ξ_(1) ( t ) + ⋯ + arrow(v)_(n) ξ_(n) ( t )$] is the general solution (and not just a particular solution). #examplebox("Example 5")[][ Let us do the example from #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/3%3A_Systems_of_ODEs/3.6%3A_Second_order_systems_and_applications")[Section 3.6] using this method. The equation is #math.equation(block: true, alt: "minus 3 1; 2 minus 2")[$− 3 1 \ 2 − 2$] The eigenvalues were #math.equation(block: false, alt: "minus 1")[$− 1$] and #math.equation(block: false, alt: "minus 4")[$− 4$], with eigenvectors #math.equation(block: false, alt: "1; 2")[$1 \ 2$] and #math.equation(block: false, alt: "1; minus 1")[$1 \ − 1$]. Therefore #math.equation(block: false, alt: "1 1; 2 minus 1")[$1 1 \ 2 − 1$] and #math.equation(block: false, alt: "1 1; 2 minus 1")[$1 1 \ 2 − 1$]. Therefore, #math.equation(block: true, alt: "g sub 1; g sub 2")[$g_(1) \ g_(2)$] So after the whole song and dance of plugging in, the equations we get are #math.equation(block: true, alt: "ξ 1 ′ prime equals minus ξ sub 1 plus the fraction 2 over 3 cos open parenthesis 3 t close parenthesis , ξ 2 ′ prime equals minus 4 ξ sub 2 minus the fraction 2 over 3 cos open parenthesis 3 t close parenthesis .")[$ξ_(1)^(′)^(′) = − ξ_(1) + frac(2, 3) cos ( 3 t ) , #h(1em) ξ_(2)^(′)^(′) = − 4 ξ_(2) − frac(2, 3) cos ( 3 t ) .$] For each equation we use the method of undetermined coefficients. We try #math.equation(block: false, alt: "C sub 1 cos open parenthesis 3 t close parenthesis")[$C_(1) cos ( 3 t )$] for the first equation and #math.equation(block: false, alt: "C sub 2 cos open parenthesis 3 t close parenthesis")[$C_(2) cos ( 3 t )$] for the second equation. We plug in to get #math.equation(block: true, alt: "minus 9 C sub 1 cos open parenthesis 3 t close parenthesis equals minus C sub 1 cos open parenthesis 3 t close parenthesis plus the fraction 2 over 3 cos open parenthesis 3 t close parenthesis ,; minus 9 C sub 2 cos open parenthesis 3 t close parenthesis equals minus 4 C sub 2 cos open parenthesis 3 t close parenthesis minus the fraction 2 over 3 cos open parenthesis 3 t close parenthesis .")[$− 9 C_(1) cos ( 3 t ) = − C_(1) cos ( 3 t ) + frac(2, 3) cos ( 3 t ) , \ − 9 C_(2) cos ( 3 t ) = − 4 C_(2) cos ( 3 t ) − frac(2, 3) cos ( 3 t ) .$] We solve each of these equations separately. We get #math.equation(block: false, alt: "minus 9 C sub 1 equals minus C sub 1 plus the fraction 2 over 3")[$− 9 C_(1) = − C_(1) + frac(2, 3)$] and #math.equation(block: false, alt: "minus 9 C sub 2 equals minus 4 C sub 2 minus the fraction 2 over 3")[$− 9 C_(2) = − 4 C_(2) − frac(2, 3)$]. And hence #math.equation(block: false, alt: "C sub 1 equals the fraction minus 1 over 12")[$C_(1) = frac(− 1, 12)$] and #math.equation(block: false, alt: "C sub 2 equals the fraction 2 over 12")[$C_(2) = frac(2, 12)$]. So our particular solution is #math.equation(block: true, alt: "1; 2")[$1 \ 2$] This solution matches what we got previously in #link("https://math.libretexts.org/Bookshelves/Differential_Equations/Differential_Equations_for_Engineers_(Lebl)/3%3A_Systems_of_ODEs/3.6%3A_Second_order_systems_and_applications")[Section 3.6]. ]