Skip to content

19.1.2 多项式方程的解 ​

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

(19.11)f(x)=pn(x)=anxn+an−1xn−1+⋯+a1x+a0=0.

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

19.1.2.1 霍纳格式 ​

1. 实数情况 ​

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

(19.12)pn(x)=anxn+an−1xn−1+⋯+a1x+a0=(x−x0)pn−1(x)+pn(x0),(1

这里 pn−1(x) 表示次数为 n−1 次多项式

(19.13)pn−1(x)=an−1′xn−1+an−2′xn−2+⋯+a1′x+a0′.

递推公式

(19.14)ak−1′=x0ak′+ak(k=n,n−1,⋯,0;an′=0;a−1′=pn(x0))

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

(19.15)pn−1(x)=(x−x0)pn−2(x)+pn−1(x0),

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

x0

an

an−1

an−2

...

a3

a2

a1

a0

x0an−1′

x0an−2′

...

x0a3′

x0a2′

x0a1′

x0a0′

x0

an−1′

an−2′

an−3′

...

a2′

a1′

a0′

pn(x0)

x0an−2′′

x0an−3′′

...

x0a2′′

x0a1′′

x0a0′′

x0

an−2′′

an−3′′

an−4′′

...

a1′′

a0′′

pn−1(x0)

x0a0(n−1)

x0

a1(n−1)

p1(x0)

a0(n)=p0(x0)

(19.16)

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

pn′(x0)=1!pn−1(x0),pn′′(x0)=2!pn−2(x0),⋯,pn(n)(x0)=n!p0(x0).

(19.17)

lp4(x)=x4+2x3−3x2−7 . 根据 (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) 可以表述成 x−x0 的形式,在这个例子中

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

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

2. 复数情况 ​

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

pn(x)=anxn+an−1xn−1+⋯+a1x+a0(19.18a)=(x2−px−q)(an−2′xn−2+⋯+a0′)+r1x+r0,

其中

(19.18b)x2−px−q=(x−x0)(x−x¯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+2an′an′an′an′an′an′

◼ p4(x)=x4+2x3−3x2−7 在点 x0=2−i 处计算 p4 的值,即由 p=4,q=−5 得到 p4(x0)=34x0−87=−19−34i .

12−30−7−5−50−8042464161634

19.1.2.2 根的位置 ​

1. 实根、斯图姆序列 ​

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

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

(19.19a)an,an−1,⋯,a1,a0

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

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

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

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

p5(x)=x5−6x4+10x3+13x2−15x−16 有 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) 有不同的符号,在 c 与 d 之间至少存在一个实根.

2. 复根 ​

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

(19.20)f∗(x)=|an−1|rn−1+|an−2|rn−2+⋯+|a1|r+|a0|=|an|rn.

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

(19.21)|xk∗|≤r0f(x)=p4(x)=x4+4.4x3−20.01x2−50.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 充分好,则修正项 δ=x∗−xn 可以用不动点方程

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

迭代修正

2. 特殊方法 ​

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

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

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

version 1.24.0