Atractor de Lorenz

El atractor de Lorenz, con valores b = 28, a = 10, c = 8/3
Proyección de un atractor de Lorenz tridimensional

El atractor de Lorenz es un concepto introducido por Edward Lorenz en 1963. Se trata de un sistema dinámico determinista tridimensional no lineal derivado de las ecuaciones simplificadas de rollos de convección que se producen en las ecuaciones dinámicas de la atmósfera terrestre.

Para ciertos valores de los parámetros a, b, c, el sistema exhibe un comportamiento caótico y muestra lo que actualmente se llama un atractor extraño; esto fue probado por Warwick Tucker en 2002.[1]​ El atractor extraño en este caso es un fractal de dimensión de Hausdorff entre 2 y 3. Grassberger (1983) ha estimado la dimensión de Hausdorff en 2,06 ± 0,01 y la dimensión de correlación en 2,05 ± 0,01.

El sistema aparece en láseres, en generadores eléctricos y en determinadas ruedas de agua.[2]

d x d t = a ( y x ) {\displaystyle {\frac {dx}{dt}}=a(y-x)}
d y d t = x ( b z ) y {\displaystyle {\frac {dy}{dt}}=x(b-z)-y}
d z d t = x y c z {\displaystyle {\frac {dz}{dt}}=xy-cz}

donde a es llamado el número de Prandtl y b se llama el número de Rayleigh.

a , b , c > 0 {\displaystyle a,b,c>0} , pero es usualmente a = 10 {\displaystyle a=10} , c = 8 / 3 {\displaystyle c=8/3} y b es variado. El sistema exhibe un comportamiento caótico para b = 28 {\displaystyle b=28} pero muestra órbitas periódicas para otros valores de b; por ejemplo, con b = 99 , 96 {\displaystyle b=99,96} se convierte en un nudo tórico llamado T(3;2).

La forma de mariposa del atractor de Lorenz puede haber inspirado el nombre del efecto mariposa en la teoría del caos.

Análisis

Simulación hecha en Julia.

Simulación en Julia

using Plots
# define the Lorenz attractor
@kwdef mutable struct Lorenz
    dt::Float64 = 0.02
    σ::Float64 = 10
    ρ::Float64 = 28
    β::Float64 = 8/3
    x::Float64 = 2
    y::Float64 = 1
    z::Float64 = 1
end

function step!(l::Lorenz)
    dx = l.σ * (l.y - l.x);         l.x += l.dt * dx
    dy = l.x * (l.ρ - l.z) - l.y;   l.y += l.dt * dy
    dz = l.x * l.y - l.β * l.z;     l.z += l.dt * dz
end

attractor = Lorenz()

# initialize a 3D plot with 1 empty series
plt = plot3d(
    1,
    xlim = (-30, 30),
    ylim = (-30, 30),
    zlim = (0, 60),
    title = "Lorenz Attractor",
    marker = 2,
)

# build an animated gif by pushing new points to the plot, saving every 10th frame
@gif for i=1:1500
    step!(attractor)
    push!(plt, attractor.x, attractor.y, attractor.z)
end every 10

Simulación en MATLAB

% Resolver para el intervalo de tiempo [0,100] con condiciones iniciales [1,1,1]
% ''f'' es un conjunto de ecuaciones diferenciales
% ''a'' es un arreglo que contiene variables x, y, z
% ''t'' es la variable de tiempo

sigma = 10;
beta = 8/3;
rho = 28;
f = @(t,a) [-sigma*a(1) + sigma*a(2); rho*a(1) - a(2) - a(1)*a(3); -beta*a(3) + a(1)*a(2)];
[t,a] = ode45(f,[0 100],[1 1 1]);     % Solución de EDO de Runge-Kutta de 4.º/5.º orden
plot3(a(:,1),a(:,2),a(:,3))

Simulación en Python

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from mpl_toolkits.mplot3d import Axes3D

rho = 28.0
sigma = 10.0
beta = 8.0 / 3.0

def f(state, t):
    x, y, z = state  # Desempaqueta el vector de estado
    return sigma * (y - x), x * (rho - z) - y, x * y - beta * z  # Derivadas

state0 = [1.0, 1.0, 1.0]
t = np.arange(0.0, 40.0, 0.01)

states = odeint(f, state0, t)

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot(states[:, 0], states[:, 1], states[:, 2])
plt.show()
Simulación del Sistema de Lorenz en R
Simulación en R

Simulación en R

library(deSolve)
library(plotly)
# parámetros:
#  en el texto:   a          b          c
prm <-  list(   sigma = 10, rho = 28, beta = 8/3   ) 
# valores iniciales
varini <- c(
  X = 1,
  Y = 1, 
  Z = 1
)

Lorenz <- function (t, vars, prm) {
  with(as.list(vars), {
    dX <- prm$sigma*(Y - X)
    dY <- X*(prm$rho - Z) - Y
    dZ <- X*Y - prm$beta*Z
    return(list(c(dX, dY, dZ)))
   })
}

times <- seq(from = 0, to = 100, by = 0.01)
# llamado del resolvedor de ecuaciones diferenciales ordinarias (ode)
out <- ode(y = varini, times = times, func = Lorenz,
           parms = prm)

# para asignarle color a los puntos:
gfill <- function (repArr, long) {
  rep(repArr, ceiling(long/length(repArr)))[1:long]
}

dout <- as.data.frame(out)

dout$color <- gfill(rainbow(10), nrow(dout))

# Producción de la gráfica con Plotly:
plot_ly(
  data=dout, x = ~X, y = ~Y, z = ~Z,
  type = 'scatter3d', mode = 'lines',
  opacity = 1, line = list(width = 6, color = ~color, reverscale = FALSE)
)

Véase también

Referencias

  1. Tucker (2002)
  2. The Lorenzian Waterwheel

Bibliografía

  • Lorenz, E. N. (1963). «Deterministic nonperiodic flow». J. Atmos. Sci. 20 p. 130-141. 
  • Frøyland, J., Alfsen, K. H. (1984). «Lyapunov-exponent spectra for the Lorenz model». Phys. Rev. A. 29 p. 2928–2931. 
  • Strogatz, Steven H. (1994). Perseus publishing, ed. Nonlinear Systems and Chaos. 
  • Jonas Bergman, Knots in the Lorentz system, Undergraduate thesis, Uppsala University 2004.
  • P. Grassberger and I. Procaccia (1983). «Measuring the strangeness of strange attractors». Physica D. 9 p. 189-208. 10.1016/0167-2789(83)90298-1. 
  • Tucker, Warwick (2002). «A Rigorous ODE Solver and Smale's 14th Problem». Foundations of Computational Mathematics 2 (1): 53-117. doi:10.1007/s002080010018. 

Enlaces externos

  • Wikimedia Commons alberga una categoría multimedia sobre Atractor de Lorenz.
  • Weisstein, Eric W. «Lorenz Attractor». En Weisstein, Eric W, ed. MathWorld (en inglés). Wolfram Research. 
  • Lorenz Equation planetmath.org
  • Levitated.net: computational art and design
  • 3D VRML Lorenz Attractor (you need a VRML viewer plugin)
  • Teoría del Caos por Pedro José Morales Correas
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q899844
  • Commonscat Multimedia: Lorenz attractors / Q899844

  • Identificadores
  • BNF: 12373492q (data)
  • GND: 4625232-0
  • LCCN: sh85078402
  • NLI: 987007536145505171
  • SUDOC: 032770197
  • Wd Datos: Q899844
  • Commonscat Multimedia: Lorenz attractors / Q899844