LUDecomposition
LUDecomposition[
m
] generates a representation of the LU decomposition of a matrix m.
LUDecomposition returns a list of three elements. The first element is a combination of upper and lower triangular matrices, the second element is a vector specifying rows used for pivoting, and for approximate numerical matrices the third element is an estimate of the condition number of . The data generated by LUDecomposition is intended for use in LUBackSubstitution. See the Mathematica book: Section 3.7.8, Section 3.7.10. See also Implementation NotesA.9.44.27MainBookLinkOldButtonDataA.9.44.27. See also: LUBackSubstitution, QRDecomposition, SchurDecomposition. Related packages: LinearAlgebra`Cholesky`, LinearAlgebra`Orthogonalization`.
Further Examples
We start with the decomposition of a simple matrix.
In[1]:=
Out[1]=
We solve the system m.v
=
{5,8}.
In[2]:=
Out[2]=
This checks the result.
In[3]:=
Out[3]=
In[4]:=
Recovering the lower and upper triangular matrices from the LUDecomposition
LUDecomposition satisfies the following relation: Given a matrix M, determine a unit lower triangular matrix L, an upper triangular matrix U and a permutation vector P such that Part[M,
P]
==
L.
U
.
Part[M,
P] rearranges the rows of M. The permutation ensures numerical stability during the decomposition phase; after that, L and U are determined using Gaussian elimination. Solving the system M.x
==
b is equivalent to solving the system L.U.x
==
b but it is easier because it amounts to solving two triangular systems in a row. For reasons of efficiency, the matrices L and U are returned as a single matrix, where the ones on the main diagonal of L are left out. The functions Lower and Upper recover the matrices by multiplying pairwise (not dot multiplying!) with appropriate matrices of zeros and ones.
In[5]:=
In[6]:=
Consider this inexact matrix.
In[7]:=
This decomposes the matrix into lower and upper diagonal matrices, gives a permutation vector and an estimate of the condition number.
In[8]:=
Out[8]=
This is the lower triangular matrix L.
In[9]:=
Out[9]//MatrixForm=
This is the upper triangular matrix U.
In[10]:=
Out[10]//MatrixForm=
This checks the result.
In[11]:=
Out[11]//MatrixForm=






