Разреженная перестановка столбца на основе ненулевого количества
j = colperm(S)
j = colperm(S)
генерирует вектор перестановки j
, таким образом, что столбцы S(:,j)
упорядочены согласно увеличивающемуся количеству ненулевых записей. Это иногда полезно как предварительное упорядоченное расположение для LU-факторизации; в этом случае используют lu(S(:,j))
.
Если S
симметричен, то j
=
, colperm(S)
генерирует перестановку j
так, чтобы обоим строки и столбцы S(j,j)
приказали согласно увеличивающемуся количеству ненулевых записей. Если S
положителен определенный, это иногда полезно как предварительное упорядоченное расположение для факторизации Холесского; в этом случае используют chol(S(j,j))
.
n
-by-n
матрица в виде стрелки
A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]
имеет полную первую строку и столбец. Его LU-факторизация, lu(A)
, почти абсолютно полна. Оператор
j = colperm(A)
возвращает j
=
[2:n
1]
. Таким образом, A(j,j)
отправляет полную строку и столбец в нижнюю часть и заднюю часть, и lu(A(j,j))
имеет ту же ненулевую структуру как сам A
.
С другой стороны, Маркерный пример шара,
B = bucky
имеет точно три ненулевых элемента в каждой строке и столбце, таким образом, j = colperm(B)
является единичной перестановкой и не является никакой справкой вообще для сокращения временной замены с последующими факторизациями.
Алгоритм включает вид на количествах ненулей в каждом столбце.