Existe um algoritmo SVD truncado que calcula os valores singulares, um de cada vez?
Meu problema: gostaria de calcular os primeiros valores singulares (e vetores singulares) de uma matriz densa grande , mas não sei qual seria um valor apropriado de . é grande, portanto, por razões de eficiência, prefiro não avaliar o SVD completo apenas para interromper os menores SVs posteriormente.
Idealmente, haveria uma maneira de calcular os valores singulares serialmente, do maior ( ) ao menor ( ). Dessa forma, eu poderia simplesmente interromper a computação depois de calcular o ésimo valor se cair abaixo de algum limite.
Existe um algoritmo desse tipo (de preferência com uma implementação em Python)? Na minha pesquisa, apenas encontrei funções SVD truncadas que tomam k como parâmetro, forçando-o a adivinhar a priori.