En física y matemáticas , el mapa de Ikeda es un sistema dinámico de tiempo discreto dado por el mapa complejo
El mapa original fue propuesto primero por Kensuke Ikeda como un modelo de luz que circula a través de un resonador óptico no lineal ( cavidad de anillo que contiene un medio dieléctrico no lineal ) en una forma más general. Se reduce a la forma "normal" simplificada anterior por Ikeda, Daido y Akimoto [1] [2] representa el campo eléctrico dentro del resonador en el n-ésimo paso de rotación en el resonador, y y son parámetros que indican la luz láser aplicada desde el exterior y la fase lineal a través del resonador, respectivamente. En particular el parámetro se llama parámetro de disipación que caracteriza la pérdida de resonador, y en el límite de el mapa de Ikeda se convierte en un mapa conservador.
El mapa original de Ikeda se usa a menudo en otra forma modificada para tener en cuenta el efecto de saturación del medio dieléctrico no lineal:
Un ejemplo real en 2D del formulario anterior es:
donde u es un parámetro y
Para , este sistema tiene un atractor caótico .
Atractor
Esta animación muestra cómo el atractor del sistema cambia a medida que el parámetrovaría de 0,0 a 1,0 en pasos de 0,01. El sistema dinámico de Ikeda se simula en 500 pasos, a partir de 20000 puntos de partida colocados al azar. Los últimos 20 puntos de cada trayectoria se trazan para representar el atractor . Tenga en cuenta la bifurcación de los puntos atractores como está incrementado.
Trayectorias puntuales
Los gráficos a continuación muestran trayectorias de 200 puntos aleatorios para varios valores de . El recuadro de la izquierda muestra una estimación del atractor, mientras que el recuadro de la derecha muestra una vista ampliada del diagrama de la trayectoria principal.
Código de octava / MATLAB para trayectorias de puntos
El código de Octave / MATLAB para generar estos gráficos se proporciona a continuación:
% u = parámetro ikeda% opción = qué trazar% 'trayectoria': traza la trayectoria de los puntos de partida aleatorios% 'límite': traza las últimas iteraciones de puntos de partida aleatoriosfunción ikeda ( u, opción ) P = 200 ; % cuantos puntos de partida N = 1000 ; % cuantas iteraciones Nlimit = 20 ; % trazar estos últimos puntos para la opción 'límite' x = randn ( 1 , P ) * 10 ; % los puntos de partida aleatorios y = randn ( 1 , P ) * 10 ; para n = 1 : P , X = compute_ikeda_trajectory ( u , x ( n ), y ( n ), N ); opción de cambio caso 'trayectoria' % traza las trayectorias de un montón de puntos plot_ikeda_trajectory ( X ); mantener en ; caso 'límite' plot_limit ( X , Nlimit ); mantener en ; de lo contrario disp ( 'No implementado' ); final final eje apretado ; eje igual texto ( - 25 , - 15 , [ 'u =' num2str ( u )]); texto ( - 25 , - 18 , [ 'N =' num2str ( N ) 'iteraciones' ]); final% Trace los últimos n puntos de la curva para ver el punto final o el ciclo límitefunción plot_limit ( X, n ) plot ( X ( final - n : final , 1 ), X ( final - n : final , 2 ), 'ko' ); final% Trazar la trayectoria completafunción plot_ikeda_trajectory ( X ) trama ( X (:, 1 ), X (:, 2 ), 'k' ); % esperar; plot (X (1,1), X (1,2), 'bo', 'markerfacecolor', 'g'); esperarfinal% u es el parámetro de ikeda% x, y es el punto de partida% N es el número de iteracionesfunción [X] = compute_ikeda_trajectory ( u, x, y, N ) X = ceros ( N , 2 ); X ( 1 , :) = [ x y ]; para n = 2 : N t = 0,4 - 6 / ( 1 + x ^ 2 + y ^ 2 ); x1 = 1 + u * ( x * cos ( t ) - y * sin ( t )); y1 = u * ( x * sin ( t ) + y * cos ( t )); x = x1 ; y = y1 ; X ( n , :) = [ x y ]; finalfinal
Código Python para trayectorias puntuales
importar matemáticasimportar matplotlib.pyplot como plt , numpy como npdef main ( u , puntos = 200 , iteraciones = 1000 , nlim = 20 , límite = Falso , título = Verdadero ): "" " Parámetros u: float ikeda parámetros puntos: int número de puntos de partida iteraciones: int número de iteraciones nlim: int trazará estos últimos puntos para la opción 'límite'. Trazará todos los puntos si se establece en límite cero : bool trazará las últimas iteraciones de puntos de inicio aleatorios si es verdadero. Else Trazar trayectorias. title: [str, NoneType] muestra el nombre de la trama si el valor es afirmativo "" " x = 10 * np . al azar . randn ( puntos , 1 ) y = 10 * np . al azar . randn ( puntos , 1 ) para n en rango ( puntos ): X = compute_ikeda_trajectory ( u , x [ n ] [ 0 ], y [ n ] [ 0 ], iteraciones ) if limit : plot_limit ( X , nlim ) tx , ty = 2.5 , - 1.8 else : plot_ikeda_trajectory ( X ) tx , ty = - 30 , - 26 plt . título ( f "Mapa de Ikeda ( { u =: .2g } , { iteraciones =} )" ) si título más Ninguno devolver pltdef compute_ikeda_trajectory ( u , x , y , N ): "" " Calcular una trayectoria completa Params u: float es el parámetro ikeda x, y float: coordenadas del punto de partida N: int el número de iteraciones " "" X = np . ceros (( N , 2 )) para n en el rango ( N ): X [ n ] = np . matriz (( x , y )) t = 0.4 - 6 / ( 1 + x ** 2 + y ** 2 ) x1 = 1 + u * ( x * matemáticas . cos ( t ) - y * matemáticas . sin ( t )) y1 = u * ( x * matemáticas . sin ( t ) + y * matemáticas . cos ( t )) x = x1 y = y1 volver Xdef plot_limit ( X , n ): """ Representar gráficamente los últimos n puntos de la curva - para ver punto final o ciclo límite Parámetros X: np.array trayectoria de un punto de partida asociado n: int número de 'pasado' puntos a plot "" " plt . trama ( X [ - n :, 0 ], X [ - n :, 1 ], 'ko' )def plot_ikeda_trajectory ( X ): "" " Traza toda la trayectoria Parámetros X: np.array trayectoria de un punto de partida asociado " "" plt . trama ( X [:, 0 ], X [:, 1 ], 'k' )if __name__ == '__main__' : main ( . 9 , limit = True , nlim = 0 ) . mostrar ()
Referencias
- ^ Ikeda, Kensuke (1979). "Estado estacionario de múltiples valores y su inestabilidad de la luz transmitida por un sistema de cavidad anular". Comunicaciones ópticas . Elsevier BV. 30 (2): 257–261. Código Bibliográfico : 1979OptCo..30..257I . CiteSeerX 10.1.1.158.7964 . doi : 10.1016 / 0030-4018 (79) 90090-7 . ISSN 0030-4018 .
- ^ Ikeda, K .; Daido, H .; Akimoto, O. (1 de septiembre de 1980). "Turbulencia óptica: comportamiento caótico de la luz transmitida desde una cavidad de anillo". Cartas de revisión física . Sociedad Estadounidense de Física (APS). 45 (9): 709–712. Código Bibliográfico : 1980PhRvL..45..709I . doi : 10.1103 / physrevlett.45.709 . ISSN 0031-9007 .