Матрица Сильвестра. Возникает при переходе от полиномиальных уравнений к матричным рассмотрением итога произведения двух полиномовa a(p)b(p). Если коэффициенты результирующего полинома и b(p) собрать в векторы, то они связаны между собой матрицей Сильвестра S, содержащей коэффициенты a(p).

Первый столбец матрицы Сильвестра содержит коэффициенты a(p) и дополнен нулями, последующие столбцы образованы последовательным сдвигом вниз, общее их количество отвечает числу коэффицинтов сомножителя. Пусть размерность второго полинома на единицу меньше размерности a(p), тогда для вектора из трех коэффициентов [a0 a1 a2] матрица Сильвестра имеет вид S=[a0 0; a1 a0; a2 a1; 0 a2].


a=[1 2 3], S=sylvester(a), mesh(S), 

function: sylvester(a),
var i j n, S=one(1), n=size(a),  
for i=0:n-1, c=zero(2*n),
for j=0:n, c[i+j]=a[j], end, S[i]=c, end,
return S,
end,

Как видно, эта матрица имеет теплицеву структуру.

Матрица Сильвестра S(a,b) для суммы двух произведений a(p)с(p)+b(p)d(p) состоит из двух столбцовых матриц Сильвестра, построенных для a(p) и b(p). Это общий путь и для большего числа слагаемых. В частности, если размерность a(p) на единицу превосходит размерности остальных полиномов, алгоритм построения таков


a=[1 2 3], b=[4 5], 
S2=sylvester2(a b), mesh(S2), r=rank(S2), r=?,

function: sylvester2(a b),
var n, n=size(a), S=one(1), 
S=sylvester(S 0 n a),  
S=sylvester(S n n b),  
return S,
end,

function: sylvester(S k n a),
var i j m с, m=size(a), 
for i=0:n-1, c=zero(2*n), if m=0, c[i]=a, else,
for j=0:m, c[i+j]=a[j], end, end, S[k+i]=c, end,
return S,
end,

Ранг этой матрицы используется в качестве критерия, позволяющего выяснять количество совпадающих корней полиномов, чьи коэффициенты хранят порождающие матрицу сдвиговые векторы. Ранг убывает на количество совпадающих корней.



Rambler's Top100