Lorenz Attractor

My salutation to Edward Lorenz, the founder of Chaos Theory. These graphs are generated through Python and SciPy. Try dumping the following codes into the IPython and have fun changing the view of the Lorenz attactor.

Lorenz attractor.
Lorenz attractor.
Lorenz attractor.
Lorenz attractor – YZ view.
Lorenz attractor.
Lorenz attractor – side view.

The following is my Python source code.

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
import scipy
fig = plt.figure()
ax = Axes3D(fig)
#
def lorenz_int(initial, t):
  x = initial[0]
  y = initial[1]
  z = initial[2]
  #
  sigma = 10
  rho = 28
  beta = 8.0/3
  x_dot = sigma * (y - x)
  y_dot = x * (rho -z) - y
  z_dot = x * y - beta* z
  return [x_dot, y_dot, z_dot]
#
initial = [0, 1, 1.05]
t = scipy.arange(0, 100, 0.01)
lorenz_sol = odeint(lorenz_int, initial, t)
x = [i[0] for i in lorenz_sol]
y = [i[1] for i in lorenz_sol]
z = [i[2] for i in lorenz_sol]
#
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
ax.plot(x, y, z, label="lorenz" )
ax.legend()
plt.show()
Advertisement

4 thoughts on “Lorenz Attractor

  1. Hi! Thanks a lot for posting this. Seeing an example of scipy’s DE solver in action was very useful for me in understanding the syntax of that (rather important) function. It is good to have such a clear demonstration 3D plotting as well. And a very excellent topic, of course 🙂

    I used code that I adapted from this in a recent article, in which I explain why Lorenz’s discovery of extreme sensitivity to initial conditions doesn’t mean doom for climate modelling. The article is available: http://topologicoceans.wordpress.com/2011/08/30/did-chaos-theory-kill-the-climatology-star/

    My adaptations were primarily modularization; I separated defining the DE, solving it, and plotting it – this modularization allowed me to do things like generate a number of very similar initial conditions to get an ensemble of simulations and iterate over a number of values of rho values.
    Take care!
    Charlie

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s