Está en la página 1de 5

Descomposición LU

López Alva Anthony


Azabache Pinco Luis Marco
Donato Zavaleta Yoel
Villegas Zavala Hector
Huaringa Llaque Abel Humberto

Docente:
Dr. RUBIO MERCEDES, OBIDIO ELISBAN

26 de agosto de 2020

1
1. IDEAS PREVIAS
Sabemos que en un sistema de ecuaciones lineales general de "n"variables podremos
escribirlo de manera matricial como AX = b, nos interesará analizar las matrices de dichos
arreglos para los casos de matrices cuadradas nxn.Como un paso inicial en la solución de
AX = b, buscaremos transformar la matriz A en la multiplicación de dos matrices triangulares
L (matriz triangular inferior) y U (matriz triangular superior), en otras palabras : LU = A

    
1 0 0 .... 0 U11 U12 U13 .... U1n A 11 A 12 A 13 .... A 1n
L
  0 U22 U23 U2n 
1 0 .... 0  .... A A 22 A 23 .... A 2n 
 21   21 
 L 31 L 32 1 .... 0  0 0 U33 .... U3n  =  A 31 A 32 A 33 .... A 3n  (1)
    
 : : : :::: : : : : :::: :   : : : :::: : 
    
 
L n1 L n2 L n3 .... 1 0 0 0 .... a nn A n1 A n2 A n3 .... A nn

Por ejemplo para una matriz de 3x3, tendremos:


    
A 11 A 12 A 13 1 0 0 U11 U12 U13
 A 21 A 22 A 23  = L 21 1 0  0 U22 U23 
A 31 A 32 A 33 L 31 L 32 1 0 0 U33
 
U11 U12 U13
(L 21 )(U11 ) (L 21 )(U12 ) +U22 (L 21 )(U13 ) +U23 
(L 31 )(U11 ) (L 31 )(U12 ) + (L 32 )(U22 ) (L 31 )(U13 ) + (L 32 )(U23 ) +U33

2. DEDUCCIÓN DEL MÉTODO


Para obtener las matrices triangulares a partir de la matriz A transformaremos A en una
matriz triangular superior y una matriz escalar de constante 1 en una matriz triangular infe-
rior, para ésto haremos el siguiente procedimiento:

A 21
Usaremos la primera fila, a la cual multiplicaremos por el término a cada elemento
A 11
de dicha fila y despues le restaremos a cada elemento de la segunda fila, donde luego asig-
A 21
naremos el término a la matriz escalar 1 como se muestra:
A 11
   
A 11 A 12 A 13 .... A 1n 1 0 0 .... 0
 0
 A 22 − ( AA 11
21
)(A 12 ) A 23 − ( AA 11
21
)(A 13 ) .... A 2n − ( AA 21
11
)(A 1n )  A 21
  A 11 1 0 .... 0

 A 31 A 32 A 33 .... A 3n  ...  0 0 1 .... 0
   
   
 : : : :::: :   : : : :::: : 
A n1 A n2 A n3 .... A nn 0 0 0 .... 1

1
Ya hemos reducido el segundo elemento de la primera columna, seguidamente a la pri-
A 31
mera fila la multiplicaremos ésta vez por el término a cada elemento de dicha fila y
A 11
despues le restaremos a cada elemento de la tercera fila:

1 0 0 .... 0
   
A 11 A 12 A 13 .... A 1n
A 21
 0
 A 022 A 023 .... A 2n0  
  A 11 1 0 .... 0
A 32 − ( AA 11 )(A 12 ) A 33 − ( AA 11 .... A 3n − ( AA 31
31 31   A 31
 0 )(A 13 ) )(A )  ...  A 0 1 .... 0
 
11
1n
   11 
 : : : :::: :   : : : :::: : 
A n1 A n2 A n3 .... A nn 0 0 0 .... 1

Asi repetiremos el proceso usando los elementos de la primera fila para anular los ele-
mentos de la columna A 1i para 0 < i < n :
  
1 0 0 .... 0

A 11 A 12 A 13 .... A 1n
 A 21
A 022 A 023 .... A 02n  1 0 .... 0
 0 
   A 11
A 31
A 032 A 033 .... A 03n  ... 
 
 0 0 1 .... 0
  
  A 11
 
 : : : :::: :   :

: : :::: : 

0 A 0n2 A 0n3 .... A 0nn A n1
0 0 .... 1
A 11

Ahora usando la segunda fila, eliminamos transformamos la matriz siguiendo el proce-


dimiento ya mencionado, y asi para todas las columnas obteniendo finalmente :
 
  1 0 0 .... 0
A 11 A 12 A 13 .... A 1n  A 21 1 0 .... 0
 0
 A 022 A 023 .... A 02n   AA 11

A 032


  31 1 .... 0
 0 0 A 0033 .... A 003n  ...  A 11

A 022 
 : : : :::: :   :
   
: : :::: : 
.... A 000 A 0n2 A 00n2
 
0 0 0 nn A n1
.... 1
A 11 A 022 A 0033

Ahora escribimos un código en Python que descomponga matrices cuadradas siguiendo


el procedimiento propuesto :

import numpy as np

print(’-------------------------------------------------------’)
print(’ MÉTODOS NUMÉRICOS’)
print(’ Factorización LU de una matriz cuadrada A nxn.’)
print()
print(’ A continuación introduzca la matriz A, indicando’)
print(’el número n que designa al número de filas y colunas.’)
print()

M =[]

n = int(input(’Ingrese el valor de n: ’))

2
for fi in range(n):
M.append([0]*n)
print(’-------------------------------------------------------’)
print(’-------------------------------------------------------’)
print(’Introdusca los elementos de la matriz A.’)
for f in range(n):
for c in range(n):
M[f][c] = float(input("Elemento [%d,%d]: " %(f+1,c+1)))
print(’-------------------------------------------------------’)
print(’-------------------------------------------------------’)

A = np.array(M)
dim = A.shape
print(’-------------------------------------------------------’)
print(’Tenemos la matriz A de’, dim)
print(A)
eps = np.finfo(float).eps
L = np.zeros(dim)
U = np.zeros(dim)
for j in range(dim[1]):
if abs(A[j][j]) < eps:
print(’error: pivote nulo’)
break
L[j][j] = 1.0
for i in range(j+1,dim[1]):
L[i][j] = A[i][j]/A[j][j]
for k in range(j+1,dim[1]):
A[i][k] = A[i][k] - L[i][j]*A[j][k]
for k in range(j,dim[0]):
U[j][k] = A[j][k]
print(’-------------------------------------------------------’)
print(’Acontinuación se muestra la matriz triangular superior U.’)
print(U)
print(’-------------------------------------------------------’)
print(’Así también tenemos la matriz triangular inferior L.’)
print(L)

Ejemplo: Aplicar descomposición LU en la siguiente matriz:


 
2 4 6
 8 9 −4
−3 5 7

Poniendo los datos de la matriz en el código nos dará el siguiente resultado :

3
-------------------------------------------------------
MÉTODOS NUMÉRICOS
Factorización LU de una matriz cuadrada A nxn.

A continuación introduzca la matriz A, indicando


el número n que designa al número de filas y colunas.

Ingrese el valor de n: 3
-------------------------------------------------------
-------------------------------------------------------
Introdusca los elementos de la matriz A.
Elemento [1,1]: 2
Elemento [1,2]: 4
Elemento [1,3]: 6
Elemento [2,1]: 8
Elemento [2,2]: 9
Elemento [2,3]: -4
Elemento [3,1]: -3
Elemento [3,2]: 5
Elemento [3,3]: 7
-------------------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
Tenemos la matriz A de (3, 3)
[[ 2. 4. 6.]
[ 8. 9. -4.]
[-3. 5. 7.]]
-------------------------------------------------------
Acontinuación se muestra la matriz triangular superior U.
[[ 2. 4. 6.]
[ 0. -7. -28.]
[ 0. 0. -28.]]
-------------------------------------------------------
Así también tenemos la matriz triangular inferior L.
[[ 1. 0. 0. ]
[ 4. 1. 0. ]
[-1.5 -1.57142857 1. ]]

También podría gustarte