Аппроксимируйте минимальное сочетание степени
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)
позволяет дополнительные опции для переупорядочения. opts
вход является структурой с этими двумя полями, показанными ниже. Только необходимо установить интересующие области:
плотный — неотрицательное скалярное значение, которое указывает на то, что считается плотным. Если 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')
.