%% Redukce dimenze matice
% Nalezení dominantního vlastního čísla

format long
A=[11 -6 4 -2; 4 1 0 0; -9 9 -6 5; -6 6 -6 7]
eig(A)
x0=[1;1;1;1]; % pocatecni iterace
M0=1;
x=x0;
x1=A*x;
M=max(abs(x1));
ii=find(M==abs(x1)); % index max. prvku
x=x1/M;
if x1(ii)<0
    x=-x;
    M=-M; % aproximace vl. cisla
end
er=1e-9;
while norm(M0-M)>er
    x0=x;
    M0=M;
    x1=A*x;
    M=max(abs(x1));
    ii=find(M==abs(x1)); % index max. prvku
    x=x1/M;
    if x1(ii)<0
        x=-x;
        M=-M;
    end
end
l1=M % dominantni vlastni cislo
v1=x % dominantni vlastni vektor

%
%% Wielandtova redukce pro k=1

k=1;
x=[A(k,:)/(l1*v1(k))]'

% Kontrola normovanosti:

dot(x,v1)

% Matice B

format short
B=A-l1*v1*x'

%
% Dominantní vlastní číslo matice B

x0=[1;1;1;0]; % pocatecni iterace
M0=1;
xx=x0;
x1=B*xx;
M=max(abs(x1));
ii=find(M==abs(x1)); % index max. prvku
xx=x1/M;
if x1(ii)<0
    xx=-xx;
    M=-M; % aproximace vl. cisla
end
er=1e-9;
while norm(M0-M)>er
    x0=xx;
    M0=M;
    x1=B*xx;
    M=max(abs(x1));
    ii=find(M==abs(x1)); % index max. prvku
    xx=x1/M;
    if x1(ii)<0
        xx=-xx;
        M=-M;
    end
end
l2=M  % dominantni vlastni cislo pro B
u2=xx % dominantni vlastni vektor

%
% Vlastní vektor původní matice A pomocí u2

x=[A(k,:)/(l1*v1(k))]';
v2=(l2-l1)*u2+l1*(x'*u2)*v1

% Kontrola

A*v2-l2*v2
%ans./v2
[V,D]=eig(A)