Mapa de Ikeda


En física y matemáticas , el mapa de Ikeda es un sistema dinámico de tiempo discreto dado por el mapa complejo

Las trayectorias de 2000 puntos aleatorios en un mapa de Ikeda con u = 0,918.

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 .

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.

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 mapa de Ikeda está compuesto por una rotación (por un ángulo dependiente del radio), un cambio de escala y un cambio. Este proceso de "estiramiento y plegado" da lugar al atractor extraño.

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 ()

  1. ^ 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 .
  2. ^ 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 .