Contents[hide]
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |
make.plt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
No comments:
Post a Comment