i am interested in finding roots of complex polynoms (with complex coefficients). i found that if the polynom has degenerate (multiple) root(s) then such algorithms like Newton and Durand-Kerner ones do not lead to the convergent results (simply speaking, the convergence is bad). does anyone in forum knows an algorithm to increase the accuracy (precision) of finding the degenerate roots (for the general case of complex polynoms) ? Thanks.
Hint: if $z_0$ is a root of order $k$ of $P$, then $z_0$ is a root of order $k-1$ of $P'$ (formal derivative). BTW, this is true in any field.
Remove the degeneracy: if $f$ is your polynomial, find the roots of $f/\gcd(f,f')$ instead.
At multiple roots, the steps or Newton and Durand-Kerner (which is also a Newton method) from one iteration to the next are almost co-linear. This can be used to detect this situation and to extrapolate the root. Of course in the complex plane and for iterations that are not constrained to the real axis, else the property "co-linear" is not very descriptive.
In Durand-Kerner you can also detect clusters in the current root approximations and set one of the cluster points to the center of the cluster. This was reported to increase convergence speed, if I remember correctly Victor Pan has many papers and tech-reports on polynomial root finding, its efficiency and accuracy.
Jenkins-Traub is theoretically in its convergence speed insensitive to multiplicities. However, it too suffers from the usual cancellation errors at multiple roots as it uses the quotient of polynomial value and something that converges to the derivative, which will eventually both be small numbers.