Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

clc;

clear all;
ybus
linedata
temp=size(linedata);
bus=4;
n=temp(1,1);
ybuss=zeros(bus);
for i=1:n
p=linedata(i,1);
q=linedata(i,2);
ybuss(p,p)= ybuss(p,p)+linedata(i,3)^-1+linedata(i,4);
ybuss(p,q)= ybuss(p,q)-linedata(i,3)^-1;
ybuss(q,p)= ybuss(p,q);
ybuss(q,q)= ybuss(q,q)+linedata(i,3)^-1+linedata(i,4);
end
ybuss
clc;
clear all;
ybus
temp=size(linedata);
bus=4;
n=temp(1,1);
ybuss=zeros(bus);
for i=1:n
p=linedata(i,1);
q=linedata(i,2);
ybuss(p,p)= ybuss(p,p)+linedata(i,3)^-1+linedata(i,4);
ybuss(p,q)= ybuss(p,q)-linedata(i,3)^-1;
ybuss(q,p)= ybuss(p,q);

ybuss(q,q)= ybuss(q,q)+linedata(i,3)^-1+linedata(i,4);
end
for p=1:bus
for j=p:p
ybuss(p,p)= ybuss(p,p)+C(j,2);
end
end

ybuss
clear all;
clc;

%LINE DATA + SELF INDUCTANCE (ENTER BRANCH DATA FIRST THEN


LINK DATA)
data=[1 2 0.25i ;1 3 0.25i; 1 4 0.25i;4 5 0.11i; 2 3 0.13i; 4 3 0.22i; 3 4 0.22i];

Zm=[6 7 0.48i;];

%Zm=[1 2 0]; %If no mutual


inductance then use Zm=[1 2 0] as default

datanode=data(:,1:2); %CALCULATION
OF NUMBER OF NODES AND ELEMENTS
nodes=unique(datanode);
node=length(nodes(:,1));
element=length(data(:,1));
branch=node-1; link=element-branch;

for i=1:element
for j=1:node
aug(i,j)=0;
end
end

dataself=data(:,3);

for i=1:element
p=data(i,1); q=data(i,2); %FORMATION OF A-cap
AND SELF Zbus MATRIX
aaug(i,p)=1; aaug(i,q)=-1;
Zself(i,i)=dataself(i,1);
end

Zmp=Zm(:,1);
Zmq=Zm(:,2);
Zmvalue=Zm(:,3);

Zmutual=zeros(element,element);

for i=1:length(Zm(:,1))
Zmutual(Zmp(i),Zmq(i))=Zmvalue(i); %FORMATION OF
Zmutual MATRIX
Zmutual(Zmq(i),Zmp(i))=Zmvalue(i);
end

z=Zself+Zmutual;

aaug
aaug(:,1)=[];
abus=aaug;
abus

for i=1:branch
for j=1:branch
Ab(i,j)=abus(i,j); %FORMATION OF Ab
MATRIX
end
end
Ab;
Abinv=inv(Ab);
K=transpose(Abinv);
K

B=abus*(transpose(K));
B1=abus*(transpose(K));
B

for i=1:element
for j=1:element
baug(i,j)=0;
end
end

for i=1:element
for j=1:branch
baug(i,j)=B(i,j);
end
end

for i=node:element
for j=node:element
if(i==j)
baug(i,j)=1; %FORMATION OF
Bcap MATRIX
else

baug(i,j)=0;
end
end
end

baug

for i=1:branch
B(1,:)=[];
end

Bl=B;
Bl;
Cb=-[transpose(Bl)];
Cb;

for i=1:element
for j=1:element
C(i,j)=0;
end
end
for i=1:branch
C(:,1)=[];
end

for i=1:branch
for j=1:link
C(i,j)=Cb(i,j);
end
end
for i=node:element
for j=1:link
if(i==j+branch)
C(i,j)=1; %FORMATION OF C
MATRIX
else
C(i,j)=0;
end
end
end
C

for i=1:element
for j=1:element
Caug(i,j)=0;
end
end

for i=1:element
for j=node:element
Caug(i,j)=C(i,j-branch);
end
end

for i=1:element
for j=1:branch
if(i==j)
Caug(i,j)=1;
else
Caug(i,j)=0;
%FORMATION OF Ccap MATRIX
end
end
end

Caug

%singular%
fprintf ('SINGULAR \n');

Zloop=[transpose(C)]*z*C;
Zloop

Yloop=inv(Zloop);
Yloop

y=inv(z);
y
ybussingular=(transpose(abus))*y*abus;
ybussingular

zbussingular=inv(ybussingular);
zbussingular

ybrsingular=(transpose(B1))*y*B1;
ybrsingular

zbrsingular=inv(ybrsingular);
zbrsingular

%non-singular%
fprintf ('NON-SINGULAR \n');

zloopcap=[transpose(Caug)]*z*Caug;
zloopcap

for i=1:branch
for j=1:branch
z1(i,j)=zloopcap(i,j); %Z1
end
for j=node:element
z2(i,j-branch)=zloopcap(i,j); %Z2
end
end
z1
z2

for i=node:element
for j=1:branch
z3(i-branch,j)=zloopcap(i,j); %Z3
end
for j=node:element
z4(i-branch,j-branch)=zloopcap(i,j); %Z4
end
end
z3
z4
zbrNon=z1-(z2*[inv(z4)]*z3);
zbrNon
ybrNon=inv(zbrNon);
ybrNon

ybrcap=[transpose(baug)]*y*baug;
ybrcap

for i=1:branch
for j=1:branch
y1(i,j)=ybrcap(i,j); %Y1
end
for j=node:element
y2(i,j-branch)=ybrcap(i,j); %Y2
end
end
y1
y2

for i=node:element
for j=1:branch
y3(i-branch,j)=ybrcap(i,j); %Y3
end
for j=node:element
y4(i-branch,j-branch)=ybrcap(i,j); %Y4
end
end
y3
y4

yloopNon=y4-(y3*[inv(y1)]*y2);
yloopNon
zloopNon=inv(yloopNon);
zloopNon

zbusNon=[transpose(K)*zbrNon*K];
zbusNon

ybusNon=inv(zbusNon);
ybusNon
%CHECKS%

fprintf('VERIFICATION WHETHER THE COMPUTED SINGULAR AND


NON-SINGULAR VALUES MATCH\n');
fprintf('\n');

count=0;
count1=0;

for i=1:branch
for j=1:branch
if (ybrNon(i,j)-ybrsingular(i,j)<=0.000001)
count=count+1;
end
end
end

for i=1:link
for j=1:link
if (zloopNon(i,j)-Zloop(i,j)<=0.000001)
count1=count1+1;
end
end
end

if (count==branch*branch)
fprintf ('Branch Values Matched for Singular and Non-singular cases\n');
else
fprintf('Branch Values not Matched \n');
end

if (count1==link*link)
fprintf ('Loop Values Matched for Singular and Non-singular cases \n');
else
fprintf('Loop Values not Matched \n');
end

You might also like