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® генерируют допустимые разреженные матрицы, пользователь может создать недопустимую разреженную матрицу с помощью API MATLAB или Фортрана C и передать ее colamd. Поэтому colamd проверяет, что S допустим:

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

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

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

Упорядоченное расположение сопровождается поступорядоченным расположением дерева устранения столбца.

Примеры

свернуть все

Набор Харуэлла-боинга разреженных матриц и директории демонстраций MATLAB® включает тестовую матрицу west0479. Это - матрица порядка 479, следующего из модели из-за Westerberg восьмиэтапного химического столбца дистилляции. График шпиона приводит доказательство восьми этапов. Упорядоченное расположение 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)')

Сравнение графика шпиона 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))')

Ссылки

[1] Авторами кода для colamd является Стефан Ай. Лэримор и Тимоти А. Дэвис. Алгоритм был разработан в сотрудничестве с Джоном Гильбертом, Xerox PARC, и Эсмондом Ыном, Окриджской национальной лабораторией. Исследование Алгоритмов Разреженной матрицы: http://faculty.cse.tamu.edu/davis/research.html

Смотрите также

| | | |

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

Была ли эта тема полезной?