public class TriangularSolver_FDRB
extends java.lang.Object
Contains triangular solvers for FMatrixRBlock
block aligned sub-matrices.
For a more detailed description of a similar algorithm see: Page 30 in "Fundamentals of Matrix Computations" 2nd Ed. by David S. Watkins or any description of a block triangular solver in any other computational linear algebra book.
Constructor and Description |
---|
TriangularSolver_FDRB() |
Modifier and Type | Method and Description |
---|---|
static void |
invert(int blockLength,
boolean upper,
org.ejml.data.FSubmatrixD1 T,
float[] temp)
Inverts an upper or lower triangular block submatrix.
|
static void |
invert(int blockLength,
boolean upper,
org.ejml.data.FSubmatrixD1 T,
org.ejml.data.FSubmatrixD1 T_inv,
float[] temp)
Inverts an upper or lower triangular block submatrix.
|
static void |
solve(int blockLength,
boolean upper,
org.ejml.data.FSubmatrixD1 T,
org.ejml.data.FSubmatrixD1 B,
boolean transT)
Performs an in-place solve operation on the provided block aligned sub-matrices.
B = T-1 B where T is a triangular matrix. |
static void |
solveBlock(int blockLength,
boolean upper,
org.ejml.data.FSubmatrixD1 T,
org.ejml.data.FSubmatrixD1 B,
boolean transT,
boolean transB)
Performs an in-place solve operation where T is contained in a single block.
B = T-1 B where T is a triangular matrix contained in an inner block. |
static void |
solveL(int blockLength,
org.ejml.data.FSubmatrixD1 L,
org.ejml.data.FSubmatrixD1 B,
boolean transL)
Solves lower triangular systems:
B = L-1 B |
static void |
solveR(int blockLength,
org.ejml.data.FSubmatrixD1 R,
org.ejml.data.FSubmatrixD1 B,
boolean transR)
Solves upper triangular systems:
B = R-1 B |
public static void invert(int blockLength, boolean upper, org.ejml.data.FSubmatrixD1 T, org.ejml.data.FSubmatrixD1 T_inv, float[] temp)
blockLength
- upper
- Is it upper or lower triangular.T
- Triangular matrix that is to be inverted. Must be block aligned. Not Modified.T_inv
- Where the inverse is stored. This can be the same as T. Modified.temp
- Work space variable that is size blockLength*blockLength.public static void invert(int blockLength, boolean upper, org.ejml.data.FSubmatrixD1 T, float[] temp)
blockLength
- upper
- Is it upper or lower triangular.T
- Triangular matrix that is to be inverted. Overwritten with solution. Modified.temp
- Work space variable that is size blockLength*blockLength.public static void solve(int blockLength, boolean upper, org.ejml.data.FSubmatrixD1 T, org.ejml.data.FSubmatrixD1 B, boolean transT)
Performs an in-place solve operation on the provided block aligned sub-matrices.
B = T-1 B
where T is a triangular matrix. T or B can be transposed. T is a square matrix of arbitrary
size and B has the same number of rows as T and an arbitrary number of columns.
blockLength
- Size of the inner blocks.upper
- If T is upper or lower triangular.T
- An upper or lower triangular matrix. Not modified.B
- A matrix whose height is the same as T's width. Solution is written here. Modified.public static void solveBlock(int blockLength, boolean upper, org.ejml.data.FSubmatrixD1 T, org.ejml.data.FSubmatrixD1 B, boolean transT, boolean transB)
Performs an in-place solve operation where T is contained in a single block.
B = T-1 B
where T is a triangular matrix contained in an inner block. T or B can be transposed. T must be a single complete inner block
and B is either a column block vector or row block vector.
blockLength
- Size of the inner blocks in the block matrix.upper
- If T is upper or lower triangular.T
- An upper or lower triangular matrix that is contained in an inner block. Not modified.B
- A block aligned row or column submatrix. Modified.transT
- If T is transposed or not.transB
- If B is transposed or not.public static void solveL(int blockLength, org.ejml.data.FSubmatrixD1 L, org.ejml.data.FSubmatrixD1 B, boolean transL)
Solves lower triangular systems:
B = L-1 B
Reverse or forward substitution is used depending upon L being transposed or not.
blockLength
- L
- Lower triangular with dimensions m by m. Not modified.B
- A matrix with dimensions m by n. Solution is written into here. Modified.transL
- Is the triangular matrix transposed?public static void solveR(int blockLength, org.ejml.data.FSubmatrixD1 R, org.ejml.data.FSubmatrixD1 B, boolean transR)
Solves upper triangular systems:
B = R-1 B
Only the first B.numRows rows in R will be processed. Lower triangular elements are ignored.
Reverse or forward substitution is used depending upon L being transposed or not.
blockLength
- R
- Upper triangular with dimensions m by m. Not modified.B
- A matrix with dimensions m by n. Solution is written into here. Modified.transR
- Is the triangular matrix transposed?