非線形数理モデルである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$としています。)
$x_{n}, y_{n}$どちらも不規則に動いているのがわかります。$\textbf{カオス}$と呼ばれる現象が確認できます。
次に、$x_{0}=y_{0}=1.1, a=1.0, b=0.1$に変えて$x_{n}, y_{n}$の動きを見てみます。先ほどとは違った動きをします。
先ほどの非周期的な動きをするのではなく、途中から周期的に動いているのがわかります。
次回は、カオス力学系の特徴の一つである"初期値鋭敏性"について紹介したいと思います。
続編: 初期値鋭敏性(エノン写像)
以下今回使用したコードを記載しています。
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()