正在连接内容文件

附录8 - 多项式重因式判定

本章研究如何判别多项式有重因式

一、 引入工具:什么是“形式导数”?

在常规微积分中,导数是通过“极限”定义的。但在代数的世界里,我们可以抛弃极限,直接把导数当成一种对多项式系数的操作规则(算子),这就叫作形式导数 (Formal Derivative)。

对于任意多项式 f(x)=anxn+an−1xn−1+⋯+a1x+a0f(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0,我们直接规定它的形式导数为:
f′(x)=nanxn−1+(n−1)an−1xn−2+⋯+a1f'(x) = n a_n x^{n-1} + (n-1) a_{n-1} x^{n-2} + \cdots + a_1
由于这只是一种“系数乘法与指数递减”的机械操作,我们可以完全不需要“连续”、“极限”等概念。
容易证明,形式导数完美继承了常规导数的两大核心运算法则:

加法法则: (f(x)+g(x))′=f′(x)+g′(x)(f(x) + g(x))' = f'(x) + g'(x)

乘法法则: (f(x)g(x))′=f′(x)g(x)+f(x)g′(x)(f(x)g(x))' = f'(x)g(x) + f(x)g'(x)

链式法则: (f(g(x)))′=f′(g(x))⋅g′(x)(f(g(x)))' = f'(g(x)) \cdot g'(x)

  • 加法法则很简单。现在证明乘法法则

首先证明“单项式”乘以“单项式”的情况

设 u(x)=axmu(x) = a x^m,v(x)=bxnv(x) = b x^n。(其中 a,ba, b 是常数,m,nm, n 是非负整数)。

u(x)v(x)=(axm)(bxn)=abxm+nu(x)v(x) = (a x^m)(b x^n) = a b x^{m+n}

(u(x)v(x))′=(m+n)abxm+n−1(u(x)v(x))' = (m+n) a b x^{m+n-1}

u′(x)v(x)+u(x)v′(x)=(maxm−1)(bxn)+(axm)(nbxn−1)u'(x)v(x) + u(x)v'(x) = (m a x^{m-1})(b x^n) + (a x^m)(n b x^{n-1})

=mabxm+n−1+nabxm+n−1=(m+n)abxm+n−1=(u(x)v(x))′= m a b x^{m+n-1} + n a b x^{m+n-1} = (m+n) a b x^{m+n-1} = (u(x)v(x))'

再证明多项式的情况

设 f(x)=∑ur(x)f(x) = \sum u_r(x), g(x)=∑vs(x)g(x) = \sum v_s(x)

于是 f′(x)=∑ur′(x)f'(x) = \sum u_r'(x), g′(x)=∑vs′(x)g'(x) = \sum v_s'(x)

(f(x)g(x))′=(∑ur(x)vs(x))′=∑(ur(x)vs(x))′=∑(ur′(x)vs(x)+ur(x)vs′(x))\left(f(x)g(x)\right)' = \left(\sum u_r(x)v_s(x)\right)' = \sum \left(u_r(x)v_s(x)\right)' = \sum \left(u_r'(x)v_s(x) + u_r(x)v_s'(x)\right)

=∑ur′(x)vs(x)+∑ur(x)vs′(x)=f′(x)g(x)+f(x)g′(x)= \sum u_r'(x)v_s(x) + \sum u_r(x)v_s'(x) = f'(x)g(x) + f(x)g'(x)

  • 现在证明链式法则

第一步:证明引理 (g(x)k)′=k⋅g(x)k−1⋅g′(x)(g(x)^k)' = k \cdot g(x)^{k-1} \cdot g'(x)

我们对正整数 kk 使用数学归纳法。这个引理的本质,就是把乘法法则连续使用 kk 次。

  1. 当 k=1k = 1 时:
    左边 = (g(x)1)′=g′(x)(g(x)^1)' = g'(x)
    右边 = 1⋅g(x)0⋅g′(x)=g′(x)1 \cdot g(x)^0 \cdot g'(x) = g'(x)
    左边等于右边,结论成立。

  2. 假设当 k=mk = m 时,结论成立,即:
    (g(x)m)′=m⋅g(x)m−1⋅g′(x)(g(x)^m)' = m \cdot g(x)^{m-1} \cdot g'(x)

  3. 我们来证明当 k=m+1k = m+1 时,结论也成立:
    我们要对 g(x)m+1g(x)^{m+1} 求导。我们可以把它拆分成两个多项式相乘:
    (g(x)m+1)′=(g(x)m⋅g(x))′(g(x)^{m+1})' = (g(x)^m \cdot g(x))'
    现在,我们对这个乘积使用上一节刚刚严谨证明过的乘法法则 (uv)′=u′v+uv′(uv)' = u'v + uv':
    (g(x)m⋅g(x))′=(g(x)m)′⋅g(x)+g(x)m⋅g′(x)(g(x)^m \cdot g(x))' = (g(x)^m)' \cdot g(x) + g(x)^m \cdot g'(x)
    把我们在第 2 步里的归纳假设代入到 (g(x)m)′(g(x)^m)' 中:
    =[m⋅g(x)m−1⋅g′(x)]⋅g(x)+g(x)m⋅g′(x)= [m \cdot g(x)^{m-1} \cdot g'(x)] \cdot g(x) + g(x)^m \cdot g'(x)
    合并前面项中的 g(x)m−1g(x)^{m-1} 和 g(x)g(x):
    =m⋅g(x)m⋅g′(x)+g(x)m⋅g′(x)= m \cdot g(x)^m \cdot g'(x) + g(x)^m \cdot g'(x)
    提取公因式 g(x)m⋅g′(x)g(x)^m \cdot g'(x):
    =(m+1)⋅g(x)m⋅g′(x)= (m + 1) \cdot g(x)^m \cdot g'(x)
    这正是 k=m+1k = m+1 时的公式形式!根据数学归纳法,引理对于任意正整数 kk 都完全成立。

第二步:推广到任意多项式 f(x)f(x)

设任意多项式 f(x)f(x) 的一般形式为:

f(x)=∑i=0naixif(x) = \sum_{i=0}^n a_i x^i

根据形式导数的定义,其导数 f′(x)f'(x) 可以表示为:

f′(x)=∑i=1niaixi−1f'(x) = \sum_{i=1}^n i a_i x^{i-1}

(注:由于常数项 a0a_0 的导数为 00,求和的下限自动从 i=1i=1 开始。)
现在,我们将 g(x)g(x) 代入 f(x)f(x),构造复合多项式:

f(g(x))=∑i=0nai(g(x))if(g(x)) = \sum_{i=0}^n a_i (g(x))^i

对上式两边同时求形式导数。根据形式导数的线性性质(求导运算与加法、常数乘法可交换),我们可以将导数符号直接移进求和号内部:

(f(g(x)))′=∑i=0n(ai(g(x))i)′=∑i=1nai((g(x))i)′(f(g(x)))' = \sum_{i=0}^n \left( a_i (g(x))^i \right)' = \sum_{i=1}^n a_i \left( (g(x))^i \right)'

利用在第一步中证明的引理,将单项式的复合导数 ((g(x))i)′=i⋅g(x)i−1⋅g′(x)\left( (g(x))^i \right)' = i \cdot g(x)^{i-1} \cdot g'(x) 代入:

(f(g(x)))′=∑i=1nai[i⋅g(x)i−1⋅g′(x)](f(g(x)))' = \sum_{i=1}^n a_i \left[ i \cdot g(x)^{i-1} \cdot g'(x) \right]

观察求和式内部,因子 g′(x)g'(x) 与求和变量 ii 无关。利用乘法分配律,我们可以将 g′(x)g'(x) 提取到求和符号的外面:

(f(g(x)))′=(∑i=1niai(g(x))i−1)⋅g′(x)(f(g(x)))' = \left( \sum_{i=1}^n i a_i (g(x))^{i-1} \right) \cdot g'(x)

最后,对比我们在开头写出的 f′(x)f'(x) 表达式。括号里的求和式,完美等价于将 f′(x)f'(x) 中的自变量 xx 整体替换为 g(x)g(x),即 f′(g(x))f'(g(x))。由此得出最终结论:

(f(g(x)))′=f′(g(x))⋅g′(x)(f(g(x)))' = f'(g(x)) \cdot g'(x)

证明完成。

  • 模 pp 的情况同样适用

因为形式导数的定义,加法法则、乘法法则、链式法则,都只涉及乘法和加法,因此在模 pp 的多项式中
形式导数的定义、加法法则、乘法法则、链式法则,都同样适用。

二、 重因式判别定理及证明

定理陈述:对于多项式 f(x)f(x),它含有重因式(即存在次数大于等于 1 的多项式 P(x)P(x) 使得 P(x)kP(x)^k 整除 f(x)f(x) 且 k≥2k \ge 2)的充分必要条件是:f(x)f(x) 与其形式导数 f′(x)f'(x) 有非常数的公因式。换言之,它们的最大公约式 gcd⁡(f(x),f′(x))≠1\gcd(f(x), f'(x)) \neq 1。

  • 说明:如无特殊说明,这里的判别定理及证明过程,对普通多项式和模 pp 意义下的多项式同样适用
  1. 证明“必要性”(如果有重因式,则 gcd⁡≠1\gcd \neq 1):

假设 f(x)f(x) 有重因式 P(x)P(x),次数为 kk (k≥2k \ge 2)。那么我们可以把 f(x)f(x) 写成:

f(x)=P(x)k⋅g(x)f(x) = P(x)^k \cdot g(x)

利用形式导数的乘法法则和链式法则,我们对两边求导:

f′(x)=k⋅P(x)k−1⋅P′(x)⋅g(x)+P(x)k⋅g′(x)f'(x) = k \cdot P(x)^{k-1} \cdot P'(x) \cdot g(x) + P(x)^k \cdot g'(x)

提取公因式 P(x)k−1P(x)^{k-1}:

f′(x)=P(x)k−1[k⋅P′(x)⋅g(x)+P(x)⋅g′(x)]f'(x) = P(x)^{k-1} [ k \cdot P'(x) \cdot g(x) + P(x) \cdot g'(x) ]

因为 k≥2k \ge 2,所以 k−1≥1k-1 \ge 1。这说明 P(x)P(x) 至少是一次式,且 P(x)P(x) 既是 f(x)f(x) 的因式,也是 f′(x)f'(x) 的因式。因此,gcd⁡(f(x),f′(x))\gcd(f(x), f'(x)) 至少包含 P(x)P(x),绝对不等于 11。必要性得证。

  1. 证明“充分性”(如果无重因式,则 gcd⁡=1\gcd = 1):

如果 f(x)f(x) 没有重因式,那么根据唯一分解定理(见附录4),它可分解为互不相同的不可约因式的乘积:

f(x)=P1(x)P2(x)⋯Pm(x)f(x) = P_1(x) P_2(x) \cdots P_m(x)

使用反证法,假设 gcd⁡(f,f′)≠1\gcd(f,f') \neq 1,那么 f(x)f(x) 和 f′(x)f'(x) 必然有公共的不可约因式,不妨设为 P1(x)P_1(x)。

f′(x)=P1′(x)P2(x)⋯Pm(x)+P1(x)P2′(x)⋯Pm(x)+⋯f'(x) = P_1'(x) P_2(x) \cdots P_m(x) + P_1(x) P_2'(x) \cdots P_m(x) + \cdots

P1′(x)P2(x)⋯Pm(x)=f′(x)−(P1(x)P2′(x)⋯Pm(x)+⋯ )P_1'(x) P_2(x) \cdots P_m(x) = f'(x) - \left(P_1(x) P_2'(x) \cdots P_m(x) + \cdots\right)

观察上面的式子的右边,右边括号里所有项都包含 P1(x)P_1(x) 所以括号里部分能被 P1(x)P_1(x) 整除。根据假设 f′(x)f'(x) 也能被 P1(x)P_1(x) 整除,所以右边整体都能被 P1(x)P_1(x) 整除。那么左边必然也能被 P1(x)P_1(x) 整除。根据「欧几里得引理」(见附录4),因为 P1(x)P_1(x) 是不可约的,因此左边的因式 P1′(x),P2(x)⋯Pm(x)P_1'(x), P_2(x) \cdots P_m(x) 中必须至少有一项能被 P1(x)P_1(x) 整除。因为 P2(x)⋯Pm(x)P_2(x) \cdots P_m(x) 本身也都是不可约因式,所以它们不可能被 P1(x)P_1(x) 整除,那么只有一种可能就是 P1′(x)P_1'(x) 能被 P1(x)P_1(x) 整除。又因为 P1′(x)P_1'(x) 的次数严格小于 P1(x)P_1(x),那么要想能被 P1(x)P_1(x) 整除,P1′(x)P_1'(x) 只能是 00 多项式。

对于普通多项式情况,因为 P1(x)P_1(x) 不是常数(常数不能作为不可约因式),所以 P1′(x)P_1'(x) 不可能是 00,所以矛盾,假设不成立。

对于模 pp 下的多项式,情况稍微复杂。有一种情况可能导致 P1′(x)P_1'(x) 是 00,那就是 P1′(x)P_1'(x) 的所有系数都是 pp 的倍数。在这种情况下,P1(x)P_1(x) 的所有项的次数都必须是 pp 的倍数,即:

P1(x)=akxkp+⋯+a2x2p+a1xp+a0P_1(x) = a_k x^{kp} + \cdots + a_2 x^{2p} + a_1 x^p + a_0

根据费马小定理(见附录7):任何整数 aa 的 pp 次方,在模 pp 下都等于它自己,即 ap≡a(modp)a^p \equiv a \pmod p,于是:

ak=akpa_k = a_k^p
⋯\cdots
a1=a1pa_1 = a_1^p
a0=a0pa_0 = a_0^p

所以 P1(x)P_1(x) 可以改写为:

P1(x)=akp(xk)p+⋯+a1p(x1)p+a0pP_1(x) = a_k^p (x^k)^p + \cdots + a_1^p (x^1)^p + a_0^p

仔细看上面的式子,每一个单项式都是一个完整的 pp 次方。根据我们严谨证明过的“新生之梦”定理(见附录6)(即和的 pp 次方等于 pp 次方的和),我们可以把所有分散的 pp 次方,反向合并到一个大括号里:

P1(x)=(akxk+⋯+a1x+a0)pP_1(x) = (a_k x^k + \cdots + a_1 x + a_0)^p

看到了吗?如果 P1′(x)=0P_1'(x) = 0,那么经过“新生之梦”的逆向操作,P1(x)P_1(x) 必然可以写成某个多项式的 pp 次方!
这就意味着 P1(x)P_1(x) 可以被因式分解(它是某个多项式自己乘自己 pp 次),这与“P1(x)P_1(x) 是不可约因式”的前提发生了致命的矛盾!

综上所述,如果我们假设 gcd⁡(f,f′)≠1\gcd(f,f') \neq 1,在普通多项式或模 pp 的多项式定义下,都一定会推出矛盾。这就证明了“充分性”(如果无重因式,则 gcd⁡=1\gcd = 1)。

三、在普通复数域 C\mathbb{C} 下的等价判别法(重根判别)

当我们将舞台限定在复数域 C\mathbb{C} 时,代数基本定理(见附录9)告诉我们:任何多项式在复数域中都可以完全分解为一次因式 (x−α)(x - \alpha) 的乘积。此时,“重因式”有了更具象的物理意义——它等价于方程 f(x)=0f(x) = 0 存在重根。
因此,在复数域下,前面的形式导数判别法等价于以下的重根判别法:

等价判别法: 复数 α\alpha 是多项式 f(x)=0f(x) = 0 的 kk 重根 (k≥2k \ge 2) 的充分必要条件是:

f(α)=0且f′(α)=0f(\alpha) = 0 \quad \text{且} \quad f'(\alpha) = 0

说明:对于二次方程 ax2+bx+c=0ax^2+bx+c=0,我们熟悉的 Δ=b2−4ac=0\Delta = b^2 - 4ac = 0 判别法,其实就是由 f(x)f(x) 和 f′(x)f'(x) 的系数经过特定运算推导出来的。

现在我们证明一下在复数域中,形式导数判别法与重根判别法等价

定理等价性证明:重因式判别法   ⟺  \iff 导数取值判别法

已知前提: 在复数域 C\mathbb{C} 中,由于任何多项式都可以彻底分解为一次因式的乘积,所谓的“重因式 P(x)P(x)”只能是形如 (x−α)(x - \alpha) 的一次因式。因此,“f(x)f(x) 有重因式”在复数域下完全等价于“f(x)f(x) 有重根 α\alpha”。

我们需要证明:α\alpha 是 f(x)f(x) 的重根(即含有 (x−α)k(x - \alpha)^k 且 k≥2k \ge 2)   ⟺  f(α)=0\iff f(\alpha) = 0 且 f′(α)=0f'(\alpha) = 0

第一步:证明“必要性”(⇒\Rightarrow)
已知: α\alpha 是 f(x)f(x) 的重根。
求证: f(α)=0f(\alpha) = 0 且 f′(α)=0f'(\alpha) = 0。

证明过程:既然 α\alpha 是重根,我们可以将 f(x)f(x) 设为:
f(x)=(x−α)k⋅g(x)f(x) = (x - \alpha)^k \cdot g(x)
其中 k≥2k \ge 2,且 g(x)g(x) 是另一个多项式。显然:
f(α)=(α−α)k⋅g(α)=0f(\alpha) = (\alpha - \alpha)^k \cdot g(\alpha) = 0
考察导数:
f′(x)=k(x−α)k−1⋅g(x)+(x−α)k⋅g′(x)f'(x) = k(x - \alpha)^{k-1} \cdot g(x) + (x - \alpha)^k \cdot g'(x)
由于 k≥2k \ge 2,所以 k−1≥1k-1 \ge 1,这意味着 (x−α)k−1(x - \alpha)^{k-1} 至少是一次式。
f′(α)=k(α−α)k−1⋅g(α)+(α−α)k⋅g′(α)=0+0=0f'(\alpha) = k(\alpha - \alpha)^{k-1} \cdot g(\alpha) + (\alpha - \alpha)^k \cdot g'(\alpha) = 0 + 0 = 0
必要性得证。

第二步:证明“充分性”(⇐\Leftarrow)
已知: f(α)=0f(\alpha) = 0 且 f′(α)=0f'(\alpha) = 0。
求证: α\alpha 是 f(x)f(x) 的重根(即含有 (x−α)2(x - \alpha)^2 或更高次的因式)。

证明过程:利用原函数的条件:因为 f(α)=0f(\alpha) = 0,根据因式定理(见附录4),f(x)f(x) 必定含有因式 (x−α)(x - \alpha)。我们可以将其写为:
f(x)=(x−α)⋅h(x)f(x) = (x - \alpha) \cdot h(x)
我们对上面的式子两边同时求导数:
f′(x)=1⋅h(x)+(x−α)⋅h′(x)f'(x) = 1 \cdot h(x) + (x - \alpha) \cdot h'(x)
根据已知条件,f′(α)=0f'(\alpha) = 0,我们将 x=αx = \alpha 代入上式:
f′(α)=h(α)+(α−α)⋅h′(α)=0f'(\alpha) = h(\alpha) + (\alpha - \alpha) \cdot h'(\alpha) = 0
h(α)=0h(\alpha) = 0
再次利用因式定理:既然 h(α)=0h(\alpha) = 0,根据因式定理,多项式 h(x)h(x) 也必然含有因式 (x−α)(x - \alpha)。即 h(x)=(x−α)⋅q(x)h(x) = (x - \alpha) \cdot q(x)。我们将 h(x)h(x) 的表达式代回最初的 f(x)f(x) 中:
f(x)=(x−α)⋅[(x−α)⋅q(x)]f(x) = (x - \alpha) \cdot [(x - \alpha) \cdot q(x)]
f(x)=(x−α)2⋅q(x)f(x) = (x - \alpha)^2 \cdot q(x)
这就严谨地证明了:只要 f(α)=0f(\alpha)=0 且 f′(α)=0f'(\alpha)=0,f(x)f(x) 就必定至少包含 (x−α)2(x-\alpha)^2 这个因式,即 α\alpha 是 f(x)f(x) 的重根。充分性得证。