Full pivot LU decomposition for a matrix of intervals, based on Eigen decomposition. The decomposition is of the form \(\mathbf{M} = \mathbf{P}^{-1} [\mathbf{L}][\mathbf{U}] \mathbf{Q}^{-1}\) where \(\mathbf{P}\) and \(\mathbf{Q}\) are permutation matrices, and \([\mathbf{L}]\) and \([\mathbf{U}]\) are lower and upper interval matrices (i.e. \([\mathbf{L}]\)'s diagonal is 1).
More...
|
| | IntvFullPivLU (const Matrix &M) |
| | Constructor from Matrix of double.
|
| |
| | IntvFullPivLU (const IntervalMatrix &M) |
| | Constructor from Matrix of intervals. Eigen decomposition is done on M.mid().
|
| |
| BoolInterval | is_injective () const |
| | Check if the matrix is injective, i.e. its rank is equal to its number of rows.
|
| |
| BoolInterval | is_invertible () const |
| | Check if the initial matrix is invertible i.e. it is square and full rank.
|
| |
| BoolInterval | is_surjective () const |
| | Check if the matrix is surjective i.e. its rank is equal to its number of cols.
|
| |
| Interval | determinant () const |
| | Return an interval enclosing the determinant.
|
| |
| Interval | rank () const |
| | Return an interval enclosing the rank. Quite precise for square matrix (number of diagonal elements of \([\mathbf{U}]\) not containing 0). Less precise for non-square matrices, where each row/column outside the top-left part of \([\mathbf{U}]\) can change the rank. However, if no diagonal element contains 0, the return is unambiguous.
|
| |
| Interval | dimension_of_kernel () const |
| | Approximation of the size of the kernel space, based on the result of rank() (number of cols-rank()). As such, this is not the exact size of the kernel space as built by kernel().
|
| |
| IntervalMatrix | kernel () const |
| | Overapproximation of the kernel space as a matrix of column vectors. Any vector \(\mathbf{V}\) which is not a linear combination of the column vectors is guaranteed to be outside the kernel (i.e., \(\mathbf{M}\mathbf{V} \neq 0\)).
|
| |
| IntervalMatrix | cokernel () const |
| | Overapproximation of the left-null ("cokernel") space as a matrix of row vectors. Any vector \(\mathbf{V}\) which is not a linear combination of the row vectors is guaranteed to be outside the kernel (i.e., \(\mathbf{V}\mathbf{M} \neq 0\)).
|
| |
| template<typename Derived> |
| Derived | image (const Eigen::MatrixBase< Derived > &M) const |
| | "Underapproximation" of the column space of the matrix, i.e. return a set of independant columns of the original matrix which is possibly maximal. As for Eigen, you must provide the original matrix used for the decomposition.
|
| |
| template<typename Derived> |
| Derived | coimage (const Eigen::MatrixBase< Derived > &M) const |
| | "Underapproximation" of the row space of the matrix, i.e. return a set of independant rows of the original matrix which is possibly maximal. As for Eigen, you must provide the original matrix used for the decomposition.
|
| |
| IntervalMatrix | solve (const IntervalMatrix &rhs) const |
| | Equation solving \(\mathbf{M}\mathbf{X}=\mathbf{rhs}\).
|
| |
| void | solve (const IntervalMatrix &rhs, IntervalMatrix &B) const |
| | Equation solving \(\mathbf{M}\mathbf{X}=\mathbf{rhs}\) with bounding matrix \([\mathbf{B}]\) for the solution, i.e. contraction of the matrix on the solutions on \(\mathbf{M}\mathbf{X}\).
|
| |
| IntervalMatrix | reconstructed_matrix () const |
| | Rebuilding of the matrix, i.e. compute \(\mathbf{P}^{-1}[\mathbf{L}][\mathbf{U}]\mathbf{Q}^{-1}\).
|
| |
| double | max_pivot () const |
| | Maximum magnitude of the diagonal elements of \([\mathbf{U}]\).
|
| |
| const Eigen::FullPivLU< Matrix >::PermutationPType & | permutation_P () const |
| | The permutation \(\mathbf{P}\) in the decomposition \(\mathbf{P}^{-1}\mathbf{L}\mathbf{U}\mathbf{Q}^{-1}\).
|
| |
| const Eigen::FullPivLU< Matrix >::PermutationQType & | permutation_Q () const |
| | The permutation \(\mathbf{Q}\) in the decomposition \(\mathbf{P}^{-1}\mathbf{L}\mathbf{U}\mathbf{Q}^{-1}\).
|
| |
| const Eigen::FullPivLU< Matrix > & | eigen_LU () const |
| | The Eigen decomposition of M.mid()
|
| |
| const Row & | transformation () const |
| | Return the column-wise transformation done on M.mid() before the Eigen LU decomposition, as a Row.
|
| |
| const IntervalMatrix & | matrix_LU () const |
| | Returns the matrix storing \([\mathbf{L}]\) and \([\mathbf{U}]\) (i.e. \([\mathbf{L}]\) for strictly lower part, \([\mathbf{U}]\) for upper part).
|
| |
Full pivot LU decomposition for a matrix of intervals, based on Eigen decomposition. The decomposition is of the form \(\mathbf{M} = \mathbf{P}^{-1} [\mathbf{L}][\mathbf{U}] \mathbf{Q}^{-1}\) where \(\mathbf{P}\) and \(\mathbf{Q}\) are permutation matrices, and \([\mathbf{L}]\) and \([\mathbf{U}]\) are lower and upper interval matrices (i.e. \([\mathbf{L}]\)'s diagonal is 1).
Equation solving \(\mathbf{M}\mathbf{X}=\mathbf{rhs}\).
Precisely look for solutions where the only non-zero values are those on non-zero pivots. If the matrix is full-rank and surjective (cols >= rows), it gives an overapproximation of the solutions (for each possible values of rhs).
If the matrix is full-rank and injective (rows >= cols), it returns empty if no solution is possible, and a possible overapproximation of the solutions otherwise (but there may still be no solution).
If the matrix is not full-rank,
- empty means that no solution is possible with the initial precondition (non-zero values for non-zero pivots) if the goal is to prove the absence of solution, see
solve with a bounding box.
- non empty presents the possible solutions found.
- Parameters
-
| rhs | right-hand side of the equation |
- Returns
- a potential solution of the equation \(\mathbf{M}\mathbf{X}=\mathbf{rhs}\)
Equation solving \(\mathbf{M}\mathbf{X}=\mathbf{rhs}\) with bounding matrix \([\mathbf{B}]\) for the solution, i.e. contraction of the matrix on the solutions on \(\mathbf{M}\mathbf{X}\).
Especially useful where the matrix is not full-rank, where solve without bounding box may return empty even if solutions exist.
If the matrix is full-rank and surjective (cols >= rows), it gives an overapproximation of the solutions (for each possible values of rhs).
If the matrix is full-rank and injective (rows >= cols), it returns empty if no solution is possible, and a possible overapproximation of the solutions otherwise (but there may still be no solution).
If the matrix is not full-rank,
- empty means that no solution is possible inside the bounding matrix.
- non empty presents the possible solutions found.
- Parameters
-
| rhs | right-hand side of the equation |
| B | bounding-box of the left hand-side, contracted so that \(\mathbf{M}\mathbf{B}=\mathbf{rhs}\) |