function x=gem_sloupcova_pivotace(A,b);
% Gaussova eliminaèní metoda se sloupcovou pivotací
% pro reseni soustavy Ax=b

clc;
tisk=sprintf(['Gaussova eliminaèní metoda se sloupcovou pivotací']);
disp(tisk);
tisk=sprintf(['pro reseni soustavy  Ax=b, kde ']);
disp(tisk);
A
b

n=size(A,1);
index=zeros(n-1,1);

for k=1:n-1
% sloupcova pivotace -> prehazeni radku
  [y,index(k,1)] = max(abs(A(k:n,k)));
  index(k,1)=index(k,1)+k-1;
  tmp1=A(index(k,1),:);
  tmp2=b(index(k,1));
  A(index(k,1),:)=A(k,:);
  b(index(k,1))=b(k);
  A(k,:)=tmp1;
  b(k)=tmp2;
  if index(k,1)~=k
    disp(sprintf('v %d. kroku GEM',k));
    disp(sprintf('                %d. øádek mìním s %d. ',index(k,1),k));
  end;
  for i=k+1:n
     m(i,k) = - A(i,k)/A(k,k);
     for j=k+1:n %od 1 neni nutne       
        A(i,j) = A(i,j) + m(i,k) * A(k,j);
     end
     b(i)   = b(i) + m(i,k) * b(k);
   end
end

x=zeros(n,1);
for l=n:-1:1
   pom=0;
   for j=l+1:n
      pom = pom + A(l,j) * x(j);
   end
   x(l)  = 1/A(l,l) * (b(l) - pom);
end 

x










