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 Multi-pole Method and the fast search of near neighbors of a set of complex numbers is provided. The algorithm, which relies on a specific strategy of selecting initial approximations, costs $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 69 minutes 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 effectively applied to general 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 Multi-pole Method)与复数集合近邻快速搜索技术的算法。该算法采用特定的初始近似值选取策略,每步计算复杂度为$O(n\log n)$次算术运算。文中给出了Fortran 95实现并进行数值实验。实验结果表明,达到数值收敛所需的迭代次数为$O(\log n)$。基于此,我们可在配备16 GB RAM的笔记本电脑上约16分钟内计算出最高次数$n=2^{24}-1$的多项式$p_k(x)$的根,在256 GB RAM的机器上约69分钟内计算出最高次数$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)}|$的显式表达式。该方法可有效应用于由倍增递推关系定义的广义多项式类别。