function V = gs(A)
% Gram-Schmidt ορθοκανονικοποίηση διανυσμάτων που δίνονται 
% στις στήλες ενός πίνακα  A. Τα ορθοκανονικοποιημένα διανύσματα 
% δίνονται στις στήλες ενός πίνακα V.
[m,n] = size(A);
for k=1:n
V(:,k) = A(:,k);
for j=1:k-1
R(j,k) = V(:,j)'*A(:,k);
V(:,k) = V(:,k) - R(j,k)*V(:,j);
end
R(k,k) = norm(V(:,k));
V(:,k) = V(:,k)/R(k,k);
end