Home | History | Annotate | Download | only in LU

Lines Matching refs:lu

46   * \brief LU decomposition of a matrix with partial pivoting, and related features
48 * \tparam _MatrixType the type of the matrix of which we are computing the LU decomposition
50 * This class represents a LU decomposition of a \b square \b invertible matrix, with partial pivoting: the matrix A
54 * Typically, partial pivoting LU decomposition is only considered numerically stable for square invertible
59 * The guaranteed safe alternative, working for all matrices, is the full pivoting LU decomposition, provided
62 * This is \b not a rank-revealing LU decomposition. Many features are intentionally absent from this class,
65 * This LU decomposition is suitable to invert invertible matrices. It is what MatrixBase::inverse() uses
69 * The data of the LU decomposition can be directly accessed through the methods matrixLU(), permutationP().
110 * \param matrix the matrix of which to compute the LU decomposition.
120 * \param matrix the matrix of which to compute the LU decomposition.
135 /** \returns the LU decomposition matrix: the upper-triangular part is U, the
156 * *this is the LU decomposition.
160 * b.rows()==A.rows(), where A is the matrix of which *this is the LU decomposition.
182 the LU decomposition.
190 /** \returns the inverse of the matrix of which *this is the LU decomposition.
195 * \sa MatrixBase::inverse(), LU::inverse()
204 * *this is the LU decomposition. It has only linear complexity
206 * as the LU decomposition has already been computed.
227 /* The decomposition PA = LU can be rewritten as A = P^{-1} L U.
249 /* The decomposition PA = LU can be rewritten as A = P^{-1} L U.
355 /** \internal performs the LU decomposition in-place of the matrix \a lu
360 * of columns of the matrix \a lu, and an integer \a nb_transpositions
365 static Index unblocked_lu(MatrixType& lu, PivIndex* row_transpositions, PivIndex& nb_transpositions)
369 const Index rows = lu.rows();
370 const Index cols = lu.cols();
381 = lu.col(k).tail(rows-k).unaryExpr(Scoring()).maxCoeff(&row_of_biggest_in_col);
390 lu.row(k).swap(lu.row(row_of_biggest_in_col));
394 // FIXME shall we introduce a safe quotient expression in cas 1/lu.coeff(k,k)
396 lu.col(k).tail(rrows) /= lu.coeff(k,k);
406 lu.bottomRightCorner(rrows,rcols).noalias() -= lu.col(k).tail(rrows) * lu.row(k).tail(rcols);
411 /** \internal performs the LU decomposition in-place of the matrix represented
417 * of columns of the matrix \a lu, and an integer \a nb_transpositions
429 MatrixType lu(lu1,0,0,rows,cols);
436 return unblocked_lu(lu, row_transpositions, nb_transpositions);
458 // lu = A_0 | A_1 | A_2 = A10 | A11 | A12
460 BlockType A_0(lu,0,0,rows,k);
461 BlockType A_2(lu,0,k+bs,rows,tsize);
462 BlockType A11(lu,k,k,bs,bs);
463 BlockType A12(lu,k,k+bs,bs,tsize);
464 BlockType A21(lu,k+bs,k,trows,bs);
465 BlockType A22(lu,k+bs,k+bs,trows,tsize);
468 // recursively call the blocked LU algorithm on [A11^T A21^T]^T
470 Index ret = blocked_lu(trows+bs, bs, &lu.coeffRef(k,k), luStride,
499 /** \internal performs the LU decomposition with partial pivoting in-place.
502 void partial_lu_inplace(MatrixType& lu, TranspositionType& row_transpositions, typename TranspositionType::StorageIndex& nb_transpositions)
504 eigen_assert(lu.cols() == row_transpositions.size());
509 ::blocked_lu(lu.rows(), lu.cols(), &lu.coeffRef(0,0), lu.outerStride(), &row_transpositions.coeffRef(0), nb_transpositions);
551 eigen_assert(m_isInitialized && "LU is not initialized.");
552 // LU
556 // P^{-1}(LU)
583 * \return the partial-pivoting LU decomposition of \c *this.
598 * \return the partial-pivoting LU decomposition of \c *this.
604 MatrixBase<Derived>::lu() const