Pregunta

Leí en algunos lugares (en el documento y en esta publicación de blog: http://blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/ ) que no se recomienda el uso de inv en Matlab porque es lento e inexacto .

Estoy tratando de encontrar la razón de esta inexactitud. A partir de ahora, Google no dio un resultado interesante, así que pensé que alguien aquí podría guiarme.

¡Gracias!

¿Fue útil?

Solución

La inexactitud que mencioné es con el método INV, no con la implementación de MATLAB. Debería usar QR, LU u otros métodos para resolver sistemas de ecuaciones, ya que estos métodos generalmente no requieren cuadrar el número de condición del sistema en cuestión. El uso de inv generalmente requiere una operación que pierde precisión al cuadrar el número de condición del sistema original.

--Loren

Otros consejos

Creo que el punto del blog de Loren no es que la función inv de MATLAB sea particularmente más lenta o más inexacta que cualquier otra implementación numérica de calcular una matriz inversa; más bien, que en la mayoría de los casos no se necesita el inverso en sí mismo, y puede proceder por otros medios (como resolver un sistema lineal usando \ - el operador de barra invertida - en lugar de calcular un inverso).

inv () es ciertamente más lento que \ a menos que tenga que resolver varios vectores del lado derecho. Sin embargo, el consejo de MathWorks con respecto a la inexactitud se debe a un límite demasiado conservador en un resultado de álgebra lineal numérica. En otras palabras, inv () NO es inexacto. El enlace se desarrolla más: http://arxiv.org/abs/1201.6035

  

Varios libros de texto ampliamente utilizados llevan al lector a creer que resolver un sistema lineal de ecuaciones Ax = b multiplicando el vector b por una inv inversa computada (A) es inexacto. Prácticamente todos los demás libros de texto sobre análisis numérico y álgebra lineal numérica desaconsejan el uso de inversos calculados sin indicar si esto es exacto o no. De hecho, bajo supuestos razonables sobre cómo se calcula el inverso, x = inv (A) * b es tan preciso como la solución calculada por los mejores solucionadores estables hacia atrás.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top