Les voy a enseñar un curso de álgebra lineal en el otoño, y quiero motivar el tema de la matriz factorizations tales como la descomposición LU. Una pregunta natural que uno puede hacer es, ¿por qué importa esto cuando uno ya sabe cómo calcular A−1 y se puede utilizar para solucionar Ax=b sólo por la matriz-vector de la multiplicación? La respuesta estándar es que es que en la práctica uno debe (casi) nunca realmente invertir una matriz, debido a que incurren en menos de redondeo de error por backsubstituting una factorización como LUx=b de realizar la multiplicación x=A−1b.
Sin embargo, recientemente me encontré con la ponencia "¿qué tan precisa es inv(A)*b
?" por Druinsky y Toledo (2012), donde argumentan que la sabiduría recibida es engañoso, y una solución de xinv=Vx obtenido utilizando un aproximado inverso V≈A−1 es normalmente cerca de la verdad x como una solución de xLU obtenido por backsubstitution. Así que yo no estoy tan seguro acerca de la precisión numérica como una motivación para la descomposición LU como solía ser.
Hice algunos experimentos numéricos con el azar mal condicionado matrices en Matlab, basado en Druinsky y Toledo código en Segundos, de 6 de su papel. Parece que el avance de los errores de ‖ \|x_{\text{LU}}-x\| eran de hecho muy similar, pero el retroceso de error \|Ax_{\text{inv}}-b\| podría ser mucho más grande que la de \|Ax_{\text{LU}}-b\|. También trabajé un pequeño ejemplo a mano: \begin{align} A &= \begin{bmatrix}1.00&2.01 \\ 1.01 & 2.03\end{bmatrix} \\ &= \underbrace{\begin{bmatrix}1.00 & 2.01 \\ 0 & -1.00\times10^{-4}\end{bmatrix}}_{L}\underbrace{\begin{bmatrix}1 & 0 \\ 1.01 & 1\end{bmatrix}}_{U} \\ y= {\underbrace{\begin{bmatrix}-2.03\times10^4 & 2.01\times10^4 \\ 1.01\times10^4 & -1.00\times10^4 \end{bmatrix}}_{A^{-1}}}^{-1}, \\ b &= \begin{bmatrix}1.01 \\ 1.02\end{bmatrix}. \end{align} La solución exacta es x=[-1, 1]^T. Computación A^{-1}b con tres dígitos decimales de precisión en los intermedios de los cálculos se obtiene el resultado de la x_{\text{inv}} = [0, 0]^T debido a la catastrófica de la cancelación. La misma precisión en LU backsubstitution da x_{\text{LU}} = [1.01, 0]^T. Ambas soluciones se diferencian claramente de la verdadera solución a x por un error en el orden de 10^0, pero Ax_{\text{LU}} corresponde a b a la precisión numérica mientras que Ax_{\text{inv}} está totalmente apagado.
Mis preguntas son:
Es el explícito 2\times2 ejemplo de arriba, el representante de lo que sucede en la práctica, o es un sin sentido ejemplo calculada con muy poca precisión que sólo casualmente coincide con la de otros experimentos numéricos?
Son el número de observaciones que generalmente cierto? Para hacer de este exacto, vamos a A=LU y definir V = U^{-1}*L^{-1}, x_{\text{inv}} = V*b, y x_{\text{LU}}= U^{-1}*(L^{-1}*b) donde * denota multiplicación numéricos de redondeo de error. Es generalmente el caso de que \|Ax_{\text{inv}}-b\|>\|Ax_{\text{LU}}-b\|?
¿Cuáles son algunos ejemplos de aplicaciones prácticas donde forward error es más importante que atrás de error, y viceversa?