Em um projeto de software em que estou trabalhando, certos cálculos são muito mais fáceis para matrizes densas de baixa patente. Algumas instâncias de problemas envolvem matrizes densas de baixo escalão, mas são dadas a mim na íntegra, e não como fatores, portanto, terei que verificar o rank e fatorar a matriz se quiser tirar proveito da estrutura de baixo escalão .
As matrizes em questão são tipicamente total ou quase totalmente densas, com n variando de cem a alguns milhares. Se uma matriz tem uma classificação baixa (digamos menos de 5 a 10), vale a pena computar o SVD e usá-lo em uma fatoração de classificação baixa. No entanto, se a matriz não tiver uma classificação baixa, o esforço será desperdiçado.
Assim, eu gostaria de encontrar uma maneira rápida e razoavelmente confiável de determinar se a classificação é baixa ou não antes de investir no esforço de fazer uma fatoração completa de SVD. Se, a qualquer momento, ficar claro que a classificação está acima do ponto de corte, o processo poderá parar imediatamente. Se o procedimento declarar erroneamente que a matriz é de classificação baixa quando não é, isso não é um problema enorme, pois eu ainda estaria fazendo um SVD completo para confirmar a classificação baixa e encontrar uma fatoração de classificação baixa.
As opções que considerei incluem uma classificação que revela a fatoração LU ou QR seguida por um SVD completo como verificação. Existem outras abordagens que devo considerar?
fonte
O problema, é claro, é que calcular a verdadeira classificação (por exemplo, por meio de uma decomposição QR) não é realmente mais barato do que calcular uma representação de baixo nível da matriz.
O melhor que você provavelmente pode fazer é usar um algoritmo aleatório para encontrar aproximações de classificação baixa. Estes podem, pelo menos em teoria, ser significativamente mais rápidos do que trabalhar em toda a matriz, porque, em essência, eles apenas calculam decomposições para projeções da matriz em subespaços aleatórios.
Se vale a pena para uma matriz de tamanho pode ser uma boa pergunta, mas se seus problemas realmente se tornarem grandes, eu suspeitaria que vale a pena.100×100
fonte
Outra abordagem que vale a pena tentar é usar a Aproximação Cruzada Adaptativa (ACA). É um algoritmo bastante popular que tem muitas implementações disponíveis online. Para referência, você pode ver o artigo original:
O ACA e suas variações (digamos, ACA +, HCA de aproximação cruzada híbrida) podem ser usados em diferentes cenários. Você, já tendo toda a matriz densa calculada, é um dos favoráveis, pois poderá calcular os resíduos exatamente se necessário.
fonte
fonte