rapid_models.gp_diagnostics.utils.linalg

Module Contents

Functions

triang_solve(...)

Wrapper for lapack dtrtrs function

mulinv_solve(...)

Solve A*X = B where A = F*F^{T}

mulinv_solve_rev(...)

Reversed version of mulinv_solve

symmetrify(A, *], nptyping.Float], upper)

Create symmetric matrix from triangular matrix

chol_inv(→ nptyping.NDArray[nptyping.Shape[N, N], ...)

Return inverse of matrix A = L*L.T where L is lower triangular

traceprod(→ float)

Calculate trace(A*B) for two matrices A and B

try_chol(→ Union[nptyping.NDArray[nptyping.Shape[N, ...)

Try to compute the Cholesky decomposition of (K + noise_variance*I), and

rapid_models.gp_diagnostics.utils.linalg.triang_solve(A: nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float], B: nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[N, M], nptyping.Float], lower: bool = True, trans: bool = False) nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[N, M], nptyping.Float]

Wrapper for lapack dtrtrs function DTRTRS solves a triangular system of the form

A * X = B or A**T * X = B,

where A is a triangular matrix of order N, and B is an N-by-NRHS matrix. A check is made to verify that A is nonsingular. :param A: Matrix A(triangular) :param B: Matrix B :param lower: is matrix lower (true) or upper (false) :param trans: calculate A**T * X = B (true) or A * X = B (false)

Returns:

Solution to A * X = B or A**T * X = B

rapid_models.gp_diagnostics.utils.linalg.mulinv_solve(F: nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float], B: nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[N, M], nptyping.Float], lower: bool = True) nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[N, M], nptyping.Float]

Solve A*X = B where A = F*F^{T}

lower = True -> when F is LOWER triangular. This gives faster calculation

rapid_models.gp_diagnostics.utils.linalg.mulinv_solve_rev(F: nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float], B: nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[M, N], nptyping.Float], lower: bool = True) nptyping.NDArray[nptyping.Shape[N], nptyping.Float] | nptyping.NDArray[nptyping.Shape[M, N], nptyping.Float]

Reversed version of mulinv_solve

Solves X*A = B where A = F*F^{T}

lower = True -> when F is LOWER triangular. This gives faster calculation

rapid_models.gp_diagnostics.utils.linalg.symmetrify(A: nptyping.NDArray[nptyping.Shape[*, *], nptyping.Float], upper: bool = False)

Create symmetric matrix from triangular matrix

rapid_models.gp_diagnostics.utils.linalg.chol_inv(L: nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float]) nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float]

Return inverse of matrix A = L*L.T where L is lower triangular Uses LAPACK function dpotri

rapid_models.gp_diagnostics.utils.linalg.traceprod(A: nptyping.NDArray[nptyping.Shape[N, M], nptyping.Float], B: nptyping.NDArray[nptyping.Shape[M, N], nptyping.Float]) float

Calculate trace(A*B) for two matrices A and B

rapid_models.gp_diagnostics.utils.linalg.try_chol(K: nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float], noise_variance: float = 0.0, func_name: str = '') nptyping.NDArray[nptyping.Shape[N, N], nptyping.Float] | None

Try to compute the Cholesky decomposition of (K + noise_variance*I), and print an error message if it does not work