Многочлен с указанными корнями или характеристический многочлен
Для векторов: r = roots(p) и p = poly(r) - обратные функции друг друга, вплоть до ошибки округления, упорядочения и масштабирования.
Алгоритмы, используемые для poly и roots проиллюстрировать интересный аспект современного подхода к вычислению собственных значений. poly(A) генерирует характеристический многочлен A, и roots(poly(A)) находит корни этого многочлена, которые являются собственными значениями A. Но оба poly и roots использовать eig, которая основана на преобразованиях подобия. Классический подход, характеризующий собственные значения как корни характерного многочлена, фактически обращён вспять.
Если A является nоколо-n матрица, poly(A) создает коэффициенты p(1) через p(n+1), с p(1) = 1, в
pnλ + pn + 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 плохо кондиционированы. Традиционные алгоритмы получения характеристического многочлена не используют собственные значения и не обладают такими удовлетворительными числовыми свойствами.