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

MINRES

MINRES — это короткорекуррентная версия GMRES для приближенного решения для , где  — это симметричный, эрмитов, кососимметричный или косоэрмитов линейный оператор, а  — вектор правой части.

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

minres(A, b; kwargs...) -> x, [history]

То же, что и minres!, но выделяет вектор решений x, инициализированный нулями.

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