¿Cuál es el algoritmo más rápido para obtener la matriz inversa?

Para casi todas las aplicaciones, no necesita la matriz inversa.

Esto es cierto incluso si está resolviendo [matemática] Mx = b [/ matemática] repetidamente, a menos que el número de soluciones esté cerca de la dimensión de [matemática] M [/ matemática].

Para matrices bien condicionadas, la descomposición de LU (escribir [matemática] M = LU [/ matemática] donde L es triangular inferior, U triangular superior) es más rápida y debería ser su primera opción.

Actualización: Yacine El Alaoui señala correctamente en los comentarios que para matrices definidas positivas simétricas, la descomposición de Cholesky es sustancialmente más rápida.

Para matrices mal acondicionadas (donde el valor propio más pequeño es muchas veces menor que el más grande, por lo que una matriz cercana es singular) probablemente necesite un valor propio o una descomposición de valor singular. En casos como este, pequeños errores numéricos en la matriz original causan errores mucho mayores en el inverso, por lo que no se puede lograr una alta precisión con ningún método.

Si realmente necesita lo contrario por alguna razón, la eliminación de Gauss-Jordan es probablemente el mejor método.

¿Necesitas absolutamente el inverso? Si solo desea resolver un sistema lineal, usar el inverso es

  1. muy caro
  2. numéricamente inestable.

Pero supongamos que sabes lo que estás haciendo y quieres lo contrario.

¡La regla de Kramer gobierna! No. Ese tiene una complejidad exponencial.

Esto es lo que debe hacer: hacer una descomposición LU (con pivote; para SPD use Cholesky) en operaciones [matemática] \ frac {1} {3} n ^ 3 [/ matemática], luego invierta los factores y tome el producto de inversas, en algunos [matemáticas] O (n ^ 2) [/ matemáticas] costo agregado. (Gauss-Jordan también es de complejidad cúbica, pero con un factor más alto).

Depende del tipo de matriz que tenga … y de lo que necesite.

Si su matriz es simétrica o si es una matriz dispersa, por ejemplo.

La mayoría de las veces estoy usando la descomposición LU si no necesito la matriz inversa. Si lo necesito, generalmente elijo una eliminación gaussiana. Clásico!

Si mi matriz es una matriz dispersa, uso el algoritmo de Wiedemann . Es bastante rapido. Lo sabes ?

Tengo un artículo francés al respecto:

http://www.lix.polytechnique.fr/…

Pero probablemente haya algo en wikipedia al respecto … espero porque en la wikipedia francesa no encontré nada …

Dado que el cálculo inverso de la matriz es específico de su matriz original, creo que la eliminación gaussiana básica funciona bien. Normalmente, cuando necesita computarizar un sistema repetidamente, le gustaría factorizar su matriz, si es SDD use factorización LU normal, si es SPD use cholesky, si es solo matriz invertible normal use PA = LU.

More Interesting

¿Cuáles son algunos de los algoritmos importantes utilizados en Machine Learning?

Si la educación en informática hoy en día es tan fácil de acceder (MOOC, libros electrónicos gratuitos, etc.) ¿por qué no vemos otro Bill Gates / Larry Page / Jeff Bezos?

Si envío una aplicación Spark en mi computadora portátil a un clúster Yarn remoto, ¿debo instalar el binario Spark en los nodos de Hadoop?

¿El USB Type-C tiene un nombre estandarizado?

¿Cuál es la principal diferencia entre ingeniero informático y experto en TI?

¿Sobrescribir los datos guardados con una copia guardada desde una unidad flash afecta la calidad del guardado y este guardado eventualmente se corromperá si este proceso se repite?

¿Cuál es la explicación laica del problema de la satisfacción booleana?

¿Qué especialización de doctorado en informática tiene una gran demanda en los campos de TI?

¿Cuál es el tipo de computadora más rápido? ¿Qué lo hace ser más rápido que el resto?

¿Por qué fue difícil romper la máquina Enigma? ¿Fue su diseño muy inteligente y genio?

¿Cuáles son algunos desarrollos sorprendentes en el campo del procesamiento del lenguaje natural?

¿Cómo se ve tu equipo?

¿Debería un curso de introducción a la universidad CS enseñar con o sin IDE?

¿Mi computadora puede ejecutar Subnautica?

¿Cuáles son algunas de las preguntas de muestra de la búsqueda de jóvenes talentos en programación de computadoras realizada por Computer Society of India?