Skip to content

emiliamacek/roessler-system-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rössler System Analysis

A containerized, interactive CLI toolset for the rigorous numerical analysis of chaotic attractors.

C++ Python Docker

This project maps periodic windows within the Rössler system. To mitigate the compounding floating-point errors inherent in standard chaotic simulations, the environment utilizes the Interval Newton Method to rigorously prove the exact lower bounds of these windows, paired with Maximum Lyapunov Exponents to numerically estimate their upper limits.

image

Mathematical Methodology & Algorithms

  • Rigorous Numerics (Interval Arithmetic): Utilizes the CAPD (Computer Assisted Proofs in Dynamics) library. All state variables and operations are represented as strict intervals, ensuring that true mathematical trajectories remain strictly bounded and immune to floating-point approximation errors.
  • Dimensionality Reduction: Defines a Poincaré section on the half-plane $\Pi={x=0, y<0}$ to reduce the 3D continuous differential equations into a 2D discrete map. This optimizes the computational tracking of periodic orbits and structures.
  • Computer-Assisted Proofs (Lower Bounds): Rigorously proves the existence and uniqueness of stable $p$-periodic orbits by implementing the Interval Newton Method.
    • The Mathematical Operator: For a given candidate root $x_0$ and a surrounding interval bounding box $X$, the system computes the Interval Newton Operator: $N(x_0, X) = -[Df(X)]^{-1}f(x_0) + x_0$, where $[Df(X)]$ is the interval enclosure of the Jacobian matrix of the displacement function $f(x) = P^{p}(x) - x$ (computed as $[DP^{p}(X)] - I$).
    • Topological Verification: The algorithm evaluates this operator against the initial bounding box. If the condition $N(x_0, X) \subset X$ is satisfied, it provides a strict mathematical guarantee that exactly one unique root $x^{*}$ exists within that box ($f(x^{*}) = 0$).
    • Algorithmic Implementation: The C++ engine first uses a standard while-loop to numerically approximate the fixed point of $p$-th iterate of the Poincaré map. It then defines a strict interval box around this guess and applies the Interval Newton Operator. If the resulting interval is strictly contained within the interior of the initial box, the algorithm successfully proves the existence of the periodic orbit without any numerical ambiguity.

Requirements

  • Docker (Handles g++ 15, OpenMP, GMP, MPFR, and compiles the CAPD 6.0.0 library from source. It also provides a fully containerized Python3 environment with numpy, scipy, pandas, and matplotlib pre-installed for visualization).

Build Instructions

1. Build the Docker Image

In the root directory of the project run:

docker build -t roessler-app .
2. Start the Interactive Environment

The volume mount (-v) ensures any CSV data generated by the C++ programs is saved directly to your local output/ folder

docker run -it --rm -v $(pwd):/app roessler-app
3. Compile and Execute (Inside Docker)
make

Run

All core programs feature dynamic, interactive CLI menus that allow you to tweak initial conditions, precision tolerances, and scan resolutions without changing code by hand.

./poincare-bifurcation-diagram
./lower-bound
./upper-bound

Visualizing the Data

Run the visualization scripts inside the running Docker terminal. The resulting plots will be saved and accessible in your local /images/ directory.

cd py
python3 file_name.py

Note: Preview images can be found under /images-preview/.

Code Navigation

  • /src/utils.cpp

Core implementation of functions related to the Poincaré map and the Rössler system integration.

  • /src/lower-bound.cpp

Interactive CLI tool for calculating the rigorous lower bound of periodic windows using interval arithmetic (bisection method).

  • /src/upper-bound.cpp

Interactive CLI tool for calculating the upper bound of periodic windows by tracking Lyapunov exponents.

  • /src/poincare-bifurcation-diagram.cpp

Interactive CLI generator for Poincare map data. Allows custom resolution overrides and point targeting.

Performance

All procedures were tested on a machine running Arch Linux (kernel 6.15.2), equipped with an AMD Ryzen 5 5600 processor (6 cores / 12 threads, clock speed up to 4.47 GHz) and 32 GB of RAM.

About

Interactive CLI toolset for the analysis of periodic windows in the Rössler system using Interval Newton's method and Lyapunov exponents.

Topics

Resources

License

Stars

Watchers

Forks

Contributors