stringtranslate.com

Mapa de Ikeda

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

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 por primera vez por Kensuke Ikeda como un modelo de luz que circula a través de un resonador óptico no lineal ( cavidad anular que contiene un medio dieléctrico no lineal ) en una forma más general. Ikeda, Daido y Akimoto lo redujeron a la forma "normal" simplificada anterior [1] [2] representa el campo eléctrico dentro del resonador en el paso n-ésimo 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 del resonador y, en el límite del mapa de Ikeda, se convierte en un mapa conservador.

El mapa original de Ikeda se utiliza a menudo en otra forma modificada para tener en cuenta el efecto de saturación del medio dieléctrico no lineal:

Un ejemplo real 2D de la forma anterior es: donde u es un parámetro y

Porque este sistema tiene un atractor caótico .

Atractor

Esta animación muestra cómo cambia el atractor del sistema a medida que el parámetro varía de 0,0 a 1,0 en pasos de 0,01. El sistema dinámico de Ikeda se simula durante 500 pasos, a partir de 20 000 puntos de inicio colocados aleatoriamente. Los últimos 20 puntos de cada trayectoria se representan gráficamente para representar el atractor . Nótese la bifurcación de los puntos atractores a medida que aumenta.

Trayectorias puntuales

Los gráficos que se muestran a continuación muestran trayectorias de 200 puntos aleatorios para distintos valores de . El gráfico insertado a la izquierda muestra una estimación del atractor, mientras que el gráfico insertado a la derecha muestra una vista ampliada del gráfico de trayectoria principal.

Código Octave/MATLAB para trayectorias de puntos

El mapa de Ikeda se compone de una rotación (por un ángulo que depende del radio), un reescalado y un desplazamiento. Este proceso de "estiramiento y plegado" da lugar al atractor extraño.

El código Octave/MATLAB para generar estos gráficos se proporciona a continuación:

% u = parámetro ikeda % opción = qué graficar % 'trajectory' - grafica la trayectoria de puntos de inicio aleatorios % 'limit' - grafica las últimas iteraciones de puntos de inicio aleatorios function ikeda ( u, option ) P = 200 ; % cuántos puntos de inicio N = 1000 ; % cuántas iteraciones Nlimit = 20 ; % grafica estos últimos puntos para la opción 'limit' x = randn ( 1 , P ) * 10 ; % los puntos de inicio aleatorios y = randn ( 1 , P ) * 10 ; para n = 1 : P , X = calculate_ikeda_trajectory ( u , x ( n ), y ( n ), N ); cambiar opción case 'trajectory' % grafica las trayectorias de un grupo de puntos plot_ikeda_trajectory ( X ); esperar ;                                          caso 'limit' plot_limit ( X , Nlimit ) ; mantener ;      de lo contrario disp ( 'No implementado' ); fin fin  eje apretado ; eje igual texto ( - 25 , - 15 , [ 'u = ' num2str ( u )]); texto ( - 25 , - 18 , [ 'N = ' num2str ( N ) ' iteraciones' ]); fin              % Graficar los últimos n puntos de la curva - para ver el punto final o la función límite del ciclo plot_limit ( X, n ) plot ( X ( end - n : end , 1 ), X ( end - n : end , 2 ), 'ko' ); end         % Trazar la función de trayectoria completa plot_ikeda_trajectory ( X ) plot ( X (:, 1 ), X (:, 2 ), 'k' ); % mantener; plot(X(1,1), X(1,2), 'bo', 'markerfacecolor', 'g'); mantener al final     % u es el parámetro ikeda % x,y es el punto de partida % N es el número de iteraciones función  [X] = calculate_ikeda_trajectory ( u, x, y, N ) X = zeros ( 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 ]; fin fin    

Código Python para trayectorias de puntos

importar  matemáticasimportar  matplotlib.pyplot  como  plt importar  numpy  como  npdef  main ( u :  float ,  points = 200 ,  iterations = 1000 ,  nlim = 20 ,  limit = False ,  title = True ): """  Args:  u:float  parámetro ikeda  points:int  número de puntos de partida  iterations:int  número de iteraciones  nlim:int  grafica estos últimos puntos para la opción 'limit'. Graficará todos los puntos si se establece en cero  limit:bool  graficará las últimas iteraciones de puntos de partida aleatorios si es Verdadero. De lo contrario, Graficará trayectorias.  title:[str, NoneType]  mostrará el nombre del gráfico si el valor es afirmativo  """   x  =  10  *  np . random . randn ( puntos ,  1 )  y  =  10  *  np . random . randn ( puntos ,  1 )  para  n  en  el rango ( puntos ):  X  =  calculate_ikeda_trajectory ( u ,  x [ n ][ 0 ],  y [ n ][ 0 ],  iteraciones )  si  límite :  plot_limit ( X ,  nlim )  tx ,  ty  =  2.5 ,  - 1.8  de lo contrario :  plot_ikeda_trajectory ( X )  tx ,  ty  =  - 30 ,  - 26  plt . título ( f "Mapa de Ikeda ( { u =: .2g } , { iteraciones =} )" )  si  título  de lo contrario  Ninguno  devolver  pltdef  calculate_ikeda_trajectory ( u :  float ,  x :  float ,  y :  float ,  N :  int ): """Calcular una trayectoria completa  Args:  u - es el parámetro ikeda  x, y - coordenadas del punto de partida  N - el número de iteraciones Devuelve:  Una matriz.  """  X  =  np . ceros (( N ,  2 ))  para  n  en  el rango ( N ):  X [ n ]  =  np . array (( x ,  y ))  t  =  0,4  -  6  /  ( 1  +  x  **  2  +  y  **  2 )  x1  =  1  +  u  *  ( x  *  math . cos ( t )  -  y  *  math . sen ( t ))  y1  =  u  *  ( x  *  math . sen ( t )  +  y  *  math . cos ( t ))  x  =  x1  y  =  y1   devolver  Xdef  plot_limit ( X ,  n :  int )  ->  None : """  Grafica los últimos n puntos de la curva - para ver el punto final o el ciclo límite  Args:  X: np.array  trayectoria de un punto de inicio asociado  n: int  número de "últimos" puntos a graficar  """  plt . plot ( X [ - n :,  0 ],  X [ - n :,  1 ],  'ko' )def  plot_ikeda_trajectory ( X )  ->  None : """  Traza la trayectoria completa  Args:  X: np.array  trayectoria de un punto de inicio asociado  """  plt . plot ( X [:, 0 ],  X [:,  1 ],  "k" )si  __name__  ==  "__main__" :  main ( 0.9 ,  limit = True ,  nlim = 0 ) .show ( )

Referencias

  1. ^ Ikeda, Kensuke (1979). "Estado estacionario de múltiples valores y su inestabilidad de la luz transmitida por un sistema de cavidad en anillo". Comunicaciones ópticas . 30 (2). Elsevier BV: 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. (1980-09-01). "Turbulencia óptica: comportamiento caótico de la luz transmitida desde una cavidad anular". Physical Review Letters . 45 (9). American Physical Society (APS): 709–712. Bibcode :1980PhRvL..45..709I. doi :10.1103/physrevlett.45.709. ISSN  0031-9007.