gaioguys / GAIO.jl

A Julia package for set oriented computations.
MIT License
9 stars 4 forks source link

DynamicalSystems extension #108

Closed April-Hannah-Lena closed 8 months ago

April-Hannah-Lena commented 9 months ago

This is a very naive extension to add compatibility for DynamicalSystem types. This would make using GAIO.jl an easy addition to a julia dynamical system analysis pipeline, and allow one to use the integrators from DifferentialEquaitons.jl. This implementation is highly inefficient. Unfortunately there is a ton of overhead within DifferentialEquations, so I don't know if it's even possible to make an efficient implementation. I'll keep trying some things.

April-Hannah-Lena commented 8 months ago

Ok so I've reduced the performance difference down to ~2x with comparable memory use. The benchmark file is added to the repo for reproducibility; here are the results:

Lorenz system: mapping a box covering a nonzero equillibrium Screenshot from 2024-01-09 14-30-38 (top: hardcoded RK4, middle: using DynamicalSystems, bottom: Using DifferentialEquations)

Henon system: computing the relative attractor Screenshot from 2024-01-09 14-27-30 (top: Simply using the map, bottom: using DynamicalSystems)

I'll add some info about using DynamicalSystems into the docs, then this PR will be ready.

gaioguy commented 8 months ago

Ok, awesome. This seems to be ready, so can I merge it?

April-Hannah-Lena commented 8 months ago

Alright, it is now ready to merge. I just wanted to test the PR on a GPU first, tests indeed pass.