(translator=Kuo, ChineseSource=Kuo-20020523-7\eig.html, EnglishSource=c:\matlabr12\help\techdoc\ref\eig.html)
MATLAB Function Reference    
eig

求特徵值和特徵向量

Syntax

Description

d = eig(A) 傳回矩陣 A 的特徵值。

d = eig(A,B) AB 為方陣,則傳回一個包含廣義特徵值的向量。

[V,D] = eig(A) 產生矩陣 A 的特徵值 (D) 和特徵向量 (V) ,使得 A*V = V*D。矩陣 D 稱作矩陣 Acanonical form -- 為一個對角矩陣其主對角線上的元素恰為 A 的特徵值。矩陣 V 則稱作 modal matrix-- 其行向量恰為 A 的特徵向量。

對於 eig(A), 特徵向量會標準化成 norm = 1.0。

W 是一個矩陣使得 W'*A = D*W',則 W 的行向量稱作是 Aleft 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 分解來計算 AB 的廣義特徵值。對於對稱矩陣 (Hermitian) A 和對稱 (Hermitian) 正定矩陣 B 為預設值。
'qz'
不管對稱性, QZ 演算法可以用在非對稱矩陣 (non-Hermitian) AB

Remarks

求特徵值的問題其實就是解下列等式

是一個 n-by-n 的矩陣, 是一個長度為 n 的行向量, 為一純量。 n 個值,滿足上述的等式,稱為 eigenvalues,且其對應到的向量 稱為 right eigenvectors。在 MATLAB 中, eig 函式可以求特徵值 ,跟選擇性的求

generalized 特徵值問題可以從解下列的等式中求得

皆為 n-by-n 的矩陣且 為一純量。滿足上述等式的 稱為 generalized eigenvalues ,其對應的向量 稱為 generalized right eigenvectors

是非奇異(nonsingular),解這個等式相當於解標準特徵值的問題

由於 可以是奇異(singular),所以需要用 QZ 演算法來解。

當一個矩陣的特徵值沒有重複時,特徵向量會彼此線性獨立且特徵向量矩陣 Vdiagonalizes 原本的矩陣 A (也叫相似的轉換)。然而,若一個矩陣有重複的特徵值時,它將不會相似於一個對角矩陣,除非它的特徵向量是線性獨立。若特徵向量不為線性獨立,則稱原本的矩陣為 defective 。即使一個矩陣是 defective,從 eig 所得到的答案仍滿足 A*X = X*D

Examples

以下的矩陣

會有一些元素是經過捨位的。這個例子就是使用 nobalance 屬性來求得正確的特徵向量。

Algorithm

MATLAB 會使用 LAPACK 程序來計算特徵值及特徵向量:

Case
Routine
Real symmetric A
DSYEV
Real nonsymmetric A:

  • With preliminary balance step
DGEEV (with SCLFAC = 2 instead of 8 in DGEBAL)
  • d = eig(A,'nobalance')
DGEHRDDHSEQR
  • [V,D] = eig(A,'nobalance')
DGEHRDDORGHRDHSEQRDTREVC
Hermitian A
ZHEEV
Non-Hermitian A:

  • With preliminary balance step
ZGEEV (with SCLFAC = 2 instead of 8 in ZGEBAL)
  • d = eig(A,'nobalance')
ZGEHRDZHSEQR
  • [V,D] = eig(A,'nobalance')
ZGEHRDZUNGHRZHSEQRZTREVC
Real symmetric A
symmetric positive definite B
DSYGV
    Special case:
    eig(A,B,'qz') for real AB
    (same as real nonsymmetric A, real
    general B)

DGGEV

Real nonsymmetric A, real general B
DGGEV
Complex Hermitian A,
Hermitian positive definite B
ZHEGV
    Special case:
    eig(A,B,'qz') for complex A or B
    (same as complex non-Hermitian A,
    complex B)

ZGGEV

Complex non-Hermitian A, complex B
ZGGEV

See Also

balancecondeigeigshessqzschur

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