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

LSQR

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

# IterativeSolvers.lsqrFunction

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

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

# IterativeSolvers.lsqr!Function

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

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

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

Аргументы

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

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

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

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

  • damp::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)): максимальное количество итераций.

  • verbose::Bool = false: вывод сведений о методе.

  • log::Bool = false: вывод дополнительного элемента типа ConvergenceHistory, содержащего дополнительную информацию о выполнении метода.

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

если 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/lsqr/.