colamd

Столбец аппроксимирует минимальную степень сочетания

Синтаксис

p = colamd(S)

Описание

p = colamd(S) возвращает столбец приблизительный вектор минимальной степени сочетания для разреженной матрицы S. Для несимметричной матрицы S, S(:,p) имеет тенденцию иметь более разреженные факторы LU, чем S. Область Факторизации Холесского S(:,p)' * S(:,p) также имеет тенденцию быть более разреженным, чем у S'*S.

knobs является двухэлементным вектором. Если S m-by- n, затем строки с более чем (knobs(1))*n записи игнорируются. Столбцы с более чем (knobs(2))*m записи удаляются до упорядоченного расположения и упорядочиваются последним в выход сочетания p. Если на knobs параметр отсутствует, тогда knobs(1) = knobs(2) = spparms('wh_frac').

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

stats(1)

Количество плотных или пустых строк, проигнорированных colamd

stats(2)

Количество плотных или пустых столбцов, проигнорированных colamd

stats(3)

Количество наборов мусора, выполненных во внутренней структуре данных, используемой colamd (примерно размера 2.2*nnz(S) + 4*m + 7*n целые числа)

stats(4)

0 если матрица действительна, или 1 если недопустимо

stats(5)

Самый правый индекс столбца, который не сортирован или содержит повторяющиеся записи или 0 если такой столбец не существует

stats(6)

Последний просматриваемый повторяющийся или неупорядоченный индекс строки в индексе столбца, заданном stats(5), или 0 если такой индекс строки не существует

stats(7)

Количество повторяющихся и неупорядоченных индексов строк

Хотя MATLAB® встроенные функции генерируют действительные разреженные матрицы, пользователь может создать недопустимую разреженную матрицу с помощью MATLAB C или Фортран APIs и передать ее в colamd. По этой причине, colamd проверяет, что S действителен:

  • Если индекс строки появляется в одном столбце два или более раз, colamd игнорирует повторяющиеся записи, продолжает обработку и предоставляет информацию о повторяющихся записях в stats(4:7).

  • Если индексы строк в столбце находятся вне порядка, colamd сортирует каждый столбец своей внутренней копии матрицы S (но не восстанавливает входную матрицу S), продолжает обработку и предоставляет информацию о неупорядоченных записях в stats(4:7).

  • Если S является недействительным любым другим способом, colamd невозможно продолжить. Оно печатает сообщение об ошибке и не возвращает выходных аргументов (p или stats) .

За упорядоченное расположение следует дерево удаления столбцов после поступорядоченного расположения.

Примеры

свернуть все

Набор разреженных матриц Harwell-Boeing и директория демонстраций MATLAB ® включают тестовую матрицу west0479. Это матрица порядка 479, полученная из модели из-за Вестерберга восьмистадийного химического дистилляционного столбца. Шпионский график показывает доказательства восьми этапов. The colamd упорядочивание скремблирует эту структуру.

load west0479
A = west0479;
p = colamd(A);

figure()
subplot(1,2,1), spy(A,4), title('A')
subplot(1,2,2), spy(A(:,p),4), title('A(:,p)')

Figure contains 2 axes. Axes 1 with title A contains an object of type line. Axes 2 with title A(:,p) contains an object of type line.

Сравнение шпионского графика LU-факторизации исходной матрицы с таковым у переупорядоченной матрицы показывает, что минимальная степень уменьшает время и требования к хранению лучше, чем коэффициент 2,8. Ненулевые счетчики 15918 и 5920 соответственно.

figure()
subplot(1,2,1), spy(lu(A),4), title('lu(A)')
subplot(1,2,2), spy(lu(A(:,p)),4), title('lu(A(:,p))')

Figure contains 2 axes. Axes 1 with title lu(A) contains an object of type line. Axes 2 with title lu(A(:,p)) contains an object of type line.

Ссылки

[1] Авторы кода для colamd Стефан И. Ларимор и Тимоти А. Дэвис. Алгоритм был разработан в сотрудничестве с John Gilbert, Xerox PARC, и Esmond Ng, Oak Ridge National Laboratory. Разреженные матрицы: https://people.engr.tamu.edu/davis/research.html

См. также

| | | |

Представлено до R2006a