Introducción
Este laboratorio es un tutorial paso a paso para trazar el "Flujo no periódico determinista" de Edward Lorenz de 1963 en un espacio tridimensional utilizando mplot3d. Utilizaremos Python y Matplotlib, que es una biblioteca de trazado para el lenguaje de programación Python.
Consejos para la MV
Después de que la máquina virtual (VM) haya terminado de iniciarse, haz clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.
A veces, es posible que debas esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si encuentras problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona comentarios después de la sesión y resolveremos rápidamente el problema para ti.
Importar bibliotecas
Comenzamos importando las bibliotecas necesarias: Matplotlib y NumPy.
import matplotlib.pyplot as plt
import numpy as np
Definir la función de Lorenz
Definimos la función de Lorenz, que toma tres parámetros y devuelve una matriz de tres valores. Utilizamos los valores predeterminados s = 10, r = 28 y b = 2.667 para los parámetros de Lorenz.
def lorenz(xyz, *, s=10, r=28, b=2.667):
"""
Parámetros
----------
xyz : similar a una matriz, forma (3,)
Punto de interés en el espacio tridimensional.
s, r, b : float
Parámetros que definen el atractor de Lorenz.
Devuelve
-------
xyz_dot : matriz, forma (3,)
Valores de las derivadas parciales del atractor de Lorenz en *xyz*.
"""
x, y, z = xyz
x_dot = s*(y - x)
y_dot = r*x - y - x*z
z_dot = x*y - b*z
return np.array([x_dot, y_dot, z_dot])
Configurar los parámetros iniciales
Configuramos los parámetros iniciales para la simulación, incluyendo el paso de tiempo dt, el número de pasos num_steps y los valores iniciales para x, y y z.
dt = 0.01
num_steps = 10000
xyzs = np.empty((num_steps + 1, 3)) ## Need one more for the initial values
xyzs[0] = (0., 1., 1.05) ## Set initial values
Calcular el atractor de Lorenz
Calculamos el atractor de Lorenz avanzando en el tiempo y estimando el siguiente punto utilizando el punto anterior y la función de Lorenz.
for i in range(num_steps):
xyzs[i + 1] = xyzs[i] + lorenz(xyzs[i]) * dt
Graficar el atractor de Lorenz
Graficamos el atractor de Lorenz utilizando el módulo mplot3d de Matplotlib.
ax = plt.figure().add_subplot(projection='3d')
ax.plot(*xyzs.T, lw=0.5)
ax.set_xlabel("Eje X")
ax.set_ylabel("Eje Y")
ax.set_zlabel("Eje Z")
ax.set_title("Atractor de Lorenz")
plt.show()
Resumen
En este tutorial, aprendimos cómo graficar el atractor de Lorenz utilizando Python y Matplotlib. Definimos la función de Lorenz, configuramos los parámetros iniciales, calculamos el atractor de Lorenz y lo graficamos utilizando el módulo mplot3d de Matplotlib.