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/.