Spec-Zone.ru › Eigen3

Модуль OrderingMethods

Этот модуль предназначен только для внутреннего использования.

Он определяет различные встроенные и внешние методы упорядочения для разреженных матриц. Они обычно используются для уменьшения количества элементов во время разложения разреженной матрицы (LLT, LU, QR). Точнее, на этапе предварительной обработки вычисляется матрица перестановок P с использованием этих методов упорядочения и применяется к столбцам матрицы. Например, при использовании разложения Холецкого разреженной матрицы ожидается, что количество ненулевых элементов в LLT(A*P) будет значительно меньше, чем в LLT(A).

Использование:

#include <Eigen/OrderingMethods>

Простым примером является использование в качестве параметра шаблона в классах разложения разреженных матриц:

SparseLU<MatrixType, COLAMDOrdering<int> > solver;
SparseQR<MatrixType, COLAMDOrdering<int> > solver;

Также возможно прямо вызвать конкретный метод упорядочения для собственных целей.

AMDOrdering<int> ordering;
PermutationMatrix<Dynamic, Dynamic, int> perm;
SparseMatrix<double> A; 
//Fill the matrix ...
 
ordering(A, perm); // Call AMD
Примечание
Некоторые из этих методов (например, AMD или METIS) требуют, чтобы структура разреженности входной матрицы была симметричной. Когда матрица структурно несимметрична, Eigen вычисляет внутренне структуру \(A^T*A\) перед вызовом метода. Если ваша матрица уже симметрична (по крайней мере, по структуре), вы можете избежать этого, вызвав метод с типом SelfAdjointView.
 // Call the ordering on the pattern of the lower triangular matrix A
ordering(A.selfadjointView<Lower>(), perm);
класс Eigen::AMDOrdering< StorageIndex >
класс Eigen::COLAMDOrdering< StorageIndex >
класс Eigen::NaturalOrdering< StorageIndex >

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

Spec-Zone.ru

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