Приблизительное сочетание минимальной степени
P = amd(A)
P = amd(A,opts)
P = amd(A)
возвращает приблизительный вектор сочетания минимальной степени для разреженной матрицы C = A + A'
. Область Факторизации Холесского C(P,P)
или A(P,P)
имеет тенденцию быть рассеяннее, чем у C
или A
. amd
функция имеет тенденцию быть быстрее, чем symamd
, а также имеет тенденцию возвращать лучшие упорядоченные расположения, чем symamd
. Матричные A
должен быть квадратным. Если A
является полной матрицей, тогда amd(A)
эквивалентно amd(sparse(A))
.
P = amd(A,opts)
позволяет дополнительные опции для переупорядочивания. The opts
вход - структура с двумя полями, показанными ниже. Вам нужно задать только интересующие вас поля:
dense - неотрицательное скалярное значение, которое указывает на то, что считается плотным. Если A - n-на-n, то строки и столбцы с более чем max(16,(dense*sqrt(n)))
записи в A + A'
считаются «плотными» и игнорируются во время упорядоченного расположения. MATLAB® программа помещает эти строки и столбцы в последнюю очередь в выход сочетания. Значение по умолчанию для этого поля равно 10.0, если эта опция отсутствует.
агрессивный - скалярное значение, контролирующее агрессивное поглощение. Если это поле установлено на ненулевое значение, то выполняется агрессивное поглощение. Это значение по умолчанию, если эта опция отсутствует.
MATLAB выполняет поступорядоченное расположение дерева сборки, который обычно аналогичен поступорядоченному расположению дерева исключения. Он не всегда идентичен из-за применяемого апдейта приблизительной степени, и потому что «плотные» строки и столбцы не принимают участия в постпорядке. Он хорошо подходит для последующего chol
операция, однако, если вам требуется точное дерево исключения после поступорядоченного расположения, вы можете использовать следующий код:
P = amd(S); C = spones(S)+spones(S'); [ignore, Q] = etree(C(P,P)); P = P(Q);
Если S
уже симметричен, опускает вторую линию C = spones(S)+spones(S')
.