Processing math: 0%

Strange Attractor [gnuplot]

Saturday, July 13, 2019

gnuplot YouTube

t f B! P L

Lorenz equation

\begin{eqnarray*} \frac{\mathrm{d}x}{\mathrm{d}t}&=&-\sigma(x-y) \\ \frac{\mathrm{d}y}{\mathrm{d}t}&=&Rx-y-xz\\ \frac{\mathrm{d}z}{\mathrm{d}t}&=&xy-bz \end{eqnarray*} (R=28,~b=\frac{8}{3},~\sigma=10)

PLT files

lorenz.plt

set terminal png enhanced font "Times" 20 size 986, 554
set tics font 'Times,18'
set nokey
set grid
set xr[-30:30]
set yr[-30:30]
set zr[0:60]
set xl "x" font"Times:Italic, 22"
set yl "y" font"Times:Italic, 22"
set zl "z" font"Times:Italic, 22"
set view 45,30,1,2
DATA = "lorenz.data"
set print DATA
#=================== Parameters ====================
dt = 0.01 # Time step [s]
dh = dt/6.
sigma = 10
b = 8./3.
R = 28
n_max = 100*150
n = 0
cut = 10 # Number of frames: n_max/cut
cnt = 0
#=================== Functions ====================
f1(x, y, z) = -sigma*(x-y)
f2(x, y, z) = R*x-y-x*z
f3(x, y, z) = x*y-b*z
rk4x(x, y, zw) = (k1 = f1(x, y, z),\
k2 = f1(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k3 = f1(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k4 = f1(x + dt*k3, y + dt*k3, z + dt*k3),\
dh * (k1 + 2*k2 + 2*k3 + k4))
rk4y(x, y, z) = (k1 = f2(x, y, z),\
k2 = f2(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k3 = f2(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k4 = f2(x + dt*k3, y + dt*k3, z + dt*k3),\
dh * (k1 + 2*k2 + 2*k3 + k4))
rk4z(x, y, z) = (k1 = f3(x, y, z),\
k2 = f3(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k3 = f3(x + dt*k1/2., y + dt*k1/2., z + dt*k1/2.),\
k4 = f3(x + dt*k3, y + dt*k3, z + dt*k3),\
dh * (k1 + 2*k2 + 2*k3 + k4))
# Initial value
t = 0.
x = 0.
y = 0.3
z = 0.
call "make.plt"
view raw lorenz.plt hosted with ❤ by GitHub

make.plt

# Ordinary differential equations
x = x + rk4x(x, y, z)
y = y + rk4y(x, y, z)
z = z + rk4z(x, y, z)
print x, y, z # Write initial values on DATA file
if(n%cut==0){
cnt = cnt + 1
filename = sprintf("png/img_%04d.png",cnt)
time = sprintf("{/Times:Italic t} = %4.2f",t)
set title time font 'Times,18'
set output filename
splot DATA using 1:2:3 with line linecolor rgb "red"
}
t = t + dt
n = n+1
if(n <= n_max) reread
n = 0
set out
view raw make.plt hosted with ❤ by GitHub

lorenz.gif

Rössler equation

\begin{eqnarray*} \frac{\mathrm{d}x}{\mathrm{d}t}&=&-y-z \\ \frac{\mathrm{d}y}{\mathrm{d}t}&=&z+ay\\ \frac{\mathrm{d}z}{\mathrm{d}t}&=&b+xz-cz \end{eqnarray*} (a=0.3,~b=0.3,~c=5.7)

Langford equation

\begin{eqnarray*} \frac{\mathrm{d}x}{\mathrm{d}t}&=&(z-\beta)x-\omega y \\ \frac{\mathrm{d}y}{\mathrm{d}t}&=&\omega x+(z-\beta)y\\ \frac{\mathrm{d}z}{\mathrm{d}t}&=&\lambda+\alpha z-\frac{z^3}{3}-(x^2+y^2)(1+\rho z)+\varepsilon zx^3 \end{eqnarray*} (\alpha=1,~\omega=3.5,~\beta=0.7,~\rho=0.25,~\lambda=0.6,~\varepsilon=0)

Other examples

GitHub: https://github.com/hiroloquy/strange-attractor.git

Search This Blog

Translate

QooQ