63 votos

Necesidad/Ventaja de la descomposición de LU sobre la eliminación de Gauss

Estoy leyendo el libro "Introducción al Álgebra Lineal" de Gilbert Strang y no pude dejar de preguntarme las ventajas de la descomposición LU sobre la eliminación Gaussiana!

Para un sistema de ecuaciones lineales en la forma Ax = b, uno de los métodos para resolver las incógnitas es la Eliminación Gaussiana, donde se forma una matriz triangular superior U por eliminación hacia adelante y luego se resuelven las incógnitas por sustitución hacia atrás. Esto sirve para resolver un sistema de ecuaciones lineales. ¿Qué necesidad había de la Descomposición LU, es decir, después de encontrar U por eliminación hacia adelante, por qué vamos a encontrar L (la matriz triangular inferior) cuando ya tenías U y podrías haber hecho una sustitución hacia atrás?

81voto

En muchas aplicaciones de ingeniería, cuando se resuelve $Ax = b$ la matriz $A \in \mathbb{R}^{N \times N}$ no cambia, mientras que el vector de la derecha $b$ sigue cambiando.

Un ejemplo típico es cuando se resuelve una ecuación diferencial parcial para diferentes funciones de forzamiento. Para estas diferentes funciones de forzamiento, el mallado suele ser el mismo. La matriz $A$ sólo depende de los parámetros de la malla y, por lo tanto, no cambia para las diferentes funciones de forzamiento. Sin embargo, el vector del lado derecho $b$ cambios para cada una de las funciones de forzamiento.

Otro ejemplo es cuando se resuelve un problema dependiente del tiempo, en el que las incógnitas evolucionan con el tiempo. También en este caso, si el paso del tiempo es constante a través de diferentes instantes de tiempo, entonces de nuevo la matriz $A$ permanece sin cambios y el único vector del lado derecho $b$ cambia en cada paso de tiempo.

La idea clave para resolver utilizando el $LU$ (para el caso, cualquier factorización) es desacoplar la fase de factorización (generalmente costosa desde el punto de vista computacional) del actual fase de resolución. La fase de factorización sólo necesita la matriz $A$ , mientras que el actual La fase de resolución hace uso de la forma factorizada de $A$ y el lado derecho para resolver el sistema lineal. Por lo tanto, una vez que tenemos la factorización, podemos hacer uso de la forma factorizada de $A$ para resolver los diferentes lados derechos con un coste computacional relativamente moderado.

El coste de la factorización de la matriz $A$ en $LU$ es $\mathcal{O}(N^3)$ . Una vez que se tiene esta factorización, el coste de resolver, es decir, el coste de resolver $LUx = b$ es sólo $\mathcal{O}(N^2)$ ya que el coste de resolver un sistema triangular escala como $\mathcal{O}(N^2)$ .

(Tenga en cuenta que para resolver $LUx = b$ , primero se resuelve $Ly = b$ y luego $Ux = y$ . Resolver $Ly = b$ y $Ux=y$ costes $\mathcal{O}(N^2).$ )

Por lo tanto, si usted tiene ' $r$ ' vectores del lado derecho $\{b_1,b_2,\ldots,b_r\}$ Una vez que tenga el $LU$ factorización de la matriz $A$ el coste total para resolver $$Ax_1 = b_1, Ax_2 = b_2 , \ldots, Ax_r = b_r$$ escalas como $\mathcal{O}(N^3 + rN^2)$ .

Por otro lado, si se hace la eliminación de Gauss por separado para cada vector del lado derecho $b_j$ entonces el coste total escala como $\mathcal{O}(rN^3)$ ya que cada eliminación de Gauss cuesta independientemente $\mathcal{O}(N^3)$ .

Sin embargo, cuando la gente dice eliminación de Gauss, suele referirse a $LU$ descomposición y no al método de resolver cada lado derecho de forma completamente independiente.

1 votos

¡Gracias Marvis! ¡Eso lo aclaró! :)

1voto

Ejik_v_tumane Puntos 64

Tenemos el conjunto de $n$ sistemas $A[x_1, x_2, ..., x_n] = [b_1, b_2, ..., b_n]$ . ¿Por qué utilizar la descomposición LU?

1) ¿Por qué no resolver este conjunto de $n$ simultáneamente utilizando la eliminación gaussiana?
2)Al realizar la descomposición LU, ¿por qué nos detenemos en el paso $L^{-1}A = U$ (de la que obtenemos $A = LU$ )? ¿Por qué no ir más allá y conseguir $A^{-1}A = I$ (Supongamos que $A$ es invertible)? Y luego obtener fácilmente las soluciones $[x_1, x_2, ..., x_n] = A^{-1}[b_1, b_2, ..., b_n]$ .

1 votos

Conseguir $A^{-1}$ es una idea bastante mala, especialmente si $A$ es escaso (pista: $A^{-1}$ no lo es). Además, un simple $solve()$ es más rápido que los dos pasos de obtener primero $A^{-1}$ mediante el uso de $solve()$ y luego una multiplicación adicional.

0 votos

Esta es una excelente pregunta. La de @arc_lupus da una respuesta para el caso de matrices dispersas, aunque su segunda respuesta no aborda la cuestión de por qué no hacer esto cuando se resuelven muchas ecuaciones con la misma $A$ . Se puede encontrar una explicación muy bien escrita en gregorygundersen.com/blog/2020/12/09/matriz-inversión .

1voto

AK11 Puntos 11

El coste computacional de resolver $x$ para $Ax = b$ mediante eliminación gaussiana o $LU-$ la descomposición es la misma. Resolviendo $Ax = b$ mediante eliminación gaussiana con pivoteo parcial en la matriz aumentada $[A | b]$ transforma $[A|b]$ en un sistema triangular superior $[U | b^{'}]$ . A continuación, se realiza una sustitución hacia atrás para determinar $x$ . Además, en el $LU-$ matriz de descomposición, $L$ no es más que los "multiplicadores" obtenidos durante el proceso de eliminación de Gauss. Por lo tanto, no hay ningún coste adicional de cálculo $L$ .

Pero consideremos un escenario en el que el lado derecho $Ax = b $ sigue cambiando y $A$ es fijo. Eso significa que se trata del sistema de ecuaciones $Ax = b_1, Ax=b_2, ...Ax=b_k$ . En este caso, $LU-$ La descomposición funciona de forma más eficiente que la eliminación de Gauss, ya que no es necesario resolver todas las matrices aumentadas. Sólo hay que descomponer $A$ en $LU$ (o eliminación gaussiana con coste ~ $n^3$ ) una vez.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X