gsvd

Обобщенное сингулярное разложение

Синтаксис

[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 и находится в не уменьшающемся порядке.

Примеры

Пример 1

Матрицы имеют, по крайней мере, столько же строк сколько столбцы.

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

Пример 2

Матрицы имеют, по крайней мере, столько же столбцов сколько строки.

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

Смотрите также

|

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте