Sunteți pe pagina 1din 1

Cdigo en MatLab para resolver sistemas de ecuaciones lineales usando el

mtodo de Gauss con pivoteamiento parcial


Observe que MatLab ya tiene una forma inmersa para resolver sistemas lineales, usted puede usar x=inv(A)*b,
o sino x=A\b. Use help inv o help mldivide para ms informacin.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%
%% Ejecuta el algoritmo de Gauss con pivoteamiento parcial
%
%%
gausspp(A,b)
%
%% Ingresan
%
%%
A: nxn-matriz cuadrada
%
%%
b: n-vector columna
%
%% Retorna
%
%%
x: solucion del sistema Ax=b
%
%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function x=gausspp(A,b)
[m,n]=size(A);
%%%%%%%%%%%%% INICIA: triangularizacion por Gauss %%%%%%%%%%%%%
for k=1:n
%----------Inicia: pivoteamiento parcial..........
pivote=A(k,k); ind=k;
for i=k+1:n
if abs(pivote)<abs(A(i,k))
ind=i; pivote=A(i,k);
end
end
if pivote==0
error(A no inversible, sistema Ax=b puede tener inf. sol. o puede no tener);
else
auxA=A(k,:); auxb=b(k); A(k,:)=A(ind,:); A(ind,:)=auxA; b(k)=b(ind); b(ind)=auxb;
end
%----------Termina: pivoteamiento parcial..........
for i=k+1:n
m=A(i,k)/A(k,k); A(i,k)=0;
for j=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
end
%%%%%%%%%%% TERMINA: triangularizacion por Gauss %%%%%%%%%%%%%%%
%%%%%%%% INICIA: resolucion de sitema triangular superior %%%%%%
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for k=(n-1):-1:1
s=0;
for j=(k+1):n
s=s+A(k,j)*x(j);
end
x(k)=(b(k)-s)/A(k,k);
end
%%%%%%%%% TERMINA: resolucion de sitema triangular superior %%%%

S-ar putea să vă placă și