# Incomplete LU factorization

In numerical linear algebra, an incomplete LU factorization of a matrix is a sparse approximation of the LU factorization often used as a preconditioner.

Consider a sparse linear system $Ax = b$. These are often solved by computing the factorization $A = LU$, with L unit-lower triangular and U upper triangular. One then solves $Ly = b$, $Ux = y$, which can be done quickly because the matrices are triangular.

For a typical sparse matrix, the LU factors can be much less sparse than the original matrix. The memory requirements for using a direct solver can then become a bottleneck in solving linear systems. One can combat this problem by using fill-reducing reorderings of the matrix's unknowns, such as the Cuthill-McKee ordering.

An incomplete factorization instead seeks triangular matrices L, U such that $A \approx LU$ rather than $A = LU$. Solving for $LUx = b$ can be done quickly but does not yield the exact solution to $Ax = b$. So, we instead use the matrix $M = LU$ as a preconditioner in another iterative solution algorithm such as the conjugate gradient method or GMRES.

The sparsity pattern of L and U is often chosen to be the same as the sparsity pattern of the original matrix A. If the underlying matrix structure can be referenced by pointers instead of copied, the only extra memory required is for the entries of L and U. This preconditioner is called ILU(0).

One can obtain a more accurate preconditioner by allowing some level of extra fill in the factorization. A common choice is to use the sparsity pattern of A2 instead of A; this matrix is appreciably more dense than A, but still sparse over all. This preconditioner is called ILU(1). One can then generalize this procedure; the ILU(k) preconditioner of a matrix A is the incomplete LU factorization with the sparsity pattern of the matrix Ak+1.

More accurate ILU preconditioners require more memory, to such an extent that eventually the running time of the algorithm increases even though the total number of iterations decreases. Consequently, there is a cost/accuracy trade-off that users must evaluate, typically on a case-by-case basis depending on the family of linear systems to be solved.