LU decomposition

numeric.linalg.lu(a)

Compute pivoted LU decomposition of a matrix.

The decomposition is:

A = P L U

where P is a permutation matrix, L lower triangular with unit diagonal elements, and U upper triangular.

Parameters

a(M, M) array_like

Array to decompose

permute_lbool, optional

Perform the multiplication P*L (Default: do not permute)

overwrite_abool, optional

Whether to overwrite data in a (may improve performance)

check_finitebool, optional

Whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

Returns

p(M, M) ndarray

Permutation matrix

l(M, M) ndarray

Lower triangular or trapezoidal matrix with unit diagonal.

u(M, M) ndarray

Upper triangular or trapezoidal matrix

Examples:

a = array([[1,3,5],[2,4,7],[1,1,0]])
p,l,u = np.linalg.lu(a)
print p
print l
print u

Result:

>>> run script...
array([[0.0, 1.0, 0.0]
      [1.0, 0.0, 0.0]
      [0.0, 0.0, 1.0]])
array([[1.0, 0.0, 0.0]
      [0.5, 1.0, 0.0]
      [0.5, -1.0, 1.0]])
array([[2.0, 4.0, 7.0]
      [0.0, 1.0, 1.5]
      [0.0, 0.0, -2.0]])