Differences between revisions 5 and 15 (spanning 10 versions)
Revision 5 as of 2023-07-03 05:09:15
Size: 3526
Comment:
Revision 15 as of 2024-01-29 03:13:41
Size: 3111
Comment: Factorization
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Elimination Matrices = = LU Decomposition =
Line 3: Line 3:
See [[LinearAlgebra/Elimination|Elimination]] for a walkthrough of '''elimination'''. This regards the computation of '''elimination matrices''', which are a method of computing elimination. '''''LU'' decomposition''' is another approach to [[LinearAlgebra/Elimination|Gauss-Jordan elimination]]. It is generalized as '''''A''' = '''LU'''''.
Line 11: Line 11:
== Introduction == == Example ==
Line 13: Line 13:
Consider the below system of equations: '''''LU''''' decomposition is a strategy for simplifying math with '''''A'''''.
Line 16: Line 16:
x + 2y + z = 2
3x + 8y + z = 12
4y + z = 2
julia> using LinearAlgebra

julia> A = [1 2 1; 3 8 1; 0 4 1]
3×3 Matrix{Int64}:
 1 2 1
 3 8 1
 0 4 1

julia> lu(A, NoPivot())
LU{Float64, Matrix{Float64}, Vector{Int64}}
L factor:
3×3 Matrix{Float64}:
 1.0 0.0 0.0
 3.0 1.0 0.0
 0.0 2.0 1.0
U factor:
3×3 Matrix{Float64}:
 1.0 2.0 1.0
 0.0 2.0 -2.0
 0.0 0.0 5.0
Line 20: Line 37:

Note that `NoPivot()` must be specified because [[Julia]] wants to do a more efficient factorization.

----
Line 23: Line 44:
== Formulation == == Computation of Elimination Matrices ==
Line 25: Line 46:
The first step of elimination involves the elimination of the cell at row 2 column 1 ''(henceforward cell '''(2,1)''')''. [[LinearAlgebra/Elimination|Gauss-Jordan elimination]] begins with identifying the pivot and transforming this:
Line 28: Line 49:
[1] 2 1    [1] 2 1
3 8 1 -> 0 2 -2
0 4 1 0 4  1
┌ ┐
[1] 2 1
3 8 1
0 4 1
Line 33: Line 56:
This can instead be formulated in matrices: ...into this:

{{{
┌ ┐
│ [1] 2 1│
│ 0 2 -2│
│ 0 4 1│
└ ┘
}}}

This transformation was ultimately a linear combination of rows: subtracting three of row 1 from row 2. This can be reformulated with matrices.
Line 55: Line 88:
This elimination matrix is called E,,2 1,, because is eliminated cell (2,1). An elimination matrix is always the identity matrix with the negative of the multiplier in the elimination position. This '''elimination matrix''' is called '''''E''',,2 1,,'' because it eliminated cell (2,1), the '''elimination cell'''. An elimination matrix is always the [[LinearAlgebra/SpecialMatrices#Identity_Matrix|identity matrix]] with the negated multiplier in the elimination cell.
Line 57: Line 90:
Completing the elimination process:

{{{
[1] 2 1 [1] 2 1
 0 [2] -2 -> 0 [2] -2
 0 4 1 0 0 5
}}}

This can be formulated as E,,3 2,, (E,,2 1,, A) = U. Note that this is equivalent to (E,,3 2,, E,,2 1,,) A = U.
The Gauss-Jordan approach continues with subtracting two of row 2 from row 3. Formulated as matrices instead:
Line 85: Line 110:
== Factorization == == Decomposition as LU ==
Line 87: Line 112:
It is preferable to refactor (E,,3 2,, E,,2 1,,) A = U into A = L U. L can be trivially solved to be E,,2 1,,^-1^ E,,3 2,,^-1^. Furthermore, because elimination matrices are modifications of the inverse matrix, their inverses are also trivial to solve. Note that these are simply the identity matrix with the (normal, non-negative) multiplier in the elimination position In this specific example, elimination can be written out as ''('''E''',,3 2,,'''E''',,2 1,,)'''A''' = '''U'''''.

A preferable form is '''''A''' = '''LU''''', where '''''L''''' takes on the role of all elimination matrices. '''''L''''' may be a [[LinearAlgebra/SpecialMatrices#Lower_Triangular_Matrices|lower triangular matrix]]. In this specific example, '''''L''' = '''E''',,2 1,,^-1^'''E''',,3 2,,^-1^''.

See below how '''''E''',,3 2,,'''E''',,2 1,,'' is messier than '''''E''',,2 1,,^-1^'''E''',,3 2,,^-1^'' despite needing to compute [[LinearAlgebra/MatrixInversion|inverses]]:
Line 90: Line 119:
                  ┌ ┐
            -1 │ 1 0 0│
  E E = │ 0 1 0│
   2,3 2,3 │ 0 0 1│
                  └ ┘
┌ ┐ ┌ ┐
│ 1 0 0│ -1 │ 1 0 0│
│ -3 1 0│ E = │ 0 1 0│
│ 0 0 1│ 2,3 │ 0 0 1│
└ ┘ └ ┘
                  ┌ ┐
            -1 │ 1 0 0│
          E = │ 3 1 0│
           2,3 │ 0 0 1│
                  └ ┘
julia> E3_2 * E2_1
3×3 Matrix{Int64}:
  1 0 0
 -3 1 0
  6 -2 1

julia> convert(Matrix{Int64}, inv(E2_1) * inv(E3_2))
3×3 Matrix{Int64}:
 1 0 0
 3 1 0
 0 2 1
Line 107: Line 132:
The fundamental reason for factorization is that the singular product of E,,3 2,, E,,2 1,, is messier than that of E,,2 1,,^-1^ E,,3 2,,^-1^

{{{

   E E = ?
    3,2 2,1
┌ ┐┌ ┐ ┌ ┐
│ 1 0 0││ 1 0 0│ │ 1 0 0│
│ 0 1 0││ -3 1 0│ = │ -3 1 0│
│ 0 -2 1││ 0 0 1│ │ 6 -2 1│
└ ┘└ ┘ └ ┘

   -1 -1
  E E = L
   2,1 3,2
┌ ┐┌ ┐ ┌ ┐
│ 1 0 0││ 1 0 0│ │ 1 0 0│
│ 3 1 0││ 0 1 0│ = │ 3 1 0│
│ 0 0 1││ 0 2 1│ │ 0 2 1│
└ ┘└ ┘ └ ┘
}}}

In particular, cell (3,1) is a 0 in L but is 6 in E,,3 2,, E,,2 1,,.

----



== Permutation ==

If a zero pivot is reached, rows must be exchanged. This can be expressed with matrices as P A = L U.

See [[LinearAlgebra/PermutationMatrices|Permutation Matrices]] for more information on these matrices and their properties.
Furthermore, in this expression, elimination matrices are iteratively appended instead of prepended.

LU Decomposition

LU decomposition is another approach to Gauss-Jordan elimination. It is generalized as A = LU.


Example

LU decomposition is a strategy for simplifying math with A.

julia> using LinearAlgebra

julia> A = [1 2 1; 3 8 1; 0 4 1]
3×3 Matrix{Int64}:
 1  2  1
 3  8  1
 0  4  1

julia> lu(A, NoPivot())
LU{Float64, Matrix{Float64}, Vector{Int64}}
L factor:
3×3 Matrix{Float64}:
 1.0  0.0  0.0
 3.0  1.0  0.0
 0.0  2.0  1.0
U factor:
3×3 Matrix{Float64}:
 1.0  2.0   1.0
 0.0  2.0  -2.0
 0.0  0.0   5.0

Note that NoPivot() must be specified because Julia wants to do a more efficient factorization.


Computation of Elimination Matrices

Gauss-Jordan elimination begins with identifying the pivot and transforming this:

┌        ┐
│ [1] 2 1│
│  3  8 1│
│  0  4 1│
└        ┘

...into this:

┌         ┐
│ [1] 2  1│
│  0  2 -2│
│  0  4  1│
└         ┘

This transformation was ultimately a linear combination of rows: subtracting three of row 1 from row 2. This can be reformulated with matrices.

julia> A = [1 2 1; 3 8 1; 0 4 1]
3×3 Matrix{Int64}:
 1  2  1
 3  8  1
 0  4  1

julia> E2_1 = [1 0 0; -3 1 0; 0 0 1]
3×3 Matrix{Int64}:
  1  0  0
 -3  1  0
  0  0  1

julia> E2_1 * A
3×3 Matrix{Int64}:
 1  2   1
 0  2  -2
 0  4   1

This elimination matrix is called E2 1 because it eliminated cell (2,1), the elimination cell. An elimination matrix is always the identity matrix with the negated multiplier in the elimination cell.

The Gauss-Jordan approach continues with subtracting two of row 2 from row 3. Formulated as matrices instead:

julia> E3_2 = [1 0 0; 0 1 0; 0 -2 1]
3×3 Matrix{Int64}:
 1   0  0
 0   1  0
 0  -2  1

julia> E3_2 * E2_1 * A
3×3 Matrix{Int64}:
 1  2   1
 0  2  -2
 0  0   5


Decomposition as LU

In this specific example, elimination can be written out as (E3 2E2 1)A = U.

A preferable form is A = LU, where L takes on the role of all elimination matrices. L may be a lower triangular matrix. In this specific example, L = E2 1-1E3 2-1.

See below how E3 2E2 1 is messier than E2 1-1E3 2-1 despite needing to compute inverses:

julia> E3_2 * E2_1
3×3 Matrix{Int64}:
  1   0  0
 -3   1  0
  6  -2  1

julia> convert(Matrix{Int64}, inv(E2_1) * inv(E3_2))
3×3 Matrix{Int64}:
 1  0  0
 3  1  0
 0  2  1

Furthermore, in this expression, elimination matrices are iteratively appended instead of prepended.


CategoryRicottone

LinearAlgebra/LUDecomposition (last edited 2024-01-29 03:13:41 by DominicRicottone)