|
| | MoorePenrose (const Blackbox *A, size_t rank) |
| | Constructor from field and dense vector of field elements.
|
| |
| | MoorePenrose (const MoorePenrose &A) |
| | Copy constructor.
|
| |
| | ~MoorePenrose () |
| | Destructor.
|
| |
| template<class OutVector, class InVector> |
| OutVector & | apply (OutVector &y, const InVector &x) const |
| | Application of BlackBox matrix.
|
| |
| template<class OutVector, class InVector> |
| OutVector & | applyTranspose (OutVector &y, const InVector &x) const |
| | Application of BlackBox matrix transpose.
|
| |
| size_t | rowdim (void) const |
| | Retreive _row dimensions of BlackBox matrix.
|
| |
| size_t | coldim (void) const |
| | Retreive _column dimensions of BlackBox matrix.
|
| |
| const Field & | field () |
| |
template<class
Blackbox>
class LinBox::MoorePenrose< Blackbox >
Generalized inverse of a blackbox.
Efficiency concerns when many applications are used.
Given an arbitrary matrix in black box representation, this black box represents the Moore-Penrose inverse of the matrix.
This implementation assumes that A already has a nonsingular principal r x r minor. It is the caller's responsibility to ensure that that condition holds.
Given MoorePenrose M(A, r), and vector b, we have that M.apply(u, b) provides the least norm, least squares solution x = u to Ax = b.
TODO: remove the requirement that lpm is nonsingular. Specialize for dense matrices.