牛顿拉夫逊法潮流计算.zip

  • qiansliyong
    了解作者
  • matlab
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2021-04-12 23:40
    上传日期
采用牛顿拉夫逊法进行潮流计算,程序还能实现N-1校核和线路网损分析
牛顿拉夫逊法潮流计算.zip
  • main.m
    6.3KB
  • Jacobi.m
    1.4KB
内容介绍
clear all;clc format long; ac=0.00001; %设定精度作为收敛条件 nl=6;n=6; %支路数和节点 Vs=[1.05 0 0 0 0]; type=[1 2 2 2 2 3]; % 1--PV节点, 2--PQ节点, 3--平衡节点 %% 满发最大负荷运行方式下 Ps=[8.37 -2.900 -3.100 -2.300 -4.250]; %给定节点有功功率 Qs=[0 -0.350 -0.600 -0.850 -0.800]; %给定节点无功功率 %% 轻载最小负荷运行方式下 %Ps=[2.511 -1.856 -1.984 -1.472 -2.72]; %给定节点有功功率 %Qs=[0 -0.224 -0.384 -0.544 -0.512]; %给定节点无功功率 %% 线路参数 %1(FromBus) 2(ToBus) 3(R+jX) 4(jB/2) B1=[ 2 6 0.001562 + 0.008909i 0.049368i 2 3 0.000837 + 0.004773i 0.02662i 2 4 0.000558 + 0.003182i 0.017424i 1 3 0.00106 + 0.006045i 0.033396i 4 5 0.000446 + 0.002545i 0.014036i 1 5 0.001395 + 0.007955i 0.044095i ]; %% N—1潮流校核用 answer=input('是否进行N-1校核? [y/n]n >> ','s'); if answer == 'Y';answer = 'y';end if answer == 'y' ls=input('请输入N-1校验支路 格式:[i j] i--线路始端, j--线路末端:'); j=0; for i=1:n if ((B1(i,1)==ls(1))&&(B1(i,2)==ls(2)))||((B1(i,1)==ls(2))&&(B1(i,2)==ls(1))) B1(i,3)=2*B1(i,3); B1(i,4)=0.5*B1(i,4); else j=j+1; end end if j==n fprintf('不存在这样的线路!\n'); end end %% 节点导纳矩阵计算 Y=zeros(nl,nl); for i=1:nl p=B1(i,1);q=B1(i,2); Y(p,q)=-1./B1(i,3);Y(q,p)=Y(p,q); Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4); Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4); end %% 牛顿拉夫逊法潮流计算 for i=1:n e(i)=1;f(i)=0; end e(1)=1.05;e(nl)=1.04545; %给定电压初值 G=real(Y);B=imag(Y); %提取节点导纳矩阵的实部和虚部 %进入迭代------------------------------------------------ t=0; %迭代次数 S1=0;S2=0; DW=zeros(2*nl-2,1);%节点功率不平衡量矩阵 DV1=zeros(2*nl-2,1);%节点电压不平衡量矩阵 while 1 for i=1:n-1 if type(i)==2 %PQ节点方程 for j=1:n S1=S1+G(i,j)*e(j)-B(i,j)*f(j); S2=S2+G(i,j)*f(j)+B(i,j)*e(j); end DP(i)=Ps(i)-e(i)*S1-f(i)*S2; DQ(i)=Qs(i)-f(i)*S1+e(i)*S2; S1=0;S2=0; else for j=1:n %PV节点方程 S1=S1+G(i,j)*e(j)-B(i,j)*f(j); S2=S2+G(i,j)*f(j)+B(i,j)*e(j); end DP(i)=Ps(i)-e(i)*S1-f(i)*S2; DV1(i)=Vs(i)^2-e(i)^2-f(i)^2; S1=0;S2=0; end end for i=1:n-1 if type(i)==2 DW(2*i-1)=DP(i);DW(2*i)=DQ(i); else DW(2*i-1)=DP(i);DW(2*i)=DV1(i); end end for i=1:2*n-2 M_abs(i)=abs(DW(i)); end DV=zeros(2*nl-2,1); %节点电压修正量矩阵 if max(M_abs)>ac %收敛条件 Ja=Jacobi(G,B,e,f,type,n); %求解雅克比矩阵 DV=-inv(Ja)*DW; %解修正方程式 for i=1:n-1 e(i)=e(i)+DV(2*i-1); f(i)=f(i)+DV(2*i); end %修正各节点的电压 else break; end t=t+1; %记录迭代次数 E(t,:)=e;F(t,:)=f; end %%电压水平、网损计算和载流校验---------------------------------------- V=complex(E(t,:),F(t,:)); %各节点电压精确值 Yl=zeros(nl,nl); %支路阻抗矩阵 yl=zeros(nl,nl); %支路阻抗矩阵 I=zeros(nl,nl); %线路载流矩阵 DS=zeros(nl,nl); %网络损耗矩阵 S=zeros(nl,nl); %线路首端功率 S2=zeros(nl,nl); %线路末端功率 num=zeros(nl,1); for i=1:nl num(i)=i; end for i=1:nl p=B1(i,1);q=B1(i,2); Yl(p,q)=1./B1(i,3);Yl(q,p)=Yl(p,q);%支路阻抗矩阵 yl(p,q)=B1(i,4);yl(q,p)= yl(p,q); %支路电纳矩阵 end for i=1:nl for j=1:nl S(i,j)=abs(V(i))^2*yl(i,j)+V(i)*(conj(V(i))-conj(V(j)))*conj(Yl(i,j));%线路首段功率 Sl(i,j)=V(i)*(conj(V(i))-conj(V(j)))*conj(Yl(i,j)); Pl=real(Sl);Ql=imag(Sl);%网损计算用的功率 % if S(i,j)~=0 % end for k=1:nl if i==B1(k,1)&j==B1(k,2) DS(i,j)=(Pl(i,j)^2+Ql(i,j)^2)/abs(V(i))^2*B1(k,3); %线路损耗 S2(i,j)=-(Sl(i,j)-DS(i,j)-abs(V(j))^2*yl(i,j)); %线路末端功率 I(i,j)=sqrt((Pl(i,j)^2+Ql(i,j)^2)/abs(V(i))^2/3); %线路载流 end end end end %% 下面是Bus Data和Branch Data输出参数设置 v=abs(V'); %幅值 o=angle(V)/pi*180; %幅角 o=o'; DS1=zeros(nl,1);DS2=zeros(nl,1);I1=zeros(nl,1); %提取网损和载流非零量 P1=zeros(nl,1);Q1=zeros(nl,1); %线路首端有功和无功 P2=zeros(nl,1);Q2=zeros(nl,1); %线路末端有功和无功 P3=zeros(nl,1);Q3=zeros(nl,1); %节点注入有功和无功 TotalP=0;TotalQ=0; for i=1:nl j=B1(i,1); k=B1(i,2); P1(i)=real(S(j,k)); Q1(i)=imag(S(j,k)); P2(i)=real(S2(j,k)); Q2(i)=imag(S2(j,k)); DS1(i)=real(DS(j,k)); TotalP=TotalP+DS1(i); DS2(i)=imag(DS(j,k)); TotalQ=TotalQ+DS2(i); I1(i)=I(j,k); if type(i)==2 P3(i)=Ps(i); %给定节点有功功率 Q3(i)=Qs(i); else for m=1:nl P3(i)=P3(i)+real(S(i,m)); Q3(i)=Q3(i)+imag(S(i,m)); end end end fprintf('Power Flow Result: iter = %2d',t); fprintf('\n 每次迭代的电压:'); V=complex(E,F) %记录每次迭代的电压 fprintf('\n ======================================================================================'); fprintf('\n Bus Data:'); fprintf('\n BusNum V(pu) Angle(°) Pe(pu) Qe(pu)'); fprintf('\n %5d %15.8f %15.8f %12.4f %13.4f',[num,v,o,P3,Q3]'); fprintf('\n'); fprintf('\n ======================================================================================'); fprintf('\n Branch Data:'); fprintf('\n From To LineCurrent From Bus Injection To Bus Injection Loss (I^2 * Z) '); fprintf('\n Bus Bus I(pu) P(pu) Q(pu) P(pu) Q(pu) P(pu) Q(pu) '); fprintf('\n --------- ----------- ------------------ ---------------- ---------------'); fprintf('\n %2d %6d %10.5f %11.5f %9.5f %10.5f %9.5f %11.5f %8.5f',[B1(:,1), B1(:,2), I1,P1,Q1,P2,Q2,DS1,DS2]'); fprintf('\n ------- -------'); fprintf('\n Total: %5.5f %8.5f',[TotalP,TotalQ]); fprintf('\n');
评论
    相关推荐