Skip to content

算法Algorithm

多项式结式计算

施工中 · 内容逐步修订

Polynomial resultant computation · Sylvester resultant algorithm

由 Sylvester 行列式或子结式余式链计算两个一元多项式是否具有公共根的消元量。

形式陈述 ​

设 R 为交换含幺环,A=amxm+⋯+a0、B=bnxn+⋯+b0∈R[x] 是两个形式多项式,其中 am≠0 且 bn≠0。Sylvester 矩阵由 n 行移位的 A 系数和 m 行移位的 B 系数组成,是 (m+n)×(m+n) 方阵;按降幂排列系数,先放 n 行 A、再放 m 行 B,结式定义为

Resx(A,B)=det⁡Sylx(A,B).

这一定义只用系数环中的加法、减法与乘法。非零常数满足 Res(c,B)=cn、Res(A,c)=cm;两者都是常数时,空矩阵的行列式按 1 计。若 R 是整环,把系数嵌入其分式域的代数闭包并写

A=am∏i=1m(x−αi),

则

Resx(A,B)=amn∏i=1mB(αi).

因此在域上,结式为零当且仅当 A,B 有公共根,等价于有正次数公共因子。交换次序满足

Res(B,A)=(−1)mnRes(A,B).

直接用普通除法消元计算行列式,可能遇到分数或系数膨胀。当 R 是整环时,更适合精确一元输入的路线是子结式 PRS:按本页 Sylvester 约定,零次子结式就是结式;恢复它时必须保留次数下降、首项幂与精确缩放,不能只读取最后一个常数余式。一个直接可执行的域上递推是:次数次序相反时先交换并乘 (−1)mn;除数为非零常数时使用上面的幂公式;否则求 A=QB+R。若 R=0,正次数除数已是公共因子,返回零;若 R≠0、r=deg⁡R<n,则

Res(A,B)=(−1)n(m−r)bnm−rRes(R,B),

每次递归都使参与除法的次数下降,因此与常数分支合在一起给出有限算法。公式可从 B 的根乘积推出:在每个根处 A=R,同时两者的次数差改变了首项幂与交换符号。伪余式版本还须除去乘入 A 的缩放因子。

直觉

在域上,两个正次数多项式是否在代数闭包中有公共根,看似需要先求根;结式把问题改写成一个系数矩阵是否奇异。Sylvester 矩阵编码了是否存在次数受限且不全为零的 U,V,使 UA+VB=0。行列式消失表示这些移位系数向量线性相关,也就是两个主理想在给定次数窗口中发生了非平凡交叠。

根乘积公式则给出另一幅图像:把 B 逐一放到 A 的所有根上相乘,只要一个共同根出现,整个乘积便归零。算法不必真的构造这些代数根;行列式与余式链是两种把同一对称根表达式留在基域中的办法。前者概念直接,后者复用 Euclidean 结构,通常更能控制精确系数。

结式的公共根证书
例子与边界

沿用

A=2x2+3x+1,B=3x+1,

其 Sylvester 矩阵可取

(231310031),

行列式为 2−9+9=2。另一方面,伪除法给出 9A=(6x+7)B+2,子结式 PRS 的标量末项也为 2。由于结式非零,两式在 Q[x] 中没有公共因子。若把 A 改为 (x−1)(2x+1)、B 改为 3(x−1),Sylvester 行列式立刻为零,公共根 1 正是消失原因。

边界首先来自底环。在任意交换环上行列式总有定义,但“结式为零当且仅当有公共根”需要放到合适的域或整环及其代数闭包中解释;有零因子时,一个非零结式也可能成为零因子,线性代数判据不能原样搬用。其次,若参数特殊化后首项变成零,多项式实际次数下降,按原固定次数建立的 Sylvester 矩阵会带入无穷远处或首项退化的信息,必须单独讨论。

异常次数下降还会改变标量恢复。例如 A=x2+1、B=x2−1 的伪余式是 2,本页链接的 PRS 约定产生末项 −2;但域上递推给出 Res(A,B)=Res(2,B)=22=4。末项为常数只说明 GCD 次数为零,不说明该常数本身就是结式。

符号也常造成错误。不同教材按升幂或降幂排列系数、先放 A 还是 B,行列式可能相差 (−1)mn;只判断是否为零不受影响,数值结式与判别式公式却会受影响。大整数输入上直接 Gaussian 消元还可能制造巨额分母,使用 fraction-free 消元或 PRS 才能保住整性。

推论与应用

对次数为 m≥1、首项为 am 的多项式 A,在首项可逆的情形,判别式满足

disc(A)=(−1)m(m−1)/2am−1Res(A,A′).

若 A′≠0,它把重根检测归结为前面定义的结式。若系数在正特征的域中且 A′=0,非恒定 A 在代数闭包中有重根;此时将 Res(A,0) 扩展约定为零,判别式也为零。多元消元中,把 A,B 看成关于变量 x 的一元多项式、其余变量留在系数环中,Resx(A,B) 消去 x,为公共零点投影给出必要方程;出现首项退化或额外因子时,还需饱和、子结式条件或 Gröbner 基进一步筛选。

结式也用于代数数的最小多项式候选、隐式化、有理函数分子分母的公共因子检测和几何交点计数。它提供的是消元证书而非完整解集:在域上,结式为零指出存在公共因子,却不能直接告诉因子的次数与系数;为此应继续读取主子结式或计算 GCD。把“零检测”“数值计算”“恢复公共因子”分成三个接口,可避免一个巨大 Sylvester 行列式承担所有工作。

在 m+n>0 时,稠密 Sylvester 矩阵占 O((m+n)2) 个系数槽;若系数在域中,普通 Gaussian 消元用 O((m+n)3) 次域算术即可求其行列式。一般环上的无除法算法须另行计费,系数的位长度与位运算成本也不包含在这个算术界内。上面的域上余式递推若只滚动保存常数个系数向量而不保留整条链,可用 O(m+n) 个系数槽;常数输入仍按已有边界分支处理。

参考资料
  • George E. Collins, “Subresultants and Reduced Polynomial Remainder Sequences,” Journal of the ACM 14(1), 1967, pp. 128–142.
  • David A. Cox, John Little, and Donal O’Shea, Ideals, Varieties, and Algorithms, 4th ed., Springer, 2015, Ch. 3.
  • I. M. Gelfand, M. M. Kapranov, and A. V. Zelevinsky, Discriminants, Resultants, and Multidimensional Determinants, Birkhäuser, 1994, Ch. 1.
关系图谱12 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系