I'm working on a parameter study of Duffing's equation

$\ddot x + \delta \dot x + \alpha x + \beta x^3 = \gamma \cos{\omega t},$

where $\delta, \alpha, \beta, \gamma$ and $\omega$ are real parameters and $\dot x := dx/dt$. Substituting $x \rightarrow u, \dot x\rightarrow v$ in the usual manner, the idea is to integrate the system

$\dot u = v$,
$\dot v = \gamma \cos{\omega t} - \delta v - \alpha u - \beta u^3$

using the fourth order Runge-Kutta method. I've chosen this pretty much because it's standard. My questions are:

1) How do I determine whether this method is at all applicable to the problem? Is the problem stiff, and should I choose a different method?

This of course is complicated by the fact that Duffing's equation doesn't have an analytical solution for most parameters.

2) How do I determine what step size to use - ie. how is the error resulting from a given step size estimated? (I would very much like to avoid implementing an adaptive step size.)

Being pointed towrads good references will be much appreciated! Best regards, \T


2 Answers 2


You can apply linear stability analysis. That is, for given $u=(x,v)$ compute the linearization $Df(u)$ of the right hand side if the equation is $u‘=f(u)$. The problem is stiff if those differ by orders of magnitude. At a glance, I would not expect this.

You can determine a good step size by running the problem again with half the size. If the results are close, you are done. How close represents on your requirements. Or you use an embedded method like Dormand-Prince to estimate the local error. This is also ode45 in Matlab.


These are all standard questions discussed in most books on ODE solvers. I would recommend Hairer & Wanner.

  • $\begingroup$ Thanks! I'll accept this answer in due time if no-one does more than point to references. $\endgroup$
    – trolle3000
    Jul 12, 2013 at 17:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.