LoginSignup
0
0

More than 1 year has passed since last update.

Henon写像について(カオス)

Last updated at Posted at 2022-05-08

非線形数理モデルであるHenon写像を紹介します。
以前に紹介したロジスティック写像と同じ低次元離散力学系です。
ロジスティック写像に関する記事のリンクを貼っておきます、もしよければ見て行ってください。
関連記事1: ロジスティック写像の紹介
関連記事2: 初期値鋭敏性について(ロジスティック写像)

エノン写像は以下のような連立方程式, 漸化式で表されます。

$x_{n+1} = 1- ax_{n}^2 + y_{n}$
$y_{n+1} = bx_{n}$

$a,b$はエノン写像のパラメータになります。

$x_{0}とy_{0}$は任意に与えて、実際にエノン写像の動きを見てみます。
(以下の図は、$x_{0}=y_{0}=1.1, a=1.4, b=0.3$としています。)
henon_x.png
henon_y.png
$x_{n}, y_{n}$どちらも不規則に動いているのがわかります。$\textbf{カオス}$と呼ばれる現象が確認できます。

次に、$x_{0}=y_{0}=1.1, a=1.0, b=0.1$に変えて$x_{n}, y_{n}$の動きを見てみます。先ほどとは違った動きをします。
henon_1_01_x.png
henon_1_01_y.png

先ほどの非周期的な動きをするのではなく、途中から周期的に動いているのがわかります。

次回は、カオス力学系の特徴の一つである"初期値鋭敏性"について紹介したいと思います。
続編: 初期値鋭敏性(エノン写像)

以下今回使用したコードを記載しています。

import numpy as np
import matplotlib.pyplot as plt

# Henon写像のデータを生成する関数
# 引数a,bがHenon写像のパラメータ,引数nは生成したいデータ数(時系列長)
def Henon(a,b,n):
    x = np.zeros(n)
    y = np.zeros(n)
    
    x[0] = 1.1
    y[0] = 1.1
    for i in range(n-1):
        y[i+1] = b*x[i]
        x[i+1] = 1 - a*(x[i])**2 + x[i]
        
    return x, y
# Henon写像を可視化
x,y = Henon(1.4,0.3,60)
#x,y = Henon(1.0,0.1,60)

# xをプロット(以下のコードのxをyに変えればyをプロット)
plt.plot(x,marker="o")
plt.xlabel("n")
plt.ylabel("x")
plt.show()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0