В программном проекте, над которым я работаю, некоторые вычисления намного проще для плотных матриц низкого ранга. В некоторых проблемных случаях используются плотные матрицы низкого ранга, но они даны мне полностью, а не как факторы, поэтому мне придется проверять ранг и фактор матрицы, если я хочу воспользоваться преимуществами структуры низкого ранга ,
Матрицы, о которых идет речь, обычно являются полностью или почти полностью плотными, причем n колеблется от ста до нескольких тысяч. Если матрица имеет низкий ранг (скажем, менее 5-10), то вычисление SVD и использование его для формирования факторинга низкого ранга стоит усилий. Однако, если матрица не низкого ранга, то усилия будут потрачены впустую.
Таким образом, я хотел бы найти быстрый и достаточно надежный способ определения, является ли ранг низким, прежде чем вкладывать усилия в полную факторизацию SVD. Если в какой-то момент становится ясно, что ранг выше порога, процесс может быть немедленно остановлен. Если процедура ошибочно объявляет матрицу низкого ранга, когда это не так, это не является большой проблемой, так как я все еще буду делать полный SVD для подтверждения низкого ранга и нахождения факторизации низкого ранга.
Варианты, которые я рассмотрел, включают ранг, раскрывающий LU или QR-факторизацию, за которым следует полный SVD в качестве проверки. Есть ли другие подходы, которые я должен рассмотреть?