A package for the computation of Singular Value Decomposition
npm install 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."
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 = Iwithu = withv = {true}
The actual parameters corresponding to A, U, V may all be identical unless. In this case, the actual parameters corresponding to U and V mustm >= n
differ. is assumed (with m = a.length and n = a[0].length).a
The following is the description of all parameters:
* {Array}: Represents the matrix A to be decomposedwithu
(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 otherwiseeps
(Optional*) {Number}: A constant used in the test for convergence; should not be smallertol
than the machine precision
(Optional*) {Number}: A machine dependent constant which should be set equalB/eps
to 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 necessarilyu
ordered in decreasing sequence
* : Represents the matrix U with orthonormalized columns (if withu is trueu
otherwise 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.u[n]
It is an extension in (i) of '5. Organization and Notation Details' in Golub et al."
The extension part of U ( 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
`javascript
import { SVD } from 'svd-js'
const a = [
[22, 10, 2, 3, 7],
[14, 7, 10, 0, 8],
[-1, 13, -1, -11, 3],
[-3, -2, 13, -2, 4],
[9, 8, 1, -2, 4],
[9, 1, -7, 5, -1],
[2, -6, 6, 5, 1],
[4, 5, 0, -2, 2]
]
const { u, v, q } = SVD(a)
console.log(u)
console.log(v)
console.log(q)
`
###### umd package
Golub and Reinsch first example
`html``