gaussseidel

clear
n=4
V=[1.04 1.04 1 1]
Y= [ 3-j*9 -2+j*6 -1+j*3 0
-2+j*6 3.666-j*11 -0.666+j*2 -1+j*3
-1+j*3 -0.666+j*2 3.666-j*11 -2+j*6
0 -1+j*3 -2+j*6 3-j*9]
type=ones(n,1)
typechanged=zeros(n,1)
Qlimitmax=zeros(n,1)
Qlimitmin=zeros(n,1)
Vmagfixed=zeros(n,1)
type(2)=2
Qlimitmax(2)=1.0
Qlimitmin(2)=0.2
Vmagfixed(2)=1.04
diff=10;noofiter=1
Vprev=V;
while (diff>0.00001 | noofiter==1),
abs(V)
abs(Vprev)
Vprev=V;
P=[inf 0.5 -1 0.3];
Q=[inf 0 0.5 -.1];
S=[inf+j*inf (0.5-j*0.2) (-1+j*0.5) (0.3-j*0.1)];
for i=2:n,
if type(i)==2 | typechanged(i)==1,
if(Q(i)>Qlimitmax(i)|Q(i)< Qlimitmin(i)),
if(Q(i) Q(i)=Qlimitmin(i);
else
Q(i)=Qlimitmax(i);
end
type(i)=1;
typechanged(i)=1;
else
type(i)=2;
typechanged(i)=0;
end
end
end
sumyv=0;
for k=1:n,
if(i ~= k)
sumyv=sumyv+Y(i,k)*V(k);
end
end
V(i)=(1/Y(i,i))*((P(i)-j*Q(i))/conj(V(i))-sumyv);
if type(i)==2 & typechanged(i)~=1,
V(i)=polarTorect(Vmagfixed(i),angle(V(i))*180/pi);
end
diff=max(abs(abs(V(2:n))-abs(Vprev(2:n))));
noofiter=noofiter+1;
end
V

No comments:

Post a Comment