Complex Systems Summer School 2000

Dynamics Study via NodesApplet

Before coming to the summer school, I spent some time writing a simple program, NodesApplet.java, which simulates nodes tied together with elastic bands within a reflecting box with gravity.  Initially this was a simple "spring" simulation with linear elasticity .. i.e. the force between nodes was directly proportional to their separation.

The program was written simply to prepare for the school, getting back into Java programming, and emphasizing tools likely to be needed at the school such as animation, controler-model-view programming, threads, and simple GUI interactions.  Here is the source for the applet.
 

Complexification of Nodes

During the initial set of lectures, it occurred to me to use the Nodes program to take data, and to improve it a bit by specifically allowing for inverse square elasticity, rather than simple linear, spring-like behavior.

Then, after a  bit of conversation with Tom Carter at the school, I decided on two studies.  The first one would be of the inverse square force between three bodies, two of which were fixed in space.  This would be similar to two very massive bodies with a moon bouncing between them.  The second would be a similar study using the linear force.

Data was collected by letting the Applet run "locally" as an application (adding a "main()" procedure and a bit of additional support).  It then would be allowed to write data to local files.  The data collected was the x,y position of each non-fixed node, and their vx, vy velocity components.  Thus each node would have four associated data values.

The data was then run through GnuPlot for visualization.  The x,y points were plotted for the images below.  Phase space data could also be collected using the velocities, but that is not done here.
 

Inverse Square Forces

The inverse square run looks like the following, with two fixed nodes and one cycling node.
 
Click images for larger view
The resulting data is shown below.  The (yellow, labeled "2") node travels between two centers of gravity, the two red nodes labeled "1" and "2".  Note that even initially, after just 250 (left) and 500 (right) "frames" to the animation, there is little "regularity".  Very difficult to predict future patterns of evolution.
Click images for larger view
The next two images plot 1000 and 5000 animation frames, showing no regularity emerging.
The final images of 10,000 and 15,000 animation frames show a true "hair ball".

Linear Forces

I then switched to the linear mode.  Initially I tried using the same arrangement as before, with three bodies, one moving between two fixed ones.  The motion was really boring basically a repeating line between the two fixed nodes.  To attempt a more interesting version, I decided to toss in another interaction: two moving nodes that would interact with each other:

The initial 100 frames shown on the left below looked a bit hopeful, or at least interesting.  But the next image, at 250 frames, began to show a repeating pattern, complicated but not at all unpredictable.
The next plots, of 500 and 1,000 frames respectively, confirmed the suspicion: a regular, if not simple, pattern is emerging of a repeating orbit around the two stable nodes and the other moving one.
Further plots (5,000 and 20,000) show the eventual regular "ball of twine" pattern.

Analysis of Data

The next question was whether or not there is a way to analyze the inverse square data set for some sort of measure of whether it is "formally" chaotic.  Tom pointed me to the book pictured on the left, "Analysis of Observed Chaotic Data" by Henry Abarbanel.

The book suggests calculating the Lyapunov exponent.  I was a bit surprised at that, because my understanding was that I would need to re-take the data sets, each with tiny differences in the input parameters, and calculate the divergence in eventual positions.

It turns out that, as mentioned in the dynamics lectures, you can use a single measure to deduce the other behaviors of the system.

Alas, I did not have sufficient time to fully understand the technique.  It involves a "phase space" reconstruction using the x, y data values, thus converting from a 2D space to one of appropriately higher dimension.  Unfortunately, there is "art" to this, and I could not find a rote method to blindly calculate the Lyapunov exponent.
Interestingly enough, I did find a company, "Applied Nonlinear Sciences, LLC", who's logo I show to the right, which will sell you the software needed to implement all of the techniques in the Abarbanel book!  Apparently this is not such an odd thing to have to do .. understand the degree of chaotic behavior within a data set.  The key interest is then using that knowledge to apply controls to the system.