Подмножество сингулярных значений и векторов
задает дополнительные опции с одним или несколькими аргументами пары "имя-значение". Например, s
= svds(A
,k
,sigma
,Name,Value
)svds(A,k,sigma,'Tolerance',1e-3)
настраивает допуск сходимости для алгоритма.
svdsketch
полезно, когда вы не знаете заранее что ранг задать с svds
, но вы знаете, какому допуску приближение SVD должно удовлетворить.
svds
генерирует значение по умолчанию стартовые векторы с помощью частного потока случайных чисел, чтобы гарантировать воспроизводимость через запуски. Установка использования состояния генератора случайных чисел rng
перед вызовом svds
не влияет на выход.
Используя svds
не самый эффективный способ найти несколько сингулярных значений маленьких, плотных матриц. Для таких проблем, с помощью svd(full(A))
может быть быстрее. Например, находя три сингулярных значения в 500 500 матрица является относительно небольшой проблемой что svd
может обработать легко.
Если svds
сбои, чтобы сходиться для данной матрицы, увеличьте размер подпространства Крылова путем увеличения значения 'SubspaceDimension'
. Как вторичные опции, настраивая максимальное количество итераций ('MaxIterations'
) и допуск сходимости ('Tolerance'
) также может помочь с поведением сходимости.
Увеличение k
может иногда улучшать производительность, особенно когда матрица повторила сингулярные значения.
[1] Baglama, J. и Л. Рейчель, “Увеличенные Неявно Перезапущенные Методы Lanczos Bidiagonalization”. SIAM Journal на Научных вычислениях. Издание 27, 2005, стр 19–42.
[2] Ларсен, R. M. “Lanczos Bidiagonalization с частичной переортогонализацией”. Отдел Информатики, Орхусский университет. ПЕТАБАЙТ DAIMI 357, 1998.