svds
奇异值和向量的子集
语法
说明
使用一个或多个名称-值对组参量指定其他选项。例如,s
= svds(A
,k
,sigma
,Name,Value
)svds(A,k,sigma,'Tolerance',1e-3)
将调整算法的收敛容差。
示例
输入参数
名称-值参数
输出参量
提示
如果您事先不知道用
svds
指定什么秩但知道 SVD 的逼近应满足什么容差,则svdsketch
很有用。svds
使用专用的随机数流生成默认起始向量,以确保在不同运行之间的可再现性。调用svds
之前使用rng
设置随机数生成器状态不会影响输出。要求出小型稠密矩阵的几个奇异值,使用
svds
并不是最有效的方式。对于这些问题,使用svd(full(A))
可能会更快。例如,求 500×500 矩阵中的三个奇异值相对容易,使用svd
即可轻松完成。对于给定矩阵,如果
svds
无法收敛,可以通过增大'SubspaceDimension'
值来增加克雷洛夫子空间的大小。作为备用方案,调整最大迭代次数 ('MaxIterations'
) 和收敛容差 ('Tolerance'
) 也有助于改善收敛行为。增大
k
有时可以提高性能,特别是当矩阵包含重复的奇异值时。
参考
[1] Baglama, J. and L. Reichel, “Augmented Implicitly Restarted Lanczos Bidiagonalization Methods.” SIAM Journal on Scientific Computing. Vol. 27, 2005, pp. 19–42.
[2] Larsen, R. M. “Lanczos Bidiagonalization with partial reorthogonalization.” Dept. of Computer Science, Aarhus University. DAIMI PB-357, 1998.