IDR(s)
Метод индуцированного снижения размерности — это семейство простых и быстрых алгоритмов на основе подпространств Крылова для решения больших несимметричных линейных систем. Идея варианта IDR(s) состоит в том, чтобы генерировать невязки, которые находятся во вложенных подпространствах уменьшающейся размерности.
Использование
#
IterativeSolvers.idrs! — Function
idrs!(x, A, b; s = 8, kwargs...) -> x, [history]
Приближенно решает задачу    с помощью IDR(s), где s является размерностью теневого пространства.
Аргументы
- 
x: начальное предположение, будет обновляться на месте; - 
A: линейный оператор; - 
b: правая часть. 
Ключевые слова
- 
s::Integer = 8: размерность пространства; - 
Pl::precT: левый предобуславливатель; - 
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-й итерации; - 
maxiter::Int = size(A, 2): максимальное количество итераций; - 
log::Bool: отслеживание нормы невязки в каждой итерации; - 
verbose::Bool: вывод информации о сходимости во время итераций. 
Возвращаемые значения
если log имеет значение false
- 
x: приближенное решение. 
если log имеет значение true
- 
x: приближенное решение; - 
history: история сходимости. 
Сведения о реализации
Текущая реализация основана на версии MATLAB от Ван Гийзена (Van Gijzen) и Зонневельда (Sonneveld). Справочную информацию см. в документах [1], [2], на веб-странице о IDR(s) и в главе об IDR в документе [3].