Package dk.alexandra.fresco.stat
Interface AdvancedLinearAlgebra
- All Known Implementing Classes:
DefaultLinearAlgebra
public interface AdvancedLinearAlgebra
This computation directory contains variuous linear algebra functions. See also
FixedLinearAlgebra.-
Method Summary
Modifier and Type Method Description dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>backSubstitution(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Use back substitution to compute a vector x such that ax = b where a is an upper triangular square matrix.dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>forwardSubstitution(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Use forward substitution to compute a vector x such that ax = b where a is a lower triangular square matrix.dk.alexandra.fresco.framework.DRes<List<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>>gramSchmidt(List<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> vectors)Return a list of mutually orthogonal vectors spanning the same space as the given vectors.dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>invertLowerTriangularMatrix(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> l)Compute the inverse of a lower triangular matrix.dk.alexandra.fresco.framework.DRes<List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>iterativeEigenvalues(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, int iterations)Approximate the eigenvalues of a matrix using the QR-algorithm.dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>linearInverseProblem(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Solve a linear inverse problem, eg.dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>moorePenrosePseudoInverse(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a)Compute the Moore-Penrose pseudo-inverse of an m×n-matrix with full column rank.dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>normalizeVector(ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> u)Normalize a non-zero vector.dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>projection(ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> u)Compute the projection of a vector a onto another vector u.dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.util.Pair<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>,dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>>qrDecomposition(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a)Compute the QR-decomposition of an mxn-matrix a with m ≥ n and full column rank.static AdvancedLinearAlgebrausing(dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
-
Method Details
-
using
static AdvancedLinearAlgebra using(dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder) -
backSubstitution
dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> backSubstitution(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Use back substitution to compute a vector x such that ax = b where a is an upper triangular square matrix.- Parameters:
a- An upper triangular matrix.b- A vector.- Returns:
- A vector x such that ax = b.
-
forwardSubstitution
dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> forwardSubstitution(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Use forward substitution to compute a vector x such that ax = b where a is a lower triangular square matrix.- Parameters:
a- An lower triangular matrix.b- A vector.- Returns:
- A vector x such that ax = b.
-
gramSchmidt
dk.alexandra.fresco.framework.DRes<List<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>> gramSchmidt(List<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> vectors)Return a list of mutually orthogonal vectors spanning the same space as the given vectors.- Parameters:
vectors- A set of linearly independent vectors.- Returns:
- A set of mutually orthogonal vectors spanning the same space as the input.
-
invertLowerTriangularMatrix
dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> invertLowerTriangularMatrix(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> l)Compute the inverse of a lower triangular matrix.- Parameters:
l- A lower triangular matrix.- Returns:
- The inverse of l
-
linearInverseProblem
dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> linearInverseProblem(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b)Solve a linear inverse problem, eg. find an x such that ax = b where a is an m×n-matrix and b is an n-dimensional vector. If a system is overdetermined (m ≥ n), the computation will find the x minimising ||ax - b||.- Parameters:
a- An m×n-matrix.b- An n-dimensional vector.- Returns:
- A solution to the equation ax = b or a matrix minimising ax - b.
-
moorePenrosePseudoInverse
dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> moorePenrosePseudoInverse(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a)Compute the Moore-Penrose pseudo-inverse of an m×n-matrix with full column rank.- Parameters:
a- An m×n-matrix with full column rank.- Returns:
- The Moore-Penrose pseudo-inverse of a.
-
normalizeVector
dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> normalizeVector(ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> u)Normalize a non-zero vector.- Parameters:
u- A non-zero vector.- Returns:
- A vector with the same direction as u and magnitude 1.
-
projection
dk.alexandra.fresco.framework.DRes<ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> projection(ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> u)Compute the projection of a vector a onto another vector u.- Parameters:
a- A vector.u- A vector.- Returns:
- a projected onto u.
-
iterativeEigenvalues
dk.alexandra.fresco.framework.DRes<List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> iterativeEigenvalues(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, int iterations)Approximate the eigenvalues of a matrix using the QR-algorithm.- Parameters:
a- A square matrix.iterations- The number of iterations.- Returns:
- An approximation of the eigenvalues of a.
-
qrDecomposition
dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.util.Pair<dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>,dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>>> qrDecomposition(dk.alexandra.fresco.lib.common.collections.Matrix<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a)Compute the QR-decomposition of an mxn-matrix a with m ≥ n and full column rank. The QR-decomposition is a pair of matrices (Q,R) with A = QR and where Q is an mxn-matrix with orthonormal columns and R is an upper-triangular nxn-matrix.- Parameters:
a- An mxn-matrix- Returns:
- A pair of matrices (Q,R) with a = QR and where * Q is an mxn-matrix with orthonormal columns and R is an upper-triangular * nxn-matrix.
-