Differences between revisions 10 and 17 (spanning 7 versions)
Revision 10 as of 2023-07-09 04:29:32
Size: 3933
Comment:
Revision 17 as of 2026-01-07 01:54:41
Size: 3907
Comment: Details
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from LinearAlgebra/EliminationMatrices
Line 4: Line 3:
A fundamental step to solving systems of equation is [[LinearAlgebra/Elimination|elimination]]. A mathematical approach grounded in the same methods, but further generalized for automated compuation, is '''LU Decomposition'''. '''''LU'' decomposition''' is another approach to [[LinearAlgebra/Elimination|Gauss-Jordan elimination]]. It is generalized as '''''A''' = '''LU'''''.
Line 12: Line 11:
== Linear Algebra == == Description ==
Line 14: Line 13:
Consider the below system of equations: If a matrix '''''A''''' can be decomposed into [[LinearAlgebra/SpecialMatrices#Lower_Triangular_Matrices|lower]] and [[LinearAlgebra/SpecialMatrices#Upper_Triangular_Matrices|upper triangular matrices]] '''''L''''' and '''''U''''', the system can generally be solved by:
 1. Let ''y = '''U'''x''.
 2. Reformulate the original system as '''''L'''y = b''. This system's first equation simply states the value of ''y,,1,,''. The second equation gives ''y,,2,,'' in terms of ''y,,1,,'', which can be can be solved by substitution. And so on.
 3. Solve for ''y''.
 4. Reformulate the original problem as '''''U'''x = y''. As before, this system's last equation simply states the value of ''x,,n,,''. And so on.
 5. Solve for ''x''.

Furthermore, note that the [[LinearAlgebra/Invertibility|inverse]] matrix '''''A'''^-1^'' can be calculated as '''''U'''^-1^'''L'''^-1^''.
Line 17: Line 23:
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 22: Line 45:
The normal step of elimination proceeds like: Note that `NoPivot()` must be specified because [[Julia]] wants to do a more efficient factorization.

----



== Computation of Elimination Matrices ==

[[LinearAlgebra/Elimination|Gauss-Jordan elimination]] begins with identifying the pivot and transforming this:
Line 30: Line 61:
}}}

...into this:

{{{
Line 37: Line 73:
Critically, note that this elimination step involved subtracting 3 of row 1 from row 2.

This can instead be formulated with matrices:
This transformation was ultimately a linear combination of rows: subtracting three of row 1 from row 2. This can be reformulated with matrices.
Line 61: Line 95:
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. 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 63: Line 97:
Note that the next elimination step will involve subtracting 2 of row 2 from row 3, to the effect of eliminating cell (3,2). Therefore: The Gauss-Jordan approach continues with subtracting two of row 2 from row 3. Formulated as matrices instead:
Line 83: Line 117:
== Simplification with Factorization == == Decomposition as LU ==
Line 85: Line 119:
It is generally advantageous to refactor ''(E,,3 2,, E,,2 1,,) A = U'' into ''A = L U'', where ''L'' takes on the role of all elimination matrices. The notation ''L'' is a parallelism to the ''U'' notation for '''upper triangle matrices'''; ''L'' will be a '''lower triagle matrix'''. In this specific example, elimination can be written out as ''('''E''',,3 2,,'''E''',,2 1,,)'''A''' = '''U'''''.
Line 87: Line 121:
''L'' can be trivially solved to be ''E,,2 1,,^-1^ E,,3 2,,^-1^''. 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^''.
Line 89: Line 123:
As a demonstration of how ''E,,3 2,, E,,2 1,,'' is messier than ''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/Invertibility|inverses]]:
Line 92: Line 126:
   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│
└ ┘└ ┘ └ ┘
julia> E3_2 * E2_1
3×3 Matrix{Int64}:
  1 0 0
 -3 1 0
  6 -2 1
Line 100: Line 132:
   -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│
└ ┘└ ┘ └ ┘
julia> convert(Matrix{Int64}, inv(E2_1) * inv(E3_2))
3×3 Matrix{Int64}:
 1 0 0
 3 1 0
 0 2 1
Line 110: Line 139:
Furthermore, additional elimination matrices had to be prepended to the previous computation. With this factorization, they instead are appended.

This does introduce a step of calculating [[LinearAlgebra/MatrixInversion|inverses]] of the elimination matrices, but this is categorically simple to do.

{{{
            -1
  E E = I
   2,3 2,3
                  ┌ ┐
            -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│
                  └ ┘
}}}

----



== 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.


Description

If a matrix A can be decomposed into lower and upper triangular matrices L and U, the system can generally be solved by:

  1. Let y = Ux.

  2. Reformulate the original system as Ly = b. This system's first equation simply states the value of y1. The second equation gives y2 in terms of y1, which can be can be solved by substitution. And so on.

  3. Solve for y.

  4. Reformulate the original problem as Ux = y. As before, this system's last equation simply states the value of xn. And so on.

  5. Solve for x.

Furthermore, note that the inverse matrix A-1 can be calculated as U-1L-1.

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 2026-01-07 01:54:41 by DominicRicottone)