W projekcie oprogramowania, nad którym pracuję, niektóre obliczenia są znacznie łatwiejsze dla gęstych matryc niskiej rangi. Niektóre przypadki problemów dotyczą gęstych macierzy niskiej rangi, ale są one podane mi w całości, a nie jako czynniki, więc muszę sprawdzić pozycję i matrycę macierzy, jeśli chcę skorzystać z struktury niskiej rangi .
Omawiane macierze są zazwyczaj całkowicie lub prawie całkowicie gęste, przy czym n wynosi od stu do kilku tysięcy. Jeśli matryca ma niską rangę (powiedzmy mniej niż 5 do 10), to warto obliczyć SVD i użyć jej z faktoryzacji niskiej rangi. Jeśli jednak matryca nie ma niskiej rangi, wysiłek zostałby zmarnowany.
Dlatego chciałbym znaleźć szybki i racjonalnie niezawodny sposób ustalenia, czy ranga jest niska, przed zainwestowaniem wysiłku w pełną faktoryzację SVD. Jeśli w dowolnym momencie stanie się jasne, że ranga znajduje się powyżej granicy, proces może zostać natychmiast zatrzymany. Jeśli procedura błędnie stwierdza, że matryca ma niską rangę, gdy nie jest, nie jest to ogromny problem, ponieważ nadal robiłbym pełny SVD, aby potwierdzić niską rangę i znaleźć faktoryzację niskiej rangi.
Opcje, które rozważałem, obejmują rangę ujawniającą faktoryzację LU lub QR, a następnie pełną SVD jako czek. Czy są inne podejścia, które powinienem rozważyć?