%本程序的功能是利用PQ分解法进行潮流计算
clear
clc
n=input('请输入节点数:n=');
nl=input('请输入支路数:nl=');
isb=input('请输入平衡母线节点号:isb=');
pr=input('请输入误差精度:pr=');
disp('请输入由支路参数形成的矩阵:B1=');
%输入B1
[fname, pname]= uigetfile('*.xls');
file=[pname fname];
x=xlsread(file);
B1=[x(:,1),x(:,2),(x(:,3),x(:,4),x(:,5),x(:,6)];
disp('请输入由节点参数形成的矩阵:B2=');
%输入B2
[fname, pname]= uigetfile('*.xls');
file=[pname fname];
y=xlsread(file);
B2=[(y(:,1),y(:,2),y(:,3),y(:4),y(:,5)];
disp('请输入由节点号及其对地阻抗形成的矩阵:X=');
%输入X
[fname, pname]= uigetfile('*.xls');
file=[pname fname];
z=xlsread(file);
X=z;
na=input('请输入PQ节点数na=');
Y=zeros(n);YI=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);O=zeros(1,n);
for i=1:n
if X(i,2)~=0;
p=X(i,1);
Y(p,p)=1./X(i,2);
end
end
for i=1:nl
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else p=B1(i,2);q=B1(i,1);
end
Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));
YI(p,q)=YI(p,q)-1./B1(i,3);
Y(q,p)=Y(p,q);
YI(q,p)=YI(p,q);
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;
YI(q,q)=YI(q,q)+1./B1(i,3);
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;
YI(p,p)=YI(p,p)+1./B1(i,3);
end %求导纳矩阵
G=real(Y);B=imag(YI);BI=imag(Y);
for i=1:n
S(i)=B2(i,1)-B2(i,2);
BI(i,i)=BI(i,i)+B2(i,5);
end
P=real(S);Q=imag(S);
for i=1:n
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);
end
for i=1:n