Spec-Zone.ru › Eigen3

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
Inheritance graph
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
- Общедоступные члены-функции, унаследованные от Eigen::SolverBase< PartialPivLU< _MatrixType > >
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::EigenBase< Derived >
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
- Общедоступные типы, унаследованные от Eigen::EigenBase< Derived >
typedef Eigen::Index Index
Тип индексов интерфейса. Подробнее...

PartialPivLU() [1/4]

template<typename MatrixType >
Eigen::PartialPivLU< MatrixType >::PartialPivLU

Конструктор по умолчанию.

Конструктор по умолчанию полезен в тех случаях, когда пользователь намерен выполнять разложения через PartialPivLU::compute(const MatrixType&).

PartialPivLU() [2/4]

шаблон<typename MatrixType >
Eigen::PartialPivLU< MatrixType >::PartialPivLU ( Index размер )
explicit

Конструктор по умолчанию с предварительным выделением памяти.

Аналогичен конструктору по умолчанию, но с предварительным выделением внутренней памяти в соответствии с указанным размером задачи.

См. также
PartialPivLU()

PartialPivLU() [3/4]

шаблон<typename MatrixType >
шаблон<typename InputType >
Eigen::PartialPivLU< MatrixType >::PartialPivLU ( const EigenBase< InputType > & матрица )
explicit

Конструктор.

Параметры
матрица матрица, для которой необходимо вычислить LU-разложение.
Предупреждение
Матрица должна иметь полный ранг (например, если она квадратная, она должна быть обратимой). Если вам нужно работать с матрицами неполного ранга, используйте класс FullPivLU вместо этого.

PartialPivLU() [4/4]

шаблон<typename MatrixType >
шаблон<typename InputType >
Eigen::PartialPivLU< MatrixType >::PartialPivLU ( EigenBase< InputType > & матрица )
explicit

Конструктор для непосредственного разложения.

Параметры
матрица матрица, для которой необходимо вычислить LU-разложение.
Предупреждение
Матрица должна иметь полный ранг (например, если она квадратная, она должна быть обратимой). Если вам нужно работать с матрицами неполного ранга, используйте класс FullPivLU вместо этого.

determinant()

шаблон<typename MatrixType >
PartialPivLU< MatrixType >::Scalar Eigen::PartialPivLU< MatrixType >::determinant
Возвращает
детерминант матрицы, для которой *this является LU-разложением. Он имеет только линейную сложность (то есть O(n), где n — размер квадратной матрицы), так как LU-разложение уже вычислено.
Примечание
Для матриц фиксированного размера до 4 включительно, MatrixBase::determinant() предлагает оптимизированные пути.
Предупреждение
детерминант может быть очень большим или очень маленьким, поэтому для матриц достаточно большого размера существует риск переполнения/потери точности.
См. также
MatrixBase::determinant()

inverse()

шаблон<typename _MatrixType >
const Inverse<PartialPivLU> Eigen::PartialPivLU< _MatrixType >::inverse ( ) const
inline
Возвращает
обратную матрицу, для которой *this является LU-разложением.
Предупреждение
Предполагается, что матрица, подлежащая разложению, является обратимой. Если необходимо проверить обратимость, используйте класс FullPivLU вместо этого.
См. также
MatrixBase::inverse(), LU::inverse()

matrixLU()

шаблон<typename _MatrixType >
const MatrixType& Eigen::PartialPivLU< _MatrixType >::matrixLU ( ) const
inline
Возвращает
матрицу LU-разложения: верхняя треугольная часть — U, единичная нижняя треугольная часть — L (по крайней мере, для квадратных матриц; в случае неквадратных матриц требуется особая обработка, см. документацию класса FullPivLU).
См. также
matrixL(), matrixU()

permutationP()

шаблон<typename _MatrixType >
const PermutationType& Eigen::PartialPivLU< _MatrixType >::permutationP ( ) const
inline
Возвращает
матрицу перестановок P.

rcond()

шаблон<typename _MatrixType >
RealScalar Eigen::PartialPivLU< _MatrixType >::rcond ( ) const
inline
Возвращает
оценку обратной величины числа обусловленности матрицы, для которой *this является LU-разложением.

reconstructedMatrix()

шаблон<typename MatrixType >
MatrixType Eigen::PartialPivLU< MatrixType >::reconstructedMatrix
Возвращает
матрицу, представленную разложением, т.е. возвращает произведение: P^{-1} L U. Эта функция предназначена для отладки.

solve()

шаблон<typename _MatrixType >
шаблон<typename Rhs >
const Solve<PartialPivLU, Rhs> Eigen::PartialPivLU< _MatrixType >::solve ( const MatrixBase< Rhs > & b ) const
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()

Документация для этого класса была сгенерирована из следующего файла:
  • PartialPivLU.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1PartialPivLU.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API