python在进行多项式求根时,当多项式阶数增大,使用Numpy.roots求根会导致求根结果不准确,甚至产生错误的复数根
如下求解9阶多项式的根
import numpy as np distort_poly = np.poly1d([D[3], 0, D[2], 0, D[1], 0, D[0], 0, 1, -thetaD]) tmp = distort_poly.roots
可以使用scipy.optimize,自定义多项式函数,设定根的取值范围,求最优解
import scipy.optimize as opt f = lambda x: D[3]*np.power(x,9)+D[2]*np.power(x,7)+D[1]*np.power(x,5)+D[0]*np.power(x,3)+x-thetaD theta = opt.bisect(f, 0, PI/2)



