Dada uma matriz simétrica definida positiva, qual é o algoritmo mais rápido para calcular a matriz inversa e seu determinante? Para problemas em que estou interessado, a dimensão da matriz é 30 ou menos.
- Alta precisão e velocidade são realmente necessárias. (milhões de matrizes são realizadas)
- O determinante é necessário. Em cada cálculo, apenas um elemento da matriz iverse é necessário. Obrigado!
algorithms
matrix
Encomendas
fonte
fonte
Respostas:
Como observa WolfgangBangerth, a menos que você tenha um grande número dessas matrizes (milhões, bilhões), o desempenho da inversão da matriz normalmente não é um problema.
Se a velocidade é um problema, você deve responder às seguintes perguntas:
Assumindo que é por , a decomposição de Cholesky pode ser calculada em torno de flops, que é cerca da metade do custo de uma decomposição de LU. No entanto, esse algoritmo não seria considerado "rápido". Uma decomposição aleatória da LUA n n n3/3 pode ser um algoritmo mais rápido que vale a pena considerar se (1) você realmente precisa fatorar um grande número de matrizes, (2) a fatoração é realmente a etapa limitante da sua aplicação e (3) qualquer erro incorrido no uso de um algoritmo aleatório é aceitável. Suas matrizes são provavelmente muito pequenas para que algoritmos esparsos valham a pena; portanto, as únicas outras oportunidades para algoritmos mais rápidos exigiriam estrutura matricial adicional (por exemplo, em faixas) ou exploração da estrutura de problemas (por exemplo, talvez você possa reestruturar seu algoritmo de maneira inteligente, para que você não é necessário calcular uma matriz inversa ou seu determinante). Algoritmos determinantes eficientes são aproximadamente o custo de resolver um sistema linear, dentro de um fator constante; portanto, os mesmos argumentos usados para sistemas lineares também se aplicam ao cálculo de determinantes.
fonte