A few weeks ago, it occurred to me to experiment with Mandelbrot sequences with variable exponents and after a few experiments using TensorFlow I made a couple mathematical observations which were both surprising and beautiful.

The goal of this blog post is to describe how I arrived at these observations and the neat mathematical demonstration I found which explains their underlying causes.

The original Mandelbrot sequence:

Mandelbrot sets are defined in terms of the following quadratic sequence in the complex plane:

\begin{equation} z_{n+1} = z_n^2 + z_0 \end{equation}

Using this sequence, the Mandelbrot is normally defined as follows:

\begin{equation} M = \{z_0 \in \mathbb{C}: \lim_{n \to \infty} |z_n| < \infty \} \end{equation}

Now, given that \(z_n\) might be an oscillating sequence we need to resort to a few approximations in order to simulate Mandelbrot sets on a computer. Here’s a short list:

\(1.\) Finite precision.

\(2.\) Stopping criteria for divergence.

\(3.\) Stopping criteria for the number of iterates.

To address these issues we use 32-bit floating point numbers, a pre-defined upper-bound on the modulus of \(z_n\) and a limit on the number of iterations. With an upper-bound of 7.0 and a limit of 500 iterations, the reader should obtain an image similar to the following figure:

This is as much as I will say about Mandelbrot sets although if the reader is interested in learning more, I highly recommend the primer on Wolfram MathWorld.

Generalised Mandelbrot sequences:

Things became interesting when I experimented with recursive equations of the form:

\begin{equation} \forall \alpha \in \mathbb{Z}, z_{n+1} = z_n^\alpha + z_0 \end{equation}

\begin{equation} \forall \alpha \in \mathbb{Z}, z_{n+1} = \overline{z_n}^\alpha + z_0 \end{equation}

Using equation (3), I obtained the following image for exponents of -2.0:

and for exponent -4.0:

In fact, I made the following observations:

\(1.\) Using equation (3), the resulting structure has \(\alpha\) symmetries when \(\alpha \geq 2\) and \(\lvert \alpha \rvert + 1\) symmetries when \(\alpha \leq -2\).

\(2.\) Using equation (4), the resulting structure has \(\alpha+1\) symmetries when \(\alpha \geq 2\) and \(\lvert \alpha \rvert-1\) symmetries when \(\alpha \leq -2\).

The origin of these mysterious symmetries:

Initially, I thought that an explanation for these beautiful observations would require sophisticated mathematical analysis. However, after thinking carefully about the problem last Tuesday evening I discovered a demonstration that was both elegant and simple.

Given the observed geometry of these figures, we are looking for reflection and rotation symmetries where the axes of reflection and rotation coincide. Now, a rotation in the complex plane \(\mathbb{C}\) is equivalent to multiplication by some \(R \in \mathbb{C}\) where \(|R|=1\) whereas a reflection in \(\mathbb{C}\) about the axis \(R=e^{i\theta}\) is equivalent to the transformation \(z \mapsto \overline{z}R^2\).

Given the first recurrence relation:

\begin{equation} \forall c \in \mathbb{C},z_{n+1} = z_n^\alpha + c \end{equation}

we are looking for \(R\) that simultaneously satisfy:

\begin{equation} (Rz_n)^\alpha + Rc=R(R^{\alpha-1}z_n^\alpha + c)=R(z_n^\alpha + c) \end{equation}

\begin{equation} \lvert(\overline{z_n}R^2)^\alpha+\overline{c}R^2\rvert^2=\lvert \overline{z_n}^{\alpha}R^{2(\alpha-1)}+\overline{c}\rvert^2=\lvert \overline{z_n}^{\alpha}+\overline{c}\rvert^2= \lvert z_n^{\alpha}+c \rvert^2 \end{equation}

So we must solve for \(R\) where \(R^{\alpha-1} = 1\) and we find that:

\begin{equation} R \in \mathcal{U}_{\alpha-1}=\{e^{\frac{2 k\pi i}{\alpha-1}}:k \in [0,\alpha-2] \} \end{equation}

This corresponds to \(\alpha−1\) symmetries when \(\alpha \geq 2\) and \(\lvert \alpha \rvert+1\) symmetries when \(\alpha \leq -2\).

Given the second recurrence relation:

\begin{equation} \forall c \in \mathbb{C},z_{n+1} = \overline{z_n}^\alpha + c=\left(\frac{z_n^{-1}}{|z_n|^2}\right)^\alpha + c \end{equation}

we are looking for \(R\) that simultaneously satisfy:

\begin{equation} \left(\frac{R^{-1}z_n^{-1}}{|Rz_n|^2}\right)^\alpha + Rc=R\left(\frac{R^{-\alpha-1}z_n^{-\alpha}}{|z_n|^{2\alpha}}+c \right)=R\left(\left(\frac{z_n^{-1}}{|z_n|^2}\right)^\alpha + c\right) \end{equation}

\begin{equation} \big\lvert \left(\frac{R^{-2}\overline{z_n}^{-1}}{|z_n|^2}\right)^\alpha + \overline{c}R^2 \big\rvert^2=\big\lvert z_n^\alpha R^{-2\alpha} + \overline{c}R^2 \big\rvert^2=\big\lvert z_n^\alpha R^{-2(\alpha+1)} + \overline{c} \big\rvert^2=\big\lvert \overline{z_n}^\alpha + c \big\rvert^2 \end{equation}

So we must solve for \(R\) where \(R^{-\alpha-1}=1\) and we find that:

\begin{equation} R \in \mathcal{U}_{\alpha+1}^{-1}=\{e^{\frac{-2 k \pi i}{\alpha+1}}:k \in [0,\alpha]\} \end{equation}

This corresponds to \(\alpha+1\) symmetries when \(\alpha \geq 2\) and \(\lvert \alpha \rvert-1\) symmetries when \(\alpha \leq -2\).