ロスラー・アトラクタ
概要
ロスラー方程式rössler equationは、シンプルだけどカオスなアトラクターを持っていると紹介されたシステムの一つである。
システム1
$$ \begin{align*} {{dx} \over {dt}} =& - y - z \\ {{dy} \over {dt}} =& x + ay \\ {{dz} \over {dt}} =& b + (x-c) z \end{align*} $$
変数
- $x(t)$: $t$時点の粒子の$x$座標を表す。
- $y(t)$: $t$時点の粒子の$y$座標を表す。
- $z(t)$: $t$時点の粒子の$z$座標を表す。
パラメーター
- $a,b,c$: 直感的な意味を持たない。
これらのパラメーターは通常、$a = 0.1$、$b = 0.1$、$c = 14$として設定されることが多い。
説明
カオスと言えば、ローレンツ・アトラクターが絶対に外せないが、名声で次ぐのはこのロスラー方程式で、常微分方程式の中である。数式的にはローレンツ方程式よりも簡単で、対称性を持たない特徴がある。
軌道を見ると、最初は原点周辺でスパイラルを描きながら回っているように見えるが、$t=50$を超えると突然$z$軸へ跳ねることが確認できる。ロスラー・アトラクターでは、これらの跳ねるタイミングや高さを全く推測できないところがカオスらしい。
コード
以下は上の図を再現するジュリアコードである。
using Plots
using OrdinaryDiffEq
function Rössler!(u, p, t)
x, y, z = u
a, b, c = p
ẋ = -y -z
ẏ = x + a*y
ż = b + (x - c) * z
return [ẋ, ẏ, ż]
end
u0 = [1.0, 1.0, 1.0]
tspan = (0.0, 100.0); dt = 0.01
p = (0.1, 0.1, 14)
prob = ODEProblem(Rössler!, u0, tspan, p)
sol = solve(prob, RK4(), saveat = dt)
plot(
plot(sol, idxs = (0,1), title = "x"),
plot(sol, idxs = (0,2), title = "y"),
plot(sol, idxs = (0,3), title = "z"),
plot(sol, idxs = (1,2,3), title = "Trajectory"),
legend = :none, size = (800,800)
)
savefig("rossler.svg")
anime = @animate for t in 1:10:10000
plot(sol[1:t], idxs = (1,2,3),
lw = 2, alpha = (1:t)/t, color = :black, size = (400,400), legend = :none,
xlims = (-25,25), ylims = (-25,25), zlims = (0,30))
end
gif(anime, "rossler.gif", fps = 30)
Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p371. ↩︎