Skip to main content
Physics LibreTexts

10.4: Adams-Moulton Method

  • Page ID
  • \( \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}}\)

    In the Second-Order Adams-Moulton (AM2) method, we take

    \[\vec{y}_{n+1} = \vec{y}_n + \frac{h}{2}\left[ \vec{F}(\vec{y}_{n}, t_{n}) + \vec{F}(\vec{y}_{n+1}, t_{n+1})\right].\]

    Conceptually, the derivative term here is the average of the Forward Euler and Backward Euler derivative terms. Because \(\vec{y}_{n+1}\) appears on the right-hand side, this is an implicit method. Thus, like the Backward Euler Method, it typically has to be solved iteratively, but is numerically stable. The advantage of the AM2 method is that its local truncation error is substantially lower. To see this, let us take the derivative of both sides of the ODE over one time step:

    \[\int_{t_n}^{t_{n+1}} \frac{d\vec{y}}{dt} \; dt = \int_{t_n}^{t_{n+1}} \vec{F}(\vec{y}(t), t) \; dt\]

    Figure \(\PageIndex{1}\): The exact solution (blue) and Second-Order Adams-Moulton (AM2) solution (green) for the same problem as Fig. 10.2.1.

    The integral on the left-hand side reduces to \(\vec{y}_{n+1} - \vec{y}_n\). As for the integral on the right-hand side, if we perform this integral numerically using the trapezium rule, then the result is the derivative term in the AM2 formula. The local truncation error is given by the numerical error of the trapezium rule, which is \(O(h^{3})\). That's an improvement of one order compared to the Euler methods. (Based on this argument, we can also see that the Forward Euler method and the Backward Euler methods involve approximating the integral on the right-hand side using a rectangular area, with height given by the value at \(t_{n}\) and \(t_{n+1}\) respectively. From this, it's clear why the AM2 scheme gives better results.)

    There are also higher-order Adams-Moulton methods, which generate even more accurate results by also sampling the derivative function at previous steps: \(F(\vec{y}_{n-1},t_{n-1})\), \(F(\vec{y}_{n-2},t_{n-2})\), etc.

    In Fig. \(\PageIndex{1}\), we plot the AM2 solution for the problem \(dy/dt = -\kappa y(t)\), using the same parameters (including the same step size \(h\)) as in Fig. 10.2.1 (Forward Euler Method) and Fig. 10.3.1 (Backward Euler Method). It is clear that the AM2 results are significantly more accurate.

    10.4: Adams-Moulton Method is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Y. D. Chong via source content that was edited to conform to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.

    • Was this article helpful?