Projects/1BIT/winter-semester/Projekt IEL/Zdrojove kody/ielsolver.m
2026-04-14 19:28:46 +02:00

448 lines
No EOL
7.3 KiB
Matlab

z1 = "C";
z2 = "H";
z3 = "H";
z4 = "C";
% ZADANIE 1
fprintf("priklad 1 [%s]\n",z1);
if strcmp(z1, 'A')
U1 = 80;
U2 = 120;
R1 = 350;
R2 = 650;
R3 = 410;
R4 = 130;
R5 = 360;
R6 = 750;
R7 = 310;
R8 = 190;
elseif strcmp(z1, 'B')
U1 = 95;
U2 = 115;
R1 = 650;
R2 = 730;
R3 = 340;
R4 = 330;
R5 = 410;
R6 = 830;
R7 = 340;
R8 = 220;
elseif strcmp(z1, 'C')
U1 = 100;
U2 = 80;
R1 = 450;
R2 = 810;
R3 = 190;
R4 = 220;
R5 = 220;
R6 = 720;
R7 = 260;
R8 = 180;
elseif strcmp(z1, 'D')
U1 = 105;
U2 = 85;
R1 = 420;
R2 = 980;
R3 = 330;
R4 = 280;
R5 = 310;
R6 = 710;
R7 = 240;
R8 = 200;
elseif strcmp(z1, 'E')
U1 = 115;
U2 = 55;
R1 = 485;
R2 = 660;
R3 = 100;
R4 = 340;
R5 = 575;
R6 = 815;
R7 = 255;
R8 = 225;
elseif strcmp(z1, 'F')
U1 = 125;
U2 = 65;
R1 = 510;
R2 = 500;
R3 = 550;
R4 = 250;
R5 = 300;
R6 = 800;
R7 = 330;
R8 = 250;
elseif strcmp(z1, 'G')
U1 = 130;
U2 = 60;
R1 = 380;
R2 = 420;
R3 = 330;
R4 = 440;
R5 = 450;
R6 = 650;
R7 = 410;
R8 = 275;
elseif strcmp(z1, 'H')
U1 = 135;
U2 = 80;
R1 = 680;
R2 = 600;
R3 = 260;
R4 = 310;
R5 = 575;
R6 = 870;
R7 = 355;
R8 = 265;
else
error('Invalid variation specified.');
end
R78 = R7 + R8;
R56 = (R5*R6)/(R5+R6);
fprintf('R56 = %.8f, R78 = %.8f\n\n', R56, R78);
RA = (R1*R2)/(R1+R2+R3);
RB = (R1*R3)/(R1+R2+R3);
RC = (R2*R3)/(R1+R2+R3);
fprintf('RA = %.8f, RC = %.8f\n\n', RA, RC);
RB56 = RB + R56;
RC4 = RC + R4;
fprintf('RB56 = %.8f\n', RB56);
fprintf('RC4 = %.8f\n', RC4);
RBC456 = (RB56*RC4)/(RB56+RC4);
fprintf('RCB56C4 = %.8f\n', RBC456);
R = RA + RBC456 + R78;
fprintf('R = %.8f\n',R);
I = (U1+U2)/R;
fprintf('I = %.8f\n',I);
URA = I * RA;
URBC456 = I * RBC456;
fprintf('URBC... = %.8f\n', URBC456);
IRB56 = URBC456/RB56;
fprintf('IRB56 = %.8f\n', IRB56);
IRC4 = URBC456/RC4;
fprintf('IRC4 = %.8f\n', IRC4);
URC = IRC4 * RC;
fprintf('URA = %.8f\n', URA);
UR2 = URA + URC;
IR2 = UR2/R2;
fprintf('UR2 = %.8fV, IR2 = %.8fA\n\n', UR2, IR2);
% ZADANIE 2
fprintf("priklad 2 [%s]\n",z2);
if strcmp(z2, 'A')
U = 50;
R1 = 100;
R2 = 525;
R3 = 620;
R4 = 210;
R5 = 530;
R6 = 50;
elseif strcmp(z2, 'B')
U = 100;
R1 = 50;
R2 = 310;
R3 = 610;
R4 = 220;
R5 = 570;
R6 = 100;
elseif strcmp(z2, 'C')
U = 200;
R1 = 70;
R2 = 220;
R3 = 630;
R4 = 240;
R5 = 450;
R6 = 200;
elseif strcmp(z2, 'D')
U = 150;
R1 = 200;
R2 = 200;
R3 = 660;
R4 = 200;
R5 = 550;
R6 = 150;
elseif strcmp(z2, 'E')
U = 250;
R1 = 150;
R2 = 335;
R3 = 625;
R4 = 245;
R5 = 600;
R6 = 300;
elseif strcmp(z2, 'F')
U = 130;
R1 = 180;
R2 = 350;
R3 = 600;
R4 = 195;
R5 = 650;
R6 = 80;
elseif strcmp(z2, 'G')
U = 180;
R1 = 250;
R2 = 315;
R3 = 615;
R4 = 180;
R5 = 460;
R6 = 120;
elseif strcmp(z2, 'H')
U = 220;
R1 = 190;
R2 = 360;
R3 = 580;
R4 = 205;
R5 = 560;
R6 = 250;
else
error('Invalid variation specified.');
end
Rekv = R1 + ((R2 + R3) * (R4 + R5))/(R2 + R3 + R4 + R5);
fprintf("Rekv=%.8f\n", Rekv);
I = U/Rekv;
fprintf("I=%.8f\n", I);
UR45 = U - I * R1;
IR45 = UR45/(R4 + R5);
fprintf("IR45=%.8f\n", IR45);
Ui = IR45 * R5;
Ri = (((((R3+R2)*R1)/(R1+R2+R3))+R4)*R5)/(((((R3+R2)*R1)/(R1+R2+R3))+R4)+R5);
IR6 = Ui/(Ri + R6);
UR6 = R6 * IR6;
fprintf('Ui = %.8fV, Ri=%.8fΩ, UR6 = %.8fV, IR6 = %.8fA\n\n',Ui,Ri, UR6, IR6);
% zadanie 3
fprintf("priklad 3 [%s]\n",z3);
if strcmp(z3, 'A')
U = 120;
I1 = 0.9;
I2 = 0.7;
R1 = 53;
R2 = 49;
R3 = 65;
R4 = 39;
R5 = 32;
elseif strcmp(z3, 'B')
U = 150;
I1 = 0.7;
I2 = 0.8;
R1 = 49;
R2 = 45;
R3 = 61;
R4 = 34;
R5 = 34;
elseif strcmp(z3, 'C')
U = 110;
I1 = 0.85;
I2 = 0.75;
R1 = 44;
R2 = 31;
R3 = 56;
R4 = 20;
R5 = 30;
elseif strcmp(z3, 'D')
U = 115;
I1 = 0.6;
I2 = 0.9;
R1 = 50;
R2 = 38;
R3 = 48;
R4 = 37;
R5 = 28;
elseif strcmp(z3, 'E')
U = 135;
I1 = 0.55;
I2 = 0.65;
R1 = 52;
R2 = 42;
R3 = 52;
R4 = 42;
R5 = 21;
elseif strcmp(z3, 'F')
U = 145;
I1 = 0.75;
I2 = 0.85;
R1 = 48;
R2 = 44;
R3 = 53;
R4 = 36;
R5 = 25;
elseif strcmp(z3, 'G')
U = 160;
I1 = 0.65;
I2 = 0.45;
R1 = 46;
R2 = 41;
R3 = 53;
R4 = 33;
R5 = 29;
elseif strcmp(z3, 'H')
U = 130;
I1 = 0.95;
I2 = 0.50;
R1 = 47;
R2 = 39;
R3 = 58;
R4 = 28;
R5 = 25;
else
error('Invalid variation specified.');
end
A = [(1/R1)+(1/R2) -(1/R2) 0;-(1/R2) (1/R2)+(1/R3) -(1/R3);(-1/R2) 1/R2 (1/R4)+(1/R5)];
disp(A)
I = [I1;I2;(U/R5)];
fprintf("I3=%.8fA\n", (U/R5));
U = inv(A) * I;
Ua = U(1);
Ub = U(2);
Uc = U(3);
UR4 = Uc;
IR4 = UR4/R4;
fprintf("Ua=%.8fV\n", Ua);
fprintf("Ub=%.8fV\n", Ub);
fprintf("Uc=%.8fV\n", Uc);
fprintf('UR4 = %.8fV, IR4 = %.8fA\n\n', UR4, IR4);
% pr4
fprintf("priklad 4 [%s]\n",z4);
if strcmp(z4, 'A')
u1 = 3;
u2 = 5;
R1 = 12;
R2 = 14;
L1 = 120 * 10^(-3);
L2 = 100 * 10^(-3);
C1 = 200 * 10^(-6);
C2 = 105 * 10^(-6);
f = 70;
elseif strcmp(z4, 'B')
u1 = 2;
u2 = 4;
R1 = 11;
R2 = 15;
L1 = 100 * 10^(-3);
L2 = 85 * 10^(-3);
C1 = 220 * 10^(-6);
C2 = 95 * 10^(-6);
f = 80;
elseif strcmp(z4, 'C')
u1 = 3;
u2 = 4;
R1 = 10;
R2 = 13;
L1 = 220 * 10^(-3);
L2 = 70 * 10^(-3);
C1 = 230 * 10^(-6);
C2 = 85 * 10^(-6);
f = 75;
elseif strcmp(z4, 'D')
u1 = 4;
u2 = 5;
R1 = 13;
R2 = 15;
L1 = 180 * 10^(-3);
L2 = 90 * 10^(-3);
C1 = 210 * 10^(-6);
C2 = 75 * 10^(-6);
f = 85;
elseif strcmp(z4, 'E')
u1 = 5;
u2 = 3;
R1 = 14;
R2 = 13;
L1 = 130 * 10^(-3);
L2 = 60 * 10^(-3);
C1 = 100 * 10^(-6);
C2 = 65 * 10^(-6);
f = 90;
elseif strcmp(z4, 'F')
u1 = 2;
u2 = 3;
R1 = 12;
R2 = 10;
L1 = 170 * 10^(-3);
L2 = 80 * 10^(-3);
C1 = 150 * 10^(-6);
C2 = 90 * 10^(-6);
f = 65;
elseif strcmp(z4, 'G')
u1 = 5;
u2 = 5;
R1 = 13;
R2 = 12;
L1 = 140 * 10^(-3);
L2 = 60 * 10^(-3);
C1 = 160 * 10^(-6);
C2 = 80 * 10^(-6);
f = 60;
elseif strcmp(z4, 'H')
u1 = 5;
u2 = 6;
R1 = 10;
R2 = 10;
L1 = 160 * 10^(-3);
L2 = 75 * 10^(-3);
C1 = 155 * 10^(-6);
C2 = 70 * 10^(-6);
f = 95;
else
error('Invalid variation specified.');
end
w = 2*pi*f;
ZL1 = 1j*w*L1;
ZL2 = 1j*w*L2;
ZC1 = -(1j/(w*C1));
ZC2 = -(1j/(w*C2));
fprintf("wL1=%.8f\n", w*L1);fprintf("wL1=%.8f\n", w*L2);
A = [R2+R1+ZC1+ZL1 -ZC1-R1 -R2;-R1-ZC1 ZC1+R1+ZL2 -ZL2;R2 ZL2 -ZL2-R2-ZC2];
U = [0;u1;u2];
P = inv(A) * U; % prudy
Ia = P(1);
Ib = P(2);
Ic = P(3);
fprintf("%.8f + j%.8f \n",real(Ia), imag(Ia) );
fprintf("%.8f + j%.8f \n",real(Ib), imag(Ib) );
fprintf("%.8f + j%.8f \n",real(Ic), imag(Ic) );
fprintf("%.8f + j%.8f \n",real(Ib-Ic), imag(Ib-Ic) );
ul2 = ZL2 *(Ib-Ic);
UL2 = abs(ul2);
fprintf("%.8f \n", imag(ul2)*imag(ul2) );
fprintf("%.8f \n", real(ul2)*real(ul2) );
theta = rad2deg(atan(imag(ul2)/real(ul2))) + "°";
fprintf("%.8f \n", atan(imag(ul2)/real(ul2)) );
fprintf("ul2 = %.8f + j%.8fV, UL2 = %.8fV, theta = %s\n\n",real(ul2),imag(ul2),UL2,theta);