Подмножество сингулярных значений и векторов
задает дополнительные опции с одним или несколькими аргументами пары "имя-значение". Например, 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.