0% encontró este documento útil (0 votos)
18 vistas9 páginas

Método L-U para resolver ecuaciones lineales

Este documento presenta un estudio sobre el método de descomposición L-U para resolver sistemas de ecuaciones lineales, utilizando Python y la biblioteca NumPy para su implementación. Se detalla el proceso de descomposición de matrices en componentes triangulares y se incluye un programa que ilustra la aplicación práctica del algoritmo. Además, se presentan resultados de varios sistemas de ecuaciones resueltos mediante este método.

Cargado por

Expeckting rock
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas9 páginas

Método L-U para resolver ecuaciones lineales

Este documento presenta un estudio sobre el método de descomposición L-U para resolver sistemas de ecuaciones lineales, utilizando Python y la biblioteca NumPy para su implementación. Se detalla el proceso de descomposición de matrices en componentes triangulares y se incluye un programa que ilustra la aplicación práctica del algoritmo. Además, se presentan resultados de varios sistemas de ecuaciones resueltos mediante este método.

Cargado por

Expeckting rock
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Benemérita Universidad Autónoma de

Puebla
FACULTAD C IENCIAS DE LA E LECTR ÓNICA
M AESTR ÍA EN C IENCIAS DE LA E LECTR ÓNICA , O PCI ÓN EN
AUTOMATIZACI ÓN

Tarea de cómputo 2: Resolver sistemas de ecuaciones lineales por el


método de descomposición L-U

Materia:
Modelado y Simulado

Docente:
Dr. Zemliak Evdokimov Alexandre Mikhailovich

Autor:
Diego Ruiz Sánchez de la Vega

28 de Agosto 2023
Resumen
En el presente trabajo, se ha explorado en profundidad el método de
descomposición L-U como una poderosa técnica para resolver sistemas de
ecuaciones lineales, combinando conceptos matemáticos esenciales con la
implementación práctica en el lenguaje de programación Python versión 3-11.
Mediante la biblioteca numérica NumPy, podemos realizar operaciones matriciales
de manera eficiente y precisa.

Objetivos
Generales
Diseñar un programa para el algoritmo de L-U y resolver unos sistemas de
ecuaciones lineales.

Especı́ficos

• Preparar una implementación de software del algoritmo de L-U en un


lenguaje de alto nivel.

• Preparar un diagrama de flujo que represente el algoritmo de L-U.

1
1 Contenido
1.1 Base Teórica
La resolución de sistemas de ecuaciones lineales es una tarea fundamental en una
amplia gama de disciplinas cientı́ficas y de ingenierı́a. Estos sistemas modelan
relaciones lineales entre variables y proporcionan información crucial para la toma
de decisiones y la comprensión de fenómenos naturales y procesos tecnológicos.
El Método de Descomposición L-U, también conocido como Descomposición LU,
emerge como una herramienta poderosa en este contexto, permitiendo una
resolución numérica eficiente y estructuralmente informativa de sistemas lineales
complejos.
La Descomposición L-U se basa en la idea fundamental de descomponer una
matriz de coeficientes A dada por:
 
a11 a12 ... a1n
a21 a22 ... a2n 
 
 .. .. . . .. 
 . . . . 
an1 an2 ... ann
en dos matrices triangulares: una matriz inferior (L) y una matriz superior (U).
Una matriz L de m x n es triangular inferior si sus entradas satisfacen li j = 0
para i < j. Una matriz U de m x n es triangular superior si sus entradas
satisfacen ui j = 0 para i > j [Sauer, 2013]. Dentro de la representación de las
matrices triangulares, ya sea superior o inferior, existen distintos métodos que
modifican ligeramente el método, la usada en este trabajo es modificación dada por
el método de Crout, en el cual la diagonal de la matriz U se propone como una
diagonal de unos.
El desarrollo del método es el siguiente, se tiene un sistema de ecuaciones
lineales dados por:
B = AX (1)
La matriz A será descompuesta en dos matrices, una matriz inferior L y una
matriz superior U de la siguiente forma:
A = LU (2)
Supongamos una matriz Y que cumple con la ecuación Y = UX, si sustituimos
esta Y en la ecuación (1), obtendremos las dos ecuaciones en las que se basa este
algoritmo:
LY = B ; UX = Y (3)

O de forma reducida
Y = AX (4)
La representación del algoritmo LU es dividida en dos diagramas de flujo, el
primero representa el proceso para la obtención de las matrices L y U, y el segundo
diagrama la obtención del vector solución x usando el proceso anterior, en resumen
tendremos los siguientes diagramas de flujo.

2
3
1.2 Programa en lenguaje de alto nivel
El programa siguiente fue realizado en python 3.11 para realizar el algoritmo L-U,
se utilizo la librerı́a NumPy para el uso mas eficiente de matrices en el programa:

## Algoritmo LU para solucion de un sistema de ecuaciones lineales

import numpy as np

def get_sub(x): # Funcoin para expresar subindices


normal = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456
sub_s = "CDGQwZw"

4
res = [Link](''.join(normal), ''.join(sub_s))
return [Link](res)

def calcularLU(): # Calcular la matriz superior MU y la inferior ML


for i in range(0, n):
for j in range(0, n):
if i>=j:
ML[i][j] = A[i][j]
k = 0
while k<=j-1:
ML[i][j] = ML[i][j]-ML[i][k]*MU[k][j]
k = k+1
else:
MU[i][j] = A[i][j]
k = 0
while k<=i-1:
MU[i][j] = MU[i][j]-ML[i][k]*MU[k][j]
k = k+1
MU[i][j] = MU[i][j]/ML[i][i]

def calcularY(): # Calculo de la matriz Y a partir de Y = L B


for i in range(0, n):
y[i]=B[i]
k = 0
while k<=i-1:
y[i]=y[i]-ML[i][k]*y[k]
k=k+1
y[i] = y[i]/ML[i][i]

def calcularX(): ## Calcular X a partir de UX = Y


for i in range(n-1, -1, -1):
k = 0
x[i] = y[i]
while k<n-i-1:
x[i]=x[i]-MU[i][n-k-1]*x[n-k-1]
k=k+1

def imprimirResultados():
for i in range(0, n):
print("x{}".format(get_sub(str(i+1))), " = ", x[i])

A = [Link]([[10,-2,2,0], # Introduce la matriz A


[-1,11,-1,3],
[2,-1,10,-1],

5
[0,3,-1,8]])

B = [Link]([6,25,-11,15])

n = len(A) # Tama~
no del sistema

# Inicializar vectores
y = [Link](n)
x = [Link](n)

ML = [Link]((n,n))
MU = [Link](n)

print("Resolviendo sistema de ecuaciones...")


calcularLU()
calcularY()
calcularX()
imprimirResultados()

6
1.3 Resultados
El programa anterior con el algoritmo LU se utilizo para la solución de los
siguientes sistemas:
1. Sistema 1
 
2x1 + x2 + x3 = 7
 −2x1 + x2 + x3 = 3 
−x1 + 4x2 + x3 = 10
Con resultado igual a:

2. Sistema 2
 
x1 − x2 + x3 − x4 = −5

 x1 + x2 + x3 + x4 = 7 

 (1/4)x1 + (1/2)x2 + x3 + 2x4 = 7 
(1/16)x1 + (1/4)x2 + x3 + 4x4 = 10
Con resultado igual a:

3. Sistema 3
 
x1 + x2 + 3x4 = 4
 2x1 + x2 − x3 + x4 = 1 
 
3x1 − x2 − x3 + 2x4 = −3
−x1 + 2x2 + 2x3 − x4 = 4
Con resultado igual a:

7
4. Sistema 4
 
10x1 − 2x2 + 2x3 = 6
−x1 + 11x2 − x3 + 3x4 = 25
 
2x1 − x2 + 10x3 − x4 = −11
3x2 − x3 + 8x4 = 15
Con resultado igual a:

1.4 Conclusiones del trabajo


En el transcurso de esta tarea, hemos explorado en profundidad el Método de
Descomposición L-U como una poderosa técnica para resolver sistemas de
ecuaciones lineales, combinando conceptos matemáticos esenciales con la
implementación práctica en el lenguaje de programación Python.
La Descomposición L-U, también conocida como Descomposición LU, se basa
en la idea de factorizar una matriz de coeficientes en dos matrices triangulares: una
inferior (L) y una superior (U). A través de esta factorización, podemos reescribir
un sistema de ecuaciones lineales en una forma más manejable, lo que facilita la
obtención de soluciones numéricas precisas y eficientes.

Referencias
[1] [Link], ”Análisis Numérico”, Pearson, 2013.

También podría gustarte