Sphere Controls

Probe equilibrium-neighborhood initial conditions on spheres and record whether they enter target-attractor basins.

The Sphere Controls workflow is designed to probe initial conditions in the immediate neighborhood of a system’s equilibria. By sampling initial seeds on concentric spheres of decreasing radii around each equilibrium point, the workflow checks if trajectories converge to a known attractor (self-excited) or if they diverge or converge elsewhere, helping mathematically classify the attractor’s hiddenness.

Concept & Methodology

For each equilibrium point EiE_i of a system:

  1. Define concentric spheres of radius R=[102,103,104,]R = [10^{-2}, 10^{-3}, 10^{-4}, \dots].
  2. Uniformly or directionally sample initial conditions (x0,y0,z0)(x_0, y_0, z_0) on these spheres.
  3. Integrate each starting coordinate using the selected solver (e.g., EFORKSolver or ABMSolver).
  4. Monitor whether trajectories escape the neighborhood or fall back into the stable/unstable manifolds. If all trajectories from the neighborhood of all equilibria converge to separate target attractors (or infinity) rather than the candidate attractor, the candidate qualifies as a hidden attractor.

Usage via CLI

You can run the sphere controls workflow directly from the command line:

# Get help and options
hidden-attractors-sphere-controls --help

# Execute sphere controls on the non-smooth Chua model
python tools/cli/lure_top3_sphere_robustness.py --system chua-nonsmooth --radii 1e-3,1e-4 --samples 10

Python API Usage

You can also use this workflow directly inside your Python research scripts:

from hidden_attractors import get_system
from hidden_attractors.workflows.sphere_controls import run_integer_lure_hiddenness_controls

system = get_system("chua-nonsmooth")

# Run controls on a given reference trajectory
probes = run_integer_lure_hiddenness_controls(
    system,
    trajectory,
    radii=(1.0e-4, 1.0e-5),
    samples_per_radius=10,
    t_final=50.0,
    h=0.01
)