# Class MatrixCalc

java.lang.Object
jebl.math.MatrixCalc

public final class MatrixCalc extends Object

Author:
  Stephen A. Smith

## Constructor Summary

Constructors
Constructor
Description
`MatrixCalc()`

## Method Summary

Modifier and Type
Method
Description
`static double[][]`
`choleskyFactor(double[][] inMatrix)`
Cholesky factorization (aka Cholesky Decomposition) This factorization can be used when square matrix is symmetric and positive definite.
`static double[]`
`choleskySolve(double[][] matrix, double[] vector)`
Cholesky solve Once the matrix is decomposed with the above routine, one can solve the triangular factor with backsubstitution.
`static double[][]`
`copyMatrix(double[][] matrix)`
copy one matrix into another
`static double[][]`
`deleteMatrixColumn(double[][] matrix, int column)`
takes a matrix and deletes a column
`static double[][]`
`deleteMatrixRow(double[][] matrix, int row)`
takes a matrix and deletes a row
`static double[]`
`getColumn(double[][] matrix, int column)`
takes a matrix and gets a column, then returns it as a vector
`static double`
`innerProduct(double[] vector1, double[] vector2, int x)`
innerProdect calculates inner product of two vectors from i down
`static double[]`
`lowerSolve(double[][] matrix, double[] vector, double diag)`
lower Solve forward elimination with (optional) default diagonal value
`static double[][]`
`reverseMatrix(double[][] matrix)`
reverse a matrix
`static double[]`
`reverseVector(double[] vector)`
reverse a vector
`static double`
`sumVector(double[] vector)`
sum a vector
`static double[]`
`upperSolve(double[][] matrix, double[] vector, double diag)`
upperSolve back substitution with optional over-riding diagonal

### Methods inherited from class Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### MatrixCalc

public MatrixCalc()

## Method Details

### choleskyFactor

public static double[][] choleskyFactor(double[][] inMatrix) throws MatrixCalcException.NotSquareMatrixException, MatrixCalcException.PositiveDefiniteException
Cholesky factorization (aka Cholesky Decomposition) This factorization can be used when square matrix is symmetric and positive definite. It is much faster than other methods where symmetry is ignored (LU Decomposition).

Parameters:
  `inMatrix` - square symmetric matrix to perform cholesky factorization
Returns:
  resulting matrix
Throws:
  `MatrixCalcException.NotSquareMatrixException`
  `MatrixCalcException.PositiveDefiniteException`

### choleskySolve

public static double[] choleskySolve(double[][] matrix, double[] vector) throws MatrixCalcException.NotSquareMatrixException
Cholesky solve Once the matrix is decomposed with the above routine, one can solve the triangular factor with backsubstitution. The forward (lowerSolve) and backward (upperSolve) are used for this.

Parameters:
  `matrix` - matrix to perform cholesky solve (probably used after factorization)
  `vector` - vector to solve matrix * vector = return
Returns:
  the resulting vector
Throws:
  `MatrixCalcException.NotSquareMatrixException`

### lowerSolve

public static double[] lowerSolve(double[][] matrix, double[] vector, double diag)
lower Solve forward elimination with (optional) default diagonal value

Parameters:
  `matrix` - the matrix to perform the forward elimination
  `vector` -
  `diag` - the default diagonal value
Returns:
  the resulting vector

### upperSolve

public static double[] upperSolve(double[][] matrix, double[] vector, double diag)
upperSolve back substitution with optional over-riding diagonal

Parameters:
  `matrix` - the matrix to perform the back substitution
  `vector` -
  `diag` - the default diagonal value
Returns:
  the resulting vector

### innerProduct

public static double innerProduct(double[] vector1, double[] vector2, int x) throws IndexOutOfBoundsException
innerProdect calculates inner product of two vectors from i down

Parameters:
  `vector1` - the first vector
  `vector2` - the second vector
  `x` - the starting int
Returns:
  the inner product of the two vectors starting from x
Throws:
  `IndexOutOfBoundsException`

### getColumn

public static double[] getColumn(double[][] matrix, int column)
takes a matrix and gets a column, then returns it as a vector

Parameters:
  `matrix` - the matrix from which the column will be returned
  `column` - the number of the column to return
Returns:
  the column as a vector from the input matrix

### deleteMatrixRow

public static double[][] deleteMatrixRow(double[][] matrix, int row)
takes a matrix and deletes a row

Parameters:
  `matrix` - the matrix from which to delete the row
  `row` - the number of the row to delete
Returns:
  the matrix with deleted row

### deleteMatrixColumn

public static double[][] deleteMatrixColumn(double[][] matrix, int column)
takes a matrix and deletes a column

Parameters:
  `matrix` - the matrix from which to delete the column
  `column` - the number of the column to delete
Returns:
  the matrix with deleted column

### reverseVector

public static double[] reverseVector(double[] vector)
reverse a vector

Parameters:
  `vector` - the vector to reverse
Returns:
  the reversed vector

### reverseMatrix

public static double[][] reverseMatrix(double[][] matrix)
reverse a matrix

Parameters:
  `matrix` - the matrix to reverse
Returns:
  the reversed matrix

### sumVector

public static double sumVector(double[] vector)
sum a vector

Parameters:
  `vector` - the input vector
Returns:
  the sum of the vector

### copyMatrix

public static double[][] copyMatrix(double[][] matrix)
copy one matrix into another

Parameters:
  `matrix` - the matrix to copy
Returns:
  the copied matrix