Está en la página 1de 4

Descomposición LU con pivoteo parcial aplicado a

la solución de una matriz de 3x3

V.R.Beltran G.Resendiz B.C. Hernandez


Centro de Investigación en Materiales Centro de Investigación en Materiales Departamento de Ingeniería y
Avanzados, S.C., Avanzados, S.C., Química de Materiales, Centro
Miguel de Cervantes 120, Chihuahua, Miguel de Cervantes 120, Chihuahua, de Investigación en Materiales
Chih., 31136, México Chih., 31136, México Avanzados, S.C.,
victor.beltran@cimav.edu. gerardo.resendiz@cimav.e Miguel de Cervantes
mx du.mx 120,Chihuahua, Chih., 31136,
México.
blanca.hernandez@cimav.ed
u.mx

RESUMEN
En el último siglo, el desarrollo de métodos numéricos para resolver problemas de valores iniciales de ecuaciones cuya solución no es factible por
métodos convencionales, y además éstas pudieran poseer múltiples soluciones, ha facilitado en gran medida el trabajo de muchos científicos. La
intención de este trabajo es dar un breve resumen de lo útil que son los métodos numéricos para la solución de ecuaciones no lineales. Por lo
general, para realizar el cálculo de la solución algebraica de ecuaciones lineales se utiliza la eliminación gaussiana con pivote parcial (EGPP), sin
embargo cuando el número de cálculos incrementa, también aumenta el uso de recursos computacionales En este caso en particular se realiza una
discusión tanto computacional como teórica, que se centra en un núcleo de álgebra lineal ampliamente utilizada para resolver sistemas lineales,
donde la descomposición LU con pivoteo parcial (PLU), por sus siglas en inglés, es uno de los más utilizados en ecuaciones no lineales, con la
característica de tiempo resuelto (solución en tiempo real, conforme varía la respuesta dada por el equipo). El artículo se enfoca en la investigación
del método PLU para la solución de ecuaciones no lineales, incluida la solución numérica en un campo práctico, desde un ejemplo sencillo como
una matriz de 3x3 hasta instancias más complejas como dinámica, química, economía, astrofísica, análisis térmicos, solo por mencionar algunos.
Incluye una discusión sobre cuáles son las ventajas y desventajas del método sobre otros métodos, la precisión y estabilidad del método y cómo se
puede aproximar numéricamente el orden de varios métodos, el análisis se realizó con el desarrollo de un código de programación, para la
resolución de ecuaciones algebraicas, mediante el método PLU, se usó en el lenguaje usado para Scilab.

Palabras clave: LU, Método numérico, pivoteo parcial, Ecuaciones no lineales.

INTRODUCCIÓN áreas de la ciencia e ingeniería [1-4].


Las ecuaciones diferenciales (lineales y no lineales), son muy Este método se caracteriza por factorizar una matriz cuadrada
útiles en ciencia e ingeniería como problemas modelo. base (A) en otras dos matrices triangulares (LU), representada
considerando que dichos modelos matemáticos están presentes de la forma A=LU , las cuales se resuelven por procesos de
en campos como la economía, la biología, los negocios, las sustitución (uno hacia adelante y otra en reversa), parecido al
ciencias de la salud y las ciencias sociales, entre otros, los método de eliminación de Gauss, con la diferencia que los
matemáticos han desarrollado muchos métodos para resolver factores de eliminación son almacenados en la denominada
ecuaciones diferenciales, aunado a esto el desarrollo de matriz L, mientras que los resultados de la sustitución se
algoritmos computacionales, han venido a simplificar el colocan en la matriz U.
trabajo necesario para llegar a la resolución de dichas En caso que se quiera resolver una matriz de la forma Ax=b,
ecuaciones. Un ejemplo de esto pudiera ser que al resolver una donde la matriz A se mantenga constante y lo unico que
ecuación diferencial numéricamente (presente en nuestro cambie sea la matriz de términos independientes b la
fenómeno a estudiar), pueda darse el caso de necesitar una factorización LU presenta una gran ventaja, ya que permite
ecuación diferencial con una condición inicial o condiciones de transformarla a una forma LUx=b, con lo cual el problema a
contorno y, en consecuencia, la ecuación diferencial, con una se reduce en 2 sistemas de ecuaciones, facilitando el cálculo,
condición inicial ( problema de valor inicial IVP) y una con ya que permite resolver el problema de manera iterativa al solo
condiciones de contorno (problema de valor de contorno BVP).
ir ingresando valores en b .
En este artículo describiremos algunos métodos para resolver
Sin embargo dentro de las desventajas que se encuentran, es
un problema de valor inicial.
La factorización LU es un método numérico importante para la que la matriz A necesita estar ordenada de forma que los
resolución de sistemas de ecuaciones lineales dentro de las elementos de las diagonales sean pivotes, ya que en caso
contrario no se podrá realizar. renmax = i
Para poder solucionar esta situación se transforma el método
for z=i:n
LU a PLU ,donde la Prepresenta una matriz de permutación
la cual es obtenida después de desarrollar un método de if maximo < abs(U(z,i)) then
pivoteo para poder ordenar la matriz A y posteriormente
maximo = abs(U(z,i))
efectuar la factorización LU [5].
De esta forma la técnica PLU puede ser utilizado para poder renmax = z
resolver cualquier matriz cuadrada, de forma iterativa y a su end
vez designar los términos de la matriz b , con lo cual se pueden
end
resolver sistemas que cambian respecto del tiempo.
for j=1:n
METODOLOGIA Y PROCESOS DE temp = U(renmax,j)
DESARROLLO U(renmax,j) = U(i,j)
Considerando el sistema: U(i,j) = temp
(1) Ax=b tempP = P(renmax,j)
donde A es una matriz cuadrada cuyo determinante es diferente P(renmax,j)= P(i,j)
de 0 y b es una matriz de resultados.
P(i,j)=tempP
Se realiza la descomposición de A a través de
tempL = L(renmax,j)
(2) PA=LU
L(renmax,j)= L(i,j)
siendo P una matriz identidad de permutaciones, L una matriz
triangular inferior y U una matriz triangular superior. L(i,j)=tempL

(2.1) A=P´LU end

sustituyendo (2.1) en (1) for k=i+1:n

(3) P´LUx=b fac=U(k,i)/U(i,i)

descomponiendo la ecuación (3): L(k,i)=fac

(3.1) LUx=Pb for l=1:n

(3.1.1) z=Pb U(k,l)=U(k,l)-fac*U(i,l)

(3.1.2) Ux=y end

(3.1.3) Ly=z end

Resolviendo las ecuaciones en manera secuencial las end


ecuaciones (3,1.1), (3.1.2) y (3.1.3) se llega a la solución del B=eye(n,m)
sistema el cual puede resolver el sistema cambiante en el
tiempo [6] L=L+B
endfunction

PROGRAMACIÓN DEL MÉTODO Se programó otra función que ejecute la solución del sistema
de ecuaciones en forma de cascada, que realice la operación
//Metodo PLU descrita en la ecuación (3.1.3)
clear function [b]=Cascada(n, b, L)
clc for i=1:n//Cascada
Se programó una función que realiza el pivoteo en las b(i)=b(i)/L(i,i)
diferentes posiciones de la matriz A, realiza las eliminaciones
y guarda realiza las operaciones y movimientos en las matrices L(i,i)=L(i,i)/L(i,i)
U, L y P. for j=i+1:n
function [U, L, P]=omatriz(U, n, m) x=L(j,i)/L(i,i)
L=zeros(n,m) b(j)=b(j)-x*b(i)
P=eye(n,m) L(j,i)=L(j,i)-x*L(i,i)
for i=1:n-1 end
maximo = abs(U(i,i)) end
endfunction resultados de aplicar la función en que se obtienen las matrices
P, L y U antes de que se soliciten las matrices de resultados de
Se programó una tercer función que ejecute la solución del
forma que verifique el adecuado funcionamiento.
sistema de ecuaciones en forma de cascada inversa, que realice
la operación descrita en la ecuación (3.1.2). U=A
function [r, U]=Cascadainversa(n, U, r) [U,L,P]=omatriz(U,n,m)
for i=n:-1:1 disp("P",P)
r(i)=r(i)/U(i,i) disp("L",L)
U(i,i)=U(i,i)/U(i,i) disp("U",U)
for j=i-1: -1: 1 Una vez que se tienen las matrices L, P y U se solicita al
usuario la cantidad de matrices de resultados para que se
x=U(j,i)/U(i,i)
resuelva, se solicita que la matriz de resultados tenga el tamaño
r(j)=r(j)-x*r(i) adecuado.
U(j,i)=U(j,i)-x*U(i,i) t = input("Introduce el numero de vectores de resultados que
quieres resolver: ")
end
for i=1:t
end
b = input("Ingresa el vector de resultados: ")
endfunction
s=length(b)
Una vez establecidas las funciones que ejecutaran las
operaciones para la solución del sistema de ecuaciones a través if s<>n then
del método PLU, se elaboró el programa principal para que el
disp("Error:vector de resultados incorrecto, Ingresa otro
usuario resuelva el sistema de ecuaciones. En un inicio
vector")
estableciendo las condiciones para que el usuario ingrese una
matriz que se pueda resolver cumpliendo las condiciones de else
que sea una matriz cuadrada y cuyo determinante sea diferente
z = P*b
de 0.
[y]=Cascada(n,z,L)
//Programa Principal
disp("y",y)
salir=0
[x,U]=Cascadainversa(n,U,y)
while salir==0
disp("x",x)
A = input("Ingresa la matriz a calcular: ")
end
n=size(A,1)
end
m=size(A,2)
if n<>m then EJEMPLO Y RESULTADOS
salir=0 Se presenta el siguiente sistema:

disp("Error:Matriz no cuadrada o vector de resultados 2 x2 +3 x 3=7


incorrecto, Ingresa otra matriz")
2 x1 −4 x 2 +7 x 3=9
else
x 1−2 x2 +5 x 3=−6
de=det(A)
if de==0 then Utilizando Ax=b , y suponiendo que PA=LU .En la Figura
1 se muestra la interfaz observada por el usuario, el cual debe
salir=0 introducir los coeficientes de las ecuaciones
disp("El determinante de la matriz es 0, ingresa otra
matriz")
else
salir=1 Figura 1. Consola de Scilab, donde se muestra la matriz que se
ingresó como ejemplo.
end
end En Figura 2 se puede observar que el usuario recibe la
instrucción de ingresar el número de vectores que quiere
end resolver, esto es inherente al número de respuestas otorgadas
Se programó una sección para que el programa muestre los por el equipo en cuestión, para este caso se tiene un solo vector
de respuesta, también se puede observar que el programa
muestra los resultados al usuario de una manera estructurada,
tipo matriz extendida.

Figura 2. Consola de Scilab en la cual se presenta el vector de


términos independientes, el número de iteraciones a resolver y
la matriz de resultados.

Dado que la eliminación se hace hacia ambos lados de la


matriz, esto puede ser considerado como un cuello de botella
de acuerdo a Quintana y colaboradores [3], esto debido a que el
código programado realiza más operaciones, esto denota una
desventaja ya que para sistemas de n variables, pudiera
minimizar los recurso disponibles para otros procesos que
requieran dichos recursos, es por ello que se debe trabajar en el
desarrollo o la aplicación de métodos numéricos más eficientes
en ese sentido.

CONCLUSIONES
Podemos decir fácilmente que los métodos numéricos son muy
importantes para las matemáticas. Las ecuaciones diferenciales
tienen un papel vital en el área de las ciencias aplicadas y la
ingeniería. Una amplia variedad de problemas surge de la
dinámica de poblaciones, la astrofísica, la dinámica de fluidos,
la biología de modelado, la ingeniería y otras áreas. Aunque
algunas de estas ecuaciones se pueden resolver analíticamente,
los métodos numéricos también son muy útiles y necesarios si
no se puede obtener una solución exacta analíticamente. Para
este tipo de problemas, los métodos numéricos son las únicas
opciones para aproximar la solución. Son herramientas muy
importantes y poderosas para resolver ecuaciones diferenciales
ordinarias lineales o no lineales y también para sistemas de
ecuaciones diferenciales.

REFERENCIAS
[1] Pan, C. T. (2000). On the existence and computation of rank-
revealing LU factorizations. Linear Algebra and Its
Applications, 316(1–3), 199–222.
https://doi.org/10.1016/S0024-3795(00)00120-8
[2] Jameson, A., & Turkel, E. (1981). Implicit schemes and $LU$
decompositions. Mathematics of Computation, 37(156), 385–385.
https://doi.org/10.1090/s0025-5718-1981-0628702-9
[3] Quintana-Ortí, E. S., & Van De Geijn, R. A. (2008). Updating an
LU factorization with pivoting. ACM Transactions on
Mathematical Software, 35(2), 1–16.
https://doi.org/10.1145/1377612.1377615
[4] Fu, C., Jiao, X., & Yang, T. (1998). Efficient sparse LU
factorization with partial pivoting on distributed memory
architectures. IEEE Transactions on Parallel and Distributed
Systems, 9(2), 109–125. https://doi.org/10.1109/71.663864
[5] Subocz, J. (1969). The Simplex Method of Programming Using
LU Decomposition. Comm. ACM, (5), 333–336.
[6] I., S., & S., G. (2007). Álgebra lineal.

También podría gustarte