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 + 4 − = 11 −2 + 5 + = 4 2 − + 6 = 7 2 − 6 − = −38 −3 − + 7 = −34 −8 + − 2 = −20 10 + 2 − = 27 −3 − 6 − 2 = −61.5 + + 5 = −21.5
Código MatLab function [L,U]=slu(A) function [L,U]=slu(A) [n,n] = size(A); for k for k = 1:n if abs(A(k, if abs(A(k, k)) < sqrt(eps) disp(['Pivote disp(['Pivote muy pequeño encontrado en columna' int2str(k) columna' int2str(k) '.' '.']) ]) end L(k,k) = 1; for i for i = k+1:n L(i,k) = A(i,k) / A(k,k); for j for j = k+1:n A(i,j) = A(i,j) - L(i,k)*A(k,j); end end for j 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 L U 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 esc alar 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