# gsvd

## 语法

``[U,V,X,C,S] = gsvd(A,B)``
``[U,V,X,C,S] = gsvd(A,B,"econ")``
``[U,V,X,C,S] = gsvd(A,B,0)``
``sigma = gsvd(A,B)``

## 说明

````[U,V,X,C,S] = gsvd(A,B)` 执行矩阵 `A` 和 `B` 的广义奇异值分解，并返回酉矩阵 `U` 和 `V`、矩阵 `X` 以及非负对角矩阵 `C` 和 `S`，使得A = U*C*X' B = V*S*X' C'*C + S'*S = I ```

``[U,V,X,C,S] = gsvd(A,B,"econ")`（其中 `A` 为 `m`×`p` 且 `B` 为 `n`×`p`）生成精简分解，其中生成的 `U` 和 `V` 矩阵最多有 `p` 列，`C` 和 `S` 最多有 `p` 行。`
``[U,V,X,C,S] = gsvd(A,B,0)` 与 `gsvd(A,B,"econ")` 相同。不建议使用此语法。改用 `"econ"` 选项。`

``sigma = gsvd(A,B)` 返回广义奇异值的向量 `sqrt(diag(C'*C)./diag(S'*S))`。当 `B` 为方阵且为非奇异值时，广义奇异值 `gsvd(A,B)` 相当于普通奇异值 `svd(A/B)`，但它们按相反顺序排序。其倒数为 `gsvd(B,A)`。`

## 示例

`A = reshape(1:15,5,3)`
```A = 5×3 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 ```
`B = magic(3)`
```B = 3×3 8 1 6 3 5 7 4 9 2 ```

`A``B` 执行一次广义奇异值分解。输出包括正交矩阵 `U``V`、非奇异矩阵 `X` 以及对角矩阵 `C``S`。因为 `A` 秩亏，所以 `C` 的第一个对角线元素为零。

`[U,V,X,C,S] = gsvd(A,B)`
```U = 5×5 -0.2569 0.6457 -0.4279 -0.4417 -0.3727 0.6384 0.3296 -0.4375 0.0834 0.5344 -0.6217 0.0135 -0.4470 0.5799 0.2779 0.3559 -0.3026 -0.4566 0.3567 -0.6679 -0.1156 -0.6187 -0.4661 -0.5783 0.2284 ```
```V = 3×3 -0.7071 -0.6946 0.1325 0.0000 -0.1874 -0.9823 0.7071 -0.6946 0.1325 ```
```X = 3×3 -2.8284 -9.3761 -6.9346 5.6569 -8.3071 -18.3301 -2.8284 -7.2381 -29.7256 ```
```C = 5×3 0.0000 0 0 0 0.3155 0 0 0 0.9807 0 0 0 0 0 0 ```
```S = 3×3 1.0000 0 0 0 0.9489 0 0 0 0.1957 ```

`[U,V,X,C,S] = gsvd(A,B,"econ")`
```U = 5×3 0.5371 0.6457 0.4279 -0.8093 0.3296 0.4375 0.1673 0.0135 0.4470 -0.0551 -0.3026 0.4566 0.1600 -0.6187 0.4661 ```
```V = 3×3 0.7071 -0.6946 -0.1325 -0.0000 -0.1874 0.9823 -0.7071 -0.6946 -0.1325 ```
```X = 3×3 2.8284 -9.3761 6.9346 -5.6569 -8.3071 18.3301 2.8284 -7.2381 29.7256 ```
```C = 3×3 0.0000 0 0 0 0.3155 0 0 0 0.9807 ```
```S = 3×3 1.0000 0 0 0 0.9489 0 0 0 0.1957 ```

`sigma = gsvd(A,B)`
```sigma = 3×1 0.0000 0.3325 5.0123 ```
`svals = svd(A/B)`
```svals = 3×1 5.0123 0.3325 0.0000 ```

`A = reshape(1:15,3,5)`
```A = 3×5 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15 ```
`B = magic(5)`
```B = 5×5 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 ```

`A``B` 执行一次广义奇异值分解。输出包括正交矩阵 `U``V`、非奇异矩阵 `X` 以及对角矩阵 `C``S`。在此情况下，`C` 的非零对角线为 `diag(C,2)`

`[U,V,X,C,S] = gsvd(A,B)`
```U = 3×3 0.4082 0.7178 -0.5639 -0.8165 0.0109 -0.5772 0.4082 -0.6961 -0.5906 ```
```V = 5×5 -0.7596 0.3266 0.3195 -0.4552 -0.0843 0.4139 -0.3747 0.6218 -0.5408 0.0956 0.0484 -0.1713 -0.0078 -0.0271 -0.9836 -0.1717 -0.4817 -0.6610 -0.5408 0.0956 0.4689 0.7011 -0.2725 -0.4552 -0.0843 ```
```X = 5×5 0.2422 -0.8564 10.0949 -30.7287 -4.6958 -9.4897 11.7764 -2.1067 -28.5003 -11.6858 11.2281 3.8525 -14.8016 -26.2720 -18.6758 -1.9806 -14.7725 -3.3206 -24.0436 -25.6657 0 0 10.1340 -21.8152 -32.6557 ```
```C = 3×5 0 0 0.0000 0 0 0 0 0 0.0439 0 0 0 0 0 0.7432 ```
```S = 5×5 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 ```

`sigma = gsvd(A,B)`
```sigma = 5×1 0 0 0.0000 0.0439 1.1109 ```

`sigma2 = gsvd(B,A)`
```sigma2 = 5×1 1016 × 0.0000 0.0000 3.8423 Inf Inf ```

## 输出参量

`U``V` 的大小取决于您是否指定 `"econ"` 选项。如果 `A``m`×`p` 并且 `B``n`×`p`，则：

• 默认情况下，`U``m`×`m``V``n`×`n`

• 如果指定 `"econ"` 选项，则 `U``m`×`min(m,p)``V``n`×`min(n,p)`

`X` 的一个属性是 `norm([A; B]) == norm(X)`，因为 `U``V``C``S` 只表示矩阵 `[A; B]` 的一个正交基。

`C``S` 的大小取决于您是否指定 `"econ"` 选项。如果 `A``m`×`p` 并且 `B``n`×`p`，则：

• 默认情况下，`C``m`×`q``S``n`×`q`

• 如果指定 `"econ"` 选项，则 `C``min(m,p)`×`q``V``min(n,p)`×`q`

`sigma` 的长度等于 `[A; B]` 的数值秩且为非递减顺序。

## 算法

`gsvd` 函数执行的广义奇异值分解使用 C-S 分解以及内置的 `svd``qr` 函数。