%% Giratoros pelda (ketkapu karakterisztika meghatarozasa)
% lasd H22G52
% Hatarozzuk meg a ketkapu karakterisztikat numerikus es szimbolikus modon

%% Szimbolikus meghatarozas 
syms u1 u2 i1 i2 R r ua ia ub ib
% egyenletek
eq1 = -i1 + (u1-ua)/R + u1/(2*R) == 0;
eq2 = ia + (ua-u1)/R + (ua - ub)/(3*R) == 0;
eq3 = ib + ub/(2*R) + (ub-u2)/R + (ub-ua)/(3*R) == 0;
eq4 = -i2 + (u2-ub)/R == 0;
eq5 = ua == -r*ib;
eq6 = ub == r*ia;
% egyenletek megoldasa
sol = solve([eq1, eq2, eq3, eq4, eq5,eq6], [u1,i2,ua,ia,ub,ib]);
% megoldas egyes reszei a keresett mennyisegek
sol.u1
% amelyeket kicsit csinosabb formaban is ki lehet iratni
pretty(sol.u1)

% Rendezve es csinosan a keresett osszefuggesek
pretty(collect(sol.u1,[i1,u2]))
pretty(collect(sol.i2,[i1,u2]))
%% Atteres a numerikus megoldashoz
equationsToMatrix([eq1,eq2,eq3,eq4,eq5,eq6],[u1,i2,ua,ia,ub,ib])
% 
[As, Bs] = equationsToMatrix([eq1,eq2,eq3,eq4,eq5,eq6],[u1,i2,ua,ia,ub,ib])

subs(As, {R,r}, {5,2.5})
double(subs(As, {R,r}, {5,2.5}))

%% 
% A linearis egyenletrendszer egyutthatoinak meghatarozasa az egyenletrendszer 
% alapjan kifejezett egyutthato matrixok
% 
P = double(subs(As, {R,r}, {5,2.5}))
% atalakitas a ket gerjesztes figyelembe vetelehez
Q = [1 0;0 0;0 1/5;0 -1/5;0 0;0 0]
% Matrix egyenlet megoldasa -- P*x = Q*s ==> x = inv(P)*Q*s 
PQ = inv(P)*Q
% A PQ elso ket sora tartalmazza a keresett karakterisztika ertekeit

% Ha a gerjesztesekenek lenne "konkret" erteke, akkor megkapnank a
% feszultsegek es aramok erteket.
PQ*[10;5]
%% Osszehasonlitas a kulonbozo modszerekkel kapott eredmenyekre
% Szimbolikus szamitas alapjan a R es r adott erteket behelyettesitjuk.
pretty(collect(subs(sol.u1,{R,r},{5, 2.5}),[i1,u2]))
pretty(collect(subs(sol.i2,{R,r},{5, 2.5}),[i1,u2]))
% Kiolvasas utan a H mar kitoltheto
H = [95/23 -5/23;-7/23 4/23]
% A numerikus megoldas alapjan adodo egyutthatomatrix
PQ(1:2,1:2)
