public interface LU<N extends Number> extends LDU<N>
Decomposes [this] into [L] and [U] (with pivot order information in an int[]) where:
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.
Modifier and Type | Interface and Description |
---|---|
static interface |
LU.Factory<N extends Number> |
MatrixDecomposition.Determinant<N extends Number>, MatrixDecomposition.EconomySize<N extends Number>, MatrixDecomposition.Hermitian<N extends Number>, MatrixDecomposition.Ordered<N extends Number>, MatrixDecomposition.RankRevealing<N extends Number>, MatrixDecomposition.Solver<N extends Number>, MatrixDecomposition.Values<N extends Number>
Modifier and Type | Field and Description |
---|---|
static LU.Factory<BigDecimal> |
BIG |
static LU.Factory<ComplexNumber> |
COMPLEX |
static LU.Factory<Double> |
PRIMITIVE |
static LU.Factory<Quaternion> |
QUATERNION |
static LU.Factory<RationalNumber> |
RATIONAL |
TYPICAL
Modifier and Type | Method and Description |
---|---|
boolean |
computeWithoutPivoting(ElementsSupplier<N> matrix)
The normal
MatrixDecomposition.decompose(Access2D.Collectable) method must handle cases where pivoting is
required. |
static <N extends Number> |
equals(MatrixStore<N> matrix,
LU<N> decomposition,
NumberContext context) |
MatrixStore<N> |
getL() |
int[] |
getPivotOrder()
This can be used to create a [P] matrix..
|
int |
getRank()
The best (and most expensive) way to get the effective numerical rank is by calculating a
SingularValue decomposition and then find the number of nonnegligible singular values. |
MatrixStore<N> |
getU()
http://en.wikipedia.org/wiki/Row_echelon_form
This is the same as [D][U]. |
static <N extends Number> |
make(Access2D<N> typical) |
default MatrixStore<N> |
reconstruct() |
static <N extends Number> |
reconstruct(LU<N> decomposition) |
compute, getInverse, getInverse, getSolution, getSolution, isSolvable
preallocate, preallocate, solve, solve
invert, invert, preallocate, preallocate
getDeterminant
calculateDeterminant
isFullRank
decompose, isComputed, reset
static final LU.Factory<BigDecimal> BIG
static final LU.Factory<ComplexNumber> COMPLEX
static final LU.Factory<Double> PRIMITIVE
static final LU.Factory<Quaternion> QUATERNION
static final LU.Factory<RationalNumber> RATIONAL
static <N extends Number> boolean equals(MatrixStore<N> matrix, LU<N> decomposition, NumberContext context)
static <N extends Number> MatrixStore<N> reconstruct(LU<N> decomposition)
boolean computeWithoutPivoting(ElementsSupplier<N> matrix)
MatrixDecomposition.decompose(Access2D.Collectable)
method must handle cases where pivoting is
required. If you know that pivoting is not needed you may call this method instead - it may be faster.
Note that the algorithm implementation may still pivot. Pivoting is optional not forbidden (or
required).MatrixStore<N> getL()
int[] getPivotOrder()
int getRank()
MatrixDecomposition.RankRevealing
SingularValue
decomposition and then find the number of nonnegligible singular values.getRank
in interface MatrixDecomposition.RankRevealing<N extends Number>
MatrixStore<N> getU()
getPivotOrder()
,
getL()
default MatrixStore<N> reconstruct()
reconstruct
in interface MatrixDecomposition<N extends Number>
Copyright © 2018 Optimatika. All rights reserved.