Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Analysis of Verlet integration method

  1. Sep 10, 2011 #1

    I am trying to determine the global error for the verlet integration algorithm: [itex]r_{i+1}=2r_{i}-r_{i-1}+\ddot{r}_{i}h^{2}[/itex]
    It is easy to show that this approximation is locally 4th order, by way of a Talyor expansion. I have look around extensively for a proof of the global error but have been unsuccessful in finding a reasonable derivation anywhere (the articles I have found seem to make too many unjustified assumption and/or glaze over the dropping of terms; similar to the wikipedia page on verlet integration). (1) Has anyone else ran across a good derivation of the verlet integrators global error? My attempts at finding the global error for this expression has proved to be quite difficult.

    The numerical testing I have done has shown 2nd order global error, but I can't prove it. (2) I know I have to show that [itex]d_{k} \leq M n^2 [/itex] for all [itex]k \leq n[/itex], where M is some constant, but how can I show this for an arbitrary M? In real analysis, you show an equation like this is true by showing that for any [itex]\epsilon[/itex] you can find a [itex]n[/itex] such that the expression holds, but I can't seem to frame my problem in those terms. I have been trying several different approaches, and my latest attempt is below.

    My first step was to set up a difference equation for [itex]r_{i}[/itex] and [itex]r(h*i)[/itex] where [itex]r(h*i)[/itex] is the exact solution and [itex]r_{i}[/itex] is the approximate solution. After subtracting the two expression I get the difference formula:
    [itex]d_{i+1}=2d_{i}-d_{i-1}-h^{2}(\ddot{r}_{i}-\ddot{r}(h*i)) - O(h^{4})[/itex]

    using the mean value theorem:
    [itex]d_{i+1}=2d_{i}-d_{i-1}-h^{2}(\ddot{\xi}_{i}d_{i}) - O(h^{4})[/itex] for [itex]\xi\in[r_{i},r(h*i)][/itex]

    [itex]\Leftrightarrow d_{i+1}-(2-h^{2}(\ddot{\xi}_{i}))d_{i}+d_{i-1}=-O(h^{4})[/itex]

    [itex]r[/itex] is differentiable on the interval [itex][0,h*n][/itex]. Which implies [itex]\ddot{\xi}_{i}[/itex] has a maximum. Letting [itex]\epsilon=h^{2}\ddot{\xi}_{i}[/itex] gives:


    condensing further:

    [itex]d_{i+1}-xd_{i}+d_{i-1}=-O(h^{4})[/itex] where [itex]x=2-\epsilon[/itex].

    This expression can be written out in matrix form (shown below is just a 12X12 example) where A= attachment.php?attachmentid=38723&stc=1&d=1315695090.png

    Taking the inverse of A yields:

    The rows of A have a closed form solution:

    [itex]\Rightarrow d_{n}=\sum_{i=1}^{n}a(i)[/itex]

    This two can be expressed in a better way:

    I am trying to show that [itex] d(n) \leq M n^2 [/itex], but I have been having trouble show that this true.

    Attached Files:

  2. jcsd
  3. Sep 12, 2011 #2


    User Avatar
    Science Advisor
    Homework Helper

    Personally I would use a different approach to investigating the global error.

    The local error for a single step doesn't tell you much, because it assumes that all the "input" quantities are exact. But when you take the second step, that assumption is false.

    The idea of a global error estimate only really makes sense given some restrictions on the function you are integrating. I've never used Verlet integration for "real work" but I bet it is possible to invent an ODE where the error is order (1), or it even goes unstable, for any constant size step. But of course if you wanted to integrate such an equation. you wouldn't use Verlet...

    So, I would start by looking at the global behavior for a simple ODE, say x'' + x = 0.

    Any exact solution is a linear combination of the two independent solutions [itex]x = e^{i t}[/itex] and [itex]x = e^{-i t}[/itex], where the linear combination depends on the boundary conditions. (It's easier to work with complex solutions, even if in "real life" you are only interested in real solutions)

    To compare the exact solution with with the finite difference solution, write the FD equations in the form
    [tex]\left[ \begin{matrix} x_{i+1} \cr x_i \end{matrix}\right] = \left[ A \right]
    \left[\begin{matrix} x_i \cr x_{i-1} \cr \end{matrix}\right] [/tex]
    where A is a 2x2 matrix.

    [tex] A = \left[ \begin{matrix} 2-h^2 & -1 \cr 1 & 0 \end{matrix}\right] [/tex]

    The first row of A represents the FD scheme for the test equation (using the fact that x'' = -x), the second row just says [itex]x_i = x_i[/itex].

    Now, find the eigenvalues and vectors of A. They will represent two "basic solutions" of the FD scheme, which should be oscillating functions that tend to the solutions of the ODE in te limit as h goes to 0. The difference between the FD and ODE solutions will give you a measure of the global error.

    Hope that helps.
    Last edited: Sep 12, 2011
  4. Sep 15, 2011 #3
    My PI was able to find a reference for the 2nd order convergence, since the verlet algorithm can also be thought of as a version of the midpoint formula. The reference is from "An Introduction to Numerical Analysis, Second Edition" by Kendall E. Atkinson.

    Thanks for your help.
  5. Sep 15, 2011 #4


    User Avatar
    Science Advisor
    Homework Helper

    At first glance, I couldn't see the difference between the Verlet algorithm and what used to be called the Central Difference method - maybe that is now called the midpoint method?

    But I don't know much about Verlet except what it says in Wikipedia, and I don't believe everything I read there!
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook