Está en la página 1de 10

ESCUELA SUPERIOR POLITÉCNICA DE

CHIMBORAZO
FACULTAD DE MECÁNICA
CARRERA DE INGENIERÍA INDUSTRIAL
MÉTODOS NUMÉRICOS
TRABAJO DE INVESTIGACIÓN

Tema:
MÉTODOS DE DOOLITLE Y CHOLESKY

Integrantes:
María José Guamanquispe
Carlos Paca
Mateo Moreno
Francisco Villacis
Docente:
Ing. German Moreno

Periodo académico:
SEPTIEMBRE 2019 – FEBRERO 2020
MÉTODO DE DOOLITTLE
En álgebra lineal, se conoce por factorización LU de matrices al proceso que a partir de una
matriz cuadrada A halla dos matrices triangulares inferior y superior, tal que A=LUA=LU,
donde es la matriz triangular inferior (L de lower) y U
es la matriz triangular superior (U de upper). Existen muchos métodos numéricos para obtener
estas matrices L y U, y su obtención tiene aplicaciones en la resolución de sistemas lineales,
cálculo de determinantes y en el cálculo de matrices inversas. En este artículo estudiamos el
método de Doolittle para obtener estas matrices. Este método tiene la particularidad que hace
que la diagonal de la matriz L sea unitaria.

DESCRIPCIÓN DEL MÉTODO


El resultado del método serán dos matrices triangulares tales que A=LUA=LU . La matriz
L será triangular inferior y de diagonal unitaria. La matriz U será triangular superior. Al ser
las matrices triangulares, podemos calcular cada elemento de la matriz A mediante

Ejemplo.
Factorización LU de matrices cuadradas Antes de comenzar a ver este tema convendría hacer
un repaso de las nociones de matrices:
 Operaciones con matrices (Suma de matrices, producto por un escalar).
 Matrices cuadradas, matriz inversa de una matriz.
 Matriz fila, matriz columna.
 Matriz diagonal, matriz triangular.
En concreto, sobre este último aspecto tenemos:
a) Matriz diagonal:

b) Matriz triangular superior (Upper triangular):

c) Matriz triangular inferior (Lower triangular):


En los tres casos citados el determinante de la matriz es el producto de los elementos
de la diagonal.
 Matriz estrictamente dominante diagonalmente.
Se dice que una matriz es estrictamente dominante diagonalmente si cumple:

Las matrices estrictamente dominantes diagonalmente son no singulares (su


determinante es no nulo), además pueden resolverse por eliminación gaussiana sin
intercambio de filas y por tanto pueden siempre factorizarse en la forma A = L.U.
Ejemplo de matriz estrictamente dominante diagonalmente:

La factorización L.U de una matriz cuadrada tiene la siguiente ventaja:


Al operar con un sistema en la forma A . x = b, si expresamos A = L . U tendremos:
L.U.x=b
Y ahora podemos poner:
U . x = L -1 . b
Y teniendo en cuenta que U es triangular y L -1 también es triangular, la solución del
sistema se limita a:

La factorización L.U de una matriz cuadrada tiene la siguiente ventaja:


Al operar con un sistema en la forma A . x = b, si expresamos A = L . U tendremos:
L.U.x=b
Y ahora podemos poner:
U . x = L -1 . b
Y teniendo en cuenta que U es triangular y L -1 también es triangular, la solución del
sistema se limita a:
Es decir, se resuelven dos sistemas triangulares (más simple y exacto que resolver uno
no triangular): en a) se obtiene y, finalmente en b) se obtiene x.
La factorización LU de una matriz cuadrada A se podría hacer por el método de Gauss
sin embargo hay otros métodos como el de Doolittle, el de Crout, y el de Cholesky.

Observad arriba que conocida A, tendríamos 16 ecuaciones con 20


incógnitas: lij, uij, sin embargo, nosotros podemos dar cualquier valor a 4 de
ellas. Así hay dos métodos que se suelen utilizar: a) Método de Doolittle: se
toman los cuatro elementos de la diagonal de L como ‘1’, lii=1 . b) Método de
Crout: se toman los cuatro elementos de la diagonal de Ucomo ‘1’, uii=1.

Nosotros aquí seguiremos el método de Doolittle, con un ejemplo. Sea dada A,


entonces es sencillo hallar L y U, sin más que resolver un sistema:
 u11 u12 u13 u14 
0 u u u 
U   22 23 24 

0 0 u33 u34 
 
0 0 0 u44 
 
 
1 0 0 0  6 2 1 1

   
l 1 0 0  2 4 1 0
L   21  =A
 l31 l32 1 0  1 1 4 1
l l l 1   1 0 1 3 
 41 42 43   

ALGORITMO DE FACTORIZACIÓN DE DOOLITTLE.

Implementación del código en Matlab


1. En el método de Doolitte la matriz L contiene unos en la diagonal. Comenzamos definiendo la
matriz A que vamos a factorizar e inicializando variables.
A=[[6,16,21,33] ; [2,20,18,16] ; [3,18,19,21] ; [1,2,3,4]];
n=length(A);
% Inicializamos las matrices U y L como matrices cuadradas de orden n
% formadas por ceros.
U=zeros(n);
L=zeros(n);
2. Ahora implementamos el caso k=1, ya que en el algoritmo explicado en clase aparecen
sumatorios en los que el índice r recorre desde 1 hasta k-1. Cuando k=1, se entiende que este
sumatorio no debe realizarse, y por esto en Matlab debemos hacer aparte el caso k=1. Observe
como se asigna la primera fila de U y la primera columna de L mediante vectores.

U(1, 1:n)=A(1, 1:n);


L(1,1)=1;
L(2:n , 1)=( A(2:n , 1) )/U(1,1);

3. En los elementos que requieren calcular un sumatorio, estos se han calculado antes por claridad,
aunque podría haberse incluido el sumatorio en la misma linea.

for k=2:n
for j=k:n
suma=L(k , 1:k-1)*U(1:k-1 , j);
U(k,j)=A(k,j)-suma;
end
L(k,k)=1;
for i=k+1:n
suma=L(i , 1:k-1)*U(1:k-1 , k);
L(i,k)=(A(i,k)-suma) / U(k,k);
end
end

4. Mostramos el resultado y comprobamos la factorización A=L*U.


disp('Resultado :')
disp('L =');
disp(L);
disp('U =');
disp(U);
disp('Comprobación :')
disp('A-L*U =');
disp(A-L*U);
MÉTODO DE CHOLESKY
OBJETIVO MÉTODO DE CHOLESKY

El objetivo del método es encontrar una solución a un sistema de ecuaciones lineales, basado en
la factorización LU de la matriz de coeficientes relacionada al sistema.
GENERALIDADES
Para este método de factorización directa de matrices, se utiliza como fundamento que los valores de la
diagonal de la matriz U son iguales a los de la matriz L, ósea Ukk=Lkk.

El procedimiento a seguir para la aplicación del método es el siguiente:

Se debe construir una matriz de coeficientes y el vector con los términos independientes,
correspondientes al sistema, y se toman como valores iniciales para poder calcular la factorización.
Tomando la matriz de coeficientes, y bajo el fundamento principal del método, se procese al cálculo de
las matrices L y U, correspondientes a la factorización de A.
Una vez realizada la factorización, se toma la matriz de la factorización U y el vector x y se procede a
calcular el vector z.
Ahora con el vector z, el vector de términos independientes y la matriz L de la factorización, se procede
a resolver el sistema Lz=b
Una matriz cuadrada triangular superior: Matriz cuadrada que sólo tiene ceros debajo de
la diagonal principal.
Una matriz cuadrada triangular inferior: Matriz que sólo tiene ceros por encima de la
diagonal principal.
La utilidad de la descomposición de cholesky sirve para resolver un sistema de ecuaciones .Se
puede comprobar que, si A es una matriz simétrica y definida positiva, admite una descomposición en
la forma LU con U = LT , es decir,

A = LLT.

EJEMPLO

𝑋1 + 2𝑋2 + 3𝑋3 = 0
2𝑋1 + 8𝑋2 + 4𝑋3 = 1

3𝑋1 + 4𝑋2 + 11𝑋3 = 0

Por lo tanto tenemos que:

𝐴 = 𝐿𝑈 = 𝐿𝐿𝑡

1 2 3 𝑙11 0 0 𝑙11 𝑙21 𝑙31


[2 8 4 ] = [𝑙21 𝑙12 0 ][ 0 𝑙22 𝑙32 ]
3 4 11 𝑙31 𝑙32 𝑙33 0 0 𝑙33

1 2 3 𝑙11 2 𝑙11 𝑙21 𝑙11 𝑙31


[2 8 4 ] = [𝑙21 𝑙11 𝑙21 2 + 𝑙22 2 𝑙21 𝑙31 + 𝑙22 𝑙32 ]
3 4 11 𝑙31 𝑙11 𝑙31 𝑙21 + 𝑙32 𝑙22 𝑙31 2 + 𝑙32 2 + 𝑙33 2

1 2 3 1 0 0 1 2 3
[2 8 4 ] = [2 2 0] [0 2 −1]
3 4 11 3 −1 1 0 0 1

L*Y=b

1 0 0 𝑦1 0
[2 2 𝑦
0] [ 2 ] = [1]
3 −1 1 𝑦3 0

𝑦1 = 0

2𝑦1 + 2𝑦2 = 1

3𝑦1 − 𝑦2 +𝑦3 = 0

Despejando obtenemos:
𝑦1 = 0;

1
𝑦2 = ;
2

1
𝑦3 = ;
2

𝐿𝑡 ∗ 𝑋 = 𝑌

0
1 2 3 𝑥1 1
[0 2 −1] [𝑥2 ] = 2
0 0 1 𝑥3 1
[2]

𝑥1 − 2𝑥2 +3𝑥3 = 0

1
2𝑥1 − 𝑥2 =
2

1
𝑥3 =
2

Despejando obtenemos:

5
𝑥1 = − ;
2

1
𝑥2 = ;
2

1
𝑥3 = ;
2
Implementación del código en Matlab
% FACTORIZACION lU CHOLESKY
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la maquina
fprintf(' FACTORIZACION LU CHOLESKY\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
%input es un comando de solicitud de entrada de datos del usuario.
A=input('Ingrese la matriz A = \n');
b=input('\nIngrese el vector b, correspondite a los terminos independientes
b=\n');
% Las matrices A y b deben ser ingresadas entre corchetes separando las
%columnas mediante coma ',' y las filas mediante punto y coma ';'.
[n,m]=size(A);
C=[A,b];
% la matriz C, representa la forma de la matriz aumentada [Ab]
disp(C)
if n==m
for k=1:n
%La instrucción iterativa for permite repetir estamentos a un
%numero específico de veces
suma1=0;
for p=1:k-1
suma1=suma1+L(k,p)*u(p,k);
end
L(k,k)=sqrt(A(k,k)-suma1);
u(k,k)=L(k,k); %princio del metodo
for i=k+1:n
suma2=0;
for q=1:k-1
suma2=suma2+L(i,q)*u(q,k);
end
L(i,k)=(A(i,k)-suma2)/L(k,k); %obtencion de la matriz L
end
for j=k+1:n
suma3=0;
for r=1:k-1
suma3=suma3+L(k,r)*u(r,j);
end
u(k,j)=(A(k,j)-suma3)/L(k,k); %obtencion de la matriz U
end
end
producto=det(L)*det(u) %calculo del determinante
if producto~=0
for i=1:n
suma=0;
for p=1:i-1
suma=suma+L(i,p)*z(p);
end
z(i)=(b(i)-suma)/L(i,i); %obtencion del vector Z
end
for i=n:-1:1
suma=0;
for p=i+1:n
suma = suma+u(i,p)*x(p);
end
x(i)=(z(i)-suma)/u(i,i); % solcion, calculos de las variables
end
else
fprintf('\nEl determinante es igual a cero, por lo tanto el sistema tiene
infinita o ninguna solucion\n')
end
end
fprintf('\n Matriz Ab:\n')
disp(C)
fprintf('\n Matriz L:\n')
disp(L)
fprintf('\n Matriz U:\n')
disp(u)
fprintf('\n El vector Z:\n')
disp(z)
fprintf('\n\nLa solucion de X1 hasta Xn es:\n');
%a continuacion de utiliza una instruccion for, para mostrar el usuario,
%los resultados de una manera mas ordenada
for i=1:n
xi=x(1,i);
fprintf('\nX%g=',i)
disp(xi);
end

Bibliografía
Nieves, A. (2006). Metoso Numericos Aplicados A La Ingenieria . Mexico: Compalia editorial
continental.

CHAPRA, Steven C., et al. Métodos numéricos para ingenieros. México: McGraw-Hill, 2007.

Federico, D. S. C., & Antonio, N. H. (2014). Métodos numéricos aplicados a la ingeniería. Grupo
Editorial Patria.

También podría gustarte