ABM Solver

Adams-Bashforth-Moulton predictor-corrector for fractional systems.

The Adams-Bashforth-Moulton (ABM) method is a standard, highly accurate predictor-corrector numerical scheme for solving fractional differential equations.

When to use ABM

While EFORK is fast and excellent for large sweeps, the ABM method provides superior accuracy over extremely long integration times. If you have located a hidden candidate with EFORK and want to verify its structure rigorously, or if you need to compute precise Lyapunov exponents, you should use the ABMSolver.

Because it evaluates the RHS function twice per step (once for the prediction, once for the correction), it is inherently slower than the explicit EFORK method.

Usage

The interface is identical to EFORKSolver:

from hidden_attractors.solvers import ABMSolver
from hidden_attractors.models import rhs_nonsmooth, chua_nonsmooth_parameters

params = chua_nonsmooth_parameters()

solver = ABMSolver(
    rhs=lambda x, t: rhs_nonsmooth(x, params),
    q=0.98,          # Fractional order
    dt=0.01,         # Integration time step
    memory=500       # Memory window
)

x0 = [0.1, 0.0, 0.0]
t_span = (0.0, 100.0)

t, x = solver.integrate(x0, t_span)

Supported Features

Like EFORK, the ABM solver supports:

  • Batch Processing: Pass a 2D array of initial conditions to integrate multiple trajectories simultaneously.
  • C Backend Acceleration: Automatically compiles a C/OpenMP backend for massive speedups.
  • Sliding Memory: Uses a truncated history window to prevent memory overflows during long simulations.