Our groovy complex squaring demo illustrates some pretty interesting behavior. Specifically:
Very similar behavior happens when we iterate pretty much any polynomial. Let's generalize just a bit to polynomials of the form
\[f_c(z) = z^2 + c.\]You can play with this family right here:
The image on the left is called the Mandelbrot set. It lives in the complex plane. When you click on it, you have essentially chosen a point \(c\) and defined the function \(f_c\). As a result, an image appears on the right; this is called the Julia set or filled Julia set of \(f_c\).
Lemma: Suppose that \(|z_0|\geq|c|\) and that \(|z_0|>2\). Then, \(|f_c(z_0)| > |z_0|\) and the orbit of \(z_0\) under iteration of \(f_c\) will diverge to \(\infty\).
Proof: Using the triangle inequality, we have: \[\begin{align} |z_0^2| &= |z_0^2+c-c| \\\ &\leq |z_0^2+c|+|-c| \\\ &= |z_0^2+c| + |c|. \end{align}\] So that \[\begin{align} |z_0^2+c| &\geq |z_0^2|-|c| \\\ &\geq |z_0^2|-|z_0| \\\ &=|z_0|(|z_0|-1)>|z_0|. \end{align}\] In fact, if we let \(\lambda = |z_0|-1\) and define \(z_{i+1}=f_c(z_i)\), then \(|f_c(z_{i+1})| \geq \lambda f_c(z_i)\) for all \(i\). That is, each term in the orbit is larger than the previous term by at least this same common factor. As a result, the orbit diverges to \(\infty\).
Corrollary: Suppose we iterate \(f_c\) from some initial seed \(z_0\in\mathbb C\) and find that, for some \(k\in\mathbb N\), \(|f_c^k(z_0)|>\max(c,2)\). Then \[\lim_{n\to\infty} f_c^n(z_0) = \infty.\] In other words, if some iterate ever exceeds both \(c\) and \(2\) in absolute value, then the orbit escapes.
Definition: The filled Julia set of a polynomial \(f\) is exactly the set of all initial seeds \(z_0\in\mathbb C\) that lead to bounded orbits under iteration of \(f\). The Julia set of \(f\) is the boundary of the filled Julia set.
Since the Julia set is the boundary of the filled Julia set any neighborhood (no matter how small) of any point in the Julia set contains points that stay bounded under iteration of \(f_c\) and points that diverge to \(\infty\) under iteration of \(f_c\). The Julia set is exactly where the chaos lies under iteration of \(f_c\).
We can generate an image of the filled Julia of the quadratic polynomial \(f_c(z)= z^2+c\) as follows.