# Polynomial rooting - fast root finding

I need to solve a rooting problem of a polynomial (the order of which is 2(N-1), where N=48).

So far I'm using Python Numpy algorithm (that relies on computing the eigenvalues of the companion matrix), but this is too slow solution for me. The polynomial can be written as: $$\sum_{l=-N+1}^{N-1}D_{l}z^{l}$$ where $$D_{l}$$ is the sum of the elements along an $$N \times N$$ matrix: $$D_{l}=\sum_{n-m=l}D_{mn}$$ In the attached image you can see all the roots (94 roots, half inside the unitary circle, half outside it); any algorithm that allows the calculation of M≪N closest(<1) to the unit circle roots? I add here some further figures with hopes to improve the understanding of my question. I have done some tests plotting the roots locus (see pictures) concerning only some $$D_{l}$$ but this does not make so sense, as Federico Poloni says in the comments:

roots are a global thing that depends on the whole polynomial (or matrix)

However, it is interesting to note that some roots (those closer to zero) keep a fixed position on the plane (if we do a comparison between solving the all polynomial and reduced version of it). All this in view to better understand the whole polynomial (or matrix) structure and possibly to find a faster way to calculate only desired roots.

• Comments are not for extended discussion; this conversation has been moved to chat. – nicoguaro Feb 11 at 2:29