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) можно использовать как итератор. |