Primary Pole Preimage Rosette
Centred on the real pole preimage z = −2⁻¹/³ ≈ −0.79370053 where N(z) = 0, six braided petal lobes unfold between the upper and lower cube-root basins.
If we apply Newton's root-finding method to a polynomial in the complex plane and color each starting point by which root it converges to and how quickly it arrives, the boundary between the root basins unfolds into an intricate fractal known as the Newton fractal.
For the cubic polynomial p(z) = z³ − 1, the three cube roots of unity sit on the unit circle at 120° intervals: r0 = 1 on the positive real axis and r1, r2 = −1/2 ± i√3/2 in the left half-plane.
In 1879, Arthur Cayley asked how Newton's method partitions the complex plane among the three cube roots of unity. While each root is surrounded by a broad immediate basin of attraction, the boundary separating any two basins is a Lakes-of-Wada fractal: every boundary point touches all three root basins simultaneously.
At the origin z = 0 where the derivative p′(z) = 3z² vanishes, Newton's map has a pole of order 2 that slings nearby points toward infinity and wraps all three basins into six-fold symmetric chains of rosettes. Adding a complex relaxation factor a = 1 + 0.32i twists these radial necklaces into logarithmic spirals.
The generalized Newton-Raphson iteration for a complex polynomial p(z) is:
For the canonical cubic polynomial and its derivative:
Its three attracting fixed points are the cube roots of unity:
Each pixel supplies the initial complex guess z0:
While the complex relaxation parameter a (default a = 1) controls the step size and angle:
Expanding the rational map (2z³ + 1) / (3z²) for a = 1 reduces each step to real and imaginary components:
For general cubic polynomials such as Stephen Smale's counterexample p(z) = z³ − 2z + 2, the inflection point z0 = 0 is a free critical point that lands in a superattracting period-2 cycle instead of a root:
We explore the Newton fractal by seeding each pixel's starting (x0, y0) coordinates into the recurrence and recording how the orbit behaves:
Unlike the Mandelbrot set, whose boundary folds around a critical point to reveal new structures at arbitrarily deep magnifications, a fixed Newton map is uniformly expanding on its Julia boundary and linearizes into self-similar copies of its poles and periodic cycles. The richest geometric transformations emerge when we vary the polynomial family, twist the step with complex relaxation, or introduce free critical points that capture orbits into non-convergent Smale basins.
Changing the polynomial p(z) reshapes both the attracting root basins and the poles where p′(z) = 0. A pole of order m wraps all root basins m + 1 times around the singularity into a 2(m + 1)-rayed starburst, while adding a root at the origin splits the central pole into a ring of simple poles where four basins braid together.
At the origin z = 0 where p′(z) = 3z² vanishes, the Newton map has a double pole that wraps the three cube-root basins twice around the complex plane into a six-rayed starburst.
Centred on the real pole preimage z = −2⁻¹/³ ≈ −0.79370053 where N(z) = 0, six braided petal lobes unfold between the upper and lower cube-root basins.
By Cayley’s problem and the Lakes of Wada property, every boundary point between two basins of attraction touches all three basins simultaneously, braiding the third root’s basin along every seam.
Multiplying z³ − 1 by z produces p(z) = z⁴ − z, turning the origin z = 0 from a pole into a fourth attracting root with fourth-order convergence (N(z) ≈ −3z⁴) while splitting the old pole into three simple poles at z = 4⁻¹/³e²πik/3.
For the fourth roots of unity p(z) = z⁴ − 1 at ±1 and ±i, the derivative p′(z) = 4z³ has a triple zero at the origin, creating a third-order pole that winds four distinct root basins into an eight-rayed compass.
Raising the degree to p(z) = z⁶ − 1 places six roots around the unit circle and a fifth-order pole at z = 0 where p′(z) = 6z⁵ vanishes, weaving twelve radial spokes of nested hexagonal rosettes.
Scaling the Newton step by a complex relaxation factor a = a_x + ia_y shifts each simple root's multiplier from 0 (quadratic superattraction) to 1 − a (linear attraction). Inside the stability disk |1 − a| < 1, complex and over-relaxed steps twist radial pole channels into logarithmic spirals, pinwheels, and Celtic knots.
Introducing a complex relaxation step a = 1 + 0.32i gives each cube root a rotational multiplier 1 − a = −0.32i, twisting the radial Wada necklaces into logarithmic spiral arms.
Under-relaxing the iteration with a = 0.78 + 0.42i winds the six origin rays into a counter-rotating pinwheel of persimmon, celadon jade, and mineral indigo petals.
With complex over-relaxation a = 1.24 − 0.28i, each step overshoots along a curved tangent and weaves the three basins of attraction into an interlocking Celtic knot around the origin.
Pushing the step factor to a = 1.56 + 0.32i brings the root multiplier |1 − a| ≈ 0.645 closer to the unit-circle stability threshold |1 − a| = 1, inflating the Julia boundary into a dense cellular filigree of coiled spiral eddies.
Combining the four-root quartic p(z) = z⁴ − 1 with complex relaxation a = 1.08 + 0.34i twists the eight-rayed triple pole at the origin into a four-color spiral mandala.
Stephen Smale (1985) and Curt McMullen (1987) showed that Newton's method is not globally convergent for cubic polynomials. Because the Newton derivative N′(z) = p(z)p″(z)/p′(z)² vanishes at the inflection point where p″(z) = 0, that free critical point can fall into a superattracting periodic cycle, carving ink-black non-convergent islands directly between the colored root basins.
For p(z) = z³ − 2z + 2, the inflection point z0 = 0 maps to N(0) = 1 and back to N(1) = 0 in a superattracting period-2 cycle. Starting guesses inside the ink-black basins around 0, 1, and their preimages oscillate forever instead of converging to any root.
Between the two simple poles at z = ±√(2/3) ≈ ±0.8165 where p′(z) = 3z² − 2 = 0, the black non-convergent lakes surrounding z = 0 and z = 1 are framed by concentric Wada necklaces from the real root r0 ≈ −1.7693 and complex roots r1, r2 ≈ 0.8846 ± 0.5897i.
Because the numerator of N(z) = (2z³ − 2)/(3z² − 2) vanishes at the cube roots of unity, z = −1/2 + i√3/2 maps in one step to the critical point z = 0, replicating the ink-black non-convergent basin inside an archipelago of three-color Wada channels.
Under-relaxing Smale’s cubic with a = 0.62 + 0.18i shifts N_a(0) = a off the period-2 trap. Once the free critical point escapes the cycle and converges to a root, the black non-convergent islands vanish and dissolve into spiraling three-root channels.
Root convergence time: given a starting point (x0, y0), we can color each pixel by identifying which root r0, r1, or r2 the orbit converges to, the number of iterations required to enter a small ε-neighborhood of that root, and the residual distance upon arrival.
const CONVERGENCE_THRESHOLD = 1e-4;
const MAX_ITERATIONS = 1024;
const ROOTS = [
[1, 0],
[-0.5, Math.sqrt(3) / 2],
[-0.5, -Math.sqrt(3) / 2]
];
function iterateUntilConvergence(x0, y0) {
let x = x0, y = y0;
for (let n = 1; n <= MAX_ITERATIONS; n++) {
const r2 = x*x + y*y;
const r4 = Math.max(1e-30, r2*r2);
const sx = (x - (x*x - y*y) / r4) / 3;
const sy = (y + (2*x*y) / r4) / 3;
x -= sx;
y -= sy;
for (let k = 0; k < 3; k++) {
const dx = x - ROOTS[k][0], dy = y - ROOTS[k][1];
const d2 = dx*dx + dy*dy;
if (d2 < CONVERGENCE_THRESHOLD) {
return [n, d2, k, true];
}
}
}
return [MAX_ITERATIONS, Infinity, 0, false];
}We'll set the RGBA colors of every pixel in the image based on the converged root index and the number of iterations. Shifting the palette phase by one-third of a cycle per root assigns each basin its own distinct color family.
function getColor(numIterations, rootIndex) {
return [
255, // red
numIterations * 7, // green
rootIndex * 85, // blue (root basin tint)
numIterations * 15 // alpha
];
}Here's a general function for drawing Newton fractals onto canvas elements. Changing the polynomial recurrence or relaxation factor a transforms the root basins and spiral geometry.
function drawNewtonFractal(canvasEl, xRange, yRange, getColor) {
const canvasWidth = canvasEl.width;
const canvasHeight = canvasEl.height;
const context = canvasEl.getContext('2d');
const canvasImageData =
context.createImageData(canvasWidth, canvasHeight);
const image = canvasImageData.data;
for (let i = 0; i < canvasHeight; i++) {
for (let j = 0; j < canvasWidth; j++) {
const x0 = xRange[0] +
j*(xRange[1] - xRange[0]) / canvasWidth;
const y0 = yRange[0] +
i*(yRange[1] - yRange[0]) / canvasHeight;
const [numIterations, rootDistanceSq, root, converged] =
iterateUntilConvergence(x0, y0);
const pixelIndex = 4*i*canvasWidth + 4*j;
if (converged) {
const mu = getMu(numIterations, rootDistanceSq);
const pixels = getColor({ numIterations, mu, root });
for (let p = 0; p < 4; p++) {
image[pixelIndex + p] = pixels[p];
}
}
}
}
context.putImageData(canvasImageData, 0, 0);
}Here's the cubic Newton fractal (z³ − 1 = 0) colored by root basin and integer iteration count alone, showing discrete contour bands around each root and along the six rays meeting at the origin.
Because simple roots are superattracting fixed points where the error squares on every step (|z_n − r_k| ≈ |z_{n-1} − r_k|²), taking a double logarithm of the residual root distance produces a continuous iteration count (μ) that eliminates contour banding.
const CONVERGENCE_THRESHOLD = 1e-4;
function getMu(numIterations, rootDistanceSq) {
const logRatio = Math.log(rootDistanceSq) /
Math.log(CONVERGENCE_THRESHOLD);
return numIterations - Math.log(logRatio) / Math.LN2;
}
function getColor(mu, root) {
return [ 255, mu * 7, root * 85, mu * 15 ];
}Here's the same Newton fractal with continuous root-convergence counts and a smooth Oklab palette. Each of the three cube roots of unity receives its own 120° Lakes of Wada phase sector in persimmon coral, celadon jade, and mineral indigo, while root-centered smoothingSteps remove contour seams.
Damped and Nova variants of Newton's method introduce a complex relaxation parameter a or an additive shift +c at each step, bridging the basins of attraction of root-finding maps with the parameter-plane islands of the Mandelbrot and Julia sets.
All fractals on the page are interactive and rendered when they're in view. The renderer uses WebGL by default for high performance, falling back to canvas if WebGL is not available.
Fractal image controls when hovering
TODO