Showcases a fractal phenomenon I’ve relatively recently discovered. Fractal Flow is how the components of a fractal move around as their parameters change. For a fractal defined on the complex plane, such as the Julia set, the output is a complex number. For a more general fractal though, the fractal flow is the same type as the domain it’s defined on. For the Julia set’s fractal flow(the bottom image), the color represents the argument of the complex number. Red is positive real, lime is positive imaginary, cyan is negative real, and purple is negative imaginary. The whiteness is the intensity, so complex infinity looks white.
Fractal flow can most generally be understood as the rate a point on a fractal needs to move in order for some function of it to stay constant as its parameters change. For the images created by this code, said constant function is z∞.
For the case of a general Julia fractal where zn+1=f[zn,c], the fractal flow of a given point z₀ is defined by the iterative process which starts with z=z₀;m=-1;s=0; and then the following is applied repeatedly m/=f10[z,c];s+=m f01[z,c];z=f[z,c]; where f10=∂f/∂z and f01=∂f/∂c. Outside the Julia set, z will diverge to complex infinity, at which point m will tend towards 0, causing s to converge. Inside the Julia set though, s seems to always diverge to complex infinity. The fractal flow is ż=sċ.
The conventional Mandelbrot set is related to the conventional Julia set as follows. If a value of c is in the Mandelbrot set, the Julia set will be connected. A value of c is in the Mandelbrot set if z=0 is in the Julia set for a given c. This is because z=0 is a critical point. Critical points are defined as all points where (∂f/∂z)=0 for a given c. For f[z,c]=z²+c, (∂f/∂z)=2z=0 at z=0 only, so there’s only one critical point that needs to be checked. More general functions can have multiple critical points, and therefore multiple Mandelbrot sets. In the top image(the Mandelbrot set), each of the image’s color channels represent a given critical point’s Mandelbrot set. Every individual Mandelbrot set is effectively a black and white image. Values of c which are barely outside a Mandelbrot set tend to be the most visually interesting. I used the derivative bailout method to get smooth iteration counts.
Fractal flow provides a new way to create fractals which have analog-values(real/complex) instead of discrete-values(integers) as well as vector-valued fractals.
EDIT(06/06/2023): Fixed bugs in randRecomp which decreased variety. Made function outputs easier to copy paste. Fixed Manipulate breaking upon reloads(Credit Paul Abbott).
Created by Michael Ostroff, a member of FAU’s MPCR Lab.