% Prova d'esame del 2018-01-30
function q
clear, format short g, format compact
[ST,I] = dbstack;
%fprintf(2,['$$$$ ' num2str(100*rand) ' $$$$\n'])
fprintf(2,'$$$$ %0.5g $$$$ %s\n', 100*rand,ST.file)
%% Quesiti A1 e B1
clear
E = 10; J = 2.5;
R1 = 2; R2 = 4;
R3 = 6; R4 = 6;
beta = 3;
%
dispah(' Quesito A1, Metodo 1: Thevenin ')
% Thevenin rimuovendo R2 ed E
I10 = J; % corrente (a vuoto) in R1 verso il basso
I40 = beta*I10; % corrente (a vuoto) in R3 verso l'alto
VJ0 = R1*J; % tensione (a vuoto) in R1 con + in alto
V30 = R3*I40; % tensione (a vuoto) in R3 con + in basso
E0 = VJ0+V30; % tensione a vuoto con + a sinistra
% Per valutare R0 spegniamo J e colleghiamo un generatore esterno di test Jt
% I1t = Jt
% I3t = I1t + beta*I1t = (1+beta)*Jt
% V1t = R1*I1t % + in alto
% V3t = R3*I3t = (1+beta)*R3*Jt % + in basso
% Vt = V1t + V3t = R1*Jt + (1+beta)*R3*Jt % + a sinistra
R0 = R1 + (1+beta)*R3; % = Vt/Jt
%
I2 = (E0-E)/(R0+R2);
P2 = R2*I2^2;
disp(table(E0,R0,I2,P2))
disp('%%%%%% nota che R4 non e'' usata %%%%%%')
disp(' ')
dispah(' Quesito A1, Metodo 2: node analysis ')
% 1 nodo in comune tra R1 R2 e J
% 2 nodo in comune tra R2 ed E
% 3 nodo in comune tra E R3 e beta*i1
% 4 nodo in comune tra beta*i1 e R4
% 5 nodo inferiore di riferimento (u5=0)
%
% invece dei nodi 2 e 3 meglio considerare il macronodo t23 contenente
% i nodi 2 e 3 e il generatore E (metodo potenziali nodali ridotto)
%
% non occorre considerare l'equazione al nodo 4 perche' la serie di
% beta*i1 ed R4 e' equivalente al solo beta*i1
% (volendo si puo' scrivere l'equazione u4/R4 = beta*i1, per poi accorgersi
% che essa e' indipendente dalle altre (perche' i1 = u1/R1), e che il
% valore di R4 non influisce)
%
% / u2-u3 = E % riduzione numero incognite
% | u1/R1 + (u1-u2)/R2 = J % nodo 1
% \ (u2-u1)/R2 + u3/R3 + beta*u1/R1 = 0 % macronodo t23 (insieme di taglio)
%
% / u1/R1 + (u1-u2)/R2 = J
% \ (u2-u1)/R2 + u2/R3 + beta*u1/R1 = E/R3
%
% / (G1+G2)*u1 - G2*u2 = J
% \ (-G2+beta*G1)*u1 + (G2+G3)*u2 = G3*E
G1 = 1/R1; G2 = 1/R2; G3 = 1/R3;
G = [ G1+G2 -G2;
-G2+beta*G1 G2+G3]
d = [J; G3*E];
u = G\d;
u1 = u(1);
u2 = u(2);
v2 = u1-u2;
i2 = v2/R2;
disp(table(u1,u2,v2,i2))
% SPICE netlist del circuito considerato
% Per utilizzare le righe seguenti in un simulatore, ad esempio LTspice,
% copiarle in un file di testo con estensione .cir, rimuovendo i simboli %
%q1 circuit
%vr1 1v 0 0 ; 0V source to sense the current in r1
%r1 1 1v 2
%r2 1 2 4
%r3 3 0 6
%r4 4 0 6
%
%v_E 2 3 10 ; E
%i_J 0 1 2.5 ; J
%
%F_ 3 4 vr1 3 ; beta*ir1
%*vin 1 0 ac 1 dc 0
%*.ac dec 10 .01 10
%*.probe
%.op ; dc operating point
%.end
disp(' ')
dispah(' Quesito B1, Metodo 1: Thevenin ')
clear
E = 10; J = 2.5;
R1 = 2; R2 = 4;
R3 = 6; R4 = 6;
beta = 3;
% Thevenin rimuovendo R2 ed E
% I10 = 0; % corrente (a vuoto) in R1
% beta*I10 = 0; %
% I30 = J; % corrente (a vuoto) in R3 verso il basso
VJ0 = R3*J; % tensione (a vuoto) su R3 e su J con + in alto
E0 = VJ0; % tensione a vuoto con + a destra
% Per valutare R0 spegniamo J e colleghiamo un generatore esterno di test Jt
% Si riottiene quanto ottenuto per la traccia A perche', dopo aver eliminato
% E ed R2 e poi spegnendo J si ottiene la stessa rete
R0 = R1 + (1+beta)*R3; % = Vt/Jt
%
I2 = (E0+E)/(R0+R2); % questo invece e' diverso
P2 = R2*I2^2;
disp(table(E0,R0,I2,P2))
disp('%%%%%% nota che R4 non e'' usata %%%%%%')
disp(' ')
dispah(' Quesito B1, Metodo 2: node analysis ')
% 1 nodo in comune tra R1 ed E
% 2 nodo in comune tra R2 ed E
% 3 nodo in comune tra R2 J R3 e beta*i1
% 4 nodo in comune tra beta*i1 e R4
% 5 nodo inferiore di riferimento (u5=0)
%
% invece dei nodi 1 e 2 meglio considerare il macronodo t12 contenente
% i nodi 1 e 2 e il generatore E (metodo potenziali nodali ridotto)
%
% come per la traccia A non occorre considerare l'equazione al nodo 4
%
% / u1-u2 = E % riduzione numero incognite
% | u1/R1 + (u2-u3)/R2 = 0 % macronodo t12
% \ (u3-u2)/R2 + u3/R3 + beta*u1/R1 = J % nodo 3
%
% / (u2+E)/R1 + (u2-u3)/R2 = 0
% \ (u3-u2)/R2 + u3/R3 + beta*(u2+E)/R1 = J
%
% / u2/R1 + (u2-u3)/R2 = -E/R1
% \ (u3-u2)/R2 + u3/R3 + beta*u2/R1 = J - beta*E/R1
%
% / (G1+G2)*u2 - G2*u3 = -E/R1
% \ (-G2+beta*G1)*u2 + (G2+G3)*u3 = J - beta*E/R1
G1 = 1/R1; G2 = 1/R2; G3 = 1/R3;
G = [ G1+G2 -G2;
-G2+beta*G1 G2+G3]
% Si riottiene la stessa matrice G della traccia A perche', quando E e J
% sono spenti rete e' la stessa
d = [-E/R1; J-beta*G1*E]; % questo invece e' diverso
u = G\d;
u2 = u(1);
u3 = u(2);
u1 = u2+E;
v2 = u3-u2;
i2 = v2/R2;
disp(table(u1,u2,u3,v2,i2))
return
publish('q_180130_AB','pdf')
%break
function c=paral(a,b)
c=a.*b./(a+b);
function dispah(str)
disp(sprintf('%s', str))
function dispc(str,k)
%
% aqdispc('[variablename1 variablename2 ...]') displays the following:
% [variablename1 variablename2]
% values1 values2
if nargin==1 || k==1
%disp(str)
disp(['' str ''])
end
disp(evalin('caller',str))