Home | History | Annotate | Download | only in LU

Lines Matching defs:lu

20   * \brief LU decomposition of a matrix with partial pivoting, and related features
22 * \param MatrixType the type of the matrix of which we are computing the LU decomposition
24 * This class represents a LU decomposition of a \b square \b invertible matrix, with partial pivoting: the matrix A
28 * Typically, partial pivoting LU decomposition is only considered numerically stable for square invertible
33 * The guaranteed safe alternative, working for all matrices, is the full pivoting LU decomposition, provided
36 * This is \b not a rank-revealing LU decomposition. Many features are intentionally absent from this class,
39 * This LU decomposition is suitable to invert invertible matrices. It is what MatrixBase::inverse() uses
43 * The data of the LU decomposition can be directly accessed through the methods matrixLU(), permutationP().
85 * \param matrix the matrix of which to compute the LU decomposition.
94 /** \returns the LU decomposition matrix: the upper-triangular part is U, the
115 * *this is the LU decomposition.
119 * b.rows()==A.rows(), where A is the matrix of which *this is the LU decomposition.
139 /** \returns the inverse of the matrix of which *this is the LU decomposition.
144 * \sa MatrixBase::inverse(), LU::inverse()
154 * *this is the LU decomposition. It has only linear complexity
156 * as the LU decomposition has already been computed.
229 /** \internal performs the LU decomposition in-place of the matrix \a lu
234 * of columns of the matrix \a lu, and an integer \a nb_transpositions
239 static Index unblocked_lu(MatrixType& lu, PivIndex* row_transpositions, PivIndex& nb_transpositions)
241 const Index rows = lu.rows();
242 const Index cols = lu.cols();
253 = lu.col(k).tail(rows-k).cwiseAbs().maxCoeff(&row_of_biggest_in_col);
262 lu.row(k).swap(lu.row(row_of_biggest_in_col));
266 // FIXME shall we introduce a safe quotient expression in cas 1/lu.coeff(k,k)
268 lu.col(k).tail(rrows) /= lu.coeff(k,k);
278 lu.bottomRightCorner(rrows,rcols).noalias() -= lu.col(k).tail(rrows) * lu.row(k).tail(rcols);
283 /** \internal performs the LU decomposition in-place of the matrix represented
289 * of columns of the matrix \a lu, and an integer \a nb_transpositions
301 MatrixType lu(lu1,0,0,rows,cols);
308 return unblocked_lu(lu, row_transpositions, nb_transpositions);
330 // lu = A_0 | A_1 | A_2 = A10 | A11 | A12
332 BlockType A_0(lu,0,0,rows,k);
333 BlockType A_2(lu,0,k+bs,rows,tsize);
334 BlockType A11(lu,k,k,bs,bs);
335 BlockType A12(lu,k,k+bs,bs,tsize);
336 BlockType A21(lu,k+bs,k,trows,bs);
337 BlockType A22(lu,k+bs,k+bs,trows,tsize);
340 // recursively call the blocked LU algorithm on [A11^T A21^T]^T
342 Index ret = blocked_lu(trows+bs, bs, &lu.coeffRef(k,k), luStride,
371 /** \internal performs the LU decomposition with partial pivoting in-place.
374 void partial_lu_inplace(MatrixType& lu, TranspositionType& row_transpositions, typename TranspositionType::Index& nb_transpositions)
376 eigen_assert(lu.cols() == row_transpositions.size());
381 ::blocked_lu(lu.rows(), lu.cols(), &lu.coeffRef(0,0), lu.outerStride(), &row_transpositions.coeffRef(0), nb_transpositions);
419 eigen_assert(m_isInitialized && "LU is not initialized.");
420 // LU
424 // P^{-1}(LU)
442 /* The decomposition PA = LU can be rewritten as A = P^{-1} L U.
468 * \return the partial-pivoting LU decomposition of \c *this.
484 * \return the partial-pivoting LU decomposition of \c *this.
490 MatrixBase<Derived>::lu() const