# svd-js

1.1.1 • Public • Published

# SVD-JS

A simple library to compute Singular Value Decomposition as explained in "Singular Value Decomposition and Least Squares Solutions. By G.H. Golub et al."

## Usage

`SVD(a, withu, withv, eps, tol) => { u, v, q }`

computes the singular values and complete orthogonal decomposition of a real rectangular matrix

``````A: A = U * diag(q) * V(t), U(t) * U = V(t) * V = I
``````

The actual parameters corresponding to A, U, V may all be identical unless `withu = withv = {true}`. In this case, the actual parameters corresponding to U and V must differ. `m >= n` is assumed (with `m = a.length` and `n = a[0].length`). The following is the description of all parameters:

• `a` {Array}: Represents the matrix A to be decomposed
• `withu` (Optional default is true) {bool | 'f'}: `true` if U is desired `false` otherwise. It can also be 'f' (see below)
• `withv` (Optional default is true) {bool}: `true` if V is desired `false` otherwise
• `eps` (Optional) {Number}: A constant used in the test for convergence; should not be smaller than the machine precision
• `tol` (Optional) {Number}: A machine dependent constant which should be set equal to `B/eps` where B is the smallest positive number representable in the computer

The function returns an object with the following values:

• `q`: A vector holding the singular values of A; they are non-negative but not necessarily ordered in decreasing sequence
• `u`: Represents the matrix U with orthonormalized columns (if `withu` is `true` otherwise `u` is used as a working storage)
• `v`: Represents the orthogonal matrix V (if `withv` is `true`, otherwise `v` is not used)

If 'f' is given to `withu`, it computes 'full' U with `m*m` dimension. It is an extension in (i) of '5. Organization and Notation Details' in Golub et al." The extension part of U (`u[n]` to `u[m-1]`) are orthonormal bases of A that correspond to null singular values, or the nullspace of A^T.

###### npm package

Golub and Reinsch first example

###### umd package

Golub and Reinsch first example

## Package Sidebar

### Install

`npm i svd-js`

### Repository

github.com/danilosalvati/svd-js

2,946

1.1.1

MIT

77.2 kB

22