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:
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 rewrittent 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:
with
The jacobian of this function can be expressed analytically:
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 gemseo.problems.ode.van_der_pol.VanDerPol(initial_time=0, final_time=0.5, mu=1000.0, use_jacobian=True, state_vector=None)[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.
initial_time (float) –
The start of the integration interval.
By default it is set to 0.
final_time (float) –
The end of the integration interval.
By default it is set to 0.5.
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_vector (NDArray[float]) – The state vector of the system.
- initial_state: NDArray[float]
The initial conditions \((t_0,s_0)\) of the ODE.
- jac: Callable[[NDArray[float], NDArray[float]], NDArray[float]]
The Jacobian function of the right-hand side of the ODE.
- result: ODEResult
The result of the ODE problem.
- state_vect: NDArray[float]
State vector \(s=(x, \dot{x})\) of the system.
- time_vector: NDArray[float]
The times at which the solution should be evaluated.
Examples using VanDerPol¶
Solve an ODE: the Van der Pol problem