poly

Многочлен с заданными корнями или характеристический многочлен

Синтаксис

p = poly(r)
p = poly(A)

Описание

пример

p = poly(r), где r является вектором, возвращает коэффициенты многочлена, корни которого являются элементами r.

пример

p = poly(A), где A является n-by-n матрица, возвращает коэффициенты n+1 характеристического многочлена матрицы, det (λIA).

Примеры

свернуть все

Вычислите собственные значения матрицы, A.

A = [1 8 -10; -4 2 4; -5 2 8]
A = 3×3

     1     8   -10
    -4     2     4
    -5     2     8

e = eig(A)
e = 3×1 complex

  11.6219 + 0.0000i
  -0.3110 + 2.6704i
  -0.3110 - 2.6704i

Поскольку собственные значения в e являются корнями характеристического многочлена A, используют poly, чтобы определить характеристический многочлен от значений в e.

p = poly(e)
p = 1×4

    1.0000  -11.0000   -0.0000  -84.0000

Используйте poly, чтобы вычислить характеристический многочлен матрицы, A.

A = [1 2 3; 4 5 6; 7 8 0]
A = 3×3

     1     2     3
     4     5     6
     7     8     0

p = poly(A)
p = 1×4

    1.0000   -6.0000  -72.0000  -27.0000

Вычислите корни p с помощью roots. Корни характеристического многочлена являются собственными значениями матричного A.

r = roots(p)
r = 3×1

   12.1229
   -5.7345
   -0.3884

Входные параметры

свернуть все

Полиномиальные корни, заданные как вектор.

Пример: poly ([2 - 3])

Пример: poly ([2 - 2 3 - 3])

Пример: poly (корни (k))

Пример: poly (eig (A))

Типы данных: single | double
Поддержка комплексного числа: Да

Введите матрицу.

Пример: poly ([0 - 1; 1 0])

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Полиномиальные коэффициенты, возвращенные как вектор - строка.

  • Если входной параметр является квадратом n-by-n матрица, A, то p содержит коэффициенты для характеристического многочлена A.

  • Если входной параметр является вектором корней, r, то p содержит коэффициенты для многочлена, корни которого находятся в r.

В каждом случае, n+1 коэффициентов в p определяют многочлен

p1xn+p2xn−1 +... +pnx+pn+1 .

Советы

  • Для векторов 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, в

det (λI−A) =p1λn + + 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

Эта рекурсия выведена путем расширения продукта,

(λ−λ1) (λ−λ2) (λ−λn) .

Возможно доказать, что poly(A) производит коэффициенты в характеристическом многочлене матрицы в ошибке округления A. Это верно, даже если собственные значения A плохо обусловливаются. Традиционные алгоритмы для получения характеристического многочлена не используют собственные значения и не имеют таких удовлетворительных числовых свойств.

Расширенные возможности

Представлено до R2006a

Была ли эта тема полезной?