The "Newton-Raphson" method is an algorithm for finding the roots of
differentiable equations. See
It can be used to generate fractal images like these.
February 2020: The interactive WebGL version has been tidied up and
moved to here
My old native client version no longer works, but you can
see some of the images it generated here.
If you only want to solve polynomials, rather than draw pictures, visit the polynomials page.
The images in this section were drawn using the python script (no longer available).
This image shows a situation where the iterations converge on a cycle of 2 points. It is generated using the string
"e1,-2.55,0,-1 s1280x1024 i6000 b30 fpic1 l20 c.866,0 m7", which I will explain fully when I publish the application.
For now it indicates that we are looking at the polynomial
"x3-2.55x2-1 = 0 around the
point (0.866,0). The attractors are:
Point attractor at (-0.0691821081964128 - 0.605959771012239i)
Point attractor at 2.68836421639283
Point attractor at (-0.0691821081964128 + 0.605959771012239i)
Divergent attractor, limit = 1E+20
Cyclic attractor: 2 points
The basic Newton Raphson equation can be modified by adding in a sort of damping factor, called 'a',
see the "Generalisation" section on the
Wikipedia page. In my code I call this "alpha". If you perform the calculations keeping the
seed point constant and varying 'a' you can get patterns like the one on the left, showing the behaviour of the
simple cubic x3 = 1 with the seed value (0.1,0).
This calculation only converges when 'a' is in the circular region of radius 1 centered on the point
(1,0). In the image the area outside this region is shaded grey. The white region inside this circle is
the region where the calculations didn't converge. See the next image for more on this.
I believe that the points in the white region of the previous image would converge given time, but they have instead been
identified as converging on cycles. This is a useful feature of the application as it greatly speeds up the calculations
in these slowly converging regions. My guess is that the convergeance follows a very slowly shrinking spiral,
which looks to the code like loops, I may investigate this at a later date.
The image on the left is the same calculation as in the previous image
(x3 = 1)
but this time these non-convergent
points have been assigned colours according to the size of the loops they converge on. These colours
as assigned at random, so I can't identify which colour corresponds to which loop size.
This next image zooms in on the region towards the top right of the previous image, it is centered on the
point 'a' = (1.81,-0.39). I've included this because I like it, especially as you can see some
interesting structure in the "cyclic" region to the right of the image.
The application parameters are "e1,0,0,-1 s1280x1024 i60000 b120 fpic1 l20 z0.1,0 m40 tA c1.81,-0.39 xI".
The cyclic colours are assigned randomly so you probably won't get exactly the same image.
In this "Alpha-map" version, if you choose as you seed point a value that doesn't converge on
a root in the standard version, then you can find non convergent regions that look like the
This one was generated using "e1,-2.55,0,-1 s1280x1024 i6000 b60 fpic1 l20 z0.866,0 m30 tA c1,0"
which uses the same polynomial as in the first image:
"x3-2.55x2-1 = 0, with
the seed point (0.866,0) and is centered around 'a' = (1,0).
Note that the Mandelbrot isn't perfect, the amount of corruption depending on the value of the seed point.
There is probably a value that produces a perfect image but I haven't worked out what it is.
This section catalogs some of the common patterns. There are two columns, the first shows the standard iteration
performed over different seed values, the second shows a example of the corresponding "alpha-map", formed
by varying the 'α' parameter in the iteration
Zn+1 = Zn− αF(Zn) ⁄ F'(Zn)
while keeping the seed point constant.