池田地図

u = 0.918の Ikeda マップ内の 2000 個のランダム ポイントの軌跡

カオス理論において池田写像は、ストレンジアトラクターを生成する離散時間力学系です。これは、物理学者池田健介によって1979年に非線形光共振器内の光の挙動のモデルとして提唱されました。[1]この写像は、単純な一連の規則が、回転、拡大縮小、並進運動の繰り返しという、カオス系でよく見られる「伸縮」操作を通じて、複雑でカオス的な挙動につながる様子を示しています。

この写像は、複素平面上の反復関数によって定義されます。与えられた複素数 に対して、次の値は次のように計算されます。ここで、 はステップ における共振器内の電界を表します。パラメータと は外部レーザー光システムの位相に関連し、 (ただし)は共振器におけるエネルギー損失を表す散逸パラメータです。[2]

一般的に研究されているマップの実数値バージョンは、2 次元方程式で与えられます。ここで、はパラメータであり、パラメータ の値に対して、このシステムはカオス的な動作を示し、記事の画像に示されている特徴的なフラクタルアトラクターを生成します。

アトラクター

このアニメーションは、パラメータ を 0.0 から 1.0 まで 0.01 ずつ変化させたときに、システムのアトラクターがどのように変化するかを示しています。池田力学系は、ランダムに配置された 20,000 個の開始点から 500 ステップにわたってシミュレーションされます。各軌跡の最後の 20 点がアトラクターを表すためにプロットされています。が増加するにつれて、アトラクター点が分岐することに注意してください。

点軌道

以下のプロットは、様々な値における200個のランダム点の軌跡を示しています。左側のインセットプロットはアトラクターの推定値を示し、右側のインセットプロットはメインの軌跡プロットを拡大表示しています。

u = 0.1
u = 0.5
u = 0.65
u = 0.7
u = 0.8
u = 0.85
u = 0.9
u = 0.908
u = 0.92

点軌跡のOctave/MATLABコード

池田写像は、回転(半径に依存する角度)、再スケーリング、そしてシフトによって構成されます。この「伸縮」と「折り畳み」のプロセスによって、ストレンジアトラクターが生じます。

これらのプロットを生成する Octave/MATLAB コードを以下に示します。

% u = ikeda パラメーター% option =プロット対象% 'trajectory' - ランダムな開始点の軌跡をプロットします% 'limit' - ランダムな開始点の最後の数回の反復をプロットしますfunction ikeda ( u, option ) P = 200 ; % 開始点の数N = 1000 ; % 反復回数Nlimit = 20 ; % これらの最後のポイントをプロットします for 'limit' オプションx = randn ( 1 , P ) * 10 ; % ランダムな開始点y = randn ( 1 , P ) * 10 ; for n = 1 : P , X = compute_ikeda_trajectory ( u , x ( n ), y ( n ), N );スイッチオプションcase 'trajectory' % 多数のポイントの軌跡をプロットしますplot_ikeda_trajectory ( X );しばらくお待ちください;                                          case 'limit' plot_limit ( X , Nlimit );しばらくお待ちください      それ以外の場合はdisp ( '実装されていません' ); end end  タイト;が等しいtext ( - 25 , - 15 , [ 'u = ' num2str ( u )]); text ( - 25 , - 18 , [ 'N = ' num2str ( N ) ' 反復' ]);終了              % 曲線の最後のn点をプロットします - 終点または限界サイクルを確認するにはfunction plot_limit ( X, n ) plot ( X ( end - n : end , 1 ), X ( end - n : end , 2 ), 'ko' ); end         % 軌跡全体をプロットするfunction plot_ikeda_trajectory ( X ) plot ( X (:, 1 ), X (:, 2 ), 'k' ); % hold on; plot(X(1,1), X(1,2), 'bo', 'markerfacecolor', 'g'); hold off end     % u は ikeda パラメーターです% x,y は開始点です% N は反復回数ですfunction  [X] = compute_ikeda_trajectory ( u, x, y, N ) X = zeros ( N , 2 ); X ( 1 , :) = [ x y ]; 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 ];終了終了    

点軌跡のPythonコード

インポート数学 matplotlib.pyplot をpltとしてインポートし、 numpyをnpとしてインポートします。      def main ( u : float , points = 200 , iterations = 1000 , nlim = 20 , limit = False , title = True ): """ 引数:  u:float  ikeda パラメータ points:int 開始点の数 iterations:int 反復回数 nlim:  int 'limit' オプションで指定した回数だけ最後の点をプロットします。0 に設定するとすべての点をプロットします limit  :bool  True の場合、ランダム開始点の最後の反復回数をプロットします。それ以外の場合は、軌跡をプロットします。 title:[str, NoneType] 値が肯定的な場合、プロット名を表示します """         x  =  10  *  np.random.randn (ポイント, 1 ) y = 10 * np.random.randn (ポイント, 1 )         nが 範囲(ポイント)内に ある場合: X = compute_ikeda_trajectory ( u , x [ n ][ 0 ], y [ n ][ 0 ],反復回数)        制限の場合:  plot_limit ( X ,  nlim )  tx ,  ty  =  2.5 ,  - 1.8 そうでない場合:  plot_ikeda_trajectory ( X )  tx ,  ty  =  - 30 ,  - 26 plt . title ( f "池田マップ ( { u =: .2g } , { iterations =} )" ) タイトルの場合はタイトル、そうでない場合は Noneを返すplt    def compute_ikeda_trajectory ( u : float , x : float , y : float , N : int ): """完全な軌道を計算する          引数:  u - ikedaパラメータ x, y - 開始点の座標 N - 反復回数 戻り値: 配列。 """  X  =  np . zeros (( N ,  2 ))  nが 範囲( 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 . sin ( t ))  y1  =  u  *  ( x  *  math . sin ( t )  +  y  *  math . cos ( t )) x  =  x1  y  =  y1  Xを返すdef plot_limit ( X , n : int ) -> None : """ 曲線の最後のn点をプロットします。終点または限界サイクルを確認します。       引数:  X: np.array 関連する開始点の軌跡 n: int プロットする「最後の」点の数 """  plt . plot ( X [ - n :,  0 ],  X [ - n :,  1 ],  'ko' )def plot_ikeda_trajectory ( X ) -> None : """ 軌跡全体をプロットする     引数:  X: np.array 関連する開始点の軌跡 """  plt . plot ( X [:, 0 ],  X [:,  1 ],  "k" ) __name__  ==  "__main__"の場合:  main ( 0.9  limit = True  nlim = 0 ) show ()

参考文献

  1. ^ 池田健介 (1979). 「リング共振器系における透過光の多値定常状態とその不安定性」. Optics Communications . 30 (2). Elsevier BV: 257– 261. Bibcode :1979OptCo..30..257I. CiteSeerX  10.1.1.158.7964 . doi :10.1016/0030-4018(79)90090-7. ISSN  0030-4018.
  2. ^ 池田 健; 大道 秀; 秋元 修 (1980-09-01). 「光乱流:リング共振器からの透過光のカオス的挙動」. Physical Review Letters . 45 (9). American Physical Society (APS): 709– 712. Bibcode :1980PhRvL..45..709I. doi :10.1103/physrevlett.45.709. ISSN  0031-9007.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Ikeda_map&oldid=1301840353"