%% Esercizio 1
%
% Siano A e B due matrici equivalenti per righe. Poichè B è equivalente per righe alla sua forma a scala ridotta rref(B), ne segue che A è equivalente per righe a rref(B). Per il teorema di unicità della forma a scala ridotta di una matrice, otteniamo rref(A)=rref(B). Per cui rref(A) ed rref(B) hanno lo stesso numero di 1-dominanti, ovvero lo stesso rango.
%
%%
%% Esercizio 2
%
% Sia E un sistema di equazioni lineari con matrice dei coefficienti A e matrice dei termini noti b. Sia S=[R d] la forma a scala ridotta della matrice completa T=[A b] di E. Sia E' il sistema avente matrice completa S. Poichè T ed S sono equivalenti per righe i due sistemi E ed E' sono equivalenti. Ci sono due possibilità: 1) d è una colonna dominante, 2) d non è una colonna dominante. Se d è una colonna dominante l'ultima equazione (non-nulla) di E' è della forma 0x1+0x2+..+0xn=1 e quindi non ammette soluzioni; ne segue che se d è dominante, E' non è compatibile. Se invece d non è dominante, allora E' è risolubile. Abbiamo quindi dimostrato che E' è compatibile se e solo se d non è dominante. Notiamo che rg(S)=rg(R)+1 se d è dominante e rg(S)=rg(R) se d non è dominante. Poichè rg(T)=rg(S) per definizione, possiamo riformulare quanto detto come segue:
%
% E è compatibile se e solo se rg(T)=rg(R).
%
% Per concludere basta osservare che rg(A)=rg(R).
%
%%
%%
%% Esercizio 3
%
% Per la regola di giuntura, il sistema associato alla rete è

f=sym('f',[1,5]);
eqn1= f(3)+40==f(1)+f(4)
eqn2= f(1)+f(2)==50
eqn3= 60==f(2)+f(3)+f(5)
eqn4= f(4)+f(5)==50

%
% La matrice dei coefficienti A e la matrice dei termini noti sono i seguenti

[A b]=equationsToMatrix(eqn1,eqn2,eqn3,eqn4,f)

%
% La  matrice completa del sistema è quindi

T=[A b]

%
% Troviamo la forma a scala ridotta della matrice completa

S=rref(T)

% Notiamo che l'ultima colonna non è un 1-dominante e quindi il sistema è compatibile.
%
% Una soluzione particolare del sistema è

X0=linsolve(A,b)

%
% Le soluzioni base del sistema omogeneo associato sono

X=null(A)
X1=X(:,1)
X2=X(:,2)

% Le soluzioni sono tutte della forma X0+ f3 X1+f5 X2

X0+f(3)*X1+f(5)*X2

%
%% Esercizio 4 (versione 1: in cui da C escono due frecce)
% Per la regola di giuntura, il sistema associato alla rete è

f=sym('f',[1,5]);
eqn1= f(5)+50==f(1)
eqn2= f(1)==f(2)+30
eqn3= f(2)==f(3)+40
eqn4= f(3)==f(4)+25
eqn5= f(4)==f(5)+35

%
% La matrice dei coefficienti A e la matrice dei termini noti sono i seguenti

[A b]=equationsToMatrix(eqn1,eqn2,eqn3,eqn4,eqn5,f)

%
% La  matrice completa del sistema è quindi

T=[A b]

%
% Troviamo la forma a scala ridotta della matrice completa

S=rref(T)

% Dato cha l'ultima colonna è un 1-dominante, sappiamo che il sistema è incompatibile. Ci si poteva aspettare questo risultato fin dall'inizio, poichè in questo modello entrano 50 macchine all'ora ma ne escono 130!
%
% Per scrupolo: proviamo a chiedere a MATLAB di trovare una soluzione...

X0=linsolve(A,b)

%
%% Esercizio 4 (versione 2: in cui da C esce una sola freccia)
%
% Per la regola di giuntura, il sistema associato alla rete è

f=sym('f',[1,5])
eqn1= f(5)+50==f(1)
eqn2= f(1)==f(2)+30
eqn3= f(2)+40==f(3)
eqn4= f(3)==f(4)+25
eqn5= f(4)==f(5)+35

%
% La matrice dei coefficienti A e la matrice dei termini noti sono i seguenti

[A b]=equationsToMatrix(eqn1,eqn2,eqn3,eqn4,eqn5,f)

%
% La  matrice completa del sistema è quindi

T=[A b]

%
% Troviamo la forma a scala ridotta della matrice completa

S=rref(T)

% Notiamo che l'ultima colonna non è un 1-dominante e quindi il sistema è compatibile. Inoltre rg(A)=rag(A b)=4 quindi ci aspettiamo che le soluzioni dipendono da 1=5-4 parametro.
%
% Cerchiamo una soluzione del sistema:

X0=linsolve(A,b)

%
% Cerchiamo soluzioni base del sistema omogeneo associato

X1=null(A)

%
% Le soluzioni sono tutte sole le matrici colonna della forma X0+f5 X1

X0+f(5)*X1

%
%% Esercizio 5
%
% Per la regola di giunzione, nei due punti di giunzione le intensità di corrente devono soddisfare le seguenti equazioni

I=sym('I',[1,3]);
eqn1= I(2)==I(3)+I(1)
eqn2= I(1)+I(3)==I(2)

%
% Orientiamo le due maglie in senso orario. Per la regola delle maglie e la legge di Ohm, le intensità di corrente devono soddisfare alle seguenti equazioni

eqn3= 5==5*I(1)+10*I(2)
eqn4= -10==-5*I(3)-10*I(2)

%
% La matrice dei coefficienti A e la matrice dei termini noti b del sistema così ottenuto sono date da

Sys=[eqn1,eqn3,eqn4];
[A b]=equationsToMatrix(Sys)

%
% La matrice completa del sistema è quindi

T=[A b]

%
% Troviamo la forma a scala ridotta della matrice completa del sistema

S=rref(T)

% Notiamo che l'ultima colonna non è un 1-dominante, e quindi il sistema è compatibile. Notiamo inoltre che rg(A)=3, e quindi le soluzioni dipendono da 3-3=0 parametri, ovvero c'è un'unica soluzione.
%

X0=linsolve(A,b)

%
%% Esercizio 6
%
% Per la regola di giunzione, nei quattro punti di giunzione le intensità di corrente devono soddisfare le seguenti equazioni

I=sym('I',[1,6]);
eqn1= I(1)==I(3)+I(4)
eqn2= I(4)==I(2)+I(6)
eqn3= I(2)+I(3)==I(5)
eqn4= I(5)+I(6)==I(1)

%
% Orientiamo le tre maglie in senso anti-orario. Per la regola delle maglie e la legge di Ohm, le intensità di corrente devono soddisfare alle seguenti equazioni

eqn5= -10==10*(I(6)-I(5))
eqn6= 20==10*(I(3)+I(5))
eqn7= 10==10*(-I(3)+I(4))

%
% La matrice dei coefficienti A e la matrice dei termini noti b del sistema così ottenuto sono date da

Sys=[eqn1,eqn2,eqn3,eqn4,eqn5,eqn6,eqn7];
[A b]=equationsToMatrix(Sys)

%
% La matrice completa del sistema è quindi

T=[A b]

%
% Troviamo la forma a scala ridotta della matrice completa del sistema

S=rref(T)

% Notiamo che l'ultima colonna non è un 1-dominante, e quindi il sistema è compatibile. Notiamo inoltre che rg(A)=6, e quindi le soluzioni dipendono da 6-6=0 parametri, ovvero c'è un'unica soluzione.
%

X0=linsolve(A,b)

%
%% Esercizio 7
%
% Il primo sistema è

x=sym('x',[1,5]);
eqn1= 3*x(1)-3*x(2)+2*x(3)+x(4)-6*x(5)==-1
eqn2= 2*x(1)-2*x(2)-4*x(3)+6*x(4)+7*x(5)==5
eqn3= 5*x(1)-5*x(2)-3*x(3)+8*x(4)+4*x(5)==6

%
% La matrice dei coefficienti A e la matrice dei termini noti b di questo sistema è dato da

[A b]=equationsToMatrix(eqn1,eqn2,eqn3)

%
% E quindi la matrice completa del sistema è

T=[A b]

%
% Troviamo la forma a scala ridotta S della matrice completa T del sistema

S=rref(T)

%
% Da cui deduciamo che il rango(T)=rango(A)=3 per cui il sistema è compatibile e le soluzioni dipendono da 5-3=2 parametri. Le variabili dominanti sono x1, x3 ed x5, mentre le variabili libere (ovvero i parametri) sono x2 ed x4.
%
% Troviamo una soluzione del sistema

X0=linsolve(A,b)

%
% e le soluzioni-base del sistema omogeneo associato

X=null(A)
X1=X(:,1)
X2=X(:,2)

%
% Le soluzioni del sistema sono tutte e sole le matrici colonne della forma X0+x2 X1+ x4 X2

X0+x(2)*X1+x(4)*X2

%
%% Esercizio 7
% Il secondo sistema è

syms x y z;
eqn1= 2*x+y-z==0
eqn2= x-y-z==1
eqn3= 2*x+z==1
eqn4= sqrt(2)*x+3*y-z==1

%
% La matrice dei coefficienti A e la matrice dei termini noti b di questo sistema è dato da

[A b]=equationsToMatrix(eqn1,eqn2,eqn3,eqn4)

%
% E quindi la matrice completa del sistema è

T=[A b]

%
% Troviamo la forma a scala ridotta S della matrice completa T del sistema

S=rref(T)

%
% Da cui deduciamo che il rango(T)=4 ed il rango(A)=3 per cui il sistema non è compatibile (l'ultima colonna di S è dominante).
%
% Chiediamo, ingenuamente, a MATLAB di calcolare una soluzione...

X0=linsolve(A,b);

%
%% Esercizio 8
% Il primo sistema è

x=sym('x',[1,4]);
syms k;
eqn1= 2*x(1)+2*x(2)-k*x(3)+(k-1)*x(4)==k^2-k
eqn2= 3*x(1)+3*x(2)-2*k*x(3)+(2*k-2)*x(4)==2*k^2-2*k-1
eqn3= 5*x(1)+5*x(2)-4*k*x(3)+(3*k-3)*x(4)==3*k^2-4*k-2

%
% La matrice dei coefficienti A e la matrice dei termini noti b di questo sistema è dato da

[A(k) b(k)]=equationsToMatrix(eqn1,eqn2,eqn3, x)

%
% E quindi la matrice completa del sistema è

T(k)=[A(k) b(k)]

%
% Se k è diverso sia da zero che da uno, la forma a scala ridotta S della matrice completa T del sistema è

S=rref(T(k))

% Da cui deduciamo che il rango(T)=rango(A)=3 per cui il sistema è compatibile e le soluzioni dipendono da 4-3=1 parametro. Le variabili dominanti sono x1, x3 ed x4, mentre la variabile libera (ovvero il parametro) è x2.
% Troviamo una soluzione del sistema

X0=linsolve(A(k),b(k))

% e le soluzioni-base del sistema omogeneo associato

X1=null(A)

% Le soluzioni del sistema sono tutte e sole le matrici colonne della forma X0+x2 X1

X0+x(2)*X1

%
% Se k=0 la forma a scala ridotta di T=T(0) è

S=rref(T(0))

% Dato che l'ultima colonna è dominante, il sistema non ammette soluzioni per k=0.
%
% Se k=1, la forma a scala ridotta di T=T(1) è

S=rref(T(1))

% da cui deduciamo che il sistema è compatibile e le soluzioni dipendono da 4-2=2 parametri. Le variabili dominanti sono x1 ed x3, e le variabili libere (ovvero i parametri) sono x2 ed x4.
% Cerchiamo una soluzione del sistema

X0=linsolve(A(1), b(1))

% e le soluzioni base del sistema omogeneo associato

X=null(A(1));
X1=X(:,1)
X2=X(:,2)

% Le soluzioni sono tutte e solo combinazioni lineari della forma X0+x2 X1+x4 X2

X0+x(2)*X1+x(4)*X2

%
%% Esercizio 8
% Il secondo sistema è dato da

syms x y z k;
eqn1= x+(k-1)*y+z==1
eqn2= 2*x+k*y+k*z==k
eqn3= k*x+2*y+(2*k-2)*z==4-k

% La matrice dei coefficenti A(k) e la matrice dei termini noti b(k) sono date da

[A(k), b(k)]=equationsToMatrix(eqn1,eqn2,eqn3, x, y,z)

% e la matrice completa T(k) è data da

T(k)=[A(k) b(k)]

%
% Riducendo a scala la matrice completa T(k) del sistema ci accorgiamo che ci sono 4 casi da discutere separatamente: 1) k=0, 2) k=1, 3) k=2, 4) tutti gli altri casi
%
% Caso 1: k=0. In questo caso la matrice completa del sistema è

T(0)

% La forma a scala ridotta di questa matrice è

rref(T(0))

% Dato che l'ultima colonna è dominante, deduciamo che il sistema non ammette soluzioni per k=0
%
% Caso 2: k=1. In questo caso la matrice completa del sistema è

T(1)

% e la sua forma a scala ridotta è

rref(T(1))

% da cui deduciamo che il sistema ammette l'unica soluzione

linsolve(A(1),b(1))

%
% Caso 3: k=2. In questo caso la matrice completa del sistema è

T(2)

% la cui forma a scala ridotta è

rref(T(2))

% da cui deduciamo che il sistema è compatibile e le soluzioni dipendono dai due parametri x2 ed x3. Per trovare le soluzioni cerchiamo una soluzione particolare

X0=linsolve(A(2),b(2))

% e le soluzioni base del sistema omogeneo associato

X=null(A(2));
X1=X(:,1)
X2=X(:,2)

% Le soluzioni sono tutte e sole le combinazioni lineari della forma X0+x2 X1+ x3 X2

X0+y*X1+z*X2

%
% Caso 4: k diverso da 0,1 e 2. In questo caso la forma scala ridotta di T(k) è

rref(T(k))

% da cui deduciamo che il sistema lineare ammette l'unica soluzione

linsolve(A(k),b(k))

%
%