Sunteți pe pagina 1din 4

Factorización Lu

Use los algoritmos aprendidos en este tema, para resolver los siguientes sistemas de ecuaciones,
luego como práctica compruebe los algoritmos en MATLAB, diseñando y explicando el código a
detalle para factorización LU.

1. Utilice factorización LU para resolver los siguientes sistemas:

8𝑥1 + 4𝑥2 − 𝑥3 = 11
−2𝑥1 + 5𝑥2 + 𝑥3 = 4
2𝑥1 − 𝑥2 + 6𝑥3 = 7

2𝑥1 − 6𝑥2 − 𝑥3 = −38


−3𝑥1 − 𝑥2 + 7𝑥3 = −34
−8𝑥1 + 𝑥2 − 2𝑥3 = −20

10𝑥1 + 2𝑥2 − 𝑥3 = 27
−3𝑥1 − 6𝑥2 − 2𝑥3 = −61.5
𝑥1 + 𝑥2 + 5𝑥3 = −21.5

Código MatLab
function [L,U]=slu(A)
[n,n] = size(A);
for k = 1:n
if abs(A(k, k)) < sqrt(eps)
disp(['Pivote muy pequeño encontrado en columna' int2str(k) '.'])
end
L(k,k) = 1;
for i = k+1:n
L(i,k) = A(i,k) / A(k,k);
for j = k+1:n
A(i,j) = A(i,j) - L(i,k)*A(k,j);
end
end
for j = k:n
U(k,j) = A(k,j);
end
end
Explicación

El programa consiste en facilitar al usuario el uso del método LU para factorizar, su función consiste
en crear una matriz L y una matriz U, para después obtener otra matriz llamada Z y finalmente los
valores de cada una de las incógnitas del sistema de ecuaciones por medio de operaciones ya
establecidas en MatLab. Por teoría se conoce que la matriz L contiene unos en la diagonal.
Comenzamos definiendo la matriz A que vamos a factorizar e inicializando variables.
En primer lugar veremos cómo implementar los sumatorios mediante un producto escalar de dos
vectores. Los sumatorios que aparecen en el método al hallar U(k,j) debemos implementar el
sumatorio de L(k,r)*U(r,j) donde r=1, 2, ..., k-1.
Es decir, debemos hallar L(k,1)*U(1,j) + L(k,2)*U(2,j) + ... + L(k, k-1)*U(k-1 ,j)
Este sumatorio puede vectorizarse como un producto escalar del vector fila L(k, 1:k-1) por el vector
columna U(1:k-1 ,j).
De forma similar, al hallar L(i,k) debemos implementar el sumatorio de L(i,r)*U(r,k) donde r=1, 2, ...,
k-1.
Este sumatorio puede vectorizarse como el producto escalar L(i , 1:k-1)*U(1:k-1 , k)
Ahora implementamos el caso k=1, ya que 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.
Primer sistema de ecuaciones

Segundo sistema de ecuaciones


Tercer sistema de ecuaciones

S-ar putea să vă placă și