Skip to main content
Engineering LibreTexts

19.3: Euler’s Method

  • Page ID
    86327
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Here’s a test to see if you’re as smart as Leonhard Euler. Let’s say you arrive at time ( \(t\)) and measure the current population (\(y\)) and the rate of change (\(r\)). What do you think the population will be after some period of time \(\Delta t\) has elapsed?

    If you said \(y + r \Delta t\), congratulations! You just invented Euler’s method.

    This estimate is based on the assumption that \(r\) is constant, but in general it’s not, so we only expect the estimate to be good if \(r\) changes slowly and \(\Delta t\) is small.

    What if we want to make a prediction when \(\Delta t\) is large? One option is to break \(\Delta t\) into smaller pieces, called time steps. Then we can use the following equations to get from one time step to the next: \[\begin{aligned} T_{i+1} &=& T_i + dt \\ Y_{i+1} &=& Y_i + \frac{df}{dt}(t) \, dt\end{aligned}\]

    Here, \(T_i\) is a sequence of times where we estimate the value of \(y\), and \(Y_i\) is the sequence of estimates. For each index \(i\), \(Y_i\) is an estimate of \(y(T_i)\).

    If the rate doesn’t change too fast and the time step isn’t too big, Euler’s method is accurate enough for most purposes.


    This page titled 19.3: Euler’s Method is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Allen B. Downey (Green Tea Press) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.