To compute the LU factorization under default settings:
[L U p q] = lucp(A)
This produces a factorization such that L*U = A(p,q). Vectors p and q permute the rows and columns, respectively.
The pivot tolerance can be controlled:
[L U p q] = lucp(A,tol)
The algorithm will terminate if the absolute value of the pivot is less than tol.
Permutation matrices can be generated:
[L U P Q] = lucp(A,tol,'matrix')
[L U P Q] = lucp(A,tol,'sparse')
The first will generate full permutation matrices P and Q such that L*U = P*A*Q. The second generates sparse P and Q.
If A is sparse, L and U will be sparse. However, no effort is taken to reduce fill in.
This function works on non-square matrices.
fixed bug from last update.
Performs a final column swap in the case where A is m by n with n > m. The goal is to have well conditioned U(1:m,1:m).