Interface LU<N extends Comparable<N>>

All Superinterfaces:
DeterminantTask<N>, InverterTask<N>, InvertibleFactor<N>, LDU<N>, MatrixDecomposition<N>, MatrixDecomposition.Determinant<N>, MatrixDecomposition.Ordered<N>, MatrixDecomposition.Pivoting<N>, MatrixDecomposition.RankRevealing<N>, MatrixDecomposition.Solver<N>, MatrixTask<N>, Provider2D, Provider2D.Determinant<N>, Provider2D.Inverse<Optional<MatrixStore<N>>>, Provider2D.Rank, Provider2D.Solution<Optional<MatrixStore<N>>>, SolverTask<N>, Structure1D, Structure2D
All Known Implementing Classes:
LUDecomposition, LUDecomposition.C128, LUDecomposition.H256, LUDecomposition.Q128, LUDecomposition.R064, LUDecomposition.R128, RawLU

public interface LU<N extends Comparable<N>> extends LDU<N>, MatrixDecomposition.Pivoting<N>
LU: [A] = [L][U]

Decomposes [this] into [L] and [U] (with pivot order information in an int[]) where:

  • [L] is a unit lower (left) triangular matrix. It has the same number of rows as [this], and ones on the diagonal.
  • [U] is an upper (right) triangular matrix. It has the same number of columns as [this].
  • [this] = [L][U] (with reordered rows according to the pivot order)

Note: The number of columns in [L] and the number of rows in [U] is not specified by this interface.

The LU decomposition always exists - the compute method should always succeed - even for non-square and/or singular matrices. The primary use of the LU decomposition is in the solution of systems of simultaneous linear equations. That will, however, only work for square non-singular matrices.