基于matlab电力系统的牛顿-拉夫逊法进行潮流计算

tic
%题目中已知的参数
z12=0.10+0.40i;  y120=0.01528i;       y210=0.01528i;
zk13=0.3i;k=1.1; %含有变压器的参数,需要化成Π型电路求解
z13=zk13/k;      y130=(k*(k-1))/zk13; y310=(1-k)/zk13;
z14=0.12+0.50i;  y140=0.01920i;       y410=0.01920i;
z24=0.08+0.40i;  y240=0.01413i;       y420=0.01413i;
y12=1/z12;
y13=1/z13;
y14=1/z14;
y24=1/z24;

%节点导纳矩阵,按照题目中节点顺序
% fprintf('理论计算的节点导纳矩阵')
Y=[y12+y14+y13+y140+y120+y130     -y12         -y13       -y14;      
        -y12                 y24+y12+y240+y210   0        -y24;
        -y13                       0          y13+y310       0;
        -y14                      -y24           0   y24+y14+y420+y410;]
 %后面的运算使用的导纳矩阵为课本中的,为了方便最终结果与课本对比
Y=[1.042093-8.242876i -0.588235+2.352941i 3.666667i -0.453858+1.891074i;
  -0.588235+2.352941i 1.069005-4.727377i      0     -0.480769+2.403846i;
   3.666667i                  0          -3.333333i           0;
  -0.453858+1.891074i -0.480769+2.403846i     0      0.934627-4.261590i];
%12节点为PQ节点,3为PV节点,4为平衡节点
voltage=[1.0 0 1.0 0 1.1 0 1.05 0]';
%第一列作为说明标签,1为PQ节点,0为PU节点
power=[1,-0.30,-0.18;    
       1,-0.55,-0.13;
       0,0.5,1.10 ];
error=[0 0 0 0 0 0]';

for k=1:10%进行10次迭代
    for i=1:3
        P=0;%有功功率
        Q=0;%无功功率
        for j=1:4
            P=P+real(Y(i,j))*voltage(2*j-1)-imag(Y(i,j))*voltage(2*j);
            Q=Q+real(Y(i,j))*voltage(2*j)+imag(Y(i,j))*voltage(2*j-1);
        end
        %这里要区分PQ还是PV节点
        if power(i,1)==1
            error(2*i-1,1)=power(i,2)-P*voltage(2*i-1)-Q*voltage(2*i);
            error(2*i,1)=power(i,3)-P*voltage(2*i)+Q*voltage(2*i-1);
        else
            error(2*i-1,1)=power(i,2)-P*voltage(2*i-1)-Q*voltage(2*i);
            error(2*i,1)=power(i,3)^2-voltage(2*i)^2-voltage(2*i-1)^2;
        end
    end
    
    t=0;
    %是否收敛与0.00001
    for i=1:6
        if abs(error(i,1))>0.00001
            t=1;
            break;
        end
    end
    if t==0
        break;
    end
 
    %计算雅可比矩阵
    J=zeros(6);
    for i=1:3
        for j=1:3
            if i==j
                p=0;%p11-49,p11-50公式
                q=0;
                for m=1:4
                    p=p+real(Y(j,m))*voltage(2*m-1)-imag(Y(j,m))*voltage(2*m);
                    q=q+real(Y(j,m))*voltage(2*m)+imag(Y(j,m))*voltage(2*m-1);
                end
                J(2*i-1,2*j-1)=-p-real(Y(i,j))*voltage(2*i-1)-imag(Y(i,j))*voltage(2*i);
                J(2*i-1,2*j)=-q+imag(Y(i,j))*voltage(2*i-1)-real(Y(i,j))*voltage(2*i);
                if power(i,1)==1  %判断是PQ节点
                    J(2*i,2*j-1)=q+imag(Y(i,j))*voltage(2*i-1)-real(Y(i,j))*voltage(2*i);
                    J(2*i,2*j)=-p+real(Y(i,j))*voltage(2*i-1)+imag(Y(i,j))*voltage(2*i);
                else              %判断是PV节点
                    J(2*i,2*j-1)=-2*voltage(2*i-1);
                    J(2*i,2*j)=-2*voltage(2*i);
                end
            else
                J(2*i-1,2*j-1)=-real(Y(i,j))*voltage(2*i-1)-imag(Y(i,j))*voltage(2*i);
                J(2*i-1,2*j)=imag(Y(i,j))*voltage(2*i-1)-real(Y(i,j))*voltage(2*i);
                if power(i,1)==1  %判断是PQ节点
                    J(2*i,2*j-1)=imag(Y(i,j))*voltage(2*i-1)-real(Y(i,j))*voltage(2*i);
                    J(2*i,2*j)=real(Y(i,j))*voltage(2*i-1)+imag(Y(i,j))*voltage(2*i);
                else              %判断是PV节点
                    J(2*i,2*j-1)=0;
                    J(2*i,2*j)=0;
                end
            end
        end
    end
    
    %求解修正方程
    d(1:6)=-pinv(J)*error();
    
    %保持平衡节点不变
    d(7:8)=0;
    voltage(:)=voltage(:)+d(:);
    fprintf('----------------------------第%1.0f次迭代--------------------------------',k)
    u=['e1';'f1';'e2';'f2';'e3';'f3'];
    s=['P1';'Q1';'P2';'Q2';'P3';'U3'];
    table(u, voltage(1:6),s,error)

end
fprintf('U1=%7.6f+i%7.6f\n', voltage(1,1), abs(voltage(2,1)))
fprintf('U2=%7.6f+i%7.6f\n', voltage(3,1), abs(voltage(4,1)))
fprintf('U3=%7.6f+i%7.6f\n', voltage(5,1), abs(voltage(6,1)))
toc
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值