% KRE Exa 4-5 ss. 334-335
format rational
A=[3 0 2 2;
   -6 42 24 54;
   21 -21 0 -15]

E=rref(A)
E(1:2,:)  % riviav:n kanta
% Lausutaan A:n rivit KR:n avulla.
rref([E(1:2,:)'  A(1,:)'])
rref([E(1:2,:)'  A(2,:)'])
rref([E(1:2,:)'  A(3,:)'])

%Voidaan rysäyttää kaikki samalla kertaa:

rref([E(1:2,:)' A'])
ans =
      1            0            3           -6           21      
      0            1            0           42          -21      
      0            0            0            0            0      
      0            0            0            0            0    
      
      
 % A:n rivi ja vastaava kantaesitys allekkain tarkistukseksi:
      
      [A(1,:);3*E(1,:)]   
      [A(2,:);-6*E(1,:)+42*E(2,:)]
      [A(3,:);21*E(1,:)-21*E(2,:)]
      ans =
      3            0            2            2      
      3            0            2            2      
ans =
     -6           42           24           54      
     -6           42           24           54      
ans =
     21          -21            0          -15      
     21          -21            0          -15 
% Oikein ovat!

% Sarakeavaruus:
F=A(:,1:2)
G=rref(A)
ans =
      1            0           2/3          2/3     
      0            1           2/3         29/21    
      0            0            0            0 
      
% Tästä näkyy sarakevektorien esitykset sarakekantavektorien avulla.
[A(:,3),G(1,3)*A(:,1)+G(2,3)*A(:,2)]      
[A(:,4),G(1,4)*A(:,1)+G(2,4)*A(:,2)]

ans =
      2            2      
     24           24      
      0            0      
ans =
      2            2      
     54           54      
     -15          -15   
% Ja teoria toimii!     
     


[m,n]=size(A); b=ones(m,1);Ab=[A,b]

pivot=Ab(1,1)
for i=2:m
   Ab(i,:)=Ab(i,:)-(Ab(i,1)/pivot)*Ab(1,:)
   pause
end
