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 decomposedwithu
(Optional default is true) {bool | 'f'}:true
if U is desiredfalse
otherwise. It can also be 'f' (see below)withv
(Optional default is true) {bool}:true
if V is desiredfalse
otherwiseeps
(Optional) {Number}: A constant used in the test for convergence; should not be smaller than the machine precisiontol
(Optional) {Number}: A machine dependent constant which should be set equal toB/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 sequenceu
: Represents the matrix U with orthonormalized columns (ifwithu
istrue
otherwiseu
is used as a working storage)v
: Represents the orthogonal matrix V (ifwithv
istrue
, otherwisev
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
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 = consoleconsoleconsole
umd package
Golub and Reinsch first example