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

廣義的奇異值分解(Generalized singular value decomposition)

Syntax

Description

[U,V,X,C,S] = gsvd(A,B) 傳回么正矩陣 UV,方陣 X(通常是),和非負的對角矩陣 CS 使得

AB 的行數一定要一樣,但是列數可能會不一樣。若 Am-by-pBn-by-p,則 Um-by-mVn-by-nXp-by-qq = min(m+n,p)

sigma = gsvd(A,B) 傳回廣義奇異值的向量, sqrt(diag(C'*C)./diag(S'*S))

S 的非零元素一定在它的主對角線上。若 m >= pC 中的非零元素也會在它的主對角線上。但要是 m < p,則 C 中的非零對角線是在 diag(C,p-m)。這樣可以讓對角線上的元素,廣義的奇異值,呈遞減的排列。

gsvd(A,B,0),有三個輸入的參數,不是 m 就是 n >= p。會產生 "economy-sized" 的分解,也就是 UV 最多只有 p 行, CS 最多只有 p 列。廣義的奇異值為 diag(C)./diag(S)

B 為一方陣且非奇異時,廣義奇異值, gsvd(A,B),會和一般的奇異值相等, svd(A/B) ,但是輸入的參數順序不同 ( gsvd(B,A) )。

在算 gsvd 時,與個別的 AB 的 rank 其實沒什麼關聯性。矩陣 X 有 full rank 若且為若矩陣 [A;B] 有 full rank。事實上, svd(X)cond(X) 相等於 svd([A;B])cond([A;B])。而其他像 G. Golub 與 C. Van Loan [1],則需要 null(A)null(B) 不重疊且用 inv(X)inv(X') 置換 X

另外,有一點需要注意,就是當 null(A)null(B) 重疊時, CS 中的非零元素不是唯一被決定的。

Examples

Example 1. 以下的矩陣的列數至少都跟行數一樣多。

這個指令

會產生一個 5-by-5 的正交矩陣 U, 一個 3-by-3 的正交矩陣 V, 和一個 3-by-3 的非奇異矩陣X

因為 A 的 rank 為有缺陷的(deficient),所以 C 的對角線上第一個元素為零。

Economy sized 的分解如下

會產生一個 5-by-3 的矩陣 U 和一個 3-by-3 的矩陣 C

而其他三個矩陣, VX, 與 S 與前面作 full decomposition 的結果相同。

廣義的奇異值就是 CS 對角線元素的比值。

這些值等於一般奇異值相同,但順序不一樣

Example 2. 以下的矩陣的行數至少都跟列數一樣多。

這個指令

會產生一個 3-by-3 的正交矩陣 U, 一個 5-by-5 的正交矩陣 V, 一個 5-by-5 的非奇異矩陣 X

在這個情況下,C 的非零對角線為 diag(C,2)。廣義的奇異值包含三個零。

若將 AB 交換參數的位置,則會產生兩個無窮大的值。

Algorithm

廣義的奇異值分解是用 C-S 分解,可參考 [1]。C-S 分解是在 gsvd M-file 中的一個副程式。

Diagnostics

唯一的警告或錯誤訊息,是當輸入的兩個參數中行數不同,才會造成。

See Also

qrsvd

References

[1]  Golub, Gene H. and Charles Van Loan, Matrix Computations, Third Edition, Johns Hopkins University Press, Baltimore, 1996


 griddatan gtext