다드라스 어트랙터
모델 1
다음은 다드라스 어트랙터Dadras attractor의 지배 방정식이다.
$$ \begin{align*} \dot{x} =& y - a x + b y z \\ \dot{y} =& c y - x z + z \\ \dot{z} =& d x y - e z \end{align*} $$
파라미터
- $a = 2.6$
- $b = 2.7$
- $c = 1.8$
- $d = 3$
- $e = 7.4$
설명
어트랙터

이상한 어트랙터를 보면 마치 로렌츠 어트랙터의 나비모양에서 또 다른 날개가 나와있는듯 기괴한 형태를 가지고 있다.
바이퍼케이션

다드라스 어트랙터는 우변에 고작해봐야 이차항이 있을 뿐인데, 비슷한 복잡도를 가진 여타 시스템과 비교하자면 독특한 바이퍼케이션 다이어그램을 보여준다.
코드
다음은 다드라스 어트랙터를 시뮬레이션하는 줄리아 코드다.
using DataFrames, DifferentialEquations, OrdinaryDiffEqLowOrderRK
function factory_dadras(c::Number; ic = [0, 0, 2], saveat = 0:1e-2:100)
a, b, d, e = (
2.6, 2.7, 3, 7.4)
function sys(du, u, p, t)
x, y, z = u
a = p[1]
du[1] = y - a*x + b*y*z
du[2] = c*y - x*z + z
du[3] = d*x*y - e*z
return du
end
sol = solve(ODEProblem(sys, ic, (0, last(saveat)), [c]), RK4(), dt = saveat.step.hi, adaptive=false, maxiters = Inf)
dsol = [sol.k[2][1] stack([solk[2] for solk in sol.k[2:end]])]
matrix = [sol.t sol[:, :]' dsol']
return matrix[sol.t .≥ first(saveat), :][1:end-1, :]
end
factory_dadras(T::Type, args...; kargs...) =
DataFrame(factory_dadras(args...; kargs...), ["t", "x", "y", "z", "dx", "dy", "dz"])
sol = factory_dadras(DataFrame, 1.8, saveat = 900:1e-2:1000)
plot(sol.x, sol.y, sol.z, alpha = .5, color = :black, xlabel = L"x", ylabel = L"y", zlabel = L"z", size = [400, 400])
Dadras, S., & Momeni, H. R. (2009). A novel three-dimensional autonomous chaotic system generating two, three and four-scroll attractors. Physics Letters A, 373(40), 3637-3642. https://doi.org/10.1016/j.physleta.2009.07.088 ↩︎

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

