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