Interface QR<N extends Comparable<N>>

All Superinterfaces:
DeterminantTask<N>, InverterTask<N>, InvertibleFactor<N>, MatrixDecomposition<N>, MatrixDecomposition.Determinant<N>, MatrixDecomposition.EconomySize<N>, MatrixDecomposition.Ordered<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:
QRDecomposition, QRDecomposition.C128, QRDecomposition.H256, QRDecomposition.Q128, QRDecomposition.R064, QRDecomposition.R128, RawQR

QR: [A] = [Q][R] Decomposes [this] into [Q] and [R] where:
  • [Q] is an orthogonal matrix (orthonormal columns). It has the same number of rows as [this].
  • [R] is a right (upper) triangular matrix. It has the same number of columns as [this].
  • [this] = [Q][R]
Note: Either Q or R will be square. The interface does not specify which.

You create instances of (some subclass of) this class by calling one of the static factory methods: Q128, C128,

invalid reference
#PRIMITIVE
or
invalid reference
#make(Access2D)

The QR decompostion always exists, even if the matrix does not have full column rank, so the compute method will never fail. The primary use of the QR decomposition is in the least squares solution of overdetermined systems of simultaneous linear equations. This will fail if the matrix does not have full column rank. The rank must be equal to the number of columns.