#set document(title: "0.2 Introduction to 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.2#h(0.6em)Introduction to Differential Equations === Differential Equations The laws of physics are generally written down as differential equations. Therefore, all of science and engineering use differential equations to some degree. Understanding differential equations is essential to understanding almost anything you will study in your science and engineering classes. You can think of mathematics as the language of science, and differential equations are one of the most important parts of this language as far as science and engineering are concerned. As an analogy, suppose all your classes from now on were given in Swahili. It would be important to first learn Swahili, or you would have a very tough time getting a good grade in your classes. You saw many differential equations already without perhaps knowing about it. And you even solved simple differential equations when you took calculus. Let us see an example you may not have seen: #math.equation(block: true, alt: "the fraction d x over d t plus x equals 2 cos t .")[$frac(d x, d t) + x = 2 cos t .$] Here #math.equation(block: false, alt: "x")[$x$] is the #emph[dependent variable] and #math.equation(block: false, alt: "t")[$t$] is the #emph[independent variable]. Equation (0.2.1) is a basic example of a #emph[differential equation]. It is an example of a #emph[first order differential equation], since it involves only the first derivative of the dependent variable. This equation arises from Newton’s law of cooling where the ambient temperature oscillates with time. === Solutions of Differential Equations Solving the differential equation means finding #math.equation(block: false, alt: "x")[$x$] in terms of #math.equation(block: false, alt: "t")[$t$]. That is, we want to find a function of #math.equation(block: false, alt: "t")[$t$], which we call #math.equation(block: false, alt: "x")[$x$], such that when we plug #math.equation(block: false, alt: "x")[$x$], #math.equation(block: false, alt: "t")[$t$], and #math.equation(block: false, alt: "the fraction d x over d t")[$frac(d x, d t)$] into (0.2.1), the equation holds; that is, the left hand side equals the right hand side. It is the same idea as it would be for a normal (algebraic) equation of just #math.equation(block: false, alt: "x")[$x$] and #math.equation(block: false, alt: "t")[$t$]. We claim that #math.equation(block: true, alt: "x equals x open parenthesis t close parenthesis equals cos t plus sin t")[$x = x ( t ) = cos t + sin t$] is a #emph[solution]. How do we check? We simply plug #math.equation(block: false, alt: "x")[$x$] into equation (0.2.1)! First we need to compute #math.equation(block: false, alt: "the fraction d x over d t")[$frac(d x, d t)$]. We find that #math.equation(block: false, alt: "the fraction d x over d t equals minus sin t plus cos t")[$frac(d x, d t) = − sin t + cos t$]. Now let us compute the left-hand side of (0.2.1). #math.equation(block: true, alt: "the fraction d x over d t plus x equals open parenthesis minus sin t plus cos t close parenthesis ⏟ the fraction d x over d t plus open parenthesis cos t plus sin t close parenthesis ⏟ x equals 2 cos t .")[$frac(d x, d t) + x = limits(underbrace(( − sin t + cos t )))_(frac(d x, d t)) + limits(underbrace(( cos t + sin t )))_(x) = 2 cos t .$] Yay! We got precisely the right-hand side. But there is more! We claim #math.equation(block: false, alt: "x equals cos t plus sin t plus e to the power minus t")[$x = cos t + sin t + e^(− t)$] is also a solution. Let us try, #math.equation(block: true, alt: "the fraction d x over d t equals minus sin t plus cos t minus e to the power minus t .")[$frac(d x, d t) = − sin t + cos t − e^(− t) .$] We plug into the left-hand side of (0.2.1) #math.equation(block: true, alt: "the fraction d x over d t plus x equals open parenthesis minus sin t plus cos t minus e to the power minus t close parenthesis ⏟ the fraction d x over d t plus open parenthesis cos t plus sin t plus e to the power minus t close parenthesis ⏟ x equals 2 cos t .")[$frac(d x, d t) + x = limits(underbrace(( − sin t + cos t − e^(− t) )))_(frac(d x, d t)) + limits(underbrace(( cos t + sin t + e^(− t) )))_(x) = 2 cos t .$] And it works yet again! So there can be many different solutions. For this equation all solutions can be written in the form #math.equation(block: true, alt: "x equals cos t plus sin t plus C e to the power minus t ,")[$x = cos t + sin t + C e^(− t) ,$] for some constant #math.equation(block: false, alt: "C")[$C$]. Different constants #math.equation(block: false, alt: "C")[$C$] will give different solutions, so there are really infinitely many possible solutions. See Figure #math.equation(block: false, alt: "1")[$1$] for the graph of a few of these solutions. We will see how we find these solutions a few lectures from now. Every solution of equation (0.2.1): x = cos t + sin t + C·e^(-t), drawn against time t on the horizontal axis (XYZ Graph names the vertical axis y; here it is Lebl's x). Drag C from -3 to 3 and each curve leaves a different starting height at t = 0 - anywhere from -2 to 4, since x(0) = 1 + C - yet by t = 4 every one of them lies within 0.06 of the dashed C = 0 curve. The constant fixes only the transient; the long-run oscillation cos t + sin t is common to all of them. C = 1, the slider's starting value, is the solution the section checks by substitution. {"functions":\[{"color":"\#1f4e79","domain":\[0,10\],"expression":"cos(t) + sin(t) + C\*exp(-t)","expression2":"","id":"soln-family","inequality":"lt","lineDash":\[\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"t","visible":true},{"color":"\#6b3fa0","domain":\[0,10\],"expression":"cos(t) + sin(t)","expression2":"","id":"soln-steady","inequality":"lt","lineDash":\[6,4\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"t","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":1,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"p-C","label":"Constant C","max":3,"min":-3,"name":"C","step":0.25,"unit":"","value":1}\],"title":"Solutions x = cos t + sin t + C e^(-t)","version":1,"viewport":{"centerX":5,"centerY":0.6,"scale":64}} #figure(figph[Three solution curves over x from 0 to 5 starting at 3, 1 and -1. All fall through zero, bottom out near -1.45 around x = 3.95, then turn back up almost indistinguishably.], alt: "Three solution curves over x from 0 to 5 starting at 3, 1 and -1. All fall through zero, bottom out near -1.45 around x = 3.95, then turn back up almost indistinguishably.", caption: [Figure #math.equation(block: false, alt: "1")[$1$]: Few solutions of #math.equation(block: false, alt: "the fraction d x over d t plus x equals 2 cos t")[$frac(d x, d t) + x = 2 cos t$].]) Solving differential equations can be quite hard. There is no general method that solves every differential equation. We will generally focus on how to get exact formulas for solutions of certain differential equations, but we will also spend a little bit of time on getting approximate solutions. And we will spend some time on understanding the equations without solving them. Most of this book is dedicated to #emph[ordinary differential equations] or ODEs, that is, equations with only one independent variable, where derivatives are only with respect to this one variable. If there are several independent variables, we get #emph[partial differential equations] or PDEs. Even for ODEs, which are very well understood, it is not a simple question of turning a crank to get answers. When you can find exact solutions, they are usually preferable to approximate solutions. It is important to understand how such solutions are found. Although in real applications you will leave much of the actual calculations to computers, you need to understand what they are doing. It is often necessary to simplify or transform your equations into something that a computer can understand and solve. You may even need to make certain assumptions and changes in your model to achieve this. To be a successful engineer or scientist, you will be required to solve problems in your job that you never saw before. It is important to learn problem solving techniques, so that you may apply those techniques to new problems. A common mistake is to expect to learn some prescription for solving all the problems you will encounter in your later career. This course is no exception. === Differential Equations in Practice #figure(figph[Diagram of a three-node cycle: an arrow labelled abstract runs from Real-world problem to Mathematical model, solve to Mathematical solution, and interpret back to the problem.], alt: "Diagram of a three-node cycle: an arrow labelled abstract runs from Real-world problem to Mathematical model, solve to Mathematical solution, and interpret back to the problem.", caption: [Figure #math.equation(block: false, alt: "2")[$2$]]) So how do we use differential equations in science and engineering? First, we have some #emph[real-world problem]we wish to understand. We make some simplifying assumptions and create a #emph[mathematical model]. That is, we translate the real-world situation into a set of differential equations. Then we apply mathematics to get some sort of a #emph[mathematical solution]. There is still something left to do. We have to interpret the results. We have to figure out what the mathematical solution says about the real-world problem we started with. Learning how to formulate the mathematical model and how to interpret the results is what your physics and engineering classes do. In this course, we will focus mostly on the mathematical analysis. Sometimes we will work with simple real-world examples so that we have some intuition and motivation about what we are doing. Let us look at an example of this process. One of the most basic differential equations is the standard #emph[exponential growth model]. Let #math.equation(block: false, alt: "P")[$P$] denote the population of some bacteria on a Petri dish. We assume that there is enough food and enough space. Then the rate of growth of bacteria is proportional to the population—a large population grows quicker. Let #math.equation(block: false, alt: "t")[$t$] denote time (say in seconds) and #math.equation(block: false, alt: "P")[$P$] the population. Our model is #math.equation(block: true, alt: "the fraction d P over d t equals k P ,")[$frac(d P, d t) = k P ,$] for some positive constant #math.equation(block: false, alt: "k greater than 0")[$k > 0$]. #examplebox("Example 1")[][ Suppose there are #math.equation(block: false, alt: "100")[$100$] bacteria at time #math.equation(block: false, alt: "0")[$0$] and #math.equation(block: false, alt: "200")[$200$] bacteria #math.equation(block: false, alt: "10")[$10$] seconds later. How many bacteria will there be #math.equation(block: false, alt: "1")[$1$] minute from time #math.equation(block: false, alt: "0")[$0$] (in #math.equation(block: false, alt: "60")[$60$] seconds)? #figure(figph[Plot of bacteria count against time from 0 to 60 seconds. The curve starts near 100, doubles about every ten seconds, and sweeps up to about 6400 at 60 seconds.], alt: "Plot of bacteria count against time from 0 to 60 seconds. The curve starts near 100, doubles about every ten seconds, and sweeps up to about 6400 at 60 seconds.", caption: [Figure #math.equation(block: false, alt: "2")[$2$]: Bacteria growth in the first #math.equation(block: false, alt: "60")[$60$] seconds.]) #solutionbox[ First we need to solve the equation. We claim that a solution is given by #math.equation(block: true, alt: "P open parenthesis t close parenthesis equals C e to the power k t ,")[$P ( t ) = C e^(k t) ,$] where #math.equation(block: false, alt: "C")[$C$] is a constant. Let us try: #math.equation(block: true, alt: "the fraction d P over d t equals C k e to the power k t equals k P .")[$frac(d P, d t) = C k e^(k t) = k P .$] And it really is a solution. OK, now what? We do not know #math.equation(block: false, alt: "C")[$C$], and we do not know #math.equation(block: false, alt: "k")[$k$]. But we know something. We know #math.equation(block: false, alt: "P open parenthesis 0 close parenthesis equals 100")[$P ( 0 ) = 100$], and we know #math.equation(block: false, alt: "P open parenthesis 10 close parenthesis equals 200")[$P ( 10 ) = 200$]. Let us plug these conditions in and see what happens. #math.equation(block: true, alt: "100 equals P open parenthesis 0 close parenthesis equals C e to the power k 0 equals C ,; 200 equals P open parenthesis 10 close parenthesis equals 100 e to the power k 10 .")[$100 = P ( 0 ) = C e^(k 0) = C , \ 200 = P ( 10 ) = 100 e^(k 10) .$] Therefore, #math.equation(block: false, alt: "2 equals e to the power 10 k")[$2 = e^(10 k)$] or #math.equation(block: false, alt: "the fraction ln 2 over 10 equals k approximately equals 0.069")[$frac(ln 2, 10) = k ≈ 0.069$]. So #math.equation(block: true, alt: "P open parenthesis t close parenthesis equals 100 e to the power open parenthesis ln 2 close parenthesis t / 10 approximately equals 100 e to the power 0.069 t .")[$P ( t ) = 100 e^(( ln 2 ) t / 10) ≈ 100 e^(0.069 t) .$] At one minute, #math.equation(block: false, alt: "t equals 60")[$t = 60$], the population is #math.equation(block: false, alt: "P open parenthesis 60 close parenthesis equals 6400")[$P ( 60 ) = 6400$]. See Figure #math.equation(block: false, alt: "2")[$2$]. Let us talk about the interpretation of the results. Does our solution mean that there must be exactly #math.equation(block: false, alt: "6400")[$6400$] bacteria on the plate at #math.equation(block: false, alt: "60 s")[$60 "s"$]? No! We made assumptions that might not be true exactly, just approximately. If our assumptions are reasonable, then there will be approximately #math.equation(block: false, alt: "6400")[$6400$] bacteria. Also, in real life #math.equation(block: false, alt: "P")[$P$] is a discrete quantity, not a real number. However, our model has no problem saying that for example at #math.equation(block: false, alt: "61")[$61$] seconds, #math.equation(block: false, alt: "P open parenthesis 61 close parenthesis approximately equals 6859.35")[$P ( 61 ) ≈ 6859.35$]. ] ] Normally, the #math.equation(block: false, alt: "k")[$k$] in #math.equation(block: false, alt: "P prime equals k P")[$P^(′) = k P$] is known, and we want to solve the equation for different #emph[initial conditions]. What does that mean? Take #math.equation(block: false, alt: "k equals 1")[$k = 1$] for simplicity. Suppose we want to solve the equation #math.equation(block: false, alt: "the fraction d P over d t equals P")[$frac(d P, d t) = P$] subject to #math.equation(block: false, alt: "P open parenthesis 0 close parenthesis equals 1000")[$P ( 0 ) = 1000$] (the initial condition). Then the solution turns out to be (exercise) #math.equation(block: true, alt: "P open parenthesis t close parenthesis equals 1000 e to the power t .")[$P ( t ) = 1000 e^(t) .$] We call #math.equation(block: false, alt: "P open parenthesis t close parenthesis equals C e to the power t")[$P ( t ) = C e^(t)$] #emph[the] #emph[general solution], as every solution of the equation can be written in this form for some constant #math.equation(block: false, alt: "C")[$C$]. We need an initial condition to find out what #math.equation(block: false, alt: "C")[$C$] is, in order to find the #emph[particular solution] we are looking for. Generally, when we say "particular solution," we just mean some solution. === Fundamental Equations A few equations appear often and it is useful to just memorize what their solutions are. Let us call them the four fundamental equations. Their solutions are reasonably easy to guess by recalling properties of exponentials, sines, and cosines. They are also simple to check, which is something that you should always do. No need to wonder if you remembered the solution correctly. The section's four fundamental equations on one set of axes, all driven by a single shared k. The curve rising to the right is e^(kx), solving y′ = ky; its mirror image rising to the left is e^(-kx), solving y′ = -ky; the wave is cos(kx), solving y″ = -k²y; and the dashed curve is cosh(kx) = (e^(kx) + e^(-kx))/2, solving y″ = k²y — which is why it runs exactly halfway between the two exponentials at every x. All four pass through y = 1 at x = 0, whatever k is. Lebl takes k \> 0; drag the slider down to the degenerate k = 0 and the four equations become the same equation, so all four curves collapse onto the single line y = 1. Drag k up to 2 and the wave stays trapped between -1 and 1 while the other three leave the top of the frame ever sooner — but they were already unbounded back at k = 0.1, so what separates oscillation from blow-up is the minus sign on k² in y″ = -k²y, not the size of k. The minus in y′ = -ky buys nothing: it only flips which side e^(-kx) blows up on. {"functions":\[{"color":"\#1f4e79","domain":null,"expression":"exp(k\*x)","expression2":"","id":"growth","inequality":"lt","lineDash":\[\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#2e6b3f","domain":null,"expression":"exp(-k\*x)","expression2":"","id":"decay","inequality":"lt","lineDash":\[\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#b8442a","domain":null,"expression":"cos(k\*x)","expression2":"","id":"oscillation","inequality":"lt","lineDash":\[\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#6b3fa0","domain":null,"expression":"cosh(k\*x)","expression2":"","id":"hyperbolic","inequality":"lt","lineDash":\[7,4\],"lineWidth":2.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":1,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"p-k","label":"Rate / frequency k","max":2,"min":0,"name":"k","step":0.05,"unit":"","value":1}\],"title":"Four fundamental equations","version":1,"viewport":{"centerX":0,"centerY":1,"scale":72}} First such equation is #math.equation(block: true, alt: "the fraction d y over d x equals k y ,")[$frac(d y, d x) = k y ,$] for some constant #math.equation(block: false, alt: "k greater than 0")[$k > 0$]. Here #math.equation(block: false, alt: "y")[$y$] is the dependent and #math.equation(block: false, alt: "x")[$x$] the independent variable. The general solution for this equation is #math.equation(block: true, alt: "y open parenthesis x close parenthesis equals C e to the power k x .")[$y ( x ) = C e^(k x) .$] We saw above that this function is a solution, although we used different variable names. Next, #math.equation(block: true, alt: "the fraction d y over d x equals minus k y ,")[$frac(d y, d x) = − k y ,$] for some constant #math.equation(block: false, alt: "k greater than 0")[$k > 0$]. The general solution for this equation is #math.equation(block: true, alt: "y open parenthesis x close parenthesis equals C e to the power minus k x .")[$y ( x ) = C e^(− k x) .$] #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that the #math.equation(block: false, alt: "y")[$y$] given is really a solution to the equation. ] Next, take the #emph[second order differential equation] #math.equation(block: true, alt: "the fraction d squared y over d x squared equals minus k squared y ,")[$frac(d^(2) y, attach(d x, t: 2)) = − k^(2) y ,$] for some constant #math.equation(block: false, alt: "k greater than 0")[$k > 0$]. The general solution for this equation is #math.equation(block: true, alt: "y open parenthesis x close parenthesis equals C sub 1 cos open parenthesis k x close parenthesis plus C sub 2 sin open parenthesis k x close parenthesis .")[$y ( x ) = C_(1) cos ( k x ) + C_(2) sin ( k x ) .$] Since the equation is a second order differential equation, we have two constants in our general solution. #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that the #math.equation(block: false, alt: "y")[$y$] given is really a solution to the equation. ] Finally, consider the second order differential equation #math.equation(block: true, alt: "the fraction d squared y over d x squared equals k squared y ,")[$frac(d^(2) y, attach(d x, t: 2)) = k^(2) y ,$] for some constant #math.equation(block: false, alt: "k greater than 0")[$k > 0$]. The general solution for this equation is #math.equation(block: true, alt: "y open parenthesis x close parenthesis equals C sub 1 e to the power k x plus C sub 2 e to the power minus k x ,")[$y ( x ) = C_(1) e^(k x) + C_(2) e^(− k x) ,$] or #math.equation(block: true, alt: "y open parenthesis x close parenthesis equals D sub 1 cosh open parenthesis k x close parenthesis plus D sub 2 sinh open parenthesis k x close parenthesis .")[$y ( x ) = D_(1) cosh ( k x ) + D_(2) sinh ( k x ) .$] For those that do not know, #math.equation(block: false, alt: "cosh")[$cosh$] and #math.equation(block: false, alt: "sinh")[$sinh$] are defined by #math.equation(block: true, alt: "cosh x equals the fraction e to the power x plus e to the power minus x over 2 , sinh x equals the fraction e to the power x minus e to the power minus x over 2 .")[$cosh x = frac(e^(x) + e^(− x), 2) , #h(2em) sinh x = frac(e^(x) − e^(− x), 2) .$] They are called the #emph[hyperbolic cosine] and #emph[hyperbolic sine]. These functions are sometimes easier to work with than exponentials. They have some nice familiar properties such as #math.equation(block: false, alt: "cosh 0 equals 1")[$cosh 0 = 1$], #math.equation(block: false, alt: "sinh 0 equals 0")[$sinh 0 = 0$], and #math.equation(block: false, alt: "the fraction d over d x cosh x equals sinh x")[$frac(d, d x) cosh x = sinh x$] (no that is not a typo) and #math.equation(block: false, alt: "the fraction d over d x sinh x equals cosh x")[$frac(d, d x) sinh x = cosh x$]. #notebox("Your Turn", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Check that both forms of the #math.equation(block: false, alt: "y")[$y$] given are really solutions to the equation. ] #examplebox("Example 2")[][ In equations of higher order, you get more constants you must solve for to get a particular solution. The equation #math.equation(block: false, alt: "the fraction d squared y over d x squared equals 0")[$frac(d^(2) y, d x^(2)) = 0$] has the general solution #math.equation(block: false, alt: "y equals C sub 1 x plus C sub 2")[$y = C_(1) x + C_(2)$]; simply integrate twice and don’t forget about the constant of integration. Consider the initial conditions #math.equation(block: false, alt: "y open parenthesis 0 close parenthesis equals 2")[$y ( 0 ) = 2$] and #math.equation(block: false, alt: "y prime open parenthesis 0 close parenthesis equals 3")[$y^(′) ( 0 ) = 3$]. We plug in our general solution and solve for the constants: #math.equation(block: true, alt: "2 equals y open parenthesis 0 close parenthesis equals C sub 1 times 0 plus C sub 2 equals C sub 2 , 3 equals y prime open parenthesis 0 close parenthesis equals C sub 1 .")[$2 = y ( 0 ) = C_(1) · 0 + C_(2) = C_(2) , #h(2em) 3 = y^(′) ( 0 ) = C_(1) .$] In other words, #math.equation(block: false, alt: "y equals 3 x plus 2")[$y = 3 x + 2$] is the particular solution we seek. ] An interesting note about #math.equation(block: false, alt: "cosh")[$cosh$]: The graph of #math.equation(block: false, alt: "cosh")[$cosh$] is the exact shape of a hanging chain. This shape is called a #emph[catenary]. Contrary to popular belief this is not a parabola. If you invert the graph of #math.equation(block: false, alt: "cosh")[$cosh$], it is also the ideal arch for supporting its weight. For example, the gateway arch in Saint Louis is an inverted graph of #math.equation(block: false, alt: "cosh")[$cosh$]—if it were just a parabola it might fall. The formula used in the design is inscribed inside the arch: #math.equation(block: true, alt: "y equals minus 127.7 ft times cosh open parenthesis x / 127.7 ft close parenthesis plus 757.7 ft .")[$y = − 127.7 #h(0.278em) "ft" · cosh ( x / 127.7 #h(0.278em) "ft" ) + 757.7 #h(0.278em) "ft" .$] The arch this section prints, y = 630(cosh(315/a) − cosh(x/a))/(cosh(315/a) − 1), against the parabola through the same two feet (x = ±315 ft) and the same 630 ft apex — so the slider changes nothing but the shape. Lebl's own constants put the arch 630 ft tall over a 630 ft span, and at a = 127.7 ft the catenary rides about 66 ft above the parabola near x = 228 ft, a tenth of the arch's height. Drag a down to 60 and the gap opens past 190 ft; drag it up to 600 and it closes to under 4 ft, since cosh u ≈ 1 + u²/2 once u is small. That last picture is why the popular belief survives — a flat enough catenary is a parabola to the eye. This one is not flat. {"functions":\[{"color":"\#1f4e79","domain":\[-315,315\],"expression":"630\*(cosh(315/a) - cosh(x/a))/(cosh(315/a) - 1)","expression2":"","id":"catenary","inequality":"lt","lineDash":\[\],"lineWidth":2.5,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true},{"color":"\#b8442a","domain":\[-315,315\],"expression":"630\*(1 - (x/315)^2)","expression2":"","id":"parabola","inequality":"lt","lineDash":\[6,4\],"lineWidth":2,"mode":"cartesian","tMax":10,"tMin":-10,"variable":"x","visible":true}\],"grid":{"axisColor":"\#333333","gridColor":"\#cccccc","majorSpacing":100,"minorGridColor":"\#eeeeee","showAxes":true,"showLabels":true},"parameters":\[{"id":"p-a","label":"Catenary scale a","max":600,"min":60,"name":"a","step":0.1,"unit":"ft","value":127.7}\],"title":"Catenary vs. parabola: the Gateway Arch","version":1,"viewport":{"centerX":0,"centerY":315,"scale":0.7}}