Полином с заданными корнями или характеристический полином
p = poly(r)
p = poly(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
плохо обусловливаются. Традиционные алгоритмы для получения характеристического полинома не используют собственные значения и не имеют таких удовлетворительных числовых свойств.