Предобуславливание
Многие итерационные решатели могут предоставлять левый и правый предобуславливатели (Pl
и Pr
, соответственно), чтобы ускорить сходимость или предотвратить застой. Они преобразуют задачу в лучше обусловленную систему , где .
Эти предобуславливатели должны поддерживать следующие операции:
-
ldiv!(y, P, x)
вычисляетP \ x
в качествеy
; -
ldiv!(P, x)
вычисляетP \ x
в качествеx
; -
и
P \ x
.
Если решателю не переданы никакие предобуславливатели, метод по умолчанию будет использовать
Pl = Pr = IterativeSolvers.Identity()
Доступные предобуславливатели
Сам IterativeSolvers.jl не предоставляет никаких других предобуславливателей, кроме Identity()
, но рекомендует следующие внешние пакеты:
-
IncompleteLU.jl для неполных LU-разложений (с использованием допуска отбрасываний).
-
IncompleteSelectedInversion.jl для неполных LDLt-разложений.
-
AlgebraicMultigrid.jl для некоторых алгебраических многосеточных (AMG) предобуславливателей.
-
Preconditioners.jl, который заключает в оболочку множество предобуславливателей из других пакетов. Если вы новичок или хотите быстро попробовать разные варианты, вы можете начать именно с них.