logo

뢰슬러 어트랙터 📂동역학

뢰슬러 어트랙터

개요

뢰슬러 방정식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$ 와 같이 두는 경우가 많다.

설명

rossler.gif

케이어스chaos라고 하면 절대 빠질 수 없는 게 로렌츠 어트랙터라면, 그 다음가는 명성을 누리는 상미분방정식이 바로 이 뢰슬러 방정식이다. 수식적으로는 로렌츠 방정식보다도 간단하고 대칭성을 가지지 않는다는 특징이 있다.

rossler.svg

트래젝터리를 보면 처음에는 원점 주변에서 나선을 그리며 도는 듯하다가 $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)

  1. Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p371. ↩︎