% Metoda wyznacznikowa Cramera 
clc; clear

% Oznaczony_________________________________________

a = [2 1 4 -2; -3 4 2 -1; 3 5 -2 1; -2 3 2 4];
b= [19; 1; 8 ; 13];

% Nieoznaczony__________________________________

%a = [2 1 4 -2; -3 4 2 -1; -4 -2 -8 4; -2 3 2 4];
%b= [19; 1; -38 ; 13];

% Sprzeczny__________________________________

%a = [2 1 4 -2; -3 4 2 -1; -4 -2 -8 4; -2 3 2 4];
%b= [19; 1; -30 ; 13];


% Metoda __________________________________________________________

    
    disp('Macierz główna.')
    disp('----------------------------')
    disp(a);
    
    w = det(a);
    disp('Wyznacznik macierzy głównej.')
    disp('----------------------------');
    disp(w);
    disp('---------------------------------');
    

    [n, m] = size(a);

    if (n~=m || w==0)
        error('Błąd: Układ nie jest cramerowski.')
    end

    for i = 1:n
        c = a;
        c(:,i) = b;
        v_(i) = det(c);
        disp("i =");
        disp(i);
        disp(c);
        disp('Wyznacznik:');
        disp(v_(i));
        disp('-----------------------------------------------')
    end

    for i = 1:n
        x(i)=v_(i)/w;
    end

    disp('X = ')
    disp(x)