⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new.m

📁 基于MATLAB的电力系统潮流计算模块
💻 M
字号:
%本程序的功能是用牛顿-拉夫逊法进行潮流计算
% n=input('请输入节点数:n=');
% nl=input('请输入支路数:nl=');
% ph=input('请输入平衡母线节点号:ph=');
% jd=input('请输入误差精度jd=');
% B=input('请输入由支路参数形成的矩阵:B=');
% A=input('请输入各节点参数形成的矩阵:A=');

n=4
nl=4
ph=4
jd=0.00001
B=[1  2  0.10+0.40i  0.01528i  1      ;
    1  3    0+0.3i        0    1/1.1  ;  
    1  4  0.12+0.50i  0.01920i  1     ;
    2  4   0.08+0.40i  0.01413i 1     ;]      
    
A=[-0.30-0.18i    1.0      0   2;             %1号PQ节点
    -0.55-0.13i   1.0      0   2;             %2号PQ节点
      0.5         1.1     1.1  3;              %3号PV节点
      0           1.05     0  1;]             %4号平衡节点

Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);

for i=1:nl
     p=B(i,1);q=B(i,2);
    Y(p,q)=Y(p,q)-1./(B(i,3)*B(i,5));
    Y(q,p)=Y(p,q);
    Y(q,q)=Y(q,q)+1./(B(i,3)*B(i,5)^2)+B(i,4);
    Y(p,p)=Y(p,p)+1./B(i,3)+B(i,4);
end %形成节点导纳矩阵          
disp('节点导纳矩阵Y为:');
disp(Y);
G=real(Y);B=imag(Y);   %Y=G+jB
for i=1:n
    e(i)=real(A(i,2));
    f(i)=imag(A(i,2));  %V=e+jf
    V(i)=A(i,3);
end
for i=1:n
S(i)=A(i,1)
     end
P=real(S);Q=imag(S);
Ci=0;a=1;NO=2*n;N=NO-1;%开始求雅克比矩阵,M为迭代次数
while a~=0
    a=0;
    for i=1:n
        if i~=ph
            C(i)=0;
            D(i)=0;
            for j=1:n
                C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j);
                D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j);
            end
            P1=C(i)*e(i)+f(i)*D(i);
            Q1=f(i)*C(i)-D(i)*e(i);       %求Pi,Qi
            V2=e(i)^2+f(i)^2;
            if A(i,4)~=3                %若节点不是PV节点
                DP=P(i)-P1;
                DQ=Q(i)-Q1;
                for j=1:n     
                    if j~=ph&j~=i       %节点不为平衡节点时非对角线元素
                        X1=-G(i,j)*e(i)-B(i,j)*f(i);
                        X2=B(i,j)*e(i)-G(i,j)*f(i);
                        X3=X2;
                        X4=-X1;
                        p=2*i-1;q=2*j-1;J(p,q)=X1;J(p,N)=DP;m=p+1;
                        J(m,q)=X3;J(m,N)=DQ;q=q+1;J(p,q)=X2;J(m,q)=X4;
                      elseif j==i&j~=ph  %节点不为平衡节点时对角线元素
                        X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);
                        X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);
                        X3=D(i)+B(i,i)*e(i)-G(i,i)*f(i);
                        X4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);
                        p=2*i-1;q=2*j-1;J(p,q)=X1;J(p,N)=DP;m=p+1;
                        J(m,q)=X3;J(m,N)=DQ;q=q+1;J(p,q)=X2;J(m,q)=X4;
                    end
                end
            else                      %若节点是PV节点
                DP=P(i)-P1;
                DV=V(i)^2-V2;
                for j=1:n
                    if j~=ph&j~=i
                       X1=-G(i,j)*e(i)-B(i,j)*f(i);
                       X2=B(i,j)*e(i)-G(i,j)*f(i);
                       X5=0;
                       X6=0;
                      p=2*i-1;q=2*j-1;J(p,q)=X1;J(p,N)=DP;m=p+1;
                      J(m,q)=X5;J(m,N)=DV;q=q+1;J(p,q)=X2;J(m,q)=X6;
                    elseif j==i&j~=ph
                        X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);
                        X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);
                        X5=-2*e(i);
                        X6=-2*f(i);
                       p=2*i-1;q=2*j-1;J(p,q)=X1;J(p,N)=DP;m=p+1;
                       J(m,q)=X5;J(m,N)=DV;q=q+1;J(p,q)=X2;J(m,q)=X6;
                    end
                end
            end
        end
    end  

disp('雅克比矩阵J:');
disp(J);
DJ=-J(:,[1:NO-2]);%修正方程系数矩阵DJ=-J
DW=J([1:NO-2],N); %修正方程常数项矩阵DW
DY=DJ\DW;
disp('第M次修正方程的解DY:');
         disp(DY);
     for i=1:NO-2
          DET=abs(DW(i));
          if DET>=jd
            a=a+1; 
           end
      end
      Ci=Ci+1;
        for i=1:n-1
        e(i)=e(i)+DY(2*i-1);
        f(i)=f(i)+DY(2*i);
        end

   E=e+f*j;
  disp('节点电压的第C(i)次近似值:');
  disp(E);
   disp('迭代次数:');
   disp(Ci-1);
for k=1:n
    V(k)=sqrt(e(k)^2+f(k)^2);
    O(k)=atan(f(k)./e(k))*180./pi;
end             %收敛后节点电压用极坐标表示的结果
E=e+f*j;
disp('各节点的实际电压标么值E为(节点号从小到大排列):');disp(E);
disp('各节点的电压大小V为(节点号从小到大排列):');disp(V);
disp('各节点的电压相角O(单位:度)为(节点号从小到大排列):');disp(O);
   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
end   
disp('各节点的功率S为(节点号从小到大排列):');
disp(S);
disp('平衡节点功率为:');
disp(S(ph));
disp('各条支路的首端功率Si为:');
for i=1:nl
    p=B(i,1);q=B(i,2);
    Si(p,q)=E(p)*(conj(E(p))*conj(B(i,4)./2)+(conj(E(p)*B(i,5))-conj(E(q)))*conj(1./(B(i,3)*B(i,5))));
    disp(Si(p,q));       %计算支路首端功率Si
end
disp('各条支路的末端功率Sj为:')
for i=1:nl
        p=B(i,1);q=B(i,2);
    Sj(q,p)=E(q)*(conj(E(q))*conj(B(i,4)./2)+(conj(E(q)./B(i,5))-conj(E(p)))*conj(1./(B(i,3)*B(i,5))));
    disp(Sj(q,p));       
end                      %计算支路末端功率Sj
disp('各条支路的功率损耗为:');
for i=1:nl
   p=B(i,1);q=B(i,2);
   DS(i)=Si(p,q)+Sj(p,q);
   disp(DS(i));
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -