MINRES
Использование
#
IterativeSolvers.minres!
— Function
minres!(x, A, b; kwargs...) -> x, [history]
Решает Ax = b для (косо-) эрмитовой матрицы A с помощью MINRES.
Аргументы
-
x
: начальное предположение, будет обновляться на месте; -
A
: линейный оператор; -
b
: правая часть.
Ключевые слова
-
initially_zero::Bool = false
: еслиtrue
предполагаетiszero(x)
так, чтобы одно произведение матрицы на вектор могло быть сохранено при вычислении начального вектора невязки; -
skew_hermitian::Bool = false
: еслиtrue
предполагает, чтоA
является кососимметричной или косоэрмитовой матрицей; -
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 = false
: отслеживание нормы невязки в каждой итерации; -
verbose::Bool = false
: вывод информации о сходимости во время итераций.
Возвращаемые значения
если log
имеет значение false
-
x
: приближенное решение.
если log
имеет значение true
-
x
: приближенное решение; -
history
: история сходимости.
Сведения о реализации
MINRES использует трехдиагональную структуру матрицы Хессенберга. Хотя MINRES математически эквивалентен GMRES, он может быть не эквивалентен в конечной точности. MINRES обновляет решение следующим образом:
где — это ортонормальный базис для подпространства Крылова, а — QR-разложение матрицы Хессенберга. Обратите внимание, что скобки расположены несколько иначе, чем при обновлении невязки в GMRES.
MINRES вычисляет и с помощью трехчленного рекуррентного соотношения, используя только последний столбец Поэтому мы предварительно выделяем только шесть векторов, сохраняя только две последние записи и часть последнего столбца матрицы Хессенберга.
Если является эрмитовым, матрица Хессенберга будет вещественной. Этот момент используется в текущей реализации. Если является косоэрмитовым, диагональ матрицы Хессенберга будет мнимой, и, следовательно, в этом случае мы используем арифметику комплексных чисел. |
MINRES можно использовать как итератор. |