Para problemas em que estou interessado, a dimensão da matriz é 30 ou menos.
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.
Dada uma matriz simétrica definida positiva, qual é o algoritmo mais rápido para calcular a matriz inversa e seu determinante?
Se a velocidade é um problema, você deve responder às seguintes perguntas:
- Você realmente precisa de todo o inverso? (Muitos aplicativos não precisam formar um inverso explícito.)
- Você realmente precisa do determinante? (Determinantes são incomuns, mas certamente não são desconhecidos na ciência da computação.)
- Você precisa de alta precisão? (Os algoritmos de baixa precisão tendem a ser mais rápidos.)
- Uma aproximação probabilística seria suficiente? (Os algoritmos probabilísticos tendem a ser mais rápidos.)
A=LLTdet(A)=∏ni=1l2iidet(A−1)=∏ni=1l−2ii
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 LUAnnn3/3pode 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.