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