
% FACTORIZACION LU DOOLITTLE
clc;
clear all;
	A=matrizA; % Llama a la matriz A
	b=vectorb; % Llama al vector b

	AB=[A,b]; % Hace la matriz ampliada
	[n,m]=size(A); %Dice qué tamaño es la matriz

%Hacer la factorizacion LU
if n==m	% Corrobora si es cuadrada
	for k =1:n; %Etapa 1
		L(k,k)=1;
		suma1 = 0;
		for p=1:k-1
			suma1=suma1+L(k,p)*U(p,k);
		end
		U(k,k)=(A(k,k)-suma1);
		for i=k+1:n
			suma2=0;
			for p=1:(k-1)
				suma2=suma2+L(i,p)*U(p,k);
			end
			L(i,k)=(A(i,k)-suma2)/U(k,k);
		end
		for j=k+1:n
			suma3=0;
			for p=1:k-1
				suma3=suma3+L(k,p)*U(p,j);
			end
			U(k,j)=(A(k,j)-suma3)/L(k,k);
		end
	end
		fprintf("\n\n La matriz L es: \n\n")
	L
	fprintf("La matriz U es: \n\n")
	U	
	L*U
else
	fprintf("La matriz no es cuadrada \n\n")
end
%Encontrar el vector Z
Z=b;
for k=1:n
	suma1=0;	
	for i=1:n
		if k==i
		else
			suma1 = suma1 +L(k,i)*Z(i,1);
		end
	end
	Z(k,1)=(b(k,1)-suma1)/L(k,k);
end
	fprintf("La matriz Z es: \n\n")
	Z
%Encontrar el vector X
X=Z;
for k=n:-1:1
	suma1=0;	
	for i=n:-1:1
		if k==i
		else
			suma1 = suma1 +U(k,i)*X(i,1);
		end
	end
	X(k,1)=(Z(k,1)-suma1)/U(k,k);
end
%Mostrar los resultados de X
for k=1:n;
	fprintf("X%g = %g \n",k,X(k,1));
end	
inv(A)*b
