Обобщенное сингулярное разложение
[U,V,X,C,S] = gsvd(A,B)[U,V,X,C,S] = gsvd(A,B,0)sigma = gsvd(A,B)[U,V,X,C,S] = gsvd(A,B) возвращает унитарные матрицы U и V, (обычно) квадратная матрица X и неотрицательные диагональные матрицы C и S так, чтобы
A = U*C*X' B = V*S*X' C'*C + S'*S = I
A и B должны иметь то же количество столбцов, но могут иметь различные количества строк. Если A является m-by-p, и B является n-by-p, то U является m-by-m, V является n-by-n, X является p-by-q, C является m-by-q, и S является n-by-q, где q = min(m+n,p).
Ненулевые элементы S всегда находятся на его основной диагонали. Ненулевые элементы C находятся на диагональном diag(C,max(0,q-m)). Если m >= q, это - основная диагональ C.
[U,V,X,C,S] = gsvd(A,B,0), где A является m-by-p и B, является n-by-p, производит ““ разложение размера экономики, где получившийся U и V имеют в большинстве столбцов p, и C и S имеют в большинстве строк p. Обобщенными сингулярными значениями является diag(C)./diag(S) пока m >= p и n >= p.
Если A является m-by-p, и B является n-by-p, то U является m-by-min(q,m), V является n-by-min(q,n), X является p-by-q, C является min(q,m)-by-q, и S является min(q,n)-by-q, где q = min(m+n,p).
sigma = gsvd(A,B) возвращает вектор обобщенных сингулярных значений, sqrt(diag(C'*C)./diag(S'*S)). Когда B является квадратным и несингулярным, обобщенные сингулярные значения, gsvd(A,B), соответствуют обычным сингулярным значениям, svd(A/B), но они сортируются в противоположном порядке. Их обратными величинами является gsvd(B,A).
Векторный sigma имеет длину q и находится в не уменьшающемся порядке.
Матрицы имеют, по крайней мере, столько же строк сколько столбцы.
A = reshape(1:15,5,3)
B = magic(3)
A =
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
B =
8 1 6
3 5 7
4 9 2Оператор
[U,V,X,C,S] = gsvd(A,B)
производит ортогональный U 5 на 5, 3 3 ортогональный V, 3 3 несингулярный X,
X =
2.8284 -9.3761 -6.9346
-5.6569 -8.3071 -18.3301
2.8284 -7.2381 -29.7256и
C =
0.0000 0 0
0 0.3155 0
0 0 0.9807
0 0 0
0 0 0
S =
1.0000 0 0
0 0.9489 0
0 0 0.1957Поскольку A является неполным рангом, первый диагональный элемент C является нулем.
Экономика измерила разложение,
[U,V,X,C,S] = gsvd(A,B,0)
производит 5 3 матричный U и 3 3 матричный C.
U =
0.5700 -0.6457 -0.4279
-0.7455 -0.3296 -0.4375
-0.1702 -0.0135 -0.4470
0.2966 0.3026 -0.4566
0.0490 0.6187 -0.4661
C =
0.0000 0 0
0 0.3155 0
0 0 0.9807Другие три матрицы, V, X и S совпадают с полученными с полным разложением.
Обобщенные сингулярные значения являются отношениями диагональных элементов C и S.
sigma = gsvd(A,B)
sigma =
0.0000
0.3325
5.0123Эти значения являются переупорядочением обычных сингулярных значений
svd(A/B)
ans =
5.0123
0.3325
0.0000Матрицы имеют, по крайней мере, столько же столбцов сколько строки.
A = reshape(1:15,3,5)
B = magic(5)
A =
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
B =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9Оператор
[U,V,X,C,S] = gsvd(A,B)
производит 3 3 ортогональный U, ортогональный V 5 на 5, несингулярный X 5 на 5 и
C =
0 0 0.0000 0 0
0 0 0 0.0439 0
0 0 0 0 0.7432
S =
1.0000 0 0 0 0
0 1.0000 0 0 0
0 0 1.0000 0 0
0 0 0 0.9990 0
0 0 0 0 0.6690В этой ситуации ненулевой диагональю C является diag(C,2). Обобщенные сингулярные значения включают три нуля.
sigma = gsvd(A,B)
sigma =
0
0
0.0000
0.0439
1.1109Инвертирование ролей A и B оплачивает эти значения, производя две бесконечности.
gsvd(B,A)
ans =
1.0e+16 *
0.0000
0.0000
8.8252
Inf
InfВ этой формулировке gsvd никакие предположения не сделаны об отдельных рангах A или B. Матричный X имеет полный ранг, если и только если матричный [A;B] имеет полный ранг. На самом деле svd(X) и cond(X) равны svd([A;B]) и cond([A;B]). Другие формулировки, например, Голуб и К. ван Лоун [1], требуют, чтобы null(A) и null(B) не перекрывали и заменяли X inv(X) или inv(X').
Обратите внимание, однако, что, когда null(A) и null(B) действительно накладываются, ненулевые элементы C и S исключительно не определяются.
Обобщенное сингулярное разложение использует разложение C-S, описанное в [1], а также встроенный svd и функции qr. Разложение C-S реализовано в локальной функции в программном файле gsvd.
[1] Golub, Джин Х. и ссуда Чарльза Вана, матричные вычисления, третий выпуск, Johns Hopkins University Press, Балтимор, 1996