Eigen::PartialPivLU
template<typename _MatrixType>
class Eigen::PartialPivLU< _MatrixType >
LU-разложение матрицы с частичным выбором опоры и связанные с ним функции.
- Параметры шаблона
-
_MatrixType тип матрицы, для которой вычисляется LU-разложение
Этот класс представляет LU-разложение квадратной обратимой матрицы с частичным выбором опоры: матрица A разлагается как A = PLU, где L — единичная нижняя треугольная матрица, U — верхняя треугольная матрица, а P — матрица перестановок.
Как правило, LU-разложение с частичным выбором опоры считается числово устойчивым только для квадратных обратимых матриц. Таким образом, LAPACK's dgesv и dgesvx требуют, чтобы матрица была квадратной и обратимой. Этот класс делает то же самое. Он будет утверждать, что матрица квадратная, но не будет (фактически, не может) проверять, что матрица обратима: вам необходимо проверить, что это разложение используется только для обратимых матриц.
Гарантированно безопасная альтернатива, работающая для всех матриц, — это LU-разложение с полным выбором опоры, предоставляемое классом FullPivLU.
Это не разложение LU, позволяющее определить ранг. Многие функции преднамеренно отсутствуют в этом классе, например, вычисление ранга. Если вам нужны эти функции, используйте класс FullPivLU.
Это LU-разложение подходит для обращения обратимых матриц. Оно используется в методе MatrixBase::inverse() в общем случае. С другой стороны, оно не подходит для определения, является ли данная матрица обратимой.
Данные LU-разложения можно получить напрямую с помощью методов matrixLU(), permutationP().
Этот класс поддерживает механизм неразрушающего разложения.
- См. также
- MatrixBase::partialPivLu(), MatrixBase::determinant(), MatrixBase::inverse(), MatrixBase::computeInverse(), класс FullPivLU
| Scalar | determinant () const |
| const Inverse< PartialPivLU > | inverse () const |
| const MatrixType & | matrixLU () const |
| PartialPivLU () | |
| Конструктор по умолчанию. Подробнее... |
|
| template<typename InputType > | |
| PartialPivLU (const EigenBase< InputType > &matrix) | |
| template<typename InputType > | |
| PartialPivLU (EigenBase< InputType > &matrix) | |
| PartialPivLU (Index size) | |
| Конструктор по умолчанию с предварительным выделением памяти. Подробнее... |
|
| const PermutationType & | permutationP () const |
| RealScalar | rcond () const |
| MatrixType | reconstructedMatrix () const |
| template<typename Rhs > | |
| const Solve< PartialPivLU, Rhs > | solve (const MatrixBase< Rhs > &b) const |
|
| |
| AdjointReturnType | adjoint () const |
| PartialPivLU< _MatrixType > & | derived () |
| const PartialPivLU< _MatrixType > & | derived () const |
| const Solve< PartialPivLU< _MatrixType >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
| SolverBase () | |
| ConstTransposeReturnType | transpose () const |
|
| |
| EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
| Derived & | derived () |
| const Derived & | derived () const |
| EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
|
| |
| typedef Eigen::Index | Index |
| Тип индексов интерфейса. Подробнее... |
|
PartialPivLU() [1/4]
| Eigen::PartialPivLU< MatrixType >::PartialPivLU |
Конструктор по умолчанию.
Конструктор по умолчанию полезен в тех случаях, когда пользователь намерен выполнять разложения через PartialPivLU::compute(const MatrixType&).
PartialPivLU() [2/4]
| explicit |
Конструктор по умолчанию с предварительным выделением памяти.
Аналогичен конструктору по умолчанию, но с предварительным выделением внутренней памяти в соответствии с указанным размером задачи.
- См. также
- PartialPivLU()
PartialPivLU() [3/4]
| explicit |
Конструктор.
- Параметры
-
матрица матрица, для которой необходимо вычислить LU-разложение.
- Предупреждение
- Матрица должна иметь полный ранг (например, если она квадратная, она должна быть обратимой). Если вам нужно работать с матрицами неполного ранга, используйте класс FullPivLU вместо этого.
PartialPivLU() [4/4]
| explicit |
Конструктор для непосредственного разложения.
- Параметры
-
матрица матрица, для которой необходимо вычислить LU-разложение.
- Предупреждение
- Матрица должна иметь полный ранг (например, если она квадратная, она должна быть обратимой). Если вам нужно работать с матрицами неполного ранга, используйте класс FullPivLU вместо этого.
determinant()
| PartialPivLU< MatrixType >::Scalar Eigen::PartialPivLU< MatrixType >::determinant |
- Возвращает
- детерминант матрицы, для которой *this является LU-разложением. Он имеет только линейную сложность (то есть O(n), где n — размер квадратной матрицы), так как LU-разложение уже вычислено.
- Примечание
- Для матриц фиксированного размера до 4 включительно, MatrixBase::determinant() предлагает оптимизированные пути.
- Предупреждение
- детерминант может быть очень большим или очень маленьким, поэтому для матриц достаточно большого размера существует риск переполнения/потери точности.
- См. также
- MatrixBase::determinant()
inverse()
| inline |
- Возвращает
- обратную матрицу, для которой *this является LU-разложением.
- Предупреждение
- Предполагается, что матрица, подлежащая разложению, является обратимой. Если необходимо проверить обратимость, используйте класс FullPivLU вместо этого.
- См. также
- MatrixBase::inverse(), LU::inverse()
matrixLU()
| inline |
- Возвращает
- матрицу LU-разложения: верхняя треугольная часть — U, единичная нижняя треугольная часть — L (по крайней мере, для квадратных матриц; в случае неквадратных матриц требуется особая обработка, см. документацию класса FullPivLU).
- См. также
- matrixL(), matrixU()
permutationP()
| inline |
- Возвращает
- матрицу перестановок P.
rcond()
| inline |
- Возвращает
- оценку обратной величины числа обусловленности матрицы, для которой
*thisявляется LU-разложением.
reconstructedMatrix()
| MatrixType Eigen::PartialPivLU< MatrixType >::reconstructedMatrix |
- Возвращает
- матрицу, представленную разложением, т.е. возвращает произведение: P^{-1} L U. Эта функция предназначена для отладки.
solve()
| inline |
Этот метод возвращает решение x для уравнения Ax=b, где A — матрица, для которой *this является LU-разложением.
- Параметры
-
b правая часть уравнения, которое требуется решить. Может быть вектором или матрицей, единственное требование для того, чтобы уравнение имело смысл, состоит в том, что b.rows()==A.rows(), где A — матрица, для которой *this является LU-разложением.
- Возвращает
- решение.
Пример:
MatrixXd A = MatrixXd::Random(3,3); MatrixXd B = MatrixXd::Random(3,2); cout << "Here is the invertible matrix A:" << endl << A << endl; cout << "Here is the matrix B:" << endl << B << endl; MatrixXd X = A.lu().solve(B); cout << "Here is the (unique) solution X to the equation AX=B:" << endl << X << endl; cout << "Relative error: " << (A*X-B).norm() / B.norm() << endl;
Вывод:
Here is the invertible matrix A: 0.68 0.597 -0.33 -0.211 0.823 0.536 0.566 -0.605 -0.444 Here is the matrix B: 0.108 -0.27 -0.0452 0.0268 0.258 0.904 Here is the (unique) solution X to the equation AX=B: 0.609 2.68 -0.231 -1.57 0.51 3.51 Relative error: 3.28e-16
Поскольку этот класс PartialPivLU по умолчанию предполагает, что матрица A обратима, решение теоретически существует и единственно независимо от b.
- См. также
- TriangularView::solve(), inverse(), computeInverse()
Документация для этого класса была сгенерирована из следующего файла:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1PartialPivLU.html