Enter a comma separated list of polynomial coefficients in the order of ascending degree to define a polynomial. Hit the generate button to generate the filled Julia set of the resulting polynomial using an escape time algorithm. You can click on the image to choose an initial seed and visualize the resulting orbit.

coefficients:

zmin:
zmax:
Axes:

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 general polynomial \(f(z)= a_nz^n+a_{n-1}z^{n-1}+\cdots+a_0\) as follows.

- Choose an escape radius
- In the case of \(f_c(z)=z^2+c\), this can be the maximum of \(|c|\) and \(2\).
- For the more general polynomial, it can be the maximum of \(2\) and \[2\left|\frac{a_{n-1}+\cdots+a_0}{a_n}\right|.\]

- Choose a maximum possible number of iterations. The correct choice really depends on the function and how close you want to zoom in. For a global view of a Julia set of a function of the form \(f_c(z)=z^2+c\), a maximum iteration count of \(100\) is a sufficient and popular choice. Generally, the higher the maximum iteration count, the more accurate the picture but the longer the computation time.
- Choose a grid of initial seeds in the complex plane. These will be represented as pixels on our computer screen and we'll generate our image by shading each of these points.
- For each point in your grid of initial seeds, iterate the function \(f\) from that point
until one of two things happens.
- The iterate exceeds our escape radius, in which case we shade the pixel according to how many iterates it took to get there, or
- We reach our maximum allowable number of iterates, in which case we color the pixel black.

The exact escape radius depends on the polynomial. In particular, suppose that \(|z_0|>2\) and \[|z_0| > 2\left|\frac{a_{n-1}+\cdots+a_0}{a_n}\right|.\] Then, the orbit of \(z_0\) under iteration of \(f\) escapes to \(\infty\). Here's a supporting computation:

\[\begin{align} |z_1| = |f(z_0)| &= |a_nz_0^n+a_{n-1}z_0^{n-1}+\cdots+a_0| \\ &= \left|z_0^n\left(a_n+\frac{a_{n-1}}{z_0}+\cdots+\frac{a_0}{z_0^n}\right)\right| \\ &\geq |z_0^n|\left(|a_n| - \left|\frac{a_{n-1}}{z_0}+\cdots+\frac{a_0}{z_0^n}\right|\right) \\ &\geq |z_0^n|\left(|a_n| - \left|\frac{a_{n-1}+\cdots+a_0}{z_0}\right|\right) \\ &> 2|z_0| \frac{1}{2} = \lambda |z_0|, \end{align}\]for some \(\lambda>1\). In general, \(|z_k|\geq \lambda |z_{k-1}|\) - i.e. each iterate is larger than the previous by at least this same multiplicative factor.