stringtranslate.com

Modelo Lorenz 96

El modelo de Lorenz 96 es un sistema dinámico formulado por Edward Lorenz en 1996. [1] Se define de la siguiente manera. Para :

donde se supone que y y . Aquí está el estado del sistema y es una constante de fuerza. es un valor común que se sabe que causa un comportamiento caótico.

Se utiliza comúnmente como un problema modelo en la asimilación de datos . [2]

Simulación de Python

Gráfico de las tres primeras variables de la simulación
desde  scipy.integrate  importe  odeint importe  matplotlib.pyplot  como  plt importe  numpy  como  np# Estas son nuestras constantes N  =  5  # Número de variables F  =  8  # Forzandodef  L96 ( x ,  t ): """Modelo de Lorenz 96 con forzamiento constante""" return ( np . roll ( x , - 1 ) - np . roll ( x , 2 )) * np . roll ( x , 1 ) - x + F               x0  =  F  *  np . ones ( N )  # Estado inicial (equilibrio) x0 [ 0 ]  +=  0.01  # Agrega una pequeña perturbación a la primera variable t  =  np . arange ( 0.0 ,  30.0 ,  0.01 )x  =  odeint ( L96 ,  x0 ,  t )# Grafica las primeras tres variables fig  =  plt.figure () ax = fig.add_subplot ( projection = " 3d" ) ax.plot ( x [ :, 0 ], x [ :, 1 ], x [ :, 2 ]) ax.set_xlabel ( " $ x_1$" ) ax.set_ylabel ( " $ x_2 $" ) ax.set_zlabel ( " $ x_3 $" ) plt.show ( )       

Simulación de Julia

utilizando DynamicalSystems , PyPlot PyPlot . using3D ()  # parámetros y condiciones iniciales N = 5 F = 8.0 u₀ = F * unos ( N ) u₀ [ 1 ] += 0.01 # pequeña perturbación           # El modelo Lorenz-96 está predefinido en DynamicalSystems.jl: ds = Systems . lorenz96 ( N ; F = F )     # De manera equivalente, para definir una versión rápida explícitamente, haga: struct  Lorenz96 { N } end # Estructura para la función de tipo tamaño ( obj :: Lorenz96 { N }) ( dx , x , p , t ) donde { N } F = p [ 1 ] # 3 casos extremos explícitamente (rendimiento) @inbounds dx [ 1 ] = ( x [ 2 ] - x [ N - 1 ]) * x [ N ] - x [ 1 ] + F @inbounds dx [ 2 ] = ( x [ 3 ] - x [ N ]) * x [ 1 ] - x [ 2 ] + F @inbounds dx [ N ] = ( x [ 1 ] - x [ N - 2 ]) * x [ N - 1 ] - x [ N ] + F # entonces el caso general para n en 3 : ( N - 1 ) @inbounds dx [ n ] = ( x [ n + 1 ] - x [ n - 2 ]) * x [ n - 1 ] - x [ n ] + F fin no devuelve nada fin                                                                                  lor96 = Lorenz96 { N }() # crear estructura ds = ContinuousDynamicalSystem ( lor96 , u₀ , [ F ])       # Y ahora evolucionamos una trayectoria dt = 0.01 # tiempo de muestreo Tf = 30.0 # tiempo final tr = trayectoria ( ds , Tf ; dt = dt )            # Y grafica en 3D: x , y , z = columnas ( tr ) plot3D ( x , y , z )      

Referencias

  1. ^ Lorenz, Edward (1996). "Predictibilidad: un problema parcialmente resuelto" (PDF) . Seminario sobre Predictibilidad, vol. I, ECMWF .
  2. ^ Ott, Edward; et al. (2002). "Un filtro Kalman de conjunto local para la asimilación de datos atmosféricos". arXiv : physics/0203058 .