I have a situation where I'm interested in solving the same ODE many times, from different initial locations. More precisely, I'm interested in solving an ODE of the form

\begin{align} \frac{dx}{dt} &= f(x) \\ x(0) &= a \in \mathbb{R}^n \end{align}

where I know that this ODE has a $T$-periodic orbit $\mathcal{A}$, i.e for $a \in \mathcal{A}$, we have that

\begin{align} x(0) &= a \implies x(T) = a \end{align}

My problem is such that at each iteration $k$, I am given a point $a_k \in \mathcal{A}$, and need to output where the ODE takes $a_k$ after time $t$, i.e.

\begin{align} \frac{dx}{dt} &= f(x) \\ x(0) &= a_k \\ \implies b_k &\triangleq x(t) \end{align}

and I want to report $b_k$.

My question is: is there a better way of doing this than using an ODE solver at every step $k$? For example, if possible, I would prefer to incur a one-off cost at the start of my algorithm which allows me to map directly from $a_k$ to $b_k$, rather than having to repeatedly solve the same problem.

Additional details:

The system I'm interested in is a two-dimensional Hamiltonian system, given in coordinates as

\begin{align} \frac{dq}{dt} &= |p|^{\alpha - 1} \cdot \text{sign} (p) \\ \frac{dp}{dt} &= -|q|^{\beta - 1} \cdot \text{sign} (q) \end{align}

where $\alpha, \beta > 1$ such that $1/\alpha + 1/\beta = 1$.

The standard integrator for such systems is the leapfrog integrator, which I would use if I was solving for a single trajectory. As written, the system is non-smooth - I would rather not worry about that right now, and if it makes the question easier to answer, please feel free to assume that everything involved is smooth.

When $\alpha = \beta = 2$ things are much easier, and I can handle this situation fine - I'm asking about the other cases.

  • 1
    $\begingroup$ Is your right-hand-side always the same? $\endgroup$
    – nicoguaro
    Aug 20 '18 at 21:26
  • $\begingroup$ @nicoguaro Yep! Just the starting point changes. Even the amount of time I want to solve the equations over is constant. $\endgroup$
    – πr8
    Aug 20 '18 at 22:03
  • 1
    $\begingroup$ I just realized that you equation is nonlinear. Do you have the form of $f(x)$? $\endgroup$
    – nicoguaro
    Aug 20 '18 at 22:20
  • $\begingroup$ @nicoguaro explained more at bottom of post $\endgroup$
    – πr8
    Aug 20 '18 at 23:07
  • 1
    $\begingroup$ Since all your starting points lie on the same orbit, can't you just compute one orbit and interpolate to get all the values you need? $\endgroup$ Aug 21 '18 at 6:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.