Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modificación del algortitmo gauss1 para que en vez de regresar la matriz aumentada, regrese tres matrices:
L, U y D, donde L es una matriz triangular inferior con 1's en la diagonal principal, U es una matriz triangular
superior y D es la matriz que resulta de la transformación de B.
Entradas:
Salidas:
• x: Vector con los valore para todas las variables del sistema de ecuaciones.
[m,~]=size(A);
mB= size(B,1);
eps = 1e-13; %algo es considerado cero si es menor que eps
if mB~=m
error('B tiene %i renglones, pero A tiene %i renglones',mB,m)
end
%Crear Matriz
M = [A,B];
disp(newline);
if prod(diag(A)) == 0
error('El determinante de la matriz A es cero, no se puede resolver');
end
%Pivoteo
n = size(A,1);
for k = 1:n
if A(k,k) ~= max(abs(A(:,k)))
[filapivote,~] = find(abs(A) == max(abs(A(:,k))));
1
A([k,filapivote(1)],:) = A([filapivote(1),k],:);
B([k,filapivote(1)]) = B([filapivote(1),k]);
end
end
Impresión de resultados
disp('Resultados');
for i = 1:n
fprintf('x%d = %f',i,x(i));
fprintf('\n');
end
2
>> A= [3,6,-2,9;-5,4,5,-6;-3,8,2,-3;-4,10,3,9]
A=
3 6 -2 9
-5 4 5 -6
-3 8 2 -3
-4 10 3 9
>> B=[6;5;3;9]
B=
>> [L,U,D,x]=lu_gauss(A,B)
Resultados
x1 = 2.000000
x2 = 0.500000
x3 = 3.000000
x4 = 0.333333
L=
1.0000 0 0 0
1.3333 1.0000 0 0
U=
0 0 -3.0000 -183.0000
0 0 0 -148.0000
D=
3.0000
5.0000
-70.0000
-49.3333
>> L*U =a
a=
-3 8 2 -3
-4 10 3 9
-5 4 5 -6
3 6 -2 9
>> L*x=b
b=
2.0000
0.5000
3.0000
0.3333
>> B=eye(4)
B=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> [L,U,D,x]=lu_gauss(A,B)
Resultados
x1 = 0.479730
x2 = 0.074324
x3 = 0.412162
x4 = -0.006757
L=
1.0000 0 0 0
1.3333 1.0000 0 0
U=
0 0 -3.0000 -183.0000
0 0 0 -148.0000
D=
0 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1
x=