| 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 | ![]() |