cpoly.f90 是采用经典的Jenkins & Traub algorithm (CACM 419)求解复系数多项式根。可以从下面链接下载:https://wp.csiro.au/alanmiller/toms/cpoly.f90
在使用此代码时,有两点需要注意:
- cpoly.f90中多项式的定义为如下形式:
p(x)=a0·x^n + a1·x^(n-1) + a2·x^(n-2) +…+ a(n-2)·x^2 + a(n-1)·x + an
而常用代码中,多项式的定义为:
p(x)=an·x^n + a(n-1)·x^(n-1) + a(n-2)·x^(n-2) +…+ a2·x^2 + a1·x + a0
程序中使用p(n+1)定义多项式系数,p(0)=a0, p(1)=a1, p(2)=a2…。
因此,使用Cpoly求多项式的根时,要注意此点,根据需要调整多项式的系数。 - cpoly.f90代码中,要求复数多项式系数的实部和虚部各自定义为数组,zero的结果也是实部和虚部各自定义为数组。