public class InnerTriangularSolver_FDRB
extends java.lang.Object
Contains triangular solvers for inner blocks of a FMatrixRBlock
.
for i=1:m for j=1:i-1 val = 0 for k=j:i-1 val = val - L(i,k) * X(k,j) end x(i,j) = val / L(i,i) end x(i,i) = 1 / L(i,i) end
Constructor and Description |
---|
InnerTriangularSolver_FDRB() |
Modifier and Type | Method and Description |
---|---|
static void |
invertLower(float[] L,
float[] L_inv,
int m,
int offsetL,
int offsetL_inv)
Inverts a square lower triangular matrix: L = L-1
|
static void |
invertLower(float[] L,
int m,
int offsetL)
Inverts a square lower triangular matrix: L = L-1
|
static void |
solveL(float[] L,
float[] b,
int m,
int n,
int strideL,
int offsetL,
int offsetB)
Solves for non-singular lower triangular matrices using forward substitution.
|
static void |
solveLTransB(float[] L,
float[] b,
int m,
int n,
int strideL,
int offsetL,
int offsetB)
Solves for non-singular lower triangular matrices using forward substitution.
|
static void |
solveTransL(float[] L,
float[] b,
int m,
int n,
int strideL,
int offsetL,
int offsetB)
Solves for non-singular transposed lower triangular matrices using backwards substitution:
B = L-TB where B is a (m by n) matrix, L is a lower triangular (m by m) matrix. |
static void |
solveTransU(float[] U,
float[] b,
int m,
int n,
int strideU,
int offsetU,
int offsetB)
Solves for non-singular upper triangular matrices using forward substitution.
|
static void |
solveU(float[] U,
float[] b,
int m,
int n,
int strideU,
int offsetU,
int offsetB)
Solves for non-singular upper triangular matrices using backwards substitution.
|
public static void invertLower(float[] L, float[] L_inv, int m, int offsetL, int offsetL_inv)
Inverts a square lower triangular matrix: L = L-1
L
- Lower triangular matrix being inverted. Not modified.L_inv
- Where the inverse is stored. Can be the same as L. Modified.m
- The number of rows and columns.offsetL
- which index does the L matrix start at.offsetL_inv
- which index does the L_inv matrix start at.public static void invertLower(float[] L, int m, int offsetL)
Inverts a square lower triangular matrix: L = L-1
L
- Lower triangular matrix being inverted. Over written with inverted matrix. Modified.m
- The number of rows and columns.offsetL
- which index does the L matrix start at.public static void solveL(float[] L, float[] b, int m, int n, int strideL, int offsetL, int offsetB)
Solves for non-singular lower triangular matrices using forward substitution.
B = L-1B
where B is a (m by n) matrix, L is a lower triangular (m by m) matrix.
L
- An m by m non-singular lower triangular matrix. Not modified.b
- An m by n matrix. Modified.m
- size of the L matrixn
- number of columns in the B matrix.strideL
- number of elements that need to be added to go to the next row in LoffsetL
- initial index in L where the matrix startsoffsetB
- initial index in B where the matrix startspublic static void solveTransL(float[] L, float[] b, int m, int n, int strideL, int offsetL, int offsetB)
Solves for non-singular transposed lower triangular matrices using backwards substitution:
B = L-TB
where B is a (m by n) matrix, L is a lower triangular (m by m) matrix.
L
- An m by m non-singular lower triangular matrix. Not modified.b
- An m by n matrix. Modified.m
- size of the L matrixn
- number of columns in the B matrix.strideL
- number of elements that need to be added to go to the next row in LoffsetL
- initial index in L where the matrix startsoffsetB
- initial index in B where the matrix startspublic static void solveLTransB(float[] L, float[] b, int m, int n, int strideL, int offsetL, int offsetB)
Solves for non-singular lower triangular matrices using forward substitution.
BT = L-1BT
where B is a (n by m) matrix, L is a lower triangular (m by m) matrix.
L
- An m by m non-singular lower triangular matrix. Not modified.b
- An n by m matrix. Modified.m
- size of the L matrixn
- number of columns in the B matrix.offsetL
- initial index in L where the matrix startsoffsetB
- initial index in B where the matrix startspublic static void solveU(float[] U, float[] b, int m, int n, int strideU, int offsetU, int offsetB)
Solves for non-singular upper triangular matrices using backwards substitution.
B = U-1B
where B (m by n) is a matrix, U is a (m by m ) upper triangular matrix.
U
- An m by m non-singular upper triangular matrix. Not modified.b
- An m by n matrix. Modified.m
- size of the L matrixn
- number of columns in the B matrix.offsetU
- initial index in L where the matrix startsoffsetB
- initial index in B where the matrix startspublic static void solveTransU(float[] U, float[] b, int m, int n, int strideU, int offsetU, int offsetB)
Solves for non-singular upper triangular matrices using forward substitution.
B = U-TB
where B (m by n) is a matrix, U is a (m by m ) upper triangular matrix.
U
- An m by m non-singular upper triangular matrix. Not modified.b
- An m by n matrix. Modified.m
- size of the L matrixn
- number of columns in the B matrix.offsetU
- initial index in L where the matrix startsoffsetB
- initial index in B where the matrix starts