Симметричная аппроксимация минимальной степени сочетания
p = symamd(S)
p = symamd(S,knobs)
[p,stats] = symamd(...)
p = symamd(S) для симметричной положительно определенной матрицы S, возвращает вектор сочетания p таким образом S(p,p) имеет тенденцию иметь более рассеянный фактор Холецкого, чем S. Чтобы найти упорядоченное расположение для S, symamd создает матрицу M таким образом spones(M'*M) = spones (S), и затем вычисляет p = colamd(M). The symamd функция может также хорошо работать для симметричных неопределенных матриц.
S должны быть квадратными; ссылка только на строго нижнюю треугольную деталь.
p = symamd(S,knobs) где knobs является скаляром. Если S является n-by- n, строки и столбцы с более чем knobs*n записи удаляются до упорядоченного расположения и упорядочиваются последним в выход сочетания p. Если на knobs параметр отсутствует, тогда knobs = spparms('wh_frac').
[p,stats] = symamd(...) создает дополнительный вектор stats который обеспечивает данные о упорядоченном расположении и валидности матрицы S.
stats(1) | Количество плотных или пустых строк, проигнорированных |
stats(2) | Количество плотных или пустых столбцов, проигнорированных |
stats(3) | Количество наборов мусора, выполненных во внутренней структуре данных, используемой |
stats(4) |
|
stats(5) | Самый правый индекс столбца, который не сортирован или содержит повторяющиеся записи или |
stats(6) | Последний просматриваемый повторяющийся или неупорядоченный индекс строки в индексе столбца, заданном |
stats(7) | Количество повторяющихся и неупорядоченных индексов строк |
Хотя, MATLAB® встроенные функции генерируют действительные разреженные матрицы, пользователь может создать недопустимую разреженную матрицу с помощью MATLAB C или Фортран API и передать ее в symamd. По этой причине symamd проверяет, что S действителен:
Если индекс строки появляется в одном столбце два или более раз, symamd игнорирует повторяющиеся записи, продолжает обработку и предоставляет информацию о повторяющихся записях в stats(4:7).
Если индексы строк в столбце находятся вне порядка, symamd сортирует каждый столбец своей внутренней копии матрицы S (но не восстанавливает входную матрицу S), продолжает обработку и предоставляет информацию о неупорядоченных записях в stats(4:7).
Если S является недопустимым любым другим способом, symamd невозможно продолжить. Оно печатает сообщение об ошибке и не возвращает выходных аргументов (p или stats).
За упорядоченное расположение следует симметричное дерево исключения после поступорядоченного расположения.
Авторы кода для symamd Стефан И. Ларимор и Тимоти А. Дэвис (davis@cise.ufl.edu), Флоридский университет. Алгоритм был разработан в сотрудничестве с John Gilbert, Xerox PARC, и Esmond Ng, Oak Ridge National Laboratory. Разреженные матрицы алгоритмов во Флоридском университете: https://www.cise.ufl.edu/research/sparse/