CHAPTER 11
Fractal-Lorenz Map
A Fractal-Lorenz Map is a combination of a fractal figure and Lorenz calculations.
On the left-hand side, the Mandelbrot pixel and point figures are presented and pseudocode is shown.
One hundred iterations of the Mandelbrot-Lorenz Map were generated with the map plotted each ten iterations.
On the right-hand side, the Mandelbrot-Lorenz Map at 40 iterations is presented (X-Y, X-Z, Y-Z respectively) and pseudocode is shown where:
- dt=0.02
- r=28.0
- s=10.0
- b=2.667
Mandelbrot Pixel and Point
for (int i = 0; i ≤ 500; i++)
{
for (int j = 0; j ≤ 500; j++)
{
x = 0.0;
y = 0.0;
xs = -2.5 + (i / 100.0);
ys = -2.5 + (j / 100.0);
k = 0;
do
{
xnew = x*x - y*y + xs;
ynew = 2.0*x*y + ys;
x = xnew;
y = ynew;
k = k + 1;
} while ((k ≤ 64) && (x*x + y*y ≤ 6.25));
xarray[i][j] = x;
yarray[i][j] = y;
zarray[i][j] = k;
PlotPixel(i, j, color);
PlotPoint(x, y, color);
}
}
Mandelbrot-Lorenz Map
for (int m = 1; m ≤ 100; m++)
{
for (int i = 0; i ≤ 500; i++)
{
for (int j = 0; j ≤ 500; j++)
{
x = xarray[i][j];
y = yarray[i][j];
z = zarray[i][j];
dx = s * (y - x);
dy = r * x - y - x * z;
dz = x * y - b * z;
xarray[i][j] = x = x + dx * dt;
yarray[i][j] = y = y + dy * dt;
zarray[i][j] = z = z + dz * dt;
if (m % 10 == 0)
{
PlotPoint(x, y, color);
PlotPoint(x, z, color);
PlotPoint(y, z, color);
}
}
}
}
| Mandelbrot | Build: (f(x,y), g(x,y)) | Escape: h(x,y)>value | Plot |
|---|---|---|---|
| Basic Mandelbrot Set | (x² - y², 2.0*x*y) | x² + y² > 6.25 | Pixel, Point, Lorenz |
| Mandelbrot Variant #1 | (x*y², -y*x²) | x³ + y² > 6.25 | Pixel, Point, Lorenz |
| Mandelbrot Variant #2 | (x*y², 2.0*x*y) | x³ + y² > 6.25 | Pixel, Point, Lorenz |
On the left-hand side, the Julia pixel and point figures are presented and pseudocode is shown.
One hundred iterations of the Julia-Lorenz Map were generated with the map plotted each ten iterations.
On the right-hand side, the Julia-Lorenz Map at 40 iterations is presented (X-Y, X-Z, Y-Z respectively) and pseudocode is shown where:
- dt=0.02
- r=28.0
- s=10.0
- b=2.667
Julia Pixel and Point
for (int i = 0; i ≤ 500; i++)
{
for (int j = 0; j ≤ 500; j++)
{
xs = 0.0;
ys = 0.0;
x = -2.5 + (i / 100.0);
y = -2.5 + (j / 100.0);
k = 0;
do
{
xnew = x*x - y*y + xs;
ynew = 2.0*x*y + ys;
x = xnew;
y = ynew;
k = k + 1;
} while ((k ≤ 64) && (x*x + y*y ≤ 6.25));
xarray[i][j] = x;
yarray[i][j] = y;
zarray[i][j] = k;
PlotPixel(i, j, color);
PlotPoint(x, y, color);
}
}
Julia-Lorenz Map
for (int m = 1; m ≤ 100; m++)
{
for (int i = 0; i ≤ 500; i++)
{
for (int j = 0; j ≤ 500; j++)
{
x = xarray[i][j];
y = yarray[i][j];
z = zarray[i][j];
dx = s * (y - x);
dy = r * x - y - x * z;
dz = x * y - b * z;
xarray[i][j] = x = x + dx * dt;
yarray[i][j] = y = y + dy * dt;
zarray[i][j] = z = z + dz * dt;
if (m % 10 == 0)
{
PlotPoint(x, y, color);
PlotPoint(x, z, color);
PlotPoint(y, z, color);
}
}
}
}
| Julia | Build: (f(x, y), g(x, y), (xs, ys)) | Escape: h(x, y)>value | Plot |
|---|---|---|---|
| Basic Julia Set (0.0, 0.0) | (x² - y², 2.0*x*y), (0.0, 0.0) | x² + y² > 6.25 | Pixel, Point, Lorenz |
| Julia Variant #1 | (x*y², -y*x²), (0.0, 0.0) | x² + y² > 6.25 | Pixel, Point, Lorenz |
| Julia Variant #2 | (x*y², -y*x²), (-1.540, 0.320) | x² + y² > 6.25 | Pixel, Point, Lorenz |
Resource for Lorenz calculations:
https://en.wikipedia.org/wiki/Lorenz_system
FRACTAL FIND