Last edited 12dec13 by

Flows with Strange Attractors

by Shunhua (Sam) Fu


The notion of flow describes a system that changes with time. Mathematically, flows can be described by dynamical systems, which can be defined by differential equations or recurrence equations. Mathematicians have long been interested in a class of dynamical systems called strange attractors, in which systems evolve toward defined shapes with fractal structures. My project visualizes flow by showing various strange attractors and how they change with time. Dozens of randomly plotted points over time asymptotically converge toward a stable structure. I investigated 10 such dynamical systems in total.

What is Flow?

A nice analogy for flow is a river. A river obviously flows, right? How can we tell? We can look at the water moving over time. But what if we couldn't see the water? How could we tell whether this invisible river flows? We could drop a cork into the river. The cork would move along the river and create a path over time. But this one cork's trajectory can't tell us much about the river as a whole. But what if we dropped dozens of random corks into the river? They would trace the movement of the river. We would be able to see that the river is flowing without ever needing to see the water.

Now let us relate this analogy to my project. The river is a metaphor for 3-space. If we define differential equations or recurrence equations for the flow in this geometric space, we are setting the rules for the motion of the invisible water. Then, by randomly generating points and plotting them over time, we can visualize the flow of the system.

There is a certain type of dynamical system that is very peculiar. These systems asymptotically evolve toward semi-stable structures with certain physical properties, as if attracted by some force. When these attractors manifest a fractal structure, they are known as "strange attractors." In our river analogy, a strange attractor would be a whirlpool. The corks we drop in would be "attracted" by this whirlpool and converge upon its shape. By taking a look at how the corks move, we can see the shape of the river and whirlpool, even though we cannot see the water directly.

The Math Behind It All

All of the strange attractors I investigated were defined by either differential equations or recurrence equations. I solved these equations to obtain computationally simple formulas for finding the next coordinate in the system. I go over the process in all its gory details in my documentation.

Different starting points in the system will have trajectories that all converge upon the attractor as they evolve, hence the term attractor. If the system is graphed in real time for multiple starting points, we can observe what is described in chaos theory as "the butterfly effect." This is the flow you are looking for.

The Attractors

I will introduce to you 10 very attractive dynamical systems. More complete details can be found in the documentation.

The Lorenz Strange Attractor

dx/dt = σ(y - x)
dy/dt = x(ρ - z) - y
dz/dt = xy - βz

Rössler Attractor

dx/dt = - y - z
dy/dt = x + ay
dz/dt = b + z(x - c)

Hénon Map

xn+1 = yn + 1 - axn2
yn+1 = bxn

Chua's Attractor (Double Scroll Attractor)

dx/dt = α(y - x - f(x))
dy/dt = x - y + z
dz/dt = - βy
f(x) = m1x + (m0-m1)/2 * |x+1| - |x-1|)

Liénard-Van der Pol Oscillator

dx/dt = y
dy/dt = μ(1 - x2)y - x

Rabinovich-Fabrikant System

dx/dt = y(z - 1 + x2) + γx
dy/dt = x(3z + 1 - x2) + γy
dz/dt = - 2z(α + xy)

Tinkerbell Map

xn+1 = xn2 - yn2 + axn + byn
yn+1 = 2xnyn + cxn + dyn

Ikeda Map

xn+1 = 1 + u(xncos(tn) - ynsin(tn))
yn+1 = u(xnsin(tn) + yncos(tn))
tn = 0.4 - 6/(1 + xn2 + yn2)

Rainey Dynamical System

dx/dt = yz
dy/dt = xz
dz/dt = xy

Fu Attractor

dx/dt = α(y + x)/z
dy/dt = x(β - x - y - z)
dz/dt = xyz/γ

The Project

This was my first version of the Lorenz Attractor that I made as a proof-of-concept. Slider bars allow you to change the values of σ, ρ, and β. This does not show flow yet; I am simply graphing a trajectory.

This was the second version of my Lorenz Attractor. At this point, it was still very much a work in progress, and it was made as a secondary proof-of-concept. It visualizes flow by plotting the paths of multiple starting points over time using the HTML5 Canvas renderer. Unfortunately, this renderer was not made for such computationally heavy 3D graphics, so it gets very laggy after a while (~1000 particles).

This is my final project. It uses the WebGL renderer to plot 10 different strange attractors/dynamical systems. I recommend viewing in a Chrome browser, as they have very nice JavaScript interpreters. If you're interested in how I implemented my project, please take a look at my documentation.