뢰슬러 어트랙터
개요
뢰슬러 방정식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$ 와 같이 두는 경우가 많다.
설명
케이어스chaos라고 하면 절대 빠질 수 없는 게 로렌츠 어트랙터라면, 그 다음가는 명성을 누리는 상미분방정식이 바로 이 뢰슬러 방정식이다. 수식적으로는 로렌츠 방정식보다도 간단하고 대칭성을 가지지 않는다는 특징이 있다.
트래젝터리를 보면 처음에는 원점 주변에서 나선을 그리며 도는 듯하다가 $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. ↩︎