This paper deals with the problem of numerically computing the roots of polynomials $p_k(x)$, $k=1,2,\ldots$, of degree $n=2^k-1$ recursively defined by $p_1(x)=x+1$, $p_k(x)=xp_{k-1}(x)^2+1$. An algorithm based on the Ehrlich-Aberth simultaneous iterations complemented by the Fast Multipole Method, and by the fast search of near neighbors of a set of complex numbers, is provided. The algorithm has a cost of $O(n\log n)$ arithmetic operations per step. A Fortran 95 implementation is given and numerical experiments are carried out. Experimentally, it turns out that the number of iterations needed to arrive at numerical convergence is $O(\log n)$. This allows us to compute the roots of $p_k(x)$ up to degree $n=2^{24}-1$ in about 16 minutes on a laptop with 16 GB RAM, and up to degree $n=2^{28}-1$ in about one hour on a machine with 256 GB RAM. The case of degree $n=2^{30}-1$ would require higher memory and higher precision to separate the roots. With a suitable adaptation of FMM to the limit of 256 GB RAM and by performing the computation in extended precision (i.e. with 10-byte floating point representation) we were able to compute all the roots in about two weeks of CPU time for $n=2^{30}-1$. From the experimental analysis, explicit asymptotic expressions of the real roots of $p_k(x)$ and an explicit expression of $\min_{i\ne j}|\xi_i^{(k)}-\xi_j^{(k)}|$ for the roots $\xi_i^{(k)}$ of $p_k(x)$ are deduced. The approach is extended to classes of polynomials defined by a doubling recurrence.
翻译:本文研究多项式$p_k(x)$($k=1,2,\ldots$)根的数值计算问题,该多项式次数为$n=2^k-1$,递推定义为$p_1(x)=x+1$,$p_k(x)=xp_{k-1}(x)^2+1$。我们提出一种基于Ehrlich-Aberth同步迭代法并结合快速多极子方法(Fast Multipole Method)及复数近邻快速搜索的算法。该算法每步的算术运算代价为$O(n\log n)$。给出了Fortran 95实现并进行了数值实验。实验表明,达到数值收敛所需的迭代次数为$O(\log n)$。这使得我们可在配备16 GB RAM的笔记本电脑上约16分钟内计算出次数高达$n=2^{24}-1$的$p_k(x)$的根,在配备256 GB RAM的机器上约1小时内计算出次数高达$n=2^{28}-1$的根。对于$n=2^{30}-1$的情况,需要更高内存和更高精度以分离根。通过将FMM适配至256 GB RAM限制并以扩展精度(即采用10字节浮点数表示)进行计算,我们得以在大约两周的CPU时间内计算出$n=2^{30}-1$的所有根。通过实验分析,推导出$p_k(x)$实根的显式渐近表达式以及$p_k(x)$的根$\xi_i^{(k)}$之间最小距离$\min_{i\ne j}|\xi_i^{(k)}-\xi_j^{(k)}|$的显式表达式。该方法可推广至由倍增长递推定义的多项式类。