LSMR
Использование
#
IterativeSolvers.lsmr! — Function
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/.