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. |
 |