Next: , Previous: , Up: Internal Routines   [Contents][Index]

#### 15.5.606 svd

`svd, m, u2, s2, v2`

Calculates the ’thin’ singular value decomposition of matrix `m`, which is easier to calculate and takes less storage than the ’full’ singular value decomposition. `m` must be of a real (non-complex) data type.

If `m` is an m-by-n matrix (has m rows and n columns), then `m = u # s # transpose(v)` is the ’full’ singular value decomposition of `m`, where `u` is an m-by-m orthonormal matrix, `s` is an m-by-n matrix with nonnegative numbers on the diagonal and zeros elsewhere, and `v` is an n-by-n orthonormal matrix. The diagonal entries of `s` are the singular values of `m`

In `s2` is returned a vector containing the min(n,m) singular values of `m` in non-increasing order.

If m = n, then returned `u2` and `v2` have the same dimensions as `m`, and `u2` is `u`, and `v2` is `v`. In that case, the ’thin’ singular value decomposition is equal to the ’full’ singular value decomposition.

If m > n, then `u2` is `u` except that the rightmost columns of `u` beyond the first min(m,n) columns are omitted. These correspond to the bottommost all-zero rows of `s`. `u2` has the same dimensions as `m`. `v2` is `v`. Then `m = u2 # mdiagonal(s2) # transpose(v2`.

If m < n, then ```m = transpose(u2) # mdiagonal(s2) # v2```. In that case, `v2` is `v` except that the bottommost rows of `v` beyond the first min(m,n) rows are omitted. These correspond to the rightmost all-zero columns of `s`. `v2` has the same dimensions as `m`. `u2` is the transpose of `u`.