3.4 Método de descomposición LU
La factorización LU
En este caso, el sistema de ecuaciones dado por (44) podría representarse en la forma:
Si denominamos z a la matriz columna de n filas resultado del producto de las matrices Ux, tenemos que la ecuación (52) se puede reescribir del siguiente modo:
A partir de las ecuaciones (52) y (53), es posible plantear un algoritmo para resolver el sistema de ecuaciones empleando dos etapas:
- Primero obtenemos z aplicando el algoritmo de sustitución progresiva en la ecuación (53).
- Posteriormente obtenemos los valores de x aplicando el
algoritmo de sustitución regresiva a la ecuación
Ux = z


tales que cumplan la ecuación (51). Cuando esto es posible, decimos que A tiene una descomposición LU. Se puede ver que las ecuación anterior no determina de forma única a Ly a U. De hecho, para cada i podemos asignar un valor distinto de cero a lii o uii (aunque no ambos). Por ejemplo, una elección simple es fijar lii=1 para

en donde nos hemos valido del hecho de que lis=0 para s >i y usj=0 para s>j. En este proceso, cada paso determina una nueva fila de U y una nueva columna de L. En el paso k, podemos suponer que ya se calcularon las filas


Si especificamos un valor para lkk (o para ukk), a partir de la ecuación (55) es posible determinar un valor para el otro término. Conocidas ukk y lkk y a partir de la ecuación (54) podemos escribir las expresiones para la k-ésima fila (i=k) y para la k-ésima columna (j=k), respectivamente:
Es decir, las ecuaciones (57) se pueden emplear para encontrar los elementos ukj y lik. El algoritmo basado en el análisis anterior se denomina factorización de Doolittle cuando se toman los términos lii = 1 para

Una implementación en pseudocódigo del algoritmo para llevar a cabo la factorización LU se muestra en la figura (11).
Es interesante notar que los bucles que permiten el cómputo de la k-ésima fila de U y de la k-ésima columna de L se pueden llevar a cabo en paralelo, es decir, pueden evaluarse simultáneamente sobre dos procesadores, lo que redunda en un importante ahorro del tiempo de cálculo.
Ejemplo: Encuentre las factorizaciones de Doolittle y Crout de la matriz:

La factorización de Doolittle es, a partir del algoritmo:

En vez de calcular la factorización de Crout directamente, la podemos obtener a partir de la factorización de Doolittle que acabamos de ver. Efectivamente, si tenemos en cuenta que la matriz A es simétrica, es posible comprobar que se cumple la relación:
A = LU = UTLT
por lo que la factorización de Crout resulta ser:

CODIGO MATHLAB:
function [l,u]=LUdoolitle(a)
n=length(a);
l=a*0; u=a*0;
for k=1:n
u(k,k:n)=a(k,k:n)-l(k,1:k-1)*u(1:k-1,k:n);
l(k,k)=1;
l(k+1:n,k)=(a(k+1:n,k)-l(k+1:n,1:k-1)*u(1:k-1,k))/u(k,k);
end
Comentarios
Publicar un comentario