From Lorenz to...
Attractors from a system of ordinary differential equations
3D attractors are point clouds generate from sequences of numbers pn{xn,yn,zn} ⇒ pn ∈ R3, n ∈ N,
where n0→∞ denotes the step of the iteration process starting from a initial p0{x0,y0,z0} point.
This particular attractors class is defined from a ordinary differential equations:
\begin{align} \text{ assigned: } & & \dot{x} = \frac{\delta x}{\delta t}, & & \dot{y} = \frac{\delta y}{\delta t}, & & \dot{z} = \frac{\delta z}{\delta t} \end{align}
They are derivatives of components of point p respect to t, where δt is the infinitesimal increment, the differential term, of equation.
In the cloud each next point is function of the previous one:
\[ \eqalign {
\dot{x} = \xi (x, y, z) & \\
\dot{y} = \phi(x, y, z) & \\
\dot{z} = \psi(x, y, z) & }
\qquad \Rightarrow
\qquad
\eqalign {
x_{i+1} = x_i + \delta t \centerdot \xi(x_i, y_i, z_i) & \\
y_{i+1} = y_i + \delta t \centerdot \phi(x_i, y_i, z_i) & \\
z_{i+1} = z_i + \delta t \centerdot \psi(x_i, y_i, z_i) & }
\qquad
\Bigg\{
\eqalign {
& x, y, z, t \in R \\
& [0, i, n_{\rightarrow\infty}[ \text{ } \Rightarrow i,n \in N \\
}
\]
In the computational code:
-
p(x,y,z) represent the i-th point pi{xi,yi,zi}
-
kj→m are constant values characteristic of any single attractor, where k ∈ R and [0,j,m] ⇒ j,m ∈ N
-
dt is the infinitesimal increment
-
pNew ∈ R3 is the new point: pi+1{xi+1,yi+1,zi+1} that will calculated
In the ATTRACTORS window of glChAoS.P:
-
left side panel contains starting point coordinates p0{x0,y0,z0}
-
right side panel contains constant values used in the expression of the current attractor, where: kj = k[j]
-
δt it's modular via widget
Colors are indicative of point speed: distance between pi and pi+1
You can to start wglChAoS.P with a specific attractor directly from explore button.
Select lowResources for low resources devices (e.g. mobile devices)
\begin{align}
\dot{x} & = (z - k_1)x- k_3 \centerdot y \\
\dot{y} & = k_3 \centerdot x+(z - k_1)y \\
\dot{z} & = k_2 + k_0 \centerdot z-\frac{z^3}{3}-(x^2+y^2)(1+ k_4 \centerdot z)+ k_5 \centerdot zx^3 \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt*((p.z-k[1])*p.x - k[3]*p.y);
pNew.y =p.y + dt*((p.z-k[1])*p.y + k[3]*p.x);
const float xQ =p.x*p.x;
pNew.z =p.z + dt*(k[2] + k[0]*p.z - (p.z*p.z*p.z)/3.f - (xQ + p.y*p.y) * (1.f + k[4]*p.z) + k[5]*p.z*xQ*p.x);
\begin{align}
\dot{x} & = y \\
\dot{y} & = z \\
\dot{z} & = - k_0 \centerdot x - k_1 \centerdot y - z + k_2 \centerdot x^3 \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*p.y;
pNew.y = p.y + dt*p.z;
pNew.z = p.z + dt*(-k[0]*p.x - k[1]*p.y - p.z + k[2]*p.x*p.x*p.x);
\begin{align}
\dot{x} & = x(4-y) + k_0 \centerdot z \\
\dot{y} & = -y(1-x^2) \\
\dot{z} & = - x (1.5 - k_1 \centerdot z) -0.005z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*( p.x*(k[0] - p.y) + k[4]*p.z);
pNew.y = p.y + dt*(-p.y*(k[1] - p.x*p.x));
pNew.z = p.z + dt*(-p.x*(k[2] - k[3]*p.z) - k[5]*p.z);
\begin{align}
\dot{x} & = -k_0 \centerdot (x+y) \\
\dot{y} & = -y - k_0 \centerdot xz\\
\dot{z} & = k_0 \centerdot xy + k_1 \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(-k[0] * (p.x + p.y));
pNew.y = p.y + dt*(-p.y -k[0]*p.x*p.z);
pNew.z = p.z + dt*(k[0]*p.x*p.y + k[1]);
\begin{align}
\dot{x} & = k_0 \centerdot (y-x) \\
\dot{y} & = -xz + k_2 \centerdot y \\
\dot{z} & = xy - k_1 \centerdot z\\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0]*(p.y-p.x));
pNew.y = p.y + dt*(-p.x*p.z + k[2]*p.y);
pNew.z = p.z + dt*( p.x*p.y - k[1]*p.z);
\begin{align}
\dot{x} & = k_0 \centerdot x - yz \\
\dot{y} & = k_1 \centerdot y + xz \\
\dot{z} & = k_2 \centerdot z + x \frac{y}{3} \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0] * p.x - p.y * p.z);
pNew.y = p.y + dt*(k[1] * p.y + p.x * p.z);
pNew.z = p.z + dt*(k[2] * p.z + p.x * p.y/3.f);
\begin{align}
\dot{x} & = y \\
\dot{y} & = z \\
\dot{z} & = k_1 \centerdot x + k_2 \centerdot y + k_3 \centerdot z + k_4 \centerdot x^3 \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*p.y;
pNew.y = p.y + dt*p.z;
pNew.z = p.z + dt*(k[0]*p.x + k[1]*p.y + k[2]*p.z + k[3]*p.x*p.x*p.x);
\begin{align}
\dot{x} & = y - k_0 \centerdot x + k_1 \centerdot yz\\
\dot{y} & = k_2 \centerdot y - xz + z \\
\dot{z} & = k_3 \centerdot xy - k_4 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(p.y - k[0]*p.x + k[1]*p.y*p.z);
pNew.y = p.y + dt*(k[2]*p.y - p.x*p.z + p.z);
pNew.z = p.z + dt*(k[3]*p.x*p.y - k[4]*p.z);
\begin{align}
\dot{x} & = k_0 \centerdot x - yz \\
\dot{y} & = k_1 \centerdot y + xz \\
\dot{z} & = k_2 \centerdot z + x \frac{y}{3} \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0]*(p.y-p.x) + k[2]*p.x*p.z);
pNew.y = p.y + dt*(k[4]*p.x + k[5]*p.y - p.x*p.z);
pNew.z = p.z + dt*(k[1]*p.z + p.x*p.y - k[3]*p.x*p.x);
\begin{align}
\dot{x} & = k_0 \centerdot x- k_1 \centerdot yz \\
\dot{y} & = - k_2 \centerdot y+xz \\
\dot{z} & = - k_4 \centerdot x - k_3 \centerdot z + xy \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *(k[0]*p.x - k[1]*p.y*p.z);
pNew.y =p.y + dt *(p.x*p.z - k[2]*p.y);
pNew.z =p.z + dt *(k[4]*p.x - k[3]*p.z +p.x*p.y);
\begin{align}
\dot{x} & = k_0 \centerdot x+ k_1 \centerdot y+ k_2 \centerdot yz \\
\dot{y} & = k_3 \centerdot y-xz \\
\dot{z} & = k_4 \centerdot z + k_5 \centerdot xy \\
\end{align}
explore
evolution
now fly!
pNew.x =p.x + dt *(k[0]*p.x + k[1]*p.y + k[2]*p.y*p.z);
pNew.y =p.y + dt *(k[3]*p.y -p.x*p.z);
pNew.z =p.z + dt *(k[4]*p.z + k[5]*p.x*p.y);
pNew.x =p.x + dt *(k[0]*p.x + k[1]*p.y + k[2]*p.y*p.z);
pNew.y =p.y + dt *(k[3]*p.y*p.z - k[4]*p.x*p.z);
pNew.z =p.z + dt *(1.f - k[5]*p.z - k[6]*p.x*p.y);
\begin{align}
\dot{x} & = y \\
\dot{y} & = z \\
\dot{z} & = x^2-k_2 \centerdot x- k_1 \centerdot y - k_0 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*p.y;
pNew.y = p.y + dt*p.z;
pNew.z = p.z + dt*(-k[2]*p.x - k[1]*p.y - k[0]*p.z + p.x*p.x);
\begin{align}
\dot{x} & = -2 \pi \centerdot k_2 \centerdot y - k_0 \centerdot z(x+1) \\
\dot{y} & = 2 \pi \centerdot k_2 \centerdot x \\
\dot{z} & = k_0 \centerdot (x+1)^2 - k_1\\
\end{align}
rendering
evolution
now fly!
const float omega = 2.f * M_PI * k[2];
const float x1 = v.x+1.f;
pNew.x = p.x + dt*(-omega*p.y - k[0]*p.z*x1);
pNew.y = p.y + dt*omega*p.x;
pNew.z = p.z + dt*(k[0]*x1*x1 - k[1]);
\begin{align}
\dot{x} & = k_0 \centerdot k_3 -x^2-z^2- k_0 \centerdot x \\
\dot{y} & = xy - k_1 \centerdot xy - y + k_3 \\
\dot{z} & = k_1 \centerdot xy + xz - z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(-p.y*p.y -p.z*p.z -k[0]*p.x + k[0]*k[2]);
pNew.y = p.y + dt*(p.x*p.y - k[1]*p.x*p.z - p.y + k[3]);
pNew.z = p.z + dt*(k[1]*p.x*p.y + p.x*p.z - p.z);
\begin{align}
\dot{x} & = - k_0 \centerdot x -4y -4z -y^2 \\
\dot{y} & = - k_0 \centerdot y -4z -4x -z^2 \\
\dot{z} & = - k_0 \centerdot z -4x -4y -x^2 \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *(-k[0]*p.x - 4.f*p.y - 4.f*p.z -p.y*p.y);
pNew.y =p.y + dt *(-k[1]*p.y - 4.f*p.z - 4.f*p.x -p.z*p.z);
pNew.z =p.z + dt *(-k[2]*p.z - 4.f*p.x - 4.f*p.y -p.x*p.x);
\begin{align}
\dot{x} & = k_0 \centerdot y+ k_1 \centerdot x+ k_2 \centerdot yz \\
\dot{y} & = k_3 \centerdot y-z+ k_4 \centerdot xz \\
\dot{z} & = k_5 \centerdot z+ k_6 \centerdot xy \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0]*p.y + k[1]*p.x + k[2]*p.y*p.z);
pNew.y = p.y + dt*(k[3]*p.y - p.z + k[4]*p.x*p.z);
pNew.z = p.z + dt*(k[5]*p.z + k[6]*p.x*p.y);
\begin{align}
\dot{x} & = k_0 \centerdot (y-x) \\
\dot{y} & = k_1 \centerdot x - y - xz \\
\dot{z} & = - k_2 \centerdot z + xy
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0] * (p.y - p.x));
pNew.y = p.y + dt*(p.x * (k[1] - p.z) - p.y);
pNew.z = p.z + dt*(p.x * p.y - k[2] * p.z);
\begin{align}
\dot{x} & = k_0 \centerdot (y-\xi(x)) \\
\dot{y} & = x - y + z \\
\dot{z} & = - k_1 \centerdot y
\end{align}
\[ \xi(x) = m_5 x + \frac{1}{2} \sum_{i=1}^5 (m_{i-1}-m_i)(|x+c_i| - |x-c_i|) \]
rendering
evolution
now fly!
float f(const float x) {
const int M = 2, C = 7; float sum = 0;
for(int i=1; i<=5; i++) sum+= (k[M+(i-1)]-k[M+i])*(fabs(x+k[C+i]) - fabs(x-k[C+i]));
return k[M+5]*x + sum*.5f; }
pNew.x = p.x + dt*(k[0]*(p.y-f(p.x)));
pNew.y = p.y + dt*(p.x - p.y + p.z);
pNew.z = p.z + dt*(-k[1]*p.y);
\[ \text{ } m_j = k_s \rightarrow s = j+2, \text{ } \text{ } j \in [1,5]; \text{ } \text{ } \text{ } \text{ } c_j = k_t \rightarrow t = j+7, \text{ } \text{ } j \in [1,5]\]
\begin{align}
\dot{x} & = y - k_0 \centerdot x + 10yz \\
\dot{y} & = 5xz - x -0.4y \\
\dot{z} & = k_1 z - 5xy \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(-k[0]*p.x + p.y + 10.0*p.y*p.z);
pNew.y = p.y + dt*(-p.x - 0.4*p.y + 5.0*p.x*p.z);
pNew.z = p.z + dt*(k[1]*p.z - 5.0*p.x*p.y);
pNew.x = p.x + dt*p.y;
pNew.y = p.y + dt*(-p.x + p.y*p.z);
pNew.z = p.z + dt*(k[0] - p.y*p.y);
\begin{align}
\dot{x} & = k_0 \centerdot (y-x) + k_4 \centerdot yz\\
\dot{y} & = k_2 \centerdot x + k_3 \centerdot y - xz \\
\dot{z} & = xy - k_1 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(k[0]*(p.y-p.x)+k[4]*p.y*p.z);
pNew.y = p.y + dt*(k[2]*p.x+k[3]*p.y-p.x*p.z);
pNew.z = p.z + dt*(p.x*p.y-k[1]*p.z);
\begin{align}
\dot{x} & = - k_0 \centerdot x + k_0 \centerdot y \\
\dot{y} & = k_2 \centerdot x - y - xz \\
\dot{z} & = xy - k_1 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt*(-k[0]*(p.x - p.y));
pNew.y = p.y + dt*(k[2]*p.x - p.y - p.x*p.z);
pNew.z = p.z + dt*(p.x*p.y - k[1]*p.z);
\begin{align}
\dot{x} & = -y -z \\
\dot{y} & = x+ k_0 \centerdot y \\
\dot{z} & = k_1 +z(x - k_2) \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt *(-p.y - p.z);
pNew.y = p.y + dt *(p.x + k[0]*p.y);
pNew.z = p.z + dt *(k[1] + p.z*(p.x - k[2]));
\begin{align}
\dot{x} & = - k_1 \centerdot x+ k_0 \centerdot y - yz \\
\dot{y} & = x \\
\dot{z} & = - z - y^2 \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt *(-k[1]*p.x + k[0]*p.y - p.y*p.z);
pNew.y = p.y + dt *p.x;
pNew.z = p.z + dt *(-p.z + p.y*p.y);
\begin{align}
\dot{x} & = -x +y +yz \\
\dot{y} & = -x-y+ k_0 \centerdot xz \\
\dot{z} & = z - k_1 \centerdot xy \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt *(-p.x + p.y + p.y*p.z);
pNew.y = p.y + dt *(-p.x - p.y + k[0]*p.x*p.z);
pNew.z = p.z + dt *(p.z - k[1]*p.x*p.y);
\begin{align}
\dot{x} & = y \\
\dot{y} & = x(1 - z) - k_0 \centerdot y \\
\dot{z} & = x^2 - k_1 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt * p.y;
pNew.y = p.y + dt * (1.f-p.z)*p.x - k[0]*p.y);
pNew.z = p.z + dt * p.x*p.x - k[1]*p.z);
\begin{align}
\dot{x} & = k_0 \centerdot yz \\
\dot{y} & = k_1 \centerdot x - k_2 \centerdot y \\
\dot{z} & = 1 - k_3 \centerdot xy \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt * k[0]*p.y * p.z;
pNew.y = p.y + dt *(k[1]*p.x - k[2]*p.y);
pNew.z = p.z + dt *(1 - k[3]*p.x*p.y);
\begin{align}
\dot{x} & = y + z \\
\dot{y} & = -x + k_0 \centerdot y \\
\dot{z} & = x^2 -z \\
\end{align}
rendering
evolution
now fly!
pNew.x = p.x + dt *(p.y + p.z);
pNew.y = p.y + dt *(-p.x + k[0]*p.y);
pNew.z = p.z + dt *(p.x*p.x - p.z);
\begin{align}
\dot{x} & = (x - k_0 \centerdot y)cos(z) - k_1 \centerdot ysin(z) \\
\dot{y} & = (x + k_2 \centerdot y)sin(z) - k_3 \centerdot ycos(z) \\
\dot{z} & = k_4 + k_5 \centerdot z + k6 \centerdot atan(y(1-k_7)/x(1-k_8)) \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *((p.x - k[0]*p.y)*cos(p.z) - k[1]*p.y*sin(p.z));
pNew.y =p.y + dt *((p.x + k[2]*p.y)*sin(p.z) + k[3]*p.y*cos(p.z));
pNew.z =p.z + dt *(k[4] + k[5]*p.z + k[6]*atan(((1-k[7])*p.y) / ((1-k[8])*p.x)));
\begin{align}
\dot{x} & = - k_0 \centerdot x+sin(y) \\
\dot{y} & = - k_0 \centerdot y+sin(z) \\
\dot{z} & = - k_0 \centerdot z+sin(x) \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *(-k[0]*p.x + sinf(p.y));
pNew.y =p.y + dt *(-k[1]*p.y + sinf(p.z));
pNew.z =p.z + dt *(-k[2]*p.z + sinf(p.x));
\begin{align}
\dot{x} & = k_0 \centerdot (y-x) + k_3 \centerdot xz \\
\dot{y} & = k_1 \centerdot x - xz + k_5 \centerdot y \\
\dot{z} & = k_2 \centerdot z + xy -k_4 \centerdot x^2 \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt*(k[0]*(p.y -p.x) + k[3]*p.x*p.z);
pNew.y =p.y + dt*(k[1]*p.x + k[5]*p.y -p.x*p.z);
pNew.z =p.z + dt*(k[2]*p.z +p.x*p.y - k[4]*p.x*p.x);
\[ \text{TSUCS1: } \text{ } \text{ } k_1 = 0.0 \]
\begin{align}
\dot{x} & = k_0 \centerdot (y-x) \\
\dot{y} & = k_1 \centerdot x - k_2 \centerdot xz \\
\dot{z} & = e^{xy} - k_3 \centerdot z \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *(k[0]*(p.y -p.x));
pNew.y =p.y + dt *(k[1]*p.x - k[2]*p.x*p.z);
pNew.z =p.z + dt *(exp(p.x*p.y) - k[3]*p.z);
\begin{align}
\dot{x} & = k_0 \centerdot x + k_1 \centerdot y + yz \\
\dot{y} & = k_2 \centerdot y - xz + k_3 \centerdot yz \\
\dot{z} & = k_4 \centerdot z - xy \\
\end{align}
rendering
evolution
now fly!
pNew.x =p.x + dt *(k[0]*p.x + k[1]*p.y+ p.y*p.z);
pNew.y =p.y + dt *(k[2]*p.y - p.x*p.z - k[3]*p.y*p.z);
pNew.z =p.z + dt *(k[4]*p.z - p.x*p.y);