problem = 1; % treba staviti jedan od brojeva od 1 do 7, u zavisnosti koji zadatak sa casa zelite


switch problem

    case 1 % realne i razlicite sopstvene vrednosti

        A = [1, -1, 1; 1, 1, -1; 2, -1, 0]; % inicijalizacija matrice (moze i bez zareza)
        eig(A); % sopstvene vrednosti matrice
        [P, J] = eig(A); % matrica prelaska P i dijagonalna J ~ A
        
        inv(P); % inverz matrice P
        det(P); % determinanta matrice P
        A1 = P * J * inv(P); % provera da li je P*J*P^{-1} jednako A

    case 2 % jedna realna i jedna kompleksna sopstvena vrednost

        A = [-3, 0, 0; 0, 3, -2; 0, 1, 1];
        eig(A); 
        [P, J] = eig(A); % ovo nam ne daje matrice koje zelimo
        % Matrica P ima kompleksne sopstvene vektore (oba konjugata), a
        % nama treba Re i Im. Matrica J ima kompleksne sopstvene vrednosti 
        % (oba konjugata), a nama treba [Re, Im; -Im, Re]. Obe ove
        % informacije se lako dobijaju.

    case 3 % ponovljena realna sopstvena vrednost 4 puta, 2 bloka velicine 2

        A = [2, 0, 0, 0; 0, 2, 1, 0; 0, 0, 2, 0; 1, 0, 0, 2];
        [P1, J1] = eig(A); % ovde P1 uopste nije matrica prelaska, a J1 je dijagonalna
        jordan(A);
        [P, J] = jordan(A);
        
        syms x; % uvodimo simbolicku promenljivu x
        minpoly(A, x); % minimalni polinom matrice A

    case 4 % ponovljena realna sopstvena vrednost 4 puta, blokovi velicina 3 i 1

        A = [2, 0, 0, 0; 0, 2, 0, 0; 0, 0, 2, 1; 1, 0, 0, 2];
        [P, J] = jordan(A);
        
        A2 = (A-2*eye(4))^2; A3 = (A-2*eye(4))^3; % alternativno za minimalni polinom - kao na casu
        
        syms t; % uvodimo simbolicku promenljivu t
        expm(t*J); % racunamo eksponent matrice t*J
        expm(t*J)/exp(2*t); % mozemo i da podelimo sa exp(2*t) da vidimo sta ostaje kada se izvuce
        expm(t*A); % mozemo odmah i eksponent matrice t*A da racunamo

    case 5 % ponovljena realna sopstvena vrednost 3 puta, promena baze

        A = [2, 1, 1; 0, 1, -1; 0, 1, 3];
        [P, J] = jordan(A);
        syms t;
        expm(t*A);

    case 6 % ponovljena realna i kompleksna sopstvena vrednost

        A = [2, 0, 1, 0; 0, 1, 0, 1; 0, 0, 2, 1; 0, -1, 0, 1];
        [P, J] = jordan(A);
        syms t;
        expm(t*A);

    case 7 % ponovljena kompleksna sopstvena vrednost

        A = [-1, 0, -1, 0; 1, 0, 1, 1; 2, 0, 1, 0; 1, -1, 0, 0];
        eig(A);
        [P, J] = jordan(A); % ovo je tesko protumaciti

end
