% EVD_example--sent close all; clear all; format compact; format short; warning off; % wartosci wlasne macierzy M = [3 1;2 2] det(M) P = eye(2)*2 M - P det(M - P) l = eig(M) P = eye(2)*l(1) M - P det(M - P) P = eye(2)*l(2) M - P det(M - P) det(M) prod(l) trace(M) sum(l) % wektory wlasne macierzy k = [1;2] M*k [K,~] = eig(M) k = K(:,2) M*k k*1 k = K(:,1) M*k k*4 % rozklad EVD macierzy L = diag(l) [K,L] = eig(M) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) inv(K) K*L*inv(K) [M K*L*inv(K)] % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) % [K' K] K'*K [inv(K) K'] K*L*K' [M K*L*K'] % jednoznacznosc wektorow wlasnych K*L*inv(K) K2 = K*2 K2*L*inv(K2) K2 = K*(-1) K2*L*inv(K2) K2 = K*(-2) K2*L*inv(K2) M = [4 2;2 2] [K,L] = eig(M) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) inv(K) K*L*inv(K) [M K*L*inv(K)] % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K'*K [inv(K) K'] K*L*K' [M K*L*K'] % jednoznacznosc wektorow wlasnych, c.d. K*L*inv(K) K*L*K' K2 = K*2 K2*L*inv(K2) K2*L*K2' K2 = K*(-1) K2*L*inv(K2) K2*L*K2' K2 = K*(-2) K2*L*inv(K2) K2*L*K2' M = [1 2 3;4 5 6;7 8 9] [K,L] = eig(M) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) inv(K) K*L*inv(K) [M K*L*inv(K)] % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K'*K [inv(K) K'] K*L*K' [M K*L*K'] M = [1 2 3;2 3 4;3 4 5] [K,L] = eig(M) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) inv(K) K*L*inv(K) [M K*L*inv(K)] % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K'*K [inv(K) K'] K*L*K' [M K*L*K'] M = randn(100,100); [K,L] = eig(M); L(1,1) bar([real(diag(L)) imag(diag(L))]) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) K*inv(K) norm(eye(100) - K*inv(K),'fro') K*L*inv(K) norm(M - K*L*inv(K),'fro') % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K*K' norm(eye(100) - K*K','fro') K*L*K' norm(M - K*L*K','fro') M = randn(100,100); M = M+M'; [K,L] = eig(M) bar([real(diag(L)) imag(diag(L))]) L(1,1) % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) K*inv(K) norm(eye(100) - K*inv(K),'fro') K*L*inv(K) norm(M - K*L*inv(K),'fro') % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K*K' norm(eye(100) - K*K','fro') K*L*K' norm(M - K*L*K','fro') M = [0 1;0 0] %M = [0 0;0 0] [K,L] = eig(M) % K = [1 -1;0 0] % K*L*inv(K) ("pelny") % czy K jest odwracalna? det(K) inv(K) K*L*inv(K) [M K*L*inv(K)] % K*L*inv(K) ("uproszczony") % czy K jest ortogonalna? det(K) K'*K [inv(K) K'] K*L*K' [M K*L*K'] % funkcje rozne M = [1 2 3;2 3 4;3 4 5] % rozne wersje procedury eig % -- w tym: ograniczone/truncated/economical [K,L] = eigs(M,3) [K,L] = eigs(M,3,'sm') [K,L] = eigs(M,3,'lm') % Inne systemy/biblioteki: potencjalne roznice w implementacjach funkcji generujacych wartosci i wektory wlasne % -- kolejnosc wartwartosci i wektorow wlasnych (rozne wartosci wlasne) % -- kolejnosc wartosci i wektorow wlasnych (rowne wartosci wlasne) % -- inna normalizacja wektorow wlasnych % -- inne znaki wektorow wlasnych % -- inne wartosci wektorow wlasnych % -- -- dla niezerowych wartosci wlasnych % -- -- dla zerowych wartosci wlasnych (K*L*K')