gemseo.problems.ode.van_der_pol module#

The Van der Pol (VDP) problem describing an oscillator with non-linear damping.

Van der Pol, B. & Van Der Mark, J. Frequency Demultiplication. Nature 120, 363-364 (1927).

The Van der Pol problem is written as follows:

\[\frac{d^2 x(t)}{dt^2} - \mu (1-x(t)^2) \frac{dx(t)}{dt} + x = 0\]

where \(x(t)\) is the position coordinate as a function of time, and \(\mu\) is a scalar parameter indicating the stiffness.

This problem can be rewritten in a 2-dimensional form with only first-order derivatives. Let \(y = \frac{dx}{dt}\) and \(s = \begin{pmatrix}x\\y\end{pmatrix}\). Then the Van der Pol problem is:

\[\frac{ds}{dt} = f(s, t)\]

with

\[\begin{split}f : s = \begin{pmatrix} x \\ y \end{pmatrix} \mapsto \begin{pmatrix} y \\ \mu (1-x^2) y - x \end{pmatrix}\end{split}\]

The jacobian of this function can be expressed analytically:

\[\begin{split}\mathrm{Jac}\, f = \begin{pmatrix} 0 & 1 \\ -2\mu xy - 1 & \mu (1 - x^2) \end{pmatrix}\end{split}\]

There is no exact solution to the Van der Pol oscillator problem in terms of known tabulated functions (see Panayotounakos et al., On the Lack of Analytic Solutions of the Van Der Pol Oscillator. ZAMM 83, nᵒ 9 (1 septembre 2003)).

class VanDerPol(mu=1000.0, use_jacobian=True, state=(0.0, 0.0), times=(0.0, 0.5))[source]#

Bases: ODEProblem

Representation of an oscillator with non-linear damping.

Parameters:
  • mu (float) --

    The stiffness parameter.

    By default it is set to 1000.0.

  • use_jacobian (bool) --

    Whether to use the analytical expression of the Jacobian. If False, use finite differences to estimate the Jacobian.

    By default it is set to True.

  • state (tuple[float, float]) --

    The state vector of the system.

    By default it is set to (0.0, 0.0).

  • times (ArrayLike) --

    The initial and final times.

    By default it is set to (0.0, 0.5).