%% Singulární rozklad
% Pro každou matici A existují unitární matice U,V a diagonální matice s nezápornými čísly na diagonále S, že platí A=USV^*. Kladné prvky matice S se nazývají singulární čísla, jedná se o odmocniny z vlastních čísel matice A^*A.
% Použití: např. funkce rank, pinv
% Výpočet v Matlabu:

format short
A=[1 2 3;4 5 6;7 8 9]
[U,S,V]=svd(A)
A-U*S*V'

%
% Test ortogonality:

U'*U-eye(3)
V'*V-eye(3)

%
% Pouze singulární čísla:

s=svd(A)

%
% Porovnání s odmocninami vlastních čísel A^*A:

d=eig(A'*A)

%

s-sort(sqrt(d),'descend')

%
% Větší matice malé hodnosti:

A2=[A A;A A], rank(A2)

% Úkol: porovnejte singulární čísla matice A2 a odmocniny z vlastních čísel matice A2'*A2.
%
%% Spektrální a singulární rozklad pro pozitivně semidefinitní matice:

B=[1 2 1;2 5 2;1 2 2]
det(B)

% Spektrální rozklad:

[V,D]=eig(B)

% Singulární rozklad:

[U1,S1,V1]=svd(B)

%
% Rekonstrukce matice B ze spektrálního rozkladu:

V*D*V'
ans-B

% Rekonstrukce matice B ze singulárního rozkladu:

V1*S1*V1'
ans-B

%