#set document(title: "0.3 Classification of Differential Equations", 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")) == 0.3#h(0.6em)Classification of Differential Equations There are many types of differential equations, and we classify them into different categories based on their properties. Let us quickly go over the most basic classification. We already saw the distinction between ordinary and partial differential equations: - #emph[Ordinary differential equations] or (ODE) are equations where the derivatives are taken with respect to only one variable. That is, there is only one independent variable. - #emph[Partial differential equations] or (PDE) are equations that depend on partial derivatives of several variables. That is, there are several independent variables. Let us see some examples of ordinary differential equations: #math.equation(block: true, alt: "the fraction d y over d t equals k y , (Exponential growth); the fraction d y over d t equals k open parenthesis A minus y close parenthesis , (Newton's law of cooling); m the fraction d squared x over d t squared plus c the fraction d x over d t plus k x equals f open parenthesis t close parenthesis . (Mechanical vibrations)")[$frac(d y, d t) = k y , "(Exponential growth)" \ frac(d y, d t) = k ( A − y ) , "(Newton's law of cooling)" \ m frac(d^(2) x, d t^(2)) + c frac(d x, d t) + k x = f ( t ) . "(Mechanical vibrations)"$] And of partial differential equations: #math.equation(block: true, alt: "the fraction ∂ y over ∂ t plus c the fraction ∂ y over ∂ x equals 0 , (Transport equation); the fraction ∂ u over ∂ t equals the fraction ∂ squared u over ∂ x squared , (Heat equation); the fraction ∂ squared u over ∂ t squared equals the fraction ∂ squared u over ∂ x squared plus the fraction ∂ squared u over ∂ y squared . (Wave equation in 2 dimensions)")[$frac(∂ y, ∂ t) + c frac(∂ y, ∂ x) = 0 , "(Transport equation)" \ frac(∂ u, ∂ t) = frac(∂^(2) u, ∂ x^(2)) , "(Heat equation)" \ frac(∂^(2) u, ∂ t^(2)) = frac(∂^(2) u, ∂ x^(2)) + frac(∂^(2) u, ∂ y^(2)) . "(Wave equation in 2 dimensions)"$] If there are several equations working together, we have a so-called #emph[system of differential equations]. For example, #math.equation(block: true, alt: "y prime equals x , x prime equals y")[$y^(′) = x , #h(2em) x^(′) = y$] is a simple system of ordinary differential equations. Maxwell's equations for electromagnetics, #math.equation(block: true, alt: "∇ times D → equals ρ , ∇ times B → equals 0 ,; ∇ times E → equals minus the fraction ∂ B → over ∂ t , ∇ times H → equals J → plus the fraction ∂ D → over ∂ t ,")[$∇ · arrow(D) = ρ , ∇ · arrow(B) = 0 , \ ∇ × arrow(E) = − frac(∂ arrow(B), ∂ t) , ∇ × arrow(H) = arrow(J) + frac(∂ arrow(D), ∂ t) ,$] are a system of partial differential equations. The divergence operator #math.equation(block: false, alt: "∇ times")[$∇ ·$] and the curl operator #math.equation(block: false, alt: "∇ times")[$∇ ×$] can be written out in partial derivatives of the functions involved in the #math.equation(block: false, alt: "x")[$x$], #math.equation(block: false, alt: "y")[$y$], and #math.equation(block: false, alt: "z")[$z$] variables. The next bit of information is the #emph[order] of the equation (or system). The order is simply the order of the largest derivative that appears. If the highest derivative that appears is the first derivative, the equation is of first order. If the highest derivative that appears is the second derivative, then the equation is of second order. For example, Newton’s law of cooling above is a first order equation, while the mechanical vibrations equation is a second order equation. The equation governing transversal vibrations in a beam, #math.equation(block: true, alt: "a to the power 4 the fraction ∂ to the power 4 y over ∂ x to the power 4 plus the fraction ∂ squared y over ∂ t squared equals 0 ,")[$a^(4) frac(∂^(4) y, ∂ x^(4)) + frac(∂^(2) y, ∂ t^(2)) = 0 ,$] is a fourth order partial differential equation. It is fourth order as at least one derivative is the fourth derivative. It does not matter that the derivative in #math.equation(block: false, alt: "t")[$t$] is only of second order. In the first chapter, we will start attacking first order ordinary differential equations, that is, equations of the form #math.equation(block: false, alt: "the fraction d y over d x equals f open parenthesis x , y close parenthesis")[$frac(d y, d x) = f ( x , y )$]. In general, lower order equations are easier to work with and have simpler behavior, which is why we start with them. We also distinguish how the dependent variables appear in the equation (or system). In particular, we say an equation is #emph[linear] if the dependent variable (or variables) and their derivatives appear linearly, that is only as first powers, they are not multiplied together, and no other functions of the dependent variables appear. In other words, the equation is a sum of terms, where each term is some function of the independent variables or some function of the independent variables multiplied by a dependent variable or its derivative. Otherwise, the equation is called #emph[nonlinear]. For example, an ordinary differential equation is linear if it can be put into the form #math.equation(block: true, alt: "a sub n open parenthesis x close parenthesis the fraction d to the power n y over d x to the power n plus a sub n minus 1 open parenthesis x close parenthesis the fraction d to the power n minus 1 y over d x to the power n minus 1 plus ⋯ plus a sub 1 open parenthesis x close parenthesis the fraction d y over d x plus a sub 0 open parenthesis x close parenthesis y equals b open parenthesis x close parenthesis .")[$a_(n) ( x ) frac(d^(n) y, d x^(n)) + a_(n − 1) ( x ) frac(d^(n − 1) y, d x^(n − 1)) + ⋯ + a_(1) ( x ) frac(d y, d x) + a_(0) ( x ) y = b ( x ) .$] The functions #math.equation(block: false, alt: "a sub 0")[$a_(0)$], #math.equation(block: false, alt: "a sub 1")[$a_(1)$], …, #math.equation(block: false, alt: "a sub n")[$a_(n)$] are called the #emph[coefficients]. The equation is allowed to depend arbitrarily on the independent variable. So #math.equation(block: true, alt: "e to the power x the fraction d squared y over d x squared plus sin open parenthesis x close parenthesis the fraction d y over d x plus x squared y equals the fraction 1 over x")[$e^(x) frac(d^(2) y, d x^(2)) + sin ( x ) frac(d y, d x) + x^(2) y = frac(1, x)$] is still a linear equation as #math.equation(block: false, alt: "y")[$y$] and its derivatives only appear linearly. All the equations and systems above as examples are linear. It may not be immediately obvious for Maxwell’s equations unless you write out the divergence and curl in terms of partial derivatives. Let us see some nonlinear equations. For example , #math.equation(block: true, alt: "the fraction ∂ y over ∂ t plus y the fraction ∂ y over ∂ x equals ν the fraction ∂ squared y over ∂ x squared ,")[$frac(∂ y, ∂ t) + y frac(∂ y, ∂ x) = ν frac(∂^(2) y, ∂ x^(2)) ,$] is a nonlinear second order partial differential equation. It is nonlinear because #math.equation(block: false, alt: "y")[$y$] and #math.equation(block: false, alt: "the fraction ∂ y over ∂ x")[$frac(∂ y, ∂ x)$] are multiplied together. The equation #math.equation(block: true, alt: "the fraction d x over d t equals x squared")[$frac(d x, d t) = x^(2)$] is a nonlinear first order differential equation as there is a second power of the dependent variable #math.equation(block: false, alt: "x")[$x$]. A linear equation may further be called #emph[homogenous] if all terms depend on the dependent variable. That is, if no term is a function of the independent variables alone. Otherwise, the equation is called #emph[homogeneous] or #emph[inhomogeneous]. For example, the exponential growth equation, the wave equation, or the transport equation above are homogeneous. The mechanical vibrations equation above is nonhomogeneous as long as #math.equation(block: false, alt: "f open parenthesis t close parenthesis")[$f ( t )$] is not the zero function. Similarly, if the ambient temperature #math.equation(block: false, alt: "A")[$A$] is nonzero, Newton’s law of cooling is nonhomogeneous. A homogeneous linear ODE can be put into the form #math.equation(block: true, alt: "a sub n open parenthesis x close parenthesis the fraction d to the power n y over d x to the power n plus a sub n minus 1 open parenthesis x close parenthesis the fraction d to the power n minus 1 y over d x to the power n minus 1 plus ⋯ plus a sub 1 open parenthesis x close parenthesis the fraction d y over d x plus a sub 0 open parenthesis x close parenthesis y equals 0 .")[$a_(n) ( x ) frac(d^(n) y, d x^(n)) + a_(n − 1) ( x ) frac(d^(n − 1) y, d x^(n − 1)) + ⋯ + a_(1) ( x ) frac(d y, d x) + a_(0) ( x ) y = 0 .$] Compare to (0.3.1) and notice there is no function #math.equation(block: false, alt: "b open parenthesis x close parenthesis")[$b ( x )$]. If the coefficients of a linear equation are actually constant functions, then the equation is said to have #emph[constant coefficients]. The coefficients are the functions multiplying the dependent variable(s) or one of its derivatives, not the function #math.equation(block: false, alt: "b open parenthesis x close parenthesis")[$b ( x )$] standing alone. A constant coefficient nonhomogeneous ODE is an equation of the form #math.equation(block: true, alt: "a sub n the fraction d to the power n y over d x to the power n plus a sub n minus 1 the fraction d to the power n minus 1 y over d x to the power n minus 1 plus ⋯ plus a sub 1 the fraction d y over d x plus a sub 0 y equals b open parenthesis x close parenthesis ,")[$a_(n) frac(d^(n) y, d x^(n)) + a_(n − 1) frac(d^(n − 1) y, d x^(n − 1)) + ⋯ + a_(1) frac(d y, d x) + a_(0) y = b ( x ) ,$] where #math.equation(block: false, alt: "a sub 0 , a sub 1 , … , a sub n")[$a_(0) , a_(1) , … , a_(n)$] are all constants, but #math.equation(block: false, alt: "b")[$b$] may depend on the independent variable #math.equation(block: false, alt: "x")[$x$]. The mechanical vibrations equation above is a constant coefficient nonhomogeneous second order ODE. The same nomenclature applies to PDEs, so the transport equation, heat equation and wave equation are all examples of constant coefficient linear PDEs. Finally, an equation (or system) is called #emph[autonomous] if the equation does not depend on the independent variable. For autonomous ordinary differential equations, the independent variable is then thought of as time. Autonomous equation means an equation that does not change with time. For example, Newton’s law of cooling is autonomous, so is equation (0.3.3). On the other hand, mechanical vibrations or (0.3.2) are not autonomous.