Предобуславливание
Многие итерационные решатели могут предоставлять левый и правый предобуславливатели (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, который заключает в оболочку множество предобуславливателей из других пакетов. Если вы новичок или хотите быстро попробовать разные варианты, вы можете начать именно с них.