%{
Lista 4 zadanie 1.
Skrypt sprowadza dan¹ macierz nieosobliw¹ A do postaci górnie-trójk¹tnej
(zera poni¿ej g³ównej przek¹tnej) przy pomocy macierzy Householdera

     B=Q_{n-1}...Q_1A,

gdzie ka¿da z macierzy Q_k ma postac

   Q_k= I-2w_kw_k^t.

Mozna ograniczyæ ilosc kroków ograniczajac zakres zmiennej k w g³ównej pêtli.
%}

n=4;                    %trzeba podaæ rozmiar
A=[1 -2 -4 2;2 3 -1 0.5;2 -0.3 -3 0;1 -0.7 0.2 0.9]             %trzeba podaæ nieosobliw¹ macierz A n x n
B=A;                    %B jest macierz¹ modyfikowan¹ w ka¿dym kroku
for k=1:n-1
  norma=0;
  for i=k:n
    norma=norma+B(i,k)^2;
  end;
  norma=sqrt(norma);	%wyliczyliœmy normê k-tej kolumny B, od k-tego wiersza w dó³
  sigma=norma;
  if not(B(k,k)==0) 
    sigma=sigma*B(k,k)/abs(B(k,k));
  end;
  u=zeros(n,1);
  for i=k:n
    u(i)=B(i,k);
  end;
  u(k)=u(k)-sigma;      %u jest zmodyfikowan¹ k-t¹ kolumn¹ B, z zerami do k-tego wiersza
  norma=0;
  for i=k:n
    norma=norma+u(i)^2;
  end;
  norma=sqrt(norma);
  u=u/norma;            %u zosta³ unormowany
  C=eye(n)-2*u*u'      %powy¿ej k-tego wiersza i na lewo od k-tej kolumny C jest 
                        %identycznoœci¹. Poza tym jest n-k+1 x n-k+1 macierz¹ 
                        %Householdera.
  B=C*B
end;


