Ejercicios Computacionales 5.1 Codigo
Ejercicios Computacionales 5.1 Codigo
Ejercicios Computacionales 5.1 Codigo
Código
A =[9 3 2 0 7;
63 27 23 6 53;
18 48 74 50 44;
0 54 130 112 52;
63 39 83 74 84],
b=[35;303;522;858;763];
function x=solve_U(U,b)
% Resuelve el sistema triangular superior Ux=b
% Si la matriz U es singular devuelve NaN
n=length(b); x=NaN*b;
D=diag(U); % Extraigo la diagonal de U
determinante=prod(D); % Productorio de la diagonal
if determinante==0, return; end % Compruebo si U es singular
% Resolvemos Ux=b utilizando sustitución regresiva
for i=n:-1:1
x(i)=(b(i)-sum(U(i,i+1:n).*x(i+1:n)'))/D(i);
end
return
function [U c]=gauss(A,b)
% Eliminación de Gauss sin pivote. A partir del sistema Ax=b obtiene Ux=c
% triangular superior equivalente
n = size(A,1);
D = [A b]; % Construyo la matriz ampliada D
for col=1:n-1, % recorro las columnas (col) de 1 a n-1 de la matriz A
% Aquí iría el código correspondiente del pivotaje
%
%.
%
%
piv = D(col,col); % Pivote = elemento de la diagonal
for k=col+1:n, % Recorro filas (k's) por debajo de diagonal
m = D(k,col)/piv; % Cociente entre 1er elemento fila y pivote
% (m es un coeficiente de la matriz Ri en la factorización LU)
D(k,col:n+1)=D(k,col:n+1)-m*D(col,col:n+1);
% Fila(k)=Fila(k)-m x fila(col) (desde columna col en adelante)
end
end
U = D(:,1:n); % Extraer matriz U de la matriz ampliada
c = D(:,n+1:end); % Extraer el vector c de la matriz ampliada
return
clear all
% Resolvemos el sistema Cx=c, de dimensión 500, utilizando
% los 3 métodos: Gauss sin pivote, Gauss con pivote y el comando de matlab \
% Calculamos el tiempo de ejecución y el residuo de cada método.
n=500;
C=rand(n); % Matriz C 500x500 de coeficientes aleatorios entre 0 y 1
c=rand(n,1); % Vector c de coeficientes aleatorios entre 0 y 1
x=zeros(n,3)*NaN; % Creamos x vectores de soluciones
r=zeros(n,3)*NaN; % Creamos r vectores de residuos
1
ALGORÍTMICA NUMÉRICA Ejercicios Computacionales Tema 5