una online matriz matrices inversa 5x5 4x4 3x3 2x2 c++ performance matrix precision matrix-inverse

online - Forma más eficiente y rápida de invertir matrices en c++(grande y pequeño)



matriz inversa 4x4 online (1)

No hay una respuesta simple. Asegúrate de haber leído y entendido este artículo.

Para matrices 2x2, la computación de la inversa se puede hacer con un formulario simple que involucre el determinante. Pero para algo más grande, preferiría las factorizaciones, por ejemplo, una factorización de LU pivotante. Si le preocupa el rendimiento y se ocupa de grandes matrices dispersas, un solucionador iterativo podría ser apropiado. Alternativamente, puede probar MUMPS (solucionador paralelo masivo multifrontal) y medir el rendimiento. El problema con los solucionadores iterativos es que su velocidad de convergencia depende en gran medida de la condición del problema inverso y de si se encuentran buenos precondicionadores.

Quizás debería comenzar con la biblioteca Eigen y probar las factorizaciones de LU pivotantes primero.

Mientras buscaba algoritmos de inversión de matriz, descubrí que hay varias formas (¡y opiniones!) Sobre cómo hacer esto en el código. Me pregunto qué método es el más rápido, o el que tiene el mejor rendimiento, y al intentar encontrar esa respuesta no encontré nada.

Sé que en algunos casos se puede calcular un pseudoinverso (utilizando SVD, cholevsky, ...), de hecho, uso algunos de esos en mi código, y sé que varias veces no existe una inversa, etc. Es fácil encontrar una respuesta específica para un problema específico pero no una intuición general para este gran problema (ENORME) que es la inversión de la matriz.

Entonces mi pregunta es:

¿Qué método es el mejor en rendimiento para matrices pequeñas? Y en precisión? ¿Qué hay de las matrices grandes?

Mi caso personal es una matriz de 6x6 (EDIT: symetric) que tiene que invertirse miles de veces (sí, sí, con diferentes valores) y necesito alta precisión, pero la velocidad segura sería muy útil.

Tenga en cuenta que no estoy buscando el código, voy a codificar cualquier respuesta que mejor se adapte a mi caso, pero creo que esta es una pregunta que a muchos programadores les gustaría saber.