Professional Documents
Culture Documents
Matlab 003
Matlab 003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%
%% 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 %%%%