MATLAB Function Reference |
Syntax
p = poly(A) p = poly(r)
Description
p = poly(A)
A
為 n*n
的陣列,其回傳 n+1
個元素的列向量其元素的值為 det(sI - A) 的係數。係數依降冪排序:若向量 c
有 n+1
個元件,則多項式表示為
p = poly(r)
r
為向量,其回傳一列向量,其元素為一多項式的係數,而此多項式的根即是向量 r
的元素。
Remarks
r = roots(p)
回傳一行向量,其元素為以 p
為係數多項式的根。對向量而言,roots
及 poly
互為反函式。
Examples
A = 1 2 3 4 5 6 7 8 0
p = poly(A) p = 1 -6 -72 -27
r = roots(p) r = 12.1229 -5.7345 -0.3884
Algorithm
針對函式 poly
及 roots
的演算法使用了特徵值(eigenvalue)的計算。poly(A)
產生 A
的字元多項式,而 roots(poly(A))
可求得多項式的根,即 A
的特徵值。但函式 poly
及 roots
皆使用 eig
,其根據近似轉換。
若 A
為 n*n
矩陣,poly(A)
產生一 c(1)
至 c(n+1)
的係數,而 c(1)
=
1
z = eig(A); c = zeros(n+1,1); c(1) = 1; for j = 1:n c(2:j+1) = c(2:j+1)-z(j)*c(1:j); end
這可証明 poly(A)
產生的係數多項式在矩陣 A
的進位誤差內。即使 A
的特徵值(eigenvalues)是不完善的。傳統針對取得字元多項式的演算法並沒有使用特徵值,故沒有辦法有此良好數值的結果。
See Also
polar | polyarea |