Подмножество сингулярных значений и векторов
указывает дополнительные параметры с одним или несколькими аргументами пары имя-значение. Например, 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] Баглама, Дж. и Л. Райхель, «Дополненные неявно перезапущенные методы бидиагонализации Ланцоса». Журнал SIAM по научным вычислениям. Том 27, 2005, стр. 19-42.
[2] Ларсен, Р. М. «Ланцос Бидиагонализация с частичной реортогонализацией». Кафедра компьютерных наук Орхусского университета. DAIMI PB-357, 1998.