#
IterativeSolvers.svdl
— Function
svdl(A) -> Σ, L, [history]
Вычисляет некоторые сингулярные значения (и при необходимости векторы), используя бидиагонализацию Голуба-Кахана-Ланцоша с массовым перезапуском .
Если log
имеет значение true
, метод выведет кортеж X, L, ch
. Где ch
является объектом ConvergenceHistory
. В противном случае будет возвращены только X, L
.
-
nsv::Int = 6
: количество запрашиваемых сингулярных значений;
-
v0 = random unit vector
: вектор начальных предположений в области A
. Длина q
должна совпадать с количеством столбцов в A
.
-
k::Int = 2nsv
: максимальное количество векторов Ланцоша, которые нужно вычислить перед перезапуском;
-
j::Int = nsv
: количество векторов, которые необходимо сохранить в конце перезапуска. Не рекомендуется использовать j < nsv.
-
maxiter::Int = minimum(size(A))
: максимальное количество выполняемых итераций;
-
verbose::Bool = false
: вывод информации при каждой итерации;
-
tol::Real = √eps()
: максимальная абсолютная ошибка в каждом нужном сингулярном значении;
-
reltol::Real=√eps()
: максимальная абсолютная ошибка в каждом нужном сингулярном значении относительно оцененной нормы входной матрицы;
-
method::Symbol=:ritz
: используемый перезапускающий алгоритм. Вот возможные варианты.
-
:ritz
: массовый перезапуск со значениями Ритца [Wu2000].
-
:harmonic
: перезапуск с гармоническими значениями Ритца [Baglama2005].
-
vecs::Symbol = :none
: возвращаемые сингулярные векторы.
-
:both
: возвращаются и левый, и правый сингулярные векторы.
-
:left
: возвращаются только левые сингулярные векторы.
-
:right
: возвращаются только правые сингулярные векторы.
-
:none
: сингулярные векторы не возвращаются.
-
dolock::Bool=false
: если задано значение true
, блокирует сходящиеся значения Ритца, удаляя их из подпространства Крылова, в котором будет выполняться поиск в следующей макроитерации;
-
log::Bool = false
: вывод дополнительного элемента типа ConvergenceHistory
, содержащего дополнительную информацию о выполнении метода.
если log
имеет значение false
-
Σ
: список требуемых сингулярных значений, если vecs == :none
(по умолчанию), иначе возвращает объект SVD
с заполненными требуемыми сингулярными векторами;
-
L
: вычисленные частичные разложения A.
если log
имеет значение true
иначе возвращает объект SVD
с заполненными требуемыми сингулярными векторами;
-
:betas
=> betas
: История вычисленных бета.
-
:Bs
=> Bs
: История вычисленных проецируемых матриц.
-
:ritz
=> ritzvalhist
: Значения Ритца, вычисленные в каждой итерации.
-
:conv
=> convhist
: Данные сходимости.