MATLAB Function Reference |
Syntax
d = eig(A) d = eig(A,B) [V,D] = eig(A) [V,D] = eig(A,'nobalance') [V,D] = eig(A,B) [V,D] = eig(A,B,flag)
Description
Note
若 S 是稀疏且對稱矩陣,您可以用 d = eig(S) 來得到 S 的特徵值。而在其他的情況下,若想得到特徵向量, 可以用 eigs 來獲得稀疏矩陣的特徵值或特徵向量。
|
d = eig(A,B)
若 A
與 B
為方陣,則傳回一個包含廣義特徵值的向量。
[V,D] = eig(A)
產生矩陣 A
的特徵值 (D
) 和特徵向量 (V
) ,使得 A*V
=
V*D
。矩陣 D
稱作矩陣 A
的 canonical form -- 為一個對角矩陣其主對角線上的元素恰為 A
的特徵值。矩陣 V
則稱作 modal matrix-- 其行向量恰為 A
的特徵向量。
對於 eig(A)
, 特徵向量會標準化成 norm = 1.0。
若 W
是一個矩陣使得 W'*A = D*W'
,則 W
的行向量稱作是 A
的 left eigenvectors 。可以使用 [W,D] = eig(A.'); W = conj(W)
來計算 left eigenvectors。
[V,D] = eig(A,'nobalance')
求取特徵值跟特徵向量而不用初始的平衡步驟。一般的情況下,平衡可以增進輸入矩陣的 conditioning ,就能更準確得計算特徵值及特徵向量。然而,若一個矩陣包含值很小的元素(由捨位誤差所造成的), balancing 會把它們標準化,就像其他元素標準化一樣,而這樣會產生錯誤的特徵向量。設定 nobalance
這個條件可以避免這種情況發生。您可以參考 balance
函式獲得更詳細的資訊。
[V,D] = eig(A,B)
產生一個廣義特徵值構成的對角矩陣 D
和一個全矩陣 V
(其行向量會對應至特徵向量使得 A*V
=
B*V*D
)。
[V,D] = eig(A,B,flag)
可以指定計算特徵值和特徵向量的演算法。 flag
可以是以下:
'chol' |
用 B 的Cholesky 分解來計算 A 和 B 的廣義特徵值。對於對稱矩陣 (Hermitian) A 和對稱 (Hermitian) 正定矩陣 B 為預設值。 |
'qz' |
不管對稱性, QZ 演算法可以用在非對稱矩陣 (non-Hermitian) A 和 B 。 |
Remarks
是一個 n
-by-n
的矩陣, 是一個長度為 n
的行向量, 為一純量。 的 n
個值,滿足上述的等式,稱為 eigenvalues,且其對應到的向量 稱為 right eigenvectors。在 MATLAB 中, eig
函式可以求特徵值 ,跟選擇性的求 。
和 皆為 n
-by-n
的矩陣且 為一純量。滿足上述等式的 稱為 generalized eigenvalues ,其對應的向量 稱為 generalized right eigenvectors。
若 是非奇異(nonsingular),解這個等式相當於解標準特徵值的問題
由於 可以是奇異(singular),所以需要用 QZ 演算法來解。
當一個矩陣的特徵值沒有重複時,特徵向量會彼此線性獨立且特徵向量矩陣 V
會 diagonalizes 原本的矩陣 A
(也叫相似的轉換)。然而,若一個矩陣有重複的特徵值時,它將不會相似於一個對角矩陣,除非它的特徵向量是線性獨立。若特徵向量不為線性獨立,則稱原本的矩陣為 defective 。即使一個矩陣是 defective,從 eig
所得到的答案仍滿足 A*X
=
X*D
。
Examples
B = [ 3 -2 -.9 2*eps
-2 4 1 -eps
-eps/4 eps/2 -1 0
-.5 -.5 .1 1 ];
會有一些元素是經過捨位的。這個例子就是使用 nobalance
屬性來求得正確的特徵向量。
[VB,DB] = eig(B) B*VB - VB*DB [VN,DN] = eig(B,'nobalance') B*VN - VN*DN
Algorithm
MATLAB 會使用 LAPACK 程序來計算特徵值及特徵向量:
See Also
balance
, condeig
, eigs
, hess
, qz
, schur
References
[1] Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide (http://www.netlib.org/lapack/lug/ lapack_lug.html), Third Edition, SIAM, Philadelphia, 1999.
edit | eigs |