Quick Start

Reproduce the first algebra checks for the fractional Chua case.

Step 1 - Install The Library

pip install -e .  # from the version_2 directory

Step 2 - Check Equilibria

import numpy as np
from hidden_attractors import chua_nonsmooth_parameters
from hidden_attractors.models import equilibria_nonsmooth, rhs_nonsmooth

params = chua_nonsmooth_parameters()
eq = equilibria_nonsmooth(params)

for name, point in eq.items():
    print(name, point, np.linalg.norm(rhs_nonsmooth(point, params)))

For the default Danca parameters, the output contains E0, E+, and E-; the outer coordinates start at +/-6.588307886539 and the residual norms are at floating-point zero.

Step 3 - Check Fractional Local Stability

import numpy as np
from hidden_attractors.models import jacobian_nonsmooth

q = 0.9998
threshold = q * np.pi / 2.0

for name in ("E0", "E+"):
    eigenvalues = np.linalg.eigvals(jacobian_nonsmooth(eq[name], params))
    margins = np.abs(np.angle(eigenvalues)) - threshold
    print(name, eigenvalues, np.all(margins > 0.0))

This reports the origin as locally stable and the outer equilibria as unstable under Matignon’s criterion.

Step 4 - Reproduce Harmonic Seeds

from hidden_attractors.seed_generation import find_harmonic_seed

for branch in (0, 1):
    seed = find_harmonic_seed(q=0.9998, branch_index=branch)
    print(branch + 1, seed.omega, seed.gain, seed.amplitude, seed.seed)

The two branches match the MATLAB validation after applying the documented transfer convention W_code = -W_report.

Step 5 - Generate Evidence Files

From version_2, generate the CSV, JSON, and Matignon figure for the completed algebra/Lur’e stages:

python tools/validation/validate_chua_fractional_nonsmooth_algebra.py

This command populates validation/01_algebra/, validation/02_lure_df/, and the partial validation manifest. It does not claim that integration, chaotic dynamics, or hiddenness have passed.

See Chua Non-Smooth for the recorded cross-tool results.