Многочлен с заданными корнями или характеристический многочлен
p = poly(r)p = poly(A), где p = poly(r)r является вектором, возвращает коэффициенты многочлена, корни которого являются элементами r.
, где p = poly(A)A является n-by-n матрица, возвращает коэффициенты n+1 характеристического многочлена матрицы, det (λI – A).
Для векторов r = roots(p) и p = poly(r) являются обратными функциями друг друга, до ошибки округления, упорядоченного расположения и масштабирования.
Алгоритмы, используемые для poly и roots, иллюстрируют интересный аспект современного подхода к вычислению собственного значения. poly(A) генерирует характеристический многочлен A, и roots(poly(A)) находит корни того многочлена, которые являются собственными значениями A. Но и poly и roots используют eig, который основан на преобразованиях подобия. Классический подход, который характеризует собственные значения как корни характеристического многочлена, на самом деле инвертируется.
Если A является n-by-n матрица, poly(A) производит коэффициенты p(1) через p(n+1), с p(1) = 1, в
Алгоритм
z = eig(A);
p = zeros(n+1,1);
p(1) = 1;
for j = 1:n
p(2:j+1) = p(2:j+1)-z(j)*p(1:j);
endЭта рекурсия выведена путем расширения продукта,
Возможно доказать, что poly(A) производит коэффициенты в характеристическом многочлене матрицы в ошибке округления A. Это верно, даже если собственные значения A плохо обусловливаются. Традиционные алгоритмы для получения характеристического многочлена не используют собственные значения и не имеют таких удовлетворительных числовых свойств.