Professor Diomar Cesar Lobao

Universidade Federal Fluminense-Volta Redonda, RJ, Brasil

Diomar Cesar


Dept. Ciências Exatas - Exact Science Dept.

Search

gepivot.m

% partial pivoting routine called by gauselim
%
% USAGE:   [A, err] = gepivot(A, k)
%
% where        A = augmented matrix
%              k = current pivot row
%            err = error code
%                = 0 = no error
%                = 1 = matrix is singular

function [A, err] = gepivot(A, k)

err = 0;
[n, m] = size(A);

piv = A(k,k);
newpivot = k;

for i = k+1:n            % check all rows below pivot
   if abs(A(i,k)) > abs(piv) 
       newpivot = i;
       piv = A(i,k);
   end
end

if piv == 0              % trouble - can't avoid 0 pivot
   err = 1;
elseif newpivot ~= k     % best pivot elsewhere, swap rows
   for j = k:m
     temp1 = A(k,j);
     temp2 = A(newpivot,j);
     A(k,j) = temp2;
     A(newpivot,j) = temp1;
   end
end

Skip to content