Документация Engee

BiCGStab(l)

BiCGStab(l) приближенно решает задачу для , где  — это общий линейный оператор, а  — вектор правой части. Метод сочетает BiCG с итерациями GMRES, что приводит к короткорекуррентной итерации. В результате память, как и вычислительные затраты на каждую итерацию, остаются неизменными.

Использование

# IterativeSolvers.bicgstablFunction

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-й итерации.

  1. Истинная норма невязки никогда не вычисляется в явном виде во время итераций. Вычисляется только приближенное значение. 2. Если задан левый предобуславливатель, условие остановки основывается на предобусловленной невязке.

Возвращаемые значения

если log имеет значение false

  • x: приближенное решение.

если log имеет значение true

  • x: приближенное решение;

  • history: история сходимости.

Сведения о реализации

Метод основан на исходной статье [1], но в нем не реализованы более поздние усовершенствования. Нормальные уравнения, возникающие в результате шагов GMRES, решаются без ортогонализации. Поэтому метод должен быть надежным только для относительно небольших значений .

Коэффициенты r и u предварительно выделяются как матрицы размером , чтобы можно было использовать методы BLAS2. Кроме того, случайная теневая невязка предварительно выделяется в виде вектора. Таким образом, затраты на хранение составляют примерно векторов.

BiCGStabl(l) можно использовать как итератор.


1. Слейпен (Sleijpen), Жерар Л. Г. (Gerard LG) и Дидерик Р. Фоккема (Diederik R. Fokkema). BiCGstab(l) for linear equations involving unsymmetric matrices with complex spectrum. Electronic Transactions on Numerical Analysis 1.11 (1993): 2000.