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

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) PseudoInverse 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) PseudoInverse of a matrix calculated in the least square sense. Parameters:
matrix
 The given matrix A. Returns:
 pseudoInverse The pseudoinverse 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 exponentth 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)
