Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Análisis Numérico Grupo: 13 UNAM / FI / DCB(DIE) Semestre 2021-1 Tarea 3 Métodos de Eliminación Gaussiana, Doolittle y Crout (factorización LU) Carlos Rincón, Araiza Alfredo, Sánchez Axel 1. La matriz aumentada obtenida por Eliminación Gaussiana 7 6 7 9 0 0 12 7 −5 11 7 0 0 0 65 12 7 12 2 0 0 0 −147 65 −49 65 (1) 2. Matrices obtenidas por factorización Doolittle L = 1 0 0 0 7 1 0 0 3 1 1 0 5 −1 −65 21 1 U = 1 1 6 2 0 −1 −35 −5 0 0 21 0 0 0 0 −7 (2) 3. Matrices obtenidas por factorización Crout L = 1 0 0 0 7 −1 0 0 3 −1 21 0 5 1 −65 −7 U = 1 1 6 2 0 1 35 5 0 0 1 0 0 0 0 1 (3) 4. El vector solución del sistema de ecuaciones es x = −4 3 2 3 1 3 1 3 (4) AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 5. Descripción de trabajo en equipo Para obtener los resultados de las raíces, nos repartimos equitativamente todo el trabajo, Alfredo se encargó de realizar el programa del método de Crout que posteriormente explicó a los demás integrantes, mientras que Carlos y Axel desarrollaron los ejercicios a mano sobre los métodos de pivoteo, Dollittle y Crout y capturaron la información en LATEX, comparando los resultados con los programas realizados. Al final realizamos una videollamada para verificar que el archivo y su contenido sean los correctos y para aclarar las dudas que surgieron en el proceso. 2 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 6. Desarrollo 3 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 4 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 5 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 6 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 7 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 8 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 9 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 7. Códigos utilizados ’Código Principal’ 1 %Matriz que representa el sistema 2 %de ecuaciones, los coeficientes de 3 %las distintas x 4 A= [1 1 6 2; 7 6 7 9; 3 2 4 1; 5 6 0 8]; 5 % Los valores del lado izquierdo 6 % de las ecuaciones 7 b= [2 0 -1 0]; 8 9 % Método Doolittle 10 x1=metodoDoolittle(A,b); 11 disp(’Método Doolittle:’) 12 l=length(x1); 13 for k= 1:l 14 d=sprintf(’x%d=%f’,k,x1(k)); 15 disp(d) 16 end 17 18 % Método Crout 19 x2=metodoCrout(A,b); 20 disp(’Método Crout:’) 21 l=length(x2); 22 for k= 1:l 23 d=sprintf(’x%d=%f’,k,x2(k)); 24 disp(d) 25 end ’Codigo Factorización Doolittle’ 1 %% Factorización LU Doolittle 2 function [L,U] = factorizacionDoolittle(A) 3 4 n = size(A,1); % Tamaño de la matriz A 5 L = eye(n); % Matriz L con 1s en la diagonal principal 6 U = zeros(n); % Matriz U llena de ceros 7 8 for i=1:n % i sirve para los renglones en U, columnas en L 9 if i == 1 % ¿Es la primera pasada? 10 U(1,1) = A(1,1); 11 for j=2:n % j sirve para las columnas de U, renglones de L 12 U(1,j) = A(1,j); 13 L(j,1) = A(j,1)/U(1,1); 14 end 15 else 16 U(i,i) = A(i,i) - L(i,1:i-1)*U(1:i-1,i); % Calcula los 10 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 17 % elementos de la diagonal principal 18 for j=i+1:n 19 U(i,j) = A(i,j) - L(i,1:i-1)*U(1:i-1,j); 20 L(j,i) = (A(j,i) - L(j,1:i-1)*U(1:i-1,i) )/ U(i,i); 21 end 22 end 23 end 24 end ’Código Factorización Crout’ 1 %% Factorización LU Crout 2 function [L,U]=factorizacionCrout(A) 3 n=size(A,1); % Tamaño de la matriz A 4 U=eye(n); %Matriz U con ls en la diagonal principal 5 L=zeros(n); %Matriz L llena de ceros 6 7 8 for k=1:n 9 s=0; % Valor para guardar la sumatoria 10 for p=1:k-1 % k y p para renglones y columnas de L 11 % k y p para columnas y renglones de U 12 % k siendo una constante 13 14 s=s+L(k,p)*U(p,k); % Se hace para obtener la 15 %sumatoria de l por u 16 end 17 18 19 L(k,k)=A(k,k) - s; % Se va llenando la diagonal con el 20 %el valor a(kk) valor en la diagonal 21 %menos la sumatoria 22 23 %Ciclo for para llenar valores de L debajo de la diagonal 24 for i=k+1:n 25 s2=0; % Valor para guardar la sumatoria 26 for p=1:k-1 % i y p para renglones y columnas de L 27 % i y p para columnas y renglones de U 28 % i siendo un valor constante 29 30 s2=s2+L(i,p)*U(p,k);% Se hace para obtener la 31 %sumatoria de l por u, empezando en un renglón después en L 32 %cada ciclo 33 end 34 L(i,k)=(A(i,k)-s2); % Se llena el resto de los valores 35 % de L debajo de la diagonal 36 end 11 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 37 38 %Ciclo for para llenar la matriz U 39 for j=k+1:n 40 s3=0; % Valor para guardar la sumatoria 41 for p=1:k-1 % k y p para renglones y columnas de L 42 % j y p para columnas y renglones de U 43 % j y k siendo valores constante 44 s3=s3+ L(k,p)*U(p,j); % Se hace para obtener la 45 %sumatoria de l por u empezando 46 % en una columna después en u 47 %cada ciclo 48 end 49 U(k,j) = (A(k,j)- s3)/L(k,k); % Se llena U con los valores 50 % obtenidos, arriba de la diagonal 51 end 52 end 53 end ’Método de Doolittle’ 1 function x = metodoDoolittle(A,b) 2 [L,U] = factorizacionDoolittle(A); % Calcula la factorización LU 3 4 n = size(A,1); % Cuantas ecuaciones hay que resolver 5 6 % Resolviendo Ly=b 7 y = zeros(n,1); % Inicializa vector y 8 y(1) = b(1); 9 for i=2:n 10 y(i) = b(i) - L(i,1:i-1)*y(1:i-1); 11 end 12 13 % Resolviendo Ux=y 14 x = zeros(n,1); % Inicializa vector x 15 x(n) = y(n)/U(n,n); 16 for i = n-1:-1:1 17 x(i) = ( y(i) - U(i,i+1:n)*x(i+1:n) )/U(i,i); 18 end 19 end ’Método de Crout’ 1 function X=metodoCrout(A,b) 2 [L,U]=factorizacionCrout(A); 3 n=size(A,1); % Cuantas ecuaciones hay que resolver 4 y=zeros(n,1); % Vector lleno de ceros 5 12 AN21-1x13: Tarea 2 Araiza Alfredo, Rincón Carlos, Sánchez Axel 6 %Resulviendo Ly=b 7 for i=1:n 8 ac=0; %Inicializar acumulador 9 for j=1:i-1 10 ac=ac+L(i,j)*y(j); % Se va haciendo un despeje de cada 11 %ecuación 12 end 13 y(i)=(b(i)-ac)/L(i,i); 14 end 15 16 %Resolviendo Ux=y 17 for i=n:-1:1 18 ac=0; %Inicializar acumulador 19 for j=i+1:n 20 ac=ac+U(i,j)*X(j);% Se va haciendo un despeje de cada 21 %ecuación 22 end 23 X(i)=(y(i)-ac)/U(i,i); 24 end 25 end 13
Compartir