Dada una matriz simétrica definida positiva, ¿cuál es el algoritmo más rápido para calcular la matriz inversa y su determinante? Para los problemas que me interesan, la dimensión de la matriz es de 30 o menos.
- La alta precisión y velocidad es realmente necesaria. (se realizan millones de matrices)
- El determinante es necesario. En cada cálculo, solo se requiere un elemento de la matriz universal. ¡Gracias!
algorithms
matrix
Pedidos
fuente
fuente
Respuestas:
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.
Si la velocidad es un problema, debe responder las siguientes preguntas:
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 LT det ( A ) = ∏nortei = 1l2yo i det ( 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 / 3UNA norte norte norte3/ 3 podrí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.
fuente