%% Esame SDE Gennaio 2022
%
% 1) Risolvere il seguente sistema di equazioni lineari.
%
% Verificare che i valori di x y e z trovati soddisfino le 3 equazoni.
%


A=[4 6 -2; 3 5 1; 1 0 9];
b=[2; 6; 4];
x=A\b;
disp("La soluzione è")
disp(x)
% Verifico che A*x=b
assert(max(A*x-b)<1e-10,"Sistema risolto in maniera non corretta")

%
% 2) Costruire tramite cicli for una matrice quadrata denominata A, di dimensione nxn (inserire il valore di n in una variabile denominata con le prime 3 lettere del proprio cognome) che contiene all'incrocio della riga i e colonna j il numero i^2+j^2-2ij
%

RIA=5;
A=zeros(RIA,RIA);
for i=1:RIA
    for j=1:RIA
        A(i,j)=i^2+j^2-2*i*j;
    end
end
disp(A)

% 3)  Il file SDEjan2022.xlsx contiene i risultati di un'indagine in cui si è chiesto di associare ad ogni brand nel mercato delle "soft drinks" una determinata parola.
%     3A) Costruire e commentare il grafico di analisi delle corrispondenze.
%     3B) Rappresentare tramite grafico a barre l'inerzia di ogni punto colonna

close all
clear
X = readtable('SDEjan2022.xlsx','Sheet','Foglio1','range','A1:B416');

[N,chi2,pval,labels] =crosstab(X.Parola,X.Marca);
% chi2 e pval sono rispettivamente il valore dell'indice chi quadrato
% ed il p-value dell'indice Chi2.
% p-value molto basso rifiuto decisamente l'ipotesi di indipendenza tra
% Parola e Marca
[r,c]=size(N);
% Costruzione della tabella di contingenza in formato table
% Dall'array N alla tabella Ntable
Ntable=array2table(N,'RowNames',labels(1:r,1),'VariableNames',labels(1:c,2));
disp('Tabella di contingenza tra Parola e Marca')
disp(Ntable)
outCA=CorAna(N,'Lr',labels(1:r,1),'Lc',labels(1:c,2));
% La marca Red Bull è associata prevalentemente alle parole "Energy e Picks
% you up"
% La parola "Teens" è associata a Diet Coke Pepsi e Fanta.
% Coke si trova nella direzione della parola "When Tired" e vicino a Enjoy
% Life. La rappresentazione è molto buona in quanto il piano fattoriale
% delle prime due dimensioni latenti spiega quasi il 100 per cento
% dell'inerzia totale della tabella di contingenza.

% Rappresentare tramite grafico a barre l'inerzia di ogni punto colonna.
inerzia=outCA.OverviewCols(:,'Inertia');
figure
bar(inerzia{:,1})
set(gca, 'xticklabel', inerzia.Properties.RowNames, 'xticklabelrotation', 60)
% I due punti colonna con l'inerzia più grande 
% (più distanti dal centroide dei punti colonna, ossia dal vettore che contiene le masse di riga) sono "ReBull" e "Coke"

%
% 4) Rappresentare graficamente tramite diagramma di dispersione i dati riportati di seguito
% Nome X Y
% A 10 2
% B 12 4
% C 11 3
% D 25 5
% E 36 10
% 4a) Aggiungere al diagramma di dispersione il nome di ciascun punto.
% 4b) Aggiungere come titolo del grafico il proprio nome e cognome.
% 4c) Calcolare la distanza di Minkowski di ordine 3 tra la riga E e la riga A
%%

X=[10 2; 12 4; 11 3; 25 5; 36 10];
assi = {'X' 'Y'};
punti = {'A'; 'B'; 'C'; 'D'; 'E'}; 
figure;
plot(X(:,1),X(:,2),'o','MarkerEdgeColor','b');
text(X(:,1),X(:,2),punti);
xlabel(assi(1))
ylabel(assi(2))
title('Marco Riani')

distAE=pdist(X([1 5],:),'minkowski',3);
disp('Distanza di Minkowski di ordine 3 tra la riga E e la riga A')
disp(distAE)

%