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