Skip to content

19.1.2 多项式方程的解

n 次多项式方程具有如下形式:

(19.11)f(x)=pn(x)=anxn+an1xn1++a1x+a0=0.

为求有效解需要这些函数值 pn(x) 及其导数值的有效计算方法,以及根的位置的初始估计.

19.1.2.1 霍纳格式

1. 实数情况

为通过 n 次多项式 pn(x) 的系数得到在 x=x0 处的根,首先考虑如下分解:

(19.12)pn(x)=anxn+an1xn1++a1x+a0=(xx0)pn1(x)+pn(x0),(1

这里 pn1(x) 表示次数为 n1 次多项式

(19.13)pn1(x)=an1xn1+an2xn2++a1x+a0.

递推公式

(19.14)ak1=x0ak+ak(k=n,n1,,0;an=0;a1=pn(x0))

可以根据 (19.12) 对比 xk 的系数得到 (注意 an1=an ). 通过这种方法,多项式 pn1(x) 的系数 ak 与值 pn(x0) 可以通过 pn(x) 的系数 ak 确定. 进一步,重复上述 “传统” 的方法,分解多项式 pn1(x) 得到 pn2(x) ,

(19.15)pn1(x)=(xx0)pn2(x)+pn1(x0),

即得到多项式序列 pn(x),pn1(x),,p1(x),p0(x) . 计算多项式的系数和相应的值可以表示为

x0

an

an1

an2

...

a3

a2

a1

a0

x0an1

x0an2

...

x0a3

x0a2

x0a1

x0a0

x0

an1

an2

an3

...

a2

a1

a0

pn(x0)

x0an2

x0an3

...

x0a2

x0a1

x0a0

x0

an2

an3

an4

...

a1

a0

pn1(x0)

x0a0(n1)

x0

a1(n1)

p1(x0)

a0(n)=p0(x0)

(19.16)

从格式 (19.16) 得到多项式的值 pn(x0) 及其导数值 pn(k)(x0) 分别为

pn(x0)=1!pn1(x0),pn(x0)=2!pn2(x0),,pn(n)(x0)=n!p0(x0).

(19.17)

lp4(x)=x4+2x33x27 . 根据 (19.16) 计算 p4(x) 及其导数在 x0=2 处的值.

01937d01-b6f6-7881-8294-3a9c82211946_5_386_1583_442_675_0.jpg

可得

p4(2)=13,p4(2)=44p4(2)=66,p4(2)=60,p4(4)(2)=24.

注 (1) 多项式 pn(x) 可以表述成 xx0 的形式,在这个例子中

p4(x)=(x2)4+10(x2)3+33(x2)2+44(x2)+13.

(2) 霍纳格式也可以用来计算复系数 ak . 这种情况下我们需要根据 (19.16 分别计算实部和虚部.

2. 复数情况

如果 (19.11) 中的系数 ak 为实数,则对复数值 x0=u0+iv0 也可计算 pn(x0) . 为说明这一点,对 pn(x) 作如下分解.

pn(x)=anxn+an1xn1++a1x+a0(19.18a)=(x2pxq)(an2xn2++a0)+r1x+r0,

其中

(19.18b)x2pxq=(xx0)(xx¯0),即p=2u0,q=(u02+v02).

于是

(19.18c)pn(x0)=r1x+r0=(r1u0+r0)+ir1v0.

为得到 (19.18a) 科拉茨 (Collatz) 引进所谓双列霍纳格式 (two-row Horner scheme), 其构造如下:(19.18d)

q=an+2anananananan

p4(x)=x4+2x33x27 在点 x0=2i 处计算 p4 的值,即由 p=4,q=5 得到 p4(x0)=34x087=1934i .

123075508042464161634

19.1.2.2 根的位置

1. 实根、斯图姆序列

笛卡儿符号法则给出了多项式方程 (19.11) 是否有实根的原始思想.

a) 正实根的个数等于系数序列

(19.19a)an,an1,,a1,a0

改变符号的次数, 或扣除一个偶数.

b) 负实根的个数等于系数序列

(19.19b)a0,a1,a2,,(1)nan

改变符号的次数, 或扣除一个偶数.

p5(x)=x56x4+10x3+13x215x16 有 1 个或者 3 个正根以及 0 个或者 2 个负根. 为了得到给定区间(a, b)内实根的个数,可以用斯图姆 (Sturm) 序列 (参见第 57 页 1.6.3.2,2.). 在计算均匀节点 xv=x0+vh(h常数,v=0,1,2,) 上的函数值 yv=pn(xv) (利用霍纳格式容易执行) 后,可得函数图形和根的位置的好的猜测. 如果 pn(c)pn(d) 有不同的符号,在 cd 之间至少存在一个实根.

2. 复根

为了在有界复平面区域上限定实数根或者复数根的位置, 考察如下多项式方程, 这是 (19.11) 的简单推广:

(19.20)f(x)=|an1|rn1+|an2|rn2++|a1|r+|a0|=|an|rn.

通过系统的重复试错,对 (19.20) 的正根决定一个上界 r0 . 于是对 (19.11) 所有的根 xk(k=1,2,,n)

(19.21)|xk|r0f(x)=p4(x)=x4+4.4x320.01x250.12x+29.45=0,f(x)=4.4r3+

20.01r2+50.12r+29.45=r4 ,某些试验是

r=6:f(6)=2000.93>1296=r4,r=7:f(7)=2869.98>2401=r4,r=8:f(8)=3963.85<4096=r4.

据此有 |xk|<8(k=1,2,3,4) . 实际上,对于有最大绝对值的根 x1,7<x1<6 成立.

注 为确定带负实部的复根个数, 在电子技术所谓根轨迹理论中发展了一种特别的方法, 该方法可用来检验稳定性 (见 [19.14][19.40]).

19.1.2.3 数值方法

1. 一般方法

在 19.1.1 讨论的方法可用来求多项式方程的实数根. 牛顿法由于其快速收敛性以及函数值 f(xn) 与导数值 f(xn) 可用霍纳法则容易计算,非常适用于多项式方程. 假设多项式方程 f(x)=0 的根 x 的近似值 xn 充分好,则修正项 δ=xxn 可以用不动点方程

(19.22)δ=1f(xn)[f(xn)+12f(xn)+]=φ(δ)

迭代修正

2. 特殊方法

贝尔斯托 (Bairstow) 法常用于求成对的根, 尤其是成对的共轭复根. 该方法类似于霍纳格式 (19.18a19.18d) ,从求给定多项式的二次因子出发,通过确定系数 pq ,使得线性余项 r1r0 的系数等于零 ([19.38],[19.14],[19.40]).

如果需要计算根的绝对值的最大值与最小值, 可以选择使用伯努利方法 (见[19.38]).

格雷费 (Graeffe) 法有某些历史重要性. 它同时给出包括复共轭根在内的所有的根; 然而其计算量非常巨大 ([19.14],[19.40]).

version 1.24.0