潮流计算的计算机算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高等电力系统分析

(潮流计算的计算机算法)PQ分解法潮流计算(IEEE14)

目录

一、MATLAB源程序

二、对支路参数(B1)、节点参数(B2)的说明

三、带入数据,运行结果

一、MATLAB源程序

clear

close all

n=input('请输入节点数:n=');

n1=input('请输入支路数:n1=');

isb=input('请输入平衡节点号:isb=');

pr=input('请输入误差精度:pr=');

B1=input('请输入支路参数:B1=');

B2=input('请输入节点参数:B2=');

n2=input('请输入PQ节点个数:n2=');

Y=zeros(n);

for i=1:n1

p=B1(i,1);

q=B1(i,2);

Y(p,q)=Y(p,q)-1/(B1(i,3)+B1(i,4)*1j); %非对角元

Y(q,p)=Y(p,q);

Y(p,p)=Y(p,p)+1/(B1(i,3)+B1(i,4)*1j)+B1(i,6)*1j; %对角元 Y(q,q)=Y(q,q)+1/(B1(i,3)+B1(i,4)*1j)+B1(i,6)*1j;

end

disp('导纳矩阵Y=');

disp(Y)

%---------------------------------------------

%---------------下面是求P,Q,V,O矩阵---------------

V=zeros(1,n);O=zeros(1,n);P=zeros(1,n);Q=zeros(1,n);

G=real(Y);B=imag(Y);

for i=1:n

P(i)=B2(i,3);

Q(i)=B2(i,4);

V(i)=B2(i,5);

O(i)=B2(i,6);

end

B3=B(1:n-1,1:n-1); %不含平衡节点,由节点导纳虚部构成

B4=B(1:n2,1:n2); %所有PQ节点

%----------------------------------------------

%---------------下面是求ΔP,ΔQ矩阵---------------

DX=0;ICT=1;Mp=1;Mq=1;

while ICT~=0

m1=1;m2=1;

for i=1:n

if i~=isb

C(i)=0;

D(i)=0;

for j1=1:n

C(i)=C(i)+V(i)*V(j1)*(G(i,j1)*cos(O(i)-O(j1))+B(i,j1)*sin(O(i)-O( j1)));

D(i)=D(i)+V(i)*V(j1)*(G(i,j1)*sin(O(i)-O(j1))-B(i,j1)*cos(O(i)-O( j1)));

end

DP(m1)=P(i)-C(i);

m1=m1+1;

if B2(i,2)==1

DQ(m2)=Q(i)-D(i);

m2=m2+1;

end

end

end

m1=m1-1; %所有节点数

m2=m2-1; %PQ节点数

DPQ=[DP';DQ']; %求DP,DQ

V1=V(:,1:m1);

V2=diag(V1);

V3=inv(V2); %对V矩阵求逆

H=V3*DP'; %ΔP/V

K=-inv(B3)*H; %-ΔP/V/B3

deltO=V3*K; %Δ角=-ΔP/V/V/B3

max1=max(abs(DP));

for i=1:m1

if max1

Mp=0;

else

O(i)=O(i)+deltO(i)';

Mq=1;

end

end

V4=V(:,1:m2);

V5=diag(V4);

V6=inv(V5);

L=V6*DQ';

N=-inv(B4)*L;

deltV=N; %ΔV=-ΔQ/V/B

max2=max(abs(DQ));

for i=1:m2

if max2

Mq=0;

else

if B2(i,2)==1;

V(i)=V(i)+deltV(i)';

Mp=1;

end

end

end

if Mp==0&&Mq==0

ICT=0;

else

ICT=1;

end

DX=DX+1;

end

%-------------------------------------------

%----------------迭代结束,开始输出结果----------------

disp('----------------------------------------------'); disp('迭代次数为:');

disp(DX);

for i=1:n

E(i)=V(i)*cos(O(i))+1j*V(i)*sin(O(i));

o(i)= 180*angle(E(i))/pi;

end

disp('---------------------------------------------'); disp('修正后各节点电压标么值为(节点号从小到大排列):');

disp(V);

disp('---------------------------------------------'); disp('修正后各节点电压相角为(节点号从小到大排列):');

disp(o);

%------------计算各个节点的功率----------------------

disp('----------------------------------------------'); disp('各节点的功率为:');

for p=1:n

C(p)=0;

for q=1:n

C(p)=C(p)+conj(Y(p,q)*conj(E(q)));

end

S(p)=E(p)*C(p);

end

相关文档
最新文档