trying out homotopy methods (construct an ordinary differential equation to interpolate from root at iteration k to two roots at iteration k+1) to solve f_c^n(0) = z for z non-zero; where f_c(w) = w^2+c and f^n denotes n-fold composition. a paper I found describes it for z zero, wasn't too much algebra work to adapt to my use case.

image shows paths between roots to iteration 12 or so, for z = i.

hoping eventually to use it to accelerate zooming into nebulabrot aka buddhabrot, nothing to show for that yet though. not finished debugging the root finder yet.

the idea is to find little balls around the roots that when iterated will hit the viewing area around z (ideally ball contains some boundary of mandelbrot set => some parts of the ball are near (pre)periodic points and will hit the viewing area many times).

will use derivatives to work out how big each ball should be, and distance estimate to check if ball contains boundary.

the tough part is that balls may overlap.

this approach is deterministic. afaik most buddhabrot zoomers use stochastic methods like metropolis-hastings.

reference:
https://ir.lib.uwo.ca/etd/4028/ https://uwo.scholaris.ca/server/api/core/bitstreams/2cf58b26-c757-48e1-833c-bda6c70a1e18/content
"A comparison of solution methods for Mandelbrot-like polynomials"
Eunice Y. S. Chan, MSc thesis, The University of Western Ontario

#maths #homotopy #RootFinding #fractals

start from definition of iterated f, whose roots c we wish to find for f = 0

f^1(c, z) = c - z
f^(n+1)(c, z) = (f^n(c, z) + z)^2 + c - z
df^(n+1)/dc = 2 (f^n(c,z) + z) df^n/dc + 1

define a homotopy with a parameter t that interpolates between iterations. t is squared for later use (not sure why...)

H_n(c, z, t) = (f^n(c, z) + t^2 z)^2 + t^2 (c - z)

H_n(c,z,0) has roots of f^n twice
H_n(c,z,1) has roots of f^(n+1)

setting H=0 and differentiating wrt t, then rearranging algebraically, gives

dc/dt = - (4 t z f^n(c, z) + 4 t^3 z^2 + 2 t (c - z)) / (2 (f^n(c ,z) + z t^2) df^n/dc + t^2)

now substitute c -> c + a t into H (to perturb from the singularity at t = 0), taylor expanding f. equating coefficients* of t^2 and solving for a gives

a = +- sqrt(-(2 f^n(c,z) + c - z)) / df^n/dc

this gives two initial conditions c+-at (t small) for the differential equation, which can be solved for t->1 to get the two next roots

* not sure how/why this step works...

@mathr
> [t] is squared for later use (not sure why...)

Chan's paper uses substitution z/c->z' to get p(z')->zp²(z')+1 as recursion for Mandelbrot's formula. It looks like c is gone now. It's not, but I keept getting confused. Your calculation doesn't seem to do that, which is nice.

I don't know. I felt squaring t was necessary to get a linear pertubation at the derivative. It doesn't have to do with the substitution above, right? And it shouldn't be resposible to get two branches, hey, that one sounds silly right away.

There's no time for me to go hunting right now. Too bad.

@RefurioAnachro ah yeah, for the reduced Mandelbrot polynomials you need t^2 because t alone would vanish once you differentiated, so no way to do the bit about getting initial condtions.

I got a bit confused when Chan substituted c -> c + a t + O(t^2) (IIRC?), I think the O(t^2) part is not needed here, just c -> c + a t is enough. Then after Taylor expansion ignore higher order terms (e.g. O(t^3)).