En un proyecto de software en el que estoy trabajando, ciertos cálculos son mucho más fáciles para matrices densas de bajo rango. Algunas instancias de problemas involucran matrices densas de bajo rango, pero me las dan en su totalidad, en lugar de como factores, por lo que tendré que verificar el rango y factorizar la matriz si quiero aprovechar la estructura de bajo rango. .
Las matrices en cuestión son típicamente completamente o casi completamente densas, con n que van desde cien hasta unos pocos miles. Si una matriz tiene un rango bajo (digamos menos de 5 a 10), entonces vale la pena calcular la SVD y usarla para formar una factorización de bajo rango. Sin embargo, si la matriz no es de bajo rango, entonces el esfuerzo se desperdiciaría.
Por lo tanto, me gustaría encontrar una forma rápida y razonablemente confiable de determinar si el rango es bajo o no antes de invertir el esfuerzo para hacer una factorización SVD completa. Si en algún momento queda claro que el rango está por encima del límite, el proceso puede detenerse de inmediato. Si el procedimiento declara por error que la matriz es de rango bajo cuando no lo es, esto no es un gran problema, ya que todavía estaría haciendo una SVD completa para confirmar el rango bajo y encontrar una factorización de rango bajo.
Las opciones que he considerado incluyen un rango que revela la factorización LU o QR seguido de una SVD completa como verificación. ¿Hay otros enfoques que debería considerar?