Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Compute the LU decomposition of a matrix with different pivoting methods
ResourceFunction["PivotedLUDecomposition"][m] generates a representation of the LU decomposition of a matrix m. |
| "Complete" | use complete pivoting |
| "Partial" | use partial pivoting (equivalent to LUDecomposition) |
| "Rook" | use rook pivoting (default) |
Compute the LU decomposition of a matrix:
| In[1]:= | ![]() |
| Out[1]= |
l is the strictly lower triangular part of lu with ones assumed along the diagonal:
| In[2]:= |
| Out[2]= | ![]() |
u is the upper triangular part of lu:
| In[3]:= |
| Out[3]= | ![]() |
Multiplying l and u gives a permuted version of the original matrix, with the permutations determined by rp and cp. Verify the decomposition:
| In[4]:= | ![]() |
| Out[4]= |
Find the LU decomposition of a machine-precision matrix:
| In[5]:= |
| Out[6]= |
Verify the decomposition:
| In[7]:= |
| Out[8]= |
LU decomposition for a complex matrix:
| In[9]:= | ![]() |
| Out[9]= |
LU decomposition of a non-square matrix:
| In[10]:= | ![]() |
| Out[11]= |
Reconstruct the l and u matrices:
| In[12]:= |
| Out[13]= | ![]() |
| In[14]:= |
| Out[14]= | ![]() |
Verify the decomposition:
| In[15]:= |
| Out[15]= |
Use different pivoting methods in computing the LU decomposition:
| In[16]:= | ![]() |
| Out[16]= |
| In[17]:= | ![]() |
| Out[17]= |
| In[18]:= | ![]() |
| Out[18]= |
LU decompositions are mainly used to solve linear systems. Here is a 5×5 random matrix:
| In[19]:= |
Compute its LU decomposition:
| In[20]:= |
Extract the lower and upper parts of the decomposition:
| In[21]:= |
Solve the system m.x=b for x with two backsolves and two permutations:
| In[22]:= | ![]() |
| Out[23]= |
Compute the residual, which should be tiny:
| In[24]:= |
| Out[24]= |
With the setting Pivoting→"Partial", PivotedLUDecomposition is equivalent to the built-in LUDecomposition:
| In[25]:= | ![]() |
| Out[25]= |
| In[26]:= | ![]() |
| Out[26]= |
This work is licensed under a Creative Commons Attribution 4.0 International License