Пусть
![$p(x), q(x)$ $p(x), q(x)$](https://dxdy-01.korotkov.co.uk/f/c/9/a/c9aefd146bfb557da0b073149397207682.png)
- многочлены одной переменной
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
. Пусть также
![$s_i(p, q)$ $s_i(p, q)$](https://dxdy-03.korotkov.co.uk/f/6/b/2/6b22a61520669782249029675a2767a282.png)
-
i-й субрезультант (См.
https://en.wikipedia.org/wiki/Polynomial_greatest_common_divisor#Subresultants) многочленов
![$p(x), q(x)$ $p(x), q(x)$](https://dxdy-01.korotkov.co.uk/f/c/9/a/c9aefd146bfb557da0b073149397207682.png)
, а
![$S_i(p, q)$ $S_i(p, q)$](https://dxdy-03.korotkov.co.uk/f/e/7/8/e786c1bb010ced94593b791df066bca182.png)
соответствующий
i-й субрезультантный многочлен ((См.
https://en.wikipedia.org/wiki/Polynomial_greatest_common_divisor#Subresultants)). Тогда, если
![$s_0(p, q)=...=s_{d-1}(p, q)=0$ $s_0(p, q)=...=s_{d-1}(p, q)=0$](https://dxdy-01.korotkov.co.uk/f/8/5/4/854e64ac6ac0cabfd9fab2a46741a63582.png)
, а
![$s_d(p, q)\ne 0$ $s_d(p, q)\ne 0$](https://dxdy-02.korotkov.co.uk/f/d/4/2/d421d74f4eb63dd1126064aeaf6b4d6882.png)
, то
![$S_d(p, q)$ $S_d(p, q)$](https://dxdy-03.korotkov.co.uk/f/2/7/1/2713916672cabba096e42d7d09070b3c82.png)
- наибольший общий делитель полиномов
![$p(x), q(x)$ $p(x), q(x)$](https://dxdy-01.korotkov.co.uk/f/c/9/a/c9aefd146bfb557da0b073149397207682.png)
и
![$S_0(p, q)=...=S_{d-1}(p, q)=0$ $S_0(p, q)=...=S_{d-1}(p, q)=0$](https://dxdy-03.korotkov.co.uk/f/2/a/f/2af00ba42728d415208351d89231c33e82.png)
.
Пример процедуры на языке Maple для вычисления
![$S_i(p, q)$ $S_i(p, q)$](https://dxdy-03.korotkov.co.uk/f/e/7/8/e786c1bb010ced94593b791df066bca182.png)
(здесь v - переменная полиномов, напр. 'x'):
Цитата:
sub_res:=proc(i,p,q,v)
local m,n,S,T,M1,M2,f,V:
m:=degree(p, v):
n:=degree(q, v):
S := LinearAlgebra[SylvesterMatrix](p, q, v)^+:
T:=LinearAlgebra[SubMatrix](S, [1..m+n-i], [1..n-i, n+1..m+n-i]):
M1:=Matrix([[Matrix(m+n-2*i-1, shape=identity)],[Matrix(1,m+n-2*i-1)]]):
f:=(ii,jj)->v^(i-jj+1):
M2:=Matrix([[Matrix(m+n-2*i-1,i+1)],[Matrix(1,i+1,f)]]):
V:=Matrix([M1,M2]):
return LinearAlgebra[Determinant](V.T):
end proc:
Также в
Maple есть подпакет
ChainTools пакета
RegularChains. А там есть функции
SubresultantChain(p, q, x, R) и
SubresultantOfIndex(i, src, R). Последняя функция вычисляет субрезультантные многочлены порядка i.