# Misiurewicz Point (“Full”)

See Newton’s method for Misiurewicz points (2015).

A preperiodic Misiurewicz point \(c\) of preperiod \(q\) and period \(p\) satisfies:

\[ F^{q+p}(0, c) = F^{q}(0, c) \] \[ F^{q'+p}(0, c) \neq F^{q'}(0, c) \quad q' < q \]

Dividing by the non-zero factors suggested by the second equation gives:

\[ G(c) = \frac{ F^{q + p}(0, c) - F^{q}(0, c) }{ \prod_{q'=0}^{q-1}\left( F^{q' + p}(0, c) - F^{q'}(0, c) \right) } \]

Applying Newton’s root finding method iterations to \(G(c) = 0\) finds the preperiodic Misiurewicz point, with a larger basin of attraction than the “naive” method. However it may not converge as precisely, one approach is to first use this “full” method and then use the “naive” method on its output.

# 1 C99 Code

#include <complex.h>

double _Complex m_misiurewicz_full
    (double _Complex c0, int q, int p, int n)
{
    double _Complex c = c0;
    for (int m = 0; m < n; ++m)
    {
        double _Complex z = 0;
        double _Complex dc = 0;
        double _Complex zp = 0;
        double _Complex dcp = 0;
        double _Complex h = 1;
        double _Complex dh = 0;
        for (int i = 0; i < p; ++i)
        {
            dc = 2 * z * dc + 1;
            z = z * z + c;
        }
        for (int i = 0; i < q; ++i)
        {
            double _Complex k = z - zp;
            h = h * k;
            dh = dh + (dc - dcp) / k;
            dc = 2 * z * dc + 1;
            z = z * z + c;
            dcp = 2 * zp * dcp + 1;
            zp = zp * zp + c;
        }
        dh = dh * h;
        double _Complex g = z - zp;
        double _Complex dg = dc - dcp;
        double _Complex f = g / h;
        double _Complex df = (dg * h - g * dh) / (h * h);
        c = c - f / df;
    }
    return c;
}