Модуль 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