java.lang.Object
net.finmath.functions.LinearAlgebra
This class implements some methods from linear algebra (e.g. solution of a linear equation, PCA).
It is basically a functional wrapper using either the Apache commons math or JBlas
- Version:
- 1.6
- Author:
- Christian Fries
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic double[][]
diag(double[] vector)
Generates a diagonal matrix with the input vector on its diagonalstatic double[][]
exp(double[][] matrix)
Calculate the "matrix exponential" (expm).static org.apache.commons.math3.linear.RealMatrix
exp(org.apache.commons.math3.linear.RealMatrix matrix)
Calculate the "matrix exponential" (expm).static double[][]
factorReduction(double[][] correlationMatrix, int numberOfFactors)
Returns a correlation matrix which has rank < n and for which the first n factors agree with the factors of correlationMatrix.static double[][]
factorReductionUsingCommonsMath(double[][] correlationMatrix, int numberOfFactors)
Returns a correlation matrix which has rank < n and for which the first n factors agree with the factors of correlationMatrix.static double[][]
getCholeskyDecomposition(double[][] symmetricMatrix)
Create a Cholesky decomposition of a symmetric matrix.static double[][]
getFactorMatrix(double[][] correlationMatrix, int numberOfFactors)
Returns the matrix of the n Eigenvectors corresponding to the first n largest Eigenvalues of a correlation matrix.static double[][]
invert(double[][] matrix)
Returns the inverse of a given matrix.static double[][]
matrixExp(double[][] matrix)
Matrix exponential.static double[][]
matrixLog(double[][] matrix)
Matrix logarithm.static double[][]
matrixPow(double[][] matrix, double exponent)
Matrix power.static double[][]
multMatrices(double[][] left, double[][] right)
Multiplication of two matrices.static double[]
multMatrixVector(double[][] matrix, double[] vector)
Multiplication of matrix and vector.static double[][]
pow(double[][] matrix, double exponent)
Calculate the power of a matrix Note: The function currently requires jblas.static double[][]
pseudoInverse(double[][] matrix)
Pseudo-Inverse of a matrix calculated in the least square sense.static double[]
solveLinearEquation(double[][] matrixA, double[] b)
Find a solution of the linear equation A x = b where A is an m x n - matrix given as double[m][n] b is an m - vector given as double[m], x is an n - vector given as double[n],static double[]
solveLinearEquationLeastSquare(double[][] matrix, double[] vector)
Find a solution of the linear equation A x = b in the least square sense where A is an m x n - matrix given as double[m][n] b is an m - vector given as double[m], x is an n - vector given as double[n],static double[][]
solveLinearEquationLeastSquare(double[][] matrix, double[][] rhs)
Find a solution of the linear equation A X = B in the least square sense where A is an m x n - matrix given as double[m][n] B is an m x k - matrix given as double[m][k], X is an n x k - matrix given as double[n][k],static double[]
solveLinearEquationSVD(double[][] matrixA, double[] b)
Find a solution of the linear equation A x = b where A is an m x n - matrix given as double[m][n] b is an m - vector given as double[m], x is an n - vector given as double[n],static double[]
solveLinearEquationSymmetric(double[][] matrix, double[] vector)
Find a solution of the linear equation A x = b where A is an symmetric n x n - matrix given as double[n][n] b is an n - vector given as double[n], x is an n - vector given as double[n],static double[]
solveLinearEquationTikonov(double[][] matrixA, double[] b, double lambda)
Find a solution of the linear equation A x = b where A is an m x n - matrix given as double[m][n] b is an m - vector given as double[m], x is an n - vector given as double[n], using a standard Tikhonov regularization, i.e., we solve in the least square sense A* x = b* where A* = (A^T, lambda I)^T and b* = (b^T , 0)^T.static double[]
solveLinearEquationTikonov(double[][] matrixA, double[] b, double lambda0, double lambda1, double lambda2)
Find a solution of the linear equation A x = b where A is an m x n - matrix given as double[m][n] b is an m - vector given as double[m], x is an n - vector given as double[n], using a Tikhonov regularization, i.e., we solve in the least square sense A* x = b* where A* = (A^T, lambda0 I, lambda1 S, lambda2 C)^T and b* = (b^T , 0 , 0 , 0)^T.static double[][]
transpose(double[][] matrix)
Transpose a matrix
-
Constructor Details
-
LinearAlgebra
public LinearAlgebra()
-
-
Method Details
-
getCholeskyDecomposition
public static double[][] getCholeskyDecomposition(double[][] symmetricMatrix)Create a Cholesky decomposition of a symmetric matrix.- Parameters:
symmetricMatrix
- The input matrix.- Returns:
- A lower triangle matrix representing the CholeskyDecomposition.
-
solveLinearEquationTikonov
public static double[] solveLinearEquationTikonov(double[][] matrixA, double[] b, double lambda)Find a solution of the linear equation A x = b where- A is an m x n - matrix given as double[m][n]
- b is an m - vector given as double[m],
- x is an n - vector given as double[n],
- Parameters:
matrixA
- The matrix A (left hand side of the linear equation).b
- The vector (right hand of the linear equation).lambda
- The parameter lambda of the Tikhonov regularization. Lambda effectively measures which small numbers are considered zero.- Returns:
- A solution x to A x = b.
-
solveLinearEquationTikonov
public static double[] solveLinearEquationTikonov(double[][] matrixA, double[] b, double lambda0, double lambda1, double lambda2)Find a solution of the linear equation A x = b where- A is an m x n - matrix given as double[m][n]
- b is an m - vector given as double[m],
- x is an n - vector given as double[n],
- Parameters:
matrixA
- The matrix A (left hand side of the linear equation).b
- The vector (right hand of the linear equation).lambda0
- The parameter lambda0 of the Tikhonov regularization. Reduces the norm of the solution vector.lambda1
- The parameter lambda1 of the Tikhonov regularization. Reduces the slope of the solution vector.lambda2
- The parameter lambda1 of the Tikhonov regularization. Reduces the curvature of the solution vector.- Returns:
- The solution x of the equation A* x = b*
-
solveLinearEquation
public static double[] solveLinearEquation(double[][] matrixA, double[] b)Find a solution of the linear equation A x = b where- A is an m x n - matrix given as double[m][n]
- b is an m - vector given as double[m],
- x is an n - vector given as double[n],
- Parameters:
matrixA
- The matrix A (left hand side of the linear equation).b
- The vector (right hand of the linear equation).- Returns:
- A solution x to A x = b.
-
solveLinearEquationSVD
public static double[] solveLinearEquationSVD(double[][] matrixA, double[] b)Find a solution of the linear equation A x = b where- A is an m x n - matrix given as double[m][n]
- b is an m - vector given as double[m],
- x is an n - vector given as double[n],
- Parameters:
matrixA
- The matrix A (left hand side of the linear equation).b
- The vector (right hand of the linear equation).- Returns:
- A solution x to A x = b.
-
invert
public static double[][] invert(double[][] matrix)Returns the inverse of a given matrix.- Parameters:
matrix
- A matrix given as double[n][n].- Returns:
- The inverse of the given matrix.
-
solveLinearEquationSymmetric
public static double[] solveLinearEquationSymmetric(double[][] matrix, double[] vector)Find a solution of the linear equation A x = b where- A is an symmetric n x n - matrix given as double[n][n]
- b is an n - vector given as double[n],
- x is an n - vector given as double[n],
- Parameters:
matrix
- The matrix A (left hand side of the linear equation).vector
- The vector b (right hand of the linear equation).- Returns:
- A solution x to A x = b.
-
solveLinearEquationLeastSquare
public static double[] solveLinearEquationLeastSquare(double[][] matrix, double[] vector)Find a solution of the linear equation A x = b in the least square sense where- A is an m x n - matrix given as double[m][n]
- b is an m - vector given as double[m],
- x is an n - vector given as double[n],
- Parameters:
matrix
- The matrix A (left hand side of the linear equation).vector
- The vector b (right hand of the linear equation).- Returns:
- A solution x to A x = b.
-
solveLinearEquationLeastSquare
public static double[][] solveLinearEquationLeastSquare(double[][] matrix, double[][] rhs)Find a solution of the linear equation A X = B in the least square sense where- A is an m x n - matrix given as double[m][n]
- B is an m x k - matrix given as double[m][k],
- X is an n x k - matrix given as double[n][k],
- Parameters:
matrix
- The matrix A (left hand side of the linear equation).rhs
- The matrix B (right hand of the linear equation).- Returns:
- A solution X to A X = B.
-
getFactorMatrix
public static double[][] getFactorMatrix(double[][] correlationMatrix, int numberOfFactors)Returns the matrix of the n Eigenvectors corresponding to the first n largest Eigenvalues of a correlation matrix. These Eigenvectors can also be interpreted as "principal components" (i.e., the method implements the PCA).- Parameters:
correlationMatrix
- The given correlation matrix.numberOfFactors
- The requested number of factors (eigenvectors).- Returns:
- Matrix of n Eigenvectors (columns) (matrix is given as double[n][numberOfFactors], where n is the number of rows of the correlationMatrix.
-
factorReduction
public static double[][] factorReduction(double[][] correlationMatrix, int numberOfFactors)Returns a correlation matrix which has rank < n and for which the first n factors agree with the factors of correlationMatrix.- Parameters:
correlationMatrix
- The given correlation matrix.numberOfFactors
- The requested number of factors (Eigenvectors).- Returns:
- Factor reduced correlation matrix.
-
factorReductionUsingCommonsMath
public static double[][] factorReductionUsingCommonsMath(double[][] correlationMatrix, int numberOfFactors)Returns a correlation matrix which has rank < n and for which the first n factors agree with the factors of correlationMatrix.- Parameters:
correlationMatrix
- The given correlation matrix.numberOfFactors
- The requested number of factors (Eigenvectors).- Returns:
- Factor reduced correlation matrix.
-
exp
public static double[][] exp(double[][] matrix)Calculate the "matrix exponential" (expm). Note: The function currently requires jblas. If jblas is not availabe on your system, an exception will be thrown. A future version of this function may implement a fall back.- Parameters:
matrix
- The given matrix.- Returns:
- The exp(matrix).
-
pow
public static double[][] pow(double[][] matrix, double exponent)Calculate the power of a matrix Note: The function currently requires jblas. If jblas is not availabe on your system, an exception will be thrown. A future version of this function may implement a fall back.- Parameters:
matrix
- The given matrix.exponent
- The exponent- Returns:
- The pow(matrix, exponent).
-
exp
public static org.apache.commons.math3.linear.RealMatrix exp(org.apache.commons.math3.linear.RealMatrix matrix)Calculate the "matrix exponential" (expm). Note: The function currently requires jblas. If jblas is not availabe on your system, an exception will be thrown. A future version of this function may implement a fall back.- Parameters:
matrix
- The given matrix.- Returns:
- The exp(matrix).
-
transpose
public static double[][] transpose(double[][] matrix)Transpose a matrix- Parameters:
matrix
- The given matrix.- Returns:
- The transposed matrix.
-
pseudoInverse
public static double[][] pseudoInverse(double[][] matrix)Pseudo-Inverse of a matrix calculated in the least square sense.- Parameters:
matrix
- The given matrix A.- Returns:
- pseudoInverse The pseudo-inverse matrix P, such that A*P*A = A and P*A*P = P
-
diag
public static double[][] diag(double[] vector)Generates a diagonal matrix with the input vector on its diagonal- Parameters:
vector
- The given matrix A.- Returns:
- diagonalMatrix The matrix with the vectors entries on its diagonal
-
multMatrices
public static double[][] multMatrices(double[][] left, double[][] right)Multiplication of two matrices.- Parameters:
left
- The matrix A.right
- The matrix B- Returns:
- product The matrix product of A*B (if suitable)
-
multMatrixVector
public static double[] multMatrixVector(double[][] matrix, double[] vector)Multiplication of matrix and vector. The vector array is interpreted as column vector.- Parameters:
matrix
- The matrix A.vector
- The vector v- Returns:
- product The matrix product of A*v (if suitable)
-
matrixPow
public static double[][] matrixPow(double[][] matrix, double exponent)Matrix power. Tries to calculate a matrix A such that M^{exponent} = A.- Parameters:
matrix
- The matrix M of which we like to have the power.exponent
- The exponent.- Returns:
- The exponent-th power of M
-
matrixExp
public static double[][] matrixExp(double[][] matrix)Matrix exponential. Tries to calculate the matrix A such that exp(M) = A.- Parameters:
matrix
- The matrix M- Returns:
- exp(M)
-
matrixLog
public static double[][] matrixLog(double[][] matrix)Matrix logarithm. Tries to calculate the matrix A such that log(M) = A.- Parameters:
matrix
- The matrix M- Returns:
- log(M)
-