InteractiveChaos: Absurdly fast, general-purpose applications for dynamical systems

(there was a post about this in the past, but its now a full fledged package)

Mandatory eye-candy to get your attention:


InteractiveChaos.jl is a Julia package that builds on top of the packages of JuliaDynamics to create interactive applications for dynamical systems. It is written exclusively in Makie and MakieLayout, so huge shout-out to Julius Krumbiegel for making the astonishing MakieLayout, which I hope some day will completely replace everything 2D in Makie. Shoutout to Simon and Anshul as well for helping me figure Observable things.

The combination of the following properties make InteractiveChaos.jl a truly unique software, that doesn’t exist within any other programming language. At least, I have not seen anything like it anywhere else (so correct me if you know something like it):

  • General purpose. There are thousands “logistic map orbit diagrams” applications in our world. Yet, there is not a single one that can work for any dynamical system. Arguably the most unique feature of InteractiveChaos is that every application it offers works for any dynamical system (for the class it targets). The first video here works for any billiard, the second video works for any discrete map, the third video works for any continuous system.

  • Absurdly fast. I am truly surprised at what speed Julia+Makie can do things. To demonstrate, simply focus on the second video. Let r = the product of n, t, d. A dynamical system is evolved for r steps, and r points are plotted on the screen instantly. This is crazy!

  • Real data at real time Everything that is plotted is “real”. For example, many “orbit diagram plotters” don’t actually plot an orbit diagram. Instead, they only plot pixels where an orbit diagram may exist. That is not the case here, the true orbit diagram is plotted (which means that the alpha value is actually the value of the natural density). In addition, everything is computed in real-time, nothing is pre-calculated. So, e.g. the billiard application can run for infinite time.

  • Interfaces software for dynamical systems. There is no implementation for what is a “billiard” or a “continuous system” in InteractiveChaos. Instead, it interfaces high quality software from JuliaDynamics. This means that you can re-use the system that you analyze scientifically and explore it interactively.

  • Small source code The entire source code for e.g. the orbit diagram plot is 200 lines of code, all very clear to understand, allowing one to expand the existing apps to more specialized ones.

I will be using these applications in my lectures about nonlinear dynamics and chaos. Hope you have fun with them!

41 Likes

Ah, if you like it please give me stars! They feed my soul! https://github.com/JuliaDynamics/InteractiveChaos.jl

1 Like

Looks awesome! Here’s a fun use case for this kind of thing: Jupiter Europa trajectory design

Fantastic work as always, George!
I often have implemented bits and pieces, but somehow you manage to put it together into a fully-functional, well-oiled, beautiful, well-documented whole!

2 Likes

By the way, I don’t see in the docs where the actual code is that I can copy and paste to run those simulations.

The code that I run to make the videos is in the examples folder of the repo. I say this in the introduction page in a “info” block. But maybe its better to also have some code snippets in the individual pages… I decided to not do it, because its really hard to maintain, since I can’t actually run this code on travis (which is what I do with all other packages), but maybe its worth the effort.

Thanks a lot!!!

1 Like

Can you maybe put a link just below each video on the corresponding doc page to the corresponding file in the examples directory?

This looks pretty awesome!

A minor feedback on the docs: The video shown in the introduction page makes me quite dizzy (likewise in the README.md) when I look at it so it makes it quite hard to read the intro page. Might be worth considering slowing it down or running it only for one cycle. But maybe it’s just me.

1 Like