2
计算截断的SVD,一次一个奇异值/向量
是否有一种截断的SVD算法可以一次计算一个奇异值? 我的问题:我想计算一个大的密集矩阵M的前ķķk奇异值(和奇异矢量),但是我不知道k的合适值是多少。M很大,因此出于效率考虑,我宁愿不评估完整的SVD,而只是在之后截断最小的SV。中号中号Mķķk中号中号M 理想情况下,将计算的奇异值的方式σ1个,σ2,…σ1个,σ2,…\sigma_1, \sigma_2,\ldots顺序,从最大(σ1个σ1个\sigma_1)到最小(σñσñ\sigma_n)。这样一来,我可以简单地停止计算计算后ķķk个奇异值,如果σķ/ σ1个σķ/σ1个\sigma_k/\sigma_1下降到低于某个阈值。 是否存在这样的算法(最好使用Python实现)?在谷歌搜索中,我只发现了以k为参数的截断SVD函数,因此迫使您先验猜测。