Wondering what’s next for npm?Check out our public roadmap! »

    svd-js
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.1 • Public • Published

    SVD-JS

    Build Status Coverage Status JavaScript Style Guide npm

    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

    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>
     <script src="https://unpkg.com/svd-js" type="application/javascript"></script> 
     <script>
       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 } = SVDJS.SVD(a)
       console.log(u)
       console.log(v)
       console.log(q)
     </script> 
    </html>

    Install

    npm i svd-js

    DownloadsWeekly Downloads

    146

    Version

    1.1.1

    License

    MIT

    Unpacked Size

    77.2 kB

    Total Files

    22

    Last publish

    Collaborators

    • avatar