Para los problemas que me interesan, la dimensión de la matriz es de 30 o menos.
Como señala WolfgangBangerth, a menos que tenga una gran cantidad de estas matrices (millones, miles de millones), el rendimiento de la inversión matricial generalmente no es un problema.
Dada una matriz simétrica definida positiva, ¿cuál es el algoritmo más rápido para calcular la matriz inversa y su determinante?
Si la velocidad es un problema, debe responder las siguientes preguntas:
- ¿Realmente necesitas todo el inverso? (Muchas aplicaciones no necesitan formar un inverso explícito).
- ¿Realmente necesitas el determinante? (Los determinantes son poco comunes, pero ciertamente no son desconocidos en la ciencia computacional).
- ¿Necesita alguno de ellos con alta precisión? (Los algoritmos de baja precisión tienden a ser más rápidos).
- ¿Sería suficiente una aproximación probabilística? (Los algoritmos probabilísticos tienden a ser más rápidos).
La respuesta estándar a su problema de invertir una matriz definida pequeña y positiva y calcular su determinante sería la descomposición de Cholesky. Si , entonces , y . det ( A ) = ∏ n i = 1 l 2 i i det ( A - 1 ) = ∏ n i = 1 l - 2 i iA = L LTdet ( A ) = ∏nortei = 1l2yo idet ( A- 1) = ∏nortei = 1l- 2yo i
Suponiendo que es por , la descomposición de Cholesky se puede calcular en aproximadamente flops, que es aproximadamente la mitad del costo de una descomposición de LU. Sin embargo, dicho algoritmo no se consideraría "rápido". Una descomposición aleatoria de LUn n n 3 / 3UNAnortenortenorte3/ 3podría ser un algoritmo más rápido que vale la pena considerar si (1) realmente tiene que factorizar un gran número de matrices, (2) la factorización es realmente el paso limitante en su aplicación, y (3) cualquier error incurrido al usar un algoritmo aleatorio es aceptable. Es probable que sus matrices sean demasiado pequeñas para que los algoritmos dispersos valgan la pena, por lo que las únicas otras oportunidades para algoritmos más rápidos requerirían una estructura matricial adicional (por ejemplo, en bandas) o explotar la estructura del problema (por ejemplo, tal vez pueda reestructurar su algoritmo de manera inteligente para que no ya no es necesario calcular una matriz inversa o su determinante). Los algoritmos determinantes eficientes son aproximadamente el costo de resolver un sistema lineal, dentro de un factor constante, por lo que los mismos argumentos utilizados para sistemas lineales se aplican también al cálculo de determinantes.