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

LSMR

Минимальная невязка наименьших квадратов

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

lsmr(A, b; kwrags...) -> x, [history]

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

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

Минимизирует в евклидовой норме. Если существует несколько решений, возвращается решение минимальной нормы.

Метод основан на процессе бидиагонализации Голуба-Кахана. Он алгебраически эквивалентен применению MINRES к нормальным уравнениям , но имеет лучшие численные характеристики, особенно если плохо обусловлен.

Аргументы

  • x: начальное предположение, будет обновляться на месте;

  • A: линейный оператор;

  • b: правая часть.

Ключевые слова

  • λ::Number = 0: лямбда.

  • atol::Number = 1e-6, btol::Number = 1e-6: допуски остановок. Если оба имеют значение 1.0e-9 (допустим), итоговая норма невязки должна быть точной примерно до 9 цифр. (Конечный x обычно содержит меньше правильных цифр в зависимости от cond(A) и размера затухания.)

  • conlim::Number = 1e8: допуск остановки. lsmr завершается, если оценка cond(A) превышает ограничение количества подключений. Для совместимых систем Ax = b ограничение количества подключений может достигать 1.0e+12 (допустим). Для задач наименьших квадратов ограничение количества подключений должно быть меньше 1.0e+8. Максимальную точность можно получить, задав

  • atol = btol = conlim = нуль, но тогда количество итераций может оказаться чрезмерным.

  • maxiter::Int = maximum(size(A)): максимальное количество итераций.

  • log::Bool: отслеживание нормы невязки в каждой итерации;

  • verbose::Bool: вывод информации о сходимости во время итераций.

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

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

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

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

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

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

Ключи ConvergenceHistory

  • :atol => ::Real: допуск остановки atol.

  • :btol => ::Real: допуск остановки btol.

  • :ctol => ::Real: допуск остановки ctol.

  • :anorm => ::Real: anorm.

  • :rnorm => ::Real: rnorm.

  • :cnorm => ::Real: cnorm.

  • :resnom => ::Vector: норма невязки в каждой итерации.

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

По материалам публикации: http://web.stanford.edu/group/SOL/software/lsmr/.