Implementation of Newton Raphson Method in Matlab
Implementation of Newton Raphson Method in Matlab
% DESIGNED BY:
%
% CREATED: 16-JAN-2010
% SEMESTER # 7, EE(POWER).
% SUBJECT: POWER SYSTEM OPERATION AND CONTROL.
% TEXT BOOK: POWER SYSTEM ANALYSIS BY WILLIAM D. STEVENSON, JR.
% CHAPTER # 9.3 - 9.4 (PAGE # 342 - 356).
% UNIVERSITY OF SOUTH ASIA. LAHORE. PAKISTAN.
format short g
disp (' TABLE 9.2 PAGE # 337 LINE DATA FOR EXAMPLE 9.2 ')
linedata=[1
-19.078144,
10.25, 0.05125;
-25.847809,
7.75, 0.03875;
-25.847809,
7.75, 0.03875;
-15.118528,
12.75, 0.06375]
disp (' TABLE 9.3 PAGE # 338 BUS DATA FOR EXAMPLE 9.2 ')
busdata=[1 0,
0, 50,
30.99, 1.00, 0 1;
2 0,
3 0,
4 318, 0 , 80,
49.58, 1.02, 0 3]
% Last column shows Bus Type: 1.Slack Bus 2.PQ Bus 3.PV Bus
ss=i*linedata(:,8);
% Y/2
y=linedata(:,5)+i*linedata(:,6);
% no. of branches
ybus = zeros(totalbuses,totalbuses);
w=0;
u=0;
for n=1:totalbuses
% total no of PV busses
if busdata(n,2)>0
w=w+1;
end
end
for n=2:totalbuses
% total no of PQ busses
if busdata(n,2)==0
u=u+1;
end
end
% ------ INITIALLIZING YBUS ------
for b=1:totalbranches
ybus((linedata(b,1)),(linedata(b,2)))=-y(b);
ybus((linedata(b,2)),(linedata(b,1))) =ybus((linedata(b,1)),(linedata(b,2)));
end
for c=1:totalbuses
for d=1:totalbranches
if linedata(d,1) == c || linedata(d,2) == c
ybus(c,c) = ybus(c,c) + y(d) + ss(d);
end
end
end
disp('TABLE 9.3 PAGE # 338 BUS ADMITTANCE MATRIX FOR EXAMPLE 9.2')
ybus
ybusR=zeros(totalbuses,totalbuses);
ybusA=zeros(totalbuses,totalbuses);
z=zeros(totalbuses,8);
busnumber=busdata(:,1);
PG=busdata(:,2);
QG=busdata(:,3);
PL=busdata(:,4);
QL=busdata(:,5);
V=busdata(:,6);
VV=V;
ANG=busdata(:,7);
type = busdata(:,8);
s=(2*totalbuses)-w-2;
J=zeros(s,s);
MM=zeros(s,1);
AN=ANG;
ybusR;
ybusA;
for i = 2:totalbuses
YVV = 0;
for n = 1:totalbuses
if i~=n
YVV = YVV + (ybusR(i,n)* V(n)*V(i))*cos((ybusA(i,n))+busdata(n,7)-busdata(i,7)); % multiplying
admittance & voltage
end
YVV;
end
for i = 2:totalbuses-w
if busdata(i,8)== 2
YVV = 0;
for n = 1:totalbuses
if i~=n
for i=2:totalbuses-w
if busdata(i,8)== 2
MM(totalbuses-2+i,1)=dq(i);
else
i=i-1;
end
end
J11=zeros(totalbuses-1,totalbuses-1);
J12=zeros(totalbuses-1,u);
J21=zeros(u,totalbuses-1);
J22=zeros(u,u);
%----------------------------J11-------------------------------%
for i=2:totalbuses
for j=2:totalbuses
if i~=j
J11(i-1,j-1)= -abs(((ybusR(i,j)* V(i)*V(j)))*sin((ybusA(i,j))+busdata(j,7)-busdata(i,7)));
end
if i==j
for n=1:totalbuses
if n~=i
J11(i-1,i-1)=J11(i-1,i-1)+( abs(((ybusR(i,n)* V(i)*V(n)))*sin((ybusA(i,n))+busdata(n,7)busdata(i,7))));
end
end
end
end
end
J11;
%----------------------------J12-------------------------------%
for i=2:totalbuses
for j=2:totalbuses-w
if busdata(j,8)== 2
if i~=j
J12(i-1,j-1)= (abs(V(j))*abs((ybusR(i,j)* V(i))))*cos((ybusA(i,j))+busdata(j,7)-busdata(i,7));
end
yv12=0;
if i==j
for n=1:totalbuses
if n~=i
yv12=yv12 + abs((ybusR(i,n)* V(n)))*cos((ybusA(i,n))+busdata(n,7)-busdata(i,7));
end
end
J12(i-1,j-1) = abs(V(i))*(2*abs(V(i))*real(ybus(i,i))+yv12);
end
end
end
end
J12;
%----------------------------J21-------------------------------%
for i=2:totalbuses-w
if busdata(i,8)== 2
for j=2:totalbuses
if i~=j
J21(i-1,j-1)= abs(((ybusR(i,j)* V(i)*V(j)))*cos((ybusA(i,j))+busdata(j,7)-busdata(i,7)));
end
if i==j
for n=1:totalbuses
if n~=i
J21(i-1,j-1)=J21(i-1,j-1)+( -abs(((ybusR(i,n)* V(i)*V(n)))*cos((ybusA(i,n))+busdata(n,7)busdata(i,7))));
end
end
end
end
end
end
J21;
%----------------------------J22-------------------------------%
for i=2:totalbuses-w
for j=2:totalbuses-w
if busdata(i,8)== 2 && busdata(j,8)== 2
if i~=j
J22(i-1,j-1)= -(abs(V(j))*abs((ybusR(i,j)* V(i))))*sin((ybusA(i,j))+busdata(j,7)-busdata(i,7));
end
yv12=0;
if i==j
J22(i-1,j-1)=-(J11(i-1,i-1)) - (2*(abs(V(i))^2)*imag(ybus(i,i)));
end
end
end
end
J22;
%---------------------------------------------------------------------------------%
for k=1:totalbuses-1
for l=1:totalbuses-1
J(k,l)=J11(k,l);
end
end
for k=1:u
for l=1:totalbuses-1
J(l,k+totalbuses-1)=J12(l,k);
end
end
for k=1:u
for l=1:totalbuses-1
J(k+totalbuses-1,l)=J21(k,l);
end
end
for k=1:u
for l=1:u
J(l+totalbuses-1,k+totalbuses-1)=J22(l,k);
end
end
MM;
J;
format short g
k=inv(J)*MM;
for n=1:totalbuses-1
S(n)=(ANG(n+1)+k(n));
sa=radtodeg(S);
%------------busdata(n+1,7)=S(n);
%------------end
ANG=busdata(:,7);
sa;
for m=2:u+1
V(m)=abs(busdata(m,6)+k(totalbuses-2+m));
%abs(VV)
busdata(m,6)=V(m);
end
V;
iter=iter+1;
VV=V;
AN=ANG;
end
J
iter
%-------------------------DISPLAYING OUTPUTS---------------------------%
%real(VACC')
z(1:totalbuses,1)=busdata(:,1);
z(1:totalbuses,2)=busdata(:,8);
z(1:totalbuses,3)=abs(busdata(:,6));
z(1:totalbuses,4)=radtodeg(busdata(:,7));
z(1:totalbuses,5)=PG;
z(1:totalbuses,7)=busdata(:,4);
z(1:totalbuses,8)=busdata(:,5);
disp('
|Bus No.| |Bus Type| |Voltage| |Angle|
|Mvar(L)| ');
format short g
z
|MW(G)|
|Mvar(G)|
|MW(L)|