3.0.3 • Published 8 years ago

ndarray-lup-factorization v3.0.3

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

ndarray-lup-factorization

Build Status npm version Dependency Status

LU factorization with pivoting for ndarrays

Introduction

This module performs an in-place LUP factorization (LU with partial pivoting) on matrix A. Be advised that the rows are physically swapped which is slightly sub-optimal.

The resulting factorization is PA = LU where P is a permutation matrix.

For an alternate version, see: ndarray-lup-factorization

Installation

npm install ndarray-lup-factorization

Usage

Sample usage:

var lup = require('ndarray-lup-factorization')

var P = [],
    A = ndarray([1,2,6,3],[2,2])

lup( A, A, P )

require('ndarray-lup-factorization')( A, L, P )

Inputs:

  • A: An n x n ndarray. This matrix is overwritten during the factorization. At the end of the factorization, the upper-triangular portion contains U and the lower-triangular portion contains zeros.
  • L: An n x n ndarray. At the end of the factorization, this array contains the lower-triangular portion of the factorization with ones on the diagonal.
  • P: An Array. At the end of the factorization, this contains a vector representation of the permutation matrix. The Pith element of the ith row of the permutation matrix is one; all others elements are zero.

Returns: true upon successful completion; false otherwise.

require('ndarray-lup-factorization')( A, A, P )

  • A: An n x n ndarray. If the first and second arguments are identical, both L and U are stored in the A matrix. U is the upper triangular portion (including diagonal) and L is the lower-triangular portion (excluding diagonal; ones on the diagonal are implicit).
  • P: An Array. At the end of the factorization, this contains a vector representation of the permutation matrix for which the Pith element of the ith row of the permutation matrix is one and all others elements are zero.

Returns: true upon successful completion; false otherwise.

Credits

(c) 2015 Ricky Reusser. MIT License