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

增進計算特徵值時的準確度

Syntax

Description

[T,B] = balance(A) 傳回對角矩陣 T (其元素為2的整數次方),和一個平衡矩陣 B 使得 B = T\A*T。若 A 是對稱矩陣, 則 B == AT 是單位矩陣。

B = balance(A) 只傳回平衡矩陣 B

Remarks

非對稱的矩陣會有 poorly conditioned 的特徵值。像是捨位誤差,會導致產生錯誤的特徵值。我們可以參考其條件數(condition number)的值來判定這個問題

( A 條件數的值與解特徵值問題本身是不相關的。)

平衡(balancing)會試著去使任何 ill conditioning 的特徵向量矩陣轉化成 diagonal scaling。平衡通常不會使非對稱的矩陣轉為對稱的矩陣,它只會試著使每一列的 norm 等於對應的每一行的 norm。更進一步的來看, diagonal scale factors 會侷限在2的次方所以不會受到捨位誤差的影響。

eig(A)在計算特徵值前會自動去平衡 A ,可以用 eig(A,'nobalance')使它不要先平衡。

Examples

矩陣 A 有很大的元素位於右上角,很小的元素位於左下角。它可以說是非常地不對稱。

平衡會產生一個對角矩陣 T (其元素為2的次方) 和一個平衡矩陣 BB 會比 A 來的對稱。

會了觀察出對特徵向量的影響, 首先算出 A 的特徵向量。

這三個向量的第一個 component 都是最大的,這表示 V 是 badly conditioned ,事實上 cond(V) 等於 8.7766e+003。接下來我們看 B 的特徵向量。

而現在這些特徵向量已調整過了且 cond(V) 的條件數等於 1.4421。Ill conditioning 會集中在 scaling matrix, cond(T) 等於 8192

這個例子不是屬於非常明顯變化的,所以算出來 AB 的特徵值會蠻近似的,平衡對結果只產生些微的影響。

Algorithm

eig 函式會自動的去平衡輸入的矩陣。 balance 會用 LAPACK 程序 DGEBAL (實數) 和 ZGEBAL (複數)。 若需要 T, 也可以用 LAPACK 程序 DGEBAK (實數) 和 ZGEBAK (複數)。

Limitations

平衡會改變特定矩陣中的一些性質,使用時要多留意。若一個矩陣包含值很小的元素(由捨位誤差所造成的), balancing 會把它們標準化,就像矩陣中其他元素標準化一樣。

See Also

condeigeighessschur

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, Third Edition, SIAM, Philadelphia, 1999.


 axis bar, barh