【发布时间】:2015-11-18 23:36:44
【问题描述】:
Bairstow's root finding method 需要非常好的二次因子初始近似值才能收敛。
我尝试了各种常数、随机数、尾随系数中的分数(-a1/a2、-a0/a2;Lin?),但无济于事。
请问,有人知道选择因子的好方法吗?
例如:
1*x^8 + 118*x^7 + 1*x^6 + 2*x^5 - 2*x^4 - 3*x^3 + 3*x^2 + 2*x + 1
使用初始近似值 0.1、0.2 找到根的时间是使用 0.2、2.0 时的 3 倍。
或者:
1*x^8 - 36*x^7 + 546*x^6 - 4536*x^5 + 22449*x^4 - 67284*x^3 + 118124*x^2 - 109584*x + 40320
使用 0.1, 1.2 比使用 0.1, 0.1 需要稍长的时间 (~50%)
尝试对初始二次近似使用柯西界:
R=0
for i in range(1,n+1):
R=max(abs(a[i]/a[0]),R)
R=1+R
phi=2*pi*random()
x1=complex(R*cos(phi),R*sin(phi))
x2=complex(x1.real,-x1.imag)
r=-x1.real-x2.real
s=(x1*x2).real
不幸的是,这并不能真正加速收敛。
【问题讨论】:
标签: math polynomial-math polynomials