clc
clc
clc
clear all
close all
% Start timer
tic;
% Bus Data
bus_data = [
1 0 0 1.04 0;
2 0.5 0.2 0 0;
3 1.0 0.5 0 0;
4 0.3 0.1 0 0
];
% Line Data
line_data = [
1 2 0.05 0.15;
1 3 0.1 0.3 ;
2 3 0.15 0.45;
2 4 0.1 0.3 ;
3 4 0.05 0.15
];
% Number of buses
num_buses = size(bus_data, 1);
for i = 2:num_buses
S_injection = bus_data(i, 2) - 1i * bus_data(i, 3);
% Power flow equation
S = V(i) * conj(Ybus(i, :) * V) - S_injection;
% Jacobian matrix
J11 = real(Ybus(i, i)) * V(i);
J12 = -imag(Ybus(i, i)) * V(i)^2;
J21 = -imag(Ybus(i, i));
J22 = real(Ybus(i, i)) * V(i);
% Check convergence
if max(abs(V - V_prev)) < tolerance && max(abs(delta - delta_prev)) <
tolerance
break;
end
end
% Stop timer
elapsed_time = toc;
% Calculate error
error_V = max(abs(V - V_prev));
error_delta = max(abs(delta - delta_prev));
% Display results
disp('Voltage magnitudes and angles at buses 2, 3, and 4:');
disp(abs(V(2:4)));
disp(angle(V(2:4)) * 180 / pi);
% Report
disp('Number of iterations:');
disp(iter);
disp('Accuracy (tolerance):');
disp(tolerance);
GAUSS SIEDEL:
clc
clear all
close all
% Start timer
tic;
% Bus Data
bus_data = [
1 0 0 1.04 0;
2 0.5 0.2 0 0;
3 1.0 0.5 0 0;
4 0.3 0.1 0 0
];
% Line Data
line_data = [
1 2 0.05 0.15;
1 3 0.1 0.3 ;
2 3 0.15 0.45;
2 4 0.1 0.3 ;
3 4 0.05 0.15
];
% Number of buses
num_buses = size(bus_data, 1);
for i = 2:num_buses
S_injection = bus_data(i, 2) - 1i * bus_data(i, 3);
% Gauss-Seidel iteration
V(i) = (1 / Ybus(i, i)) * (S_injection / conj(V(i)) - Ybus(i, :) * V +
Ybus(i, i) * V(i));
end
% Check convergence
if max(abs(V - V_prev)) < tolerance && max(abs(delta - delta_prev)) <
tolerance
break;
end
end
% Stop timer
elapsed_time = toc;
% Calculate error
error_V = max(abs(V - V_prev));
error_delta = max(abs(delta - delta_prev));
% Display results
disp('Voltage magnitudes and angles at buses 2, 3, and 4:');
disp(abs(V(2:4)));
disp(angle(V(2:4)) * 180 / pi);
% Report
disp('Number of iterations:');
disp(iter);
disp('Accuracy (tolerance):');
disp(tolerance);