BiCGStab(l)
Использование
#
IterativeSolvers.bicgstabl — Function
bicgstabl(A, b, l; kwargs...) -> x, [history]
То же, что и bicgstabl!, но выделяет вектор решений x, инициализированный нулями.
#
IterativeSolvers.bicgstabl! — Function
bicgstabl!(x, A, b, l; kwargs...) -> x, [history]
Аргументы
-
A: линейный оператор; -
b: правая часть (вектор); -
l::Int = 2: количество шагов GMRES.
Ключевые слова
-
max_mv_products::Int = size(A, 2): максимальное количество произведений матрицы на вектор.
Для BiCGStab(l) это менее сомнительный термин, чем «количество итераций».
-
Pl = Identity(): левый предобуславливатель метода; -
abstol::Real = zero(real(eltype(b))),reltol::Real = sqrt(eps(real(eltype(b)))): абсолютный и относительный допуски для условия остановки|r_k| ≤ max(reltol * |r_0|, abstol), гдеr_k ≈ A * x_k - bявляется приближенной невязкой вk-й итерации.
|
Возвращаемые значения
если log имеет значение false
-
x: приближенное решение.
если log имеет значение true
-
x: приближенное решение; -
history: история сходимости.
Сведения о реализации
Метод основан на исходной статье [1], но в нем не реализованы более поздние усовершенствования. Нормальные уравнения, возникающие в результате шагов GMRES, решаются без ортогонализации. Поэтому метод должен быть надежным только для относительно небольших значений .
Коэффициенты r и u предварительно выделяются как матрицы размером , чтобы можно было использовать методы BLAS2. Кроме того, случайная теневая невязка предварительно выделяется в виде вектора. Таким образом, затраты на хранение составляют примерно векторов.
|
BiCGStabl(l) можно использовать как итератор. |