Linear systems' resolution using Forward and Backward Substitution Algorithms, LU factorisation with and without partial pivoting, Gauss-Seidel and Jacobi Methods
- LU Factorization
- Forward and Backward Substitution
- Gauss-Seidel Method
- Jacobi Method
- Computational Advantages: Gauss-Seidel and Jacobi Methods vs. LU Decomposition
LU factorisation decomposes a square matrix
Partial pivoting involves rearranging rows of
Without partial pivoting, LU factorisation may still be performed, but it can be less stable, especially for ill-conditioned matrices. The absence of row swapping can lead to numerical errors and inaccuracies in the solution, particularly when dealing with large or poorly conditioned systems.
Once
-
Forward Substitution: Solves
for , where is the lower triangular matrix obtained from LU decomposition and is the right-hand side vector of the original linear system. -
Backward Substitution: Solves
for , where is the upper triangular matrix obtained from LU decomposition and is the solution obtained from forward substitution.
These substitution algorithms efficiently solve triangular systems without the need for costly matrix inversions, making them suitable for solving large linear systems.
The Gauss-Seidel method iteratively improves an initial guess to the solution of a linear system by updating each component of the solution vector using the most recent information available. Here's the iterative process:
- Decompose the coefficient matrix
into , , and . - Initialize the solution vector
with an initial approximation . - Iterate until convergence or maximum iterations:
a. Calculate the next iteration using the formula
. b. Check for convergence using the error estimate - Repeat steps 3 until convergence or maximum iterations are reached.
The Gauss-Seidel method typically converges faster than the Jacobi method because it uses updated values of the solution vector as soon as they become available.
The Jacobi method is a simpler variant of the Gauss-Seidel method, where each component of the solution vector is updated simultaneously based on the previous iteration's values. Here's the iterative process:
- Start with an initial guess
for the solution vector . - Decompose the coefficient matrix
into , , and . - Initialize the solution vector
with an initial approximation . - Iterate until convergence or maximum iterations:
a. Calculate the next iteration using the formula
b. Check for convergence using the error estimate Repeat the iteration until the solution converges within a specified tolerance or a maximum number of iterations is reached.
The Jacobi method is simpler to implement and parallelize compared to the Gauss-Seidel method, but it typically converges slower, especially for systems with strong coupling between variables.
When dealing with sparse matrices, where most of the elements are zero, Gauss-Seidel and Jacobi methods offer significant computational advantages over LU decomposition:
- Gauss-Seidel and Jacobi: These methods only require storing the non-zero elements and have low memory overhead. They are well-suited for sparse matrices, where storing all elements would be inefficient.
- LU Decomposition: Requires storing the entire matrix, leading to higher memory requirements, especially for large sparse matrices.
- Gauss-Seidel and Jacobi: Iterative methods that update only a subset of the solution vector at each iteration. They exploit the sparsity of the matrix, leading to fewer arithmetic operations per iteration.
- LU Decomposition: Involves decomposing the entire matrix into lower and upper triangular matrices, which can be computationally expensive, especially for large sparse matrices with many zero elements.
- Gauss-Seidel and Jacobi: Easily parallelizable, as each component of the solution vector can be updated independently. Suitable for distributed computing environments and multi-core processors.
- LU Decomposition: Parallelization is more challenging due to the sequential nature of the decomposition process and dependencies between elements of the resulting matrices.
For solving linear systems represented by sparse matrices, Gauss-Seidel and Jacobi methods offer superior memory and computational efficiency compared to LU decomposition. These iterative methods exploit the sparsity of the matrix, making them ideal choices for large-scale numerical simulations and computations.
Solve systems with upper triangular associated matrix through the backward substitution algorithm.
U
: Matrix associated with the system. NOTE:U
must be an upper triangular matrix.b
: Column vector of constant terms.
x
: Solution of the systemUx=b
.
Solve systems with lower triangular associated matrix through the forward substitution algorithm.
L
: Matrix associated with the system. NOTE:L
must be a lower triangular matrix.b
: Column vector of constant terms.
x
: Solution of the systemLx=b
.
Solve systems with lower triangular associated matrix and unit diagonal through the forward substitution algorithm. The algorithm is designed for solving systems using LU factorization.
L
: Matrix associated with the system. NOTE:L
must be a lower triangular matrix with unit diagonal.b
: Column vector of known terms.
x
: Solution of the systemLx=b
.
LU factorization of matrix A
: determine the matrix L
, lower triangular, where the multiplicative factors of the Gaussian elimination algorithm are allocated iteratively, and the matrix U
, upper triangular, matrix in which A
is transformed after the Gaussian elimination algorithm.
A
: Matrix to be factorized. NOTE: the matrix must NOT have null pivots, otherwise the algorithm will terminate.
A
: Factorized matrix. To save memory, matricesL
andU
are allocated directly in the input matrixA
.info
: Error indicator.
PLU factorization of matrix A
with partial pivoting. Determine: U
upper triangular matrix, result of the Gaussian elimination algorithm applied to A
; L
lower triangular matrix containing column by column the multiplicative factors of the Gaussian elimination algorithm; P
permutation matrix responsible for pivoting.
A
: Matrix to be factorized.
A
: Factorized matrix.p
: Permutation vector: indicates the order in which the rows of the identity matrix should be considered to obtainP
.info
: Indicates if the last pivot is null.
Solve the system of equations Ax=b using the Gauss-Seidel iterative method.
a
: Vector containing the non-zero elements of matrix A.r
: Vector containing the row indices of the non-zero elements of matrix A.c
: Vector containing the column indices of the non-zero elements of matrix A.b
: Column vector of constant terms.x0
: Initial approximation of the solution to the system Ax=b.Kmax
: Maximum number of iterations.tol
: Maximum tolerated error on the solution.
x
: Approximation of the solution to the system Ax=b.ierr
: Error indicator. If the algorithm finds a solution with an error less than the tolerance in fewer thanKmax
iterations,ierr=0
; otherwise, if the tolerance is not met or if theKmax
iterations are exceeded,ierr=-1
.
Solve the system of equations Ax=b using the Jacobi iterative method.
a
: Vector containing the non-zero elements of matrix A.r
: Vector containing the row indices of the non-zero elements of matrix A.c
: Vector containing the column indices of the non-zero elements of matrix A.b
: Column vector of constant terms.x0
: Initial approximation of the solution to the system Ax=b.Kmax
: Maximum number of iterations.tol
: Maximum tolerated error on the solution.
x
: Approximation of the solution to the system Ax=b.ierr
: Error indicator. If the algorithm finds a solution with an error less than the tolerance in fewer thanKmax
iterations,ierr=0
; otherwise, if the tolerance is not met or if theKmax
iterations are exceeded,ierr=-1
.
Solve the system of equations Ax=b using the Gauss-Seidel iterative method with error estimation.
a
: Vector containing the non-zero elements of matrix A.r
: Vector containing the row indices of the non-zero elements of matrix A.c
: Vector containing the column indices of the non-zero elements of matrix A.b
: Column vector of constant terms.x0
: Initial approximation of the solution to the system Ax=b.Kmax
: Maximum number of iterations.tol
: Maximum tolerated error on the solution.
x
: Approximation of the solution to the system Ax=b.ierr
: Error indicator. If the algorithm finds a solution with an error less than the tolerance in fewer thanKmax
iterations,ierr=0
; otherwise, if the tolerance is not met or if theKmax
iterations are exceeded,ierr=-1
.errore
: Vector containing the error estimates iterated over each iteration.iter
: Vector containing the completed iterations.raggio
: Maximum absolute eigenvalue of the iterative matrix.
Solve the system of equations Ax=b using the Jacobi iterative method with error estimation.
a
: Vector containing the non-zero elements of matrix A.r
: Vector containing the row indices of the non-zero elements of matrix A.c
: Vector containing the column indices of the non-zero elements of matrix A.b
: Column vector of constant terms.x0
: Initial approximation of the solution to the system Ax=b.Kmax
: Maximum number of iterations.tol
: Maximum tolerated error on the solution.
x
: Approximation of the solution to the system Ax=b.ierr
: Error indicator. If the algorithm finds a solution with an error less than the tolerance in fewer thanKmax
iterations,ierr=0
; otherwise, if the tolerance is not met or if theKmax
iterations are exceeded,ierr=-1
.errore
: Vector containing the error estimates iterated over each iteration.iter
: Vector containing the completed iterations.raggio
: Maximum absolute eigenvalue of the iterative matrix.