sim.util.mantissa.linalg
Class LowerTriangularMatrix

java.lang.Object
  extended by sim.util.mantissa.linalg.Matrix
      extended by sim.util.mantissa.linalg.SquareMatrix
          extended by sim.util.mantissa.linalg.LowerTriangularMatrix
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

public class LowerTriangularMatrix
extends SquareMatrix
implements java.io.Serializable, java.lang.Cloneable

This class implements lower triangular matrices of linear algebra.

This file is from the "Mantissa" Java software package found at http://www.spaceroots.org/software/mantissa/index.html. The license is included at the end of the source file.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class sim.util.mantissa.linalg.Matrix
columns, data, rows
 
Constructor Summary
LowerTriangularMatrix(int order)
          Simple constructor.
LowerTriangularMatrix(int order, double[] data)
          Simple constructor.
LowerTriangularMatrix(LowerTriangularMatrix l)
          Copy constructor.
 
Method Summary
 Matrix duplicate()
          Polymorphic copy operator.
 double getDeterminant(double epsilon)
          Get the determinant of the matrix.
 sim.util.mantissa.linalg.NonNullRange getRangeForColumn(int j)
          Set a range to the non null part covered by a column.
 sim.util.mantissa.linalg.NonNullRange getRangeForRow(int i)
          Set a range to the non null part covered by a row.
 void selfAdd(LowerTriangularMatrix l)
          Add a matrix to the instance.
 void selfSub(LowerTriangularMatrix l)
          Substract a matrix from the instance.
 void setElement(int i, int j, double value)
          Set a matrix element.
 Matrix solve(Matrix b, double epsilon)
          Solve the A.X = B equation.
 
Methods inherited from class sim.util.mantissa.linalg.SquareMatrix
getInverse, solve
 
Methods inherited from class sim.util.mantissa.linalg.Matrix
add, getColumns, getElement, getRows, getTranspose, mul, mul, selfMul, sub, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LowerTriangularMatrix

public LowerTriangularMatrix(int order)
Simple constructor. This constructor builds a lower triangular matrix of specified order, all elements being zeros.

Parameters:
order - order of the matrix

LowerTriangularMatrix

public LowerTriangularMatrix(int order,
                             double[] data)
Simple constructor. Build a matrix with specified elements.

Parameters:
order - order of the matrix
data - table of the matrix elements (stored row after row)

LowerTriangularMatrix

public LowerTriangularMatrix(LowerTriangularMatrix l)
Copy constructor.

Parameters:
l - lower triangular matrix to copy
Method Detail

duplicate

public Matrix duplicate()
Description copied from class: Matrix
Polymorphic copy operator. This method build a new object of the same type of the instance. It is somewhat similar to the Object.clone() method, except that it has public access, it doesn't throw any specific exception and it returns a Matrix.

Specified by:
duplicate in class Matrix
See Also:
Object.clone()

setElement

public void setElement(int i,
                       int j,
                       double value)
Description copied from class: Matrix
Set a matrix element.

Overrides:
setElement in class Matrix
Parameters:
i - row index, from 0 to rows - 1
j - column index, from 0 to cols - 1
value - value of the element
See Also:
Matrix.getElement(int, int)

selfAdd

public void selfAdd(LowerTriangularMatrix l)
Add a matrix to the instance. This method adds a matrix to the instance. It does modify the instance.

Parameters:
l - lower triangular matrix to add
Throws:
java.lang.IllegalArgumentException - if there is a dimension mismatch

selfSub

public void selfSub(LowerTriangularMatrix l)
Substract a matrix from the instance. This method substract a matrix from the instance. It does modify the instance.

Parameters:
l - lower triangular matrix to substract
Throws:
java.lang.IllegalArgumentException - if there is a dimension mismatch

getDeterminant

public double getDeterminant(double epsilon)
Description copied from class: SquareMatrix
Get the determinant of the matrix.

Specified by:
getDeterminant in class SquareMatrix
Parameters:
epsilon - threshold on matrix elements below which the matrix is considered singular (this is used by the derived classes that use a factorization to compute the determinant)
Returns:
the determinant of the matrix

solve

public Matrix solve(Matrix b,
                    double epsilon)
             throws SingularMatrixException
Description copied from class: SquareMatrix
Solve the A.X = B equation.

Specified by:
solve in class SquareMatrix
Parameters:
b - second term of the equation
epsilon - threshold on matrix elements below which the matrix is considered singular
Returns:
a matrix X such that A.X = B, where A is the instance
Throws:
SingularMatrixException - if the matrix is singular

getRangeForRow

public sim.util.mantissa.linalg.NonNullRange getRangeForRow(int i)
Description copied from class: Matrix
Set a range to the non null part covered by a row.

Specified by:
getRangeForRow in class Matrix
Parameters:
i - index of the row
Returns:
range of non nul elements in the specified row
See Also:
Matrix.getRangeForColumn(int)

getRangeForColumn

public sim.util.mantissa.linalg.NonNullRange getRangeForColumn(int j)
Description copied from class: Matrix
Set a range to the non null part covered by a column.

Specified by:
getRangeForColumn in class Matrix
Parameters:
j - index of the column
Returns:
range of non nul elements in the specified column
See Also:
Matrix.getRangeForRow(int)