Dans un projet logiciel sur lequel je travaille, certains calculs sont beaucoup plus faciles pour les matrices denses de bas rang. Certaines instances problématiques impliquent des matrices denses de bas rang, mais elles me sont données dans leur intégralité, plutôt que comme des facteurs, donc je vais devoir vérifier le rang et factoriser la matrice si je veux profiter de la structure de bas rang .
Les matrices en question sont généralement entièrement ou presque entièrement denses, avec n allant de cent à quelques milliers. Si une matrice a un rang bas (disons moins de 5 à 10), alors le calcul de la SVD et son utilisation forment une factorisation de bas rang en vaut la chandelle. Cependant, si la matrice n'est pas de bas rang, alors l'effort serait gaspillé.
J'aimerais donc trouver un moyen rapide et raisonnablement fiable de déterminer si le rang est bas ou non avant d'investir l'effort de faire une factorisation SVD complète. Si à un moment donné, il devient clair que le rang est supérieur au seuil, le processus peut s'arrêter immédiatement. Si la procédure déclare par erreur que la matrice est de bas rang alors qu'elle ne l'est pas, ce n'est pas un gros problème, car je ferais toujours une SVD complète pour confirmer le bas rang et trouver une factorisation de bas rang.
Les options que j'ai envisagées incluent une factorisation LU ou QR révélatrice de rang suivie d'une SVD complète comme vérification. Y a-t-il d'autres approches que je devrais envisager?