直角坐标牛顿-拉夫逊法潮流计算matlab程序(仅供参考)
基于MATLAB进行潮流计算
基于MATLAB进行潮流计算本文介绍了基于MATLAB软件的潮流计算方法。
电力系统潮流计算方法分为手算潮流和计算机潮流计算两类。
手算潮流主要适用于规模较小的辐射型电力潮流计算,而计算机潮流计算有两种途径:编程实现网络方程的迭代求解和借助电力系统分析仿真软件搭建系统模型完成潮流计算。
MATLAB具有强大的矩阵运算功能和电力系统仿真平台,可以为实现潮流计算提供更便捷的手段。
本文采用极坐标形式牛顿─拉夫逊法进行潮流计算,为其他形式的潮流计算提供借鉴。
Abstract: The power flow n method can be divided into two categories: hand n of tidal current and computer power flow XXX simplified equivalent circuits。
making it XXX: programming XXX ns。
or using power system XXX system model for power flow n。
MATLAB are has strong matrix ns and its power system XXX-Raphson method of power flow n in polar coordinates with MATLAB are。
and can serve as a reference for other forms of power flow n.1.电力系统中的牛顿法潮流计算是一种常用的电力系统分析方法。
该方法基于节点电压的相等条件和潮流方程的等式条件,通过迭代求解电压和相位的不平衡量,最终得到各节点的电压、相位和功率等参数。
2.牛顿法潮流计算的步骤包括输入系统原始数据、形成节点导纳矩阵、给定各节点电压初值、计算功率偏差向量、判断收敛条件、计算雅克比矩阵、解修正方程、计算节点电压和相位的修正值、迭代计算直至满足收敛条件、计算各节点功率等参数并输出计算结果。
牛顿—拉夫逊法潮流计算MATLAB程序
牛顿一拉夫逊法潮流计算程序By Yuluo%牛顿--拉夫逊法进行潮流计算n=i nput(' 请输入节点数:n=');n1=i nput('请输入支路数:n仁');isb=i nput(' 请输入平衡母线节点号:isb=');pr=i nput('请输入误差精度:pr=');B1=input('请输入由支路参数形成的矩阵:B1=');B2=input('请输入各节点参数形成的矩阵:B2=');X=input('请输入由节点参数形成的矩阵:X=');Y=zeros( n);e=zeros(1, n);f=zeros(1, n);V=seros(1, n);O=zeros(1, n);S1=zeros( n1); for i=1: nif X(i,2)~=0;p=X(i,1);丫(p,p)=1./X(i,2);endendfor i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);end丫(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5);Y(p,q)=Y(p,q);Y(p,q)=Y(q,q)+1./(B1(i,3)*B1(i,5F2)+B1(i,4)./2;丫(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;end % 求导纳矩阵G=real(Y);B=imag(Y);for i=1: ne(i)=real(B2(i,3));f(i)=imag(B2(i,3));V(i)=B2(i,4);endfor i=1: nS(i)=B2(i,1)-B2(i,2);B(i,i)=B(i,i)+B2(i,5);endP=rea(S);Q=imag(S);ICT1=0;IT2=1;NO=2* n;N=NO+1;a=0;while IT2~=0IT2=0;a=a+1;for i=1: n;C(i)=0;D(i)=0;for j1=1: nC(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);endP仁C(i)*e(i)+f(i)*D(i);Q仁f(i)*C(i)-D(i)*e(i); % 求'P,Q'V2=e(i)A2+f(i)A2;if B2(i,6)~=3DP=P(i)-P1;DQ=Q(i)-Q1;for j1=1: nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X3=X2;X4=-X1;p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X4;J(m,q)=X2; end end else DP=P(i)-P1;DV=V(i)~2-V2;for j1=1: nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X5=0;X6=0;p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2;elseif j1==i&j1~=isbX仁-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*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2; end end end endend % 求雅可比矩阵for k=3:N0k1=k+1;N 1=N;for k2=k1:N1J(k,k2)=J(k,k2)./J(k,k);endJ( k,k)=1;k4=k-1;for k3=3:k4for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J (k, k2);endJ(k3,k)=0;endendfor k3=k1:N0for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J (k, k2);endJ(k3,k)=0;endendendfor k=3:2:N0-1L=(k+1)./2;e(L)=e(L)-J (k,N);k1=k+1;f(L)=f(L)-J(k1,N);endfor k=3:N0DET=abs (J(k, N));if DET>=prIT2=IT2+1endendICT2(a)=IT2ICT1=ICT1+1;for k=1: ndy(k)=sqrt(e(k)A2+f(k)A2);endfor i=1: nDy(k)=sqrt(e(k)A2+f(kF2);endfor i=1: nDy(ICT1,i)=dy(i);endend % 用高斯消去法解“ w=-J*V”disp('迭代次数');disp(ICTI);disp('没有达到精度要求的个数');disp(ICT2);for k=1: nV(k)=sqrt(e(k)A2+f(k)A2);O(k)=ata n(f(k)./e(k))*180./pi;endE=e+f*j;disp('各节点的实际电压标么值E为(节点号从小到大的排列):’);disp(E);disp('各节点的电压大小V为(节点号从小到大的排列):’);disp(V);disp('各节点的电压相角0为(节点号从小到大的排列):’);disp(O);for p=1: nC(p)=0;for q=1: nC(p)=C(p)+conj(丫(p,q))*conj(E(q));endS(p)=E(p)*C(p);enddisp('各节点的功率S为(节点号从小到大排列):’);disp(S);disp('各条支路的首端功率Si为(顺序同您输入B1时一样):‘);for i=1: n1if B1 ( i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*con j(1./(B1(i,3)*B1(i,5))));disp(Si(p.q));enddisp('各条支路的末端功率Sj为(顺序同您的输入B1时一样):‘);for i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(xonj(E(q)./B1(i,5))-conj(E(p)))*xo nj(1./(B1(i,3)*B1(i,5))));disp(Sj(q,p));enddisp('各条支路的功率损耗DS为(顺序同您输入B1时一样):';for i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endDS(i)=Si(p,q)+Sj(q,p);disp(DS(i));endfor i=1:ICT1Cs(i)=i;enddisp('以下是每次迭代后各节点的电压值(如图所示) ‘);plot(Cs,Dy),xlabel('迭代次数'),ylabel('电压'),title(' 电压迭代次数曲线');。
Matlab及C语言在潮流计算运用
一,潮流计算算法原理:牛顿—拉夫逊法的基本原理 牛顿-拉夫逊法是一种求解非线性方程的数值解法,由于便于编写程序用计算机求解,应用较广。
下面以一元非线性代数方程的求解为例,来说明牛顿-拉夫逊法的基本思想。
设欲求解的非线性代数方程为 f(x)=o设方程的真实解为x*,则必有f(x*)=0。
用牛顿-拉夫逊法求方程真实解x*的步骤如下:首先选取余割合适的初始估值x°作为方程f(x)=0的解,若恰巧有f(x°)=0,则方程的真实解即为x*= x°若f(x°)≠0,则做下一步。
取x¹=x°+Δx°为第一次的修正估值,则 f(x¹)=f(x°+Δx°) 其中Δx°为初始估值的增量,即Δx°=x¹-x°。
设函数f(x)具有任意阶导数,即可将上式在x°的邻域展开为泰勒级数,即:f(x¹)=f(x°+Δx°)=f(x°)+f'(x°)Δx°+[f''(x°)(Δx°)2]/2+… 若所取的|Δx°|足够小,则含(Δx°)²的项及其余的一切高阶项均可略去,并使其等于零,即:f(x¹)≈f(x°)+f'(x°)Δx°=0 故得 Δx°=-f(x°)/f'(x°) 从而 x¹= x°-f(x°)/f'(x°)可见,只要f'(x°)≠0,即可根据上式求出第一次的修正估值x¹,若恰巧有f(x¹)=0,则方程的真实解即为x*=x¹。
若f(x¹)≠0,则用上述方法由x¹再确定第二次的修正估值x²。
基于MATLAB的牛顿拉夫逊迭代法计算潮流(附加短路计算)
这个程序可以适用于三机九节点系统(参数见主程序),本来是想编一个通用各种结构的程序的,但是因为鄙人比较懒,老师留作业时候又没说要通用,就没改完。
惭愧啊。
不过大同小异啦。
有兴趣的慢慢改吧。
使用方法:按后文中给出的代码建立.m文件放在一个文件夹里面。
先运行Powerflow_main.m计算算例系统的潮流;然后运行ShortcircuitCalc.m计算算例系统三相短路电流;程序说明详见各.m文件注释部分,写的已经很详细了,慢慢看吧。
Powerflow_main.m文件代码如下:clear%牛顿拉夫逊迭代法计算潮流format short %规定参数数据显示精度%节点参数矩阵%第一列为节点编号%第二列表示有功注入P%第三列表示无功注入Q%第四列表示电压幅值U%第五列表示电压角度θ%第六列表示发电机x′%第七列表示发电机E′%第八列表示节点类型(2表示平衡节点,1表示PV节点,0表示PQ节点)Node_p=[ 1, 0, 0, 1.04 , 0, 0.3, 1.137, 2;2, 1.63, 0, 1.025, 0, 0.3, 1.211, 1;3, 0.85, 0, 1.025, 0, 0.3, 1.047, 1;4, 0, 0, 1.0, 0, 0, 0, 0;5, -1.25, -0.5, 1.0, 0, 0, 0, 0;6, -0.9, -0.3, 1.0, 0, 0, 0, 0;7, 0, 0, 1.0, 0, 0, 0, 0;8, -1, -0.35, 1.0, 0, 0, 0, 0;9, 0, 0, 1.0, 0, 0, 0, 0];count_s=0;countPV=0;for k=1:size(Node_p,1)if Node_p(k,8)==1countPV=countPV+1;else if Node_p(k,8)==2count_s=count_s+1;end;end;end;countPV;count_s;countPQ=size(Node_p,1)-1-countPV;%显示节点参数disp('节点参数如下:')disp(Node_p)%支路参数%第一列为首节点,第二列为末节点,第三列表示R,第四列表示X,第五列表示B/2 %第六列表示支路类型(1为变比为1的变压器元件;2为输电线元件;0为接地支路)Branch_p =[ 1, 4, 0 , 0.0576, 0 , 1;2, 7, 0 , 0.0625, 0 , 1;3, 9, 0 , 0.0586, 0 , 1;4, 5, 0.01 , 0.085 , 0.088 , 2;4, 6, 0.017 , 0.092 , 0.079 , 2;5, 7, 0.032 , 0.161 , 0.153 , 2;6, 9, 0.039 , 0.17 , 0.179 , 2;7, 8, 0.0085, 0.072 , 0.0745, 2;8, 9, 0.0119, 0.1008, 0.1045, 2];%显示支路参数disp('支路参数如下:')disp(Branch_p)%设置节点初值U=Node_p(:,4);e_ang=Node_p(:,5);P=Node_p(:,2);Q=Node_p(:,3);save data.matformat long%计算结果数据显示精度%显示节点导纳矩阵admi();disp('节点导纳矩阵Y');sparseYKmax=10; %设置最大迭代次数kaccuracy=10^-7;%设置迭代精度k=0;%迭代次数初始化为零for k1=1:Kmax[dP,dQ,y]=getY(U,e_ang);if max(abs(y))<accuracybreak;end;J=jacob(U,e_ang,dP,dQ);x=-inv(J)*y;de_ang=[0;x(1:8)];dU=x(9:14);u1=U(2:9)*dU.';u=diag(u1);U(4:9)=U(4:9)+u;e_ang=e_ang+de_ang;k=k+1;end;e_ang=e_ang/pi*180;save result.matdisp('迭代次数:')kdisp('4号节点至9号节点电压幅值如下:') disp(U(4:9))disp('2号节点至9号节点电压相角如下:') disp(e_ang(2:9))admi.m文件代码如下:%节点导纳矩阵的形成format long %规定数据格式NI=size(Branch_p,1);k_t=1;Y=zeros(NI);for m1=1:NI;I=Branch_p(m1,1);J=Branch_p(m1,2);R=Branch_p(m1,3);X=Branch_p(m1,4);b=Branch_p(m1,5);Style=Branch_p(m1,6);if Style==1 %判断为变压器元件Y(I,I)=Y(I,I)+1/(R+1j*X);Y(J,J)=Y(J,J)+1/(R+1j*X)/k_t/k_t;Y(I,J)=Y(I,J)-1/(R+1j*X)/k_t;Y(J,I)=Y(J,I)-1/(R+1j*X)/k_t;else if Style==0 %判断为母线接地支路元件Y(I,J)=Y(I,J)+1/(R+1j*X);else %判断为输电线元件Y(I,I)=Y(I,I)+1j*b+1/(R+1j*X);Y(J,J)=Y(J,J)+1j*b+1/(R+1j*X);Y(I,J)=Y(I,J)-1/(R+1j*X);Y(J,I)=Y(J,I)-1/(R+1j*X);end;end;end;Y;G=real(Y);B=imag(Y);sparseY=sparse(Y);save data.mat;getY.m文件代码如下:(线性方程组常写作AX=Y形式,故此处命名为get_Y)%计算ΔP和ΔQ的函数function [dP,dQ,y]=getY(U,e_ang)load data P Q G B Node_p countPV count_s;dP=zeros(size(Node_p,1),1); sum1=zeros(size(Node_p,1),1);for i=1:size(Node_p,1)for j=1:size(Node_p,1)sum1(i)=sum1(i)+U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;dP(i)=P(i)-U(i)*sum1(i);end;dQ=zeros(size(Node_p,1),1);sum2=zeros(size(Node_p,1),1);for i=1:size(Node_p,1)for j=1:size(Node_p,1)sum2(i)=sum2(i)+U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;dQ(i)=Q(i)-U(i)*sum2(i);end;y=[dP((count_s+1):9);dQ((countPV+count_s+1):9)]; %拼接ΔP和ΔQ构成方程-J*x=y的向量yjacob.m文件的代码如下:%形成雅克比矩阵的函数function J=jacob(U,e_ang,dP,dQ)load data B G Q P Node_p countPV count_s;size_Y=size(Node_p,1);%H矩阵H1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;H1(i,j)= U(i)*U(i)*B(i,j)+Q(i)-dQ(i);elseH1(i,j)=-U(i)*U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;endendH=H1(2:size_Y,2:size_Y);%N矩阵N1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;N1(i,j)= -U(i)*U(i)*G(i,j)-(P(i)-dP(i));elseN1(i,j)=-U(i)*U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;end;end;N=N1(2:size_Y,(countPV+count_s+1):size_Y);%M矩阵M1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;M1(i,j)=U(i)*U(i)*G(i,j)-(P(j)-dP(j));elseM1(i,j)=U(i)*U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;end;end;M=M1((countPV+count_s+1):size_Y,2:size_Y);%L矩阵L1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;L1(i,j)= U(i)*U(i)*B(i,j)-(Q(i)-dQ(i));elseL1(i,j)= -U(i)*U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;endendL=L1((countPV+count_s+1):size_Y,(countPV+count_s+1):size_Y);J=[H N;M L];%拼接构成雅克比矩阵ShortcircuitCalc.m文件的代码如下:clear%三相短路计算format long;%对YN进行修正,形成包括发电机内阻抗和负荷阻抗的节点导纳矩阵re_admi();Z=inv(rY);%计算节点阻抗矩阵disp('4节点发生金属短路')f=4;%短路点为4节点%输出节点阻抗矩阵的短路点所在列disp('节点阻抗矩阵的短路点所在列Z(:,f)=');Z(:,f)%短路电流If计算load result U e_ang;e_angf=e_ang(f);Uf=U(f)*(cos(e_angf/180*pi)+1j*sin(e_angf/180*pi));Zff=Z(f,f);zf=0;If=Uf/(Zff+zf);i_angf=angle(If)*180/pi;If=abs(If);%短路电流计算结果显示disp('短路电流幅值:')Ifdisp('短路电流相角(单位为°)')i_angf%短路时各节点电压计算U_k=U;for x1=1:size(Node_p,1)U_k(x1)=U(x1)*(cos(e_ang(x1)*pi/180)+1j*sin(e_ang(x1)*pi/180))-Z(x1,f)*If*(cos(i_angf*pi/180)+ 1j*sin(i_angf*pi/180));end;%Uk为短路时各节点电压幅值Uk=abs(U_k);%uk_ang为短路时各节点电压相角(单位为°)uk_ang=angle(U_k)*180/pi;%输出短路时各节点电压disp('短路时1-9节点电压:')disp('幅值:')Ukdisp('相角:(单位为°)')uk_ang%计算短路时各支路电流%输出矩阵初始化%第一列为首节点i%第二列为末节点j%第三列为Ii幅值%第四列为Ii相角(单位为°)%第五列为Ij幅值%第六列为Ij相角(单位为°)Ik=[1 4 1 0 1 0;2 7 1 0 1 0;3 9 1 0 1 0;4 5 1 0 1 0;4 6 1 0 1 0;5 7 1 0 1 0;6 9 1 0 1 0;7 8 1 0 1 0;8 9 1 0 1 0];load data Branch_p k_t;%其中变压器变比为k_tNI=size(Branch_p,1);for m1=1:NI;I=Branch_p(m1,1);J=Branch_p(m1,2);R=Branch_p(m1,3);X=Branch_p(m1,4);b=Branch_p(m1,5);Style=Branch_p(m1,6);if Style~=1 %判断为非变压器支路Ik(m1,3)=(U_k(I)-U_k(J))/(R+1j*X)+U_k(I)*1j*b;Ik(m1,4)=angle(Ik(m1,3))*180/pi;Ik(m1,3)=abs(Ik(m1,3));Ik(m1,5)=(U_k(J)-U_k(I))/(R+1j*X)+U_k(J)*1j*b;Ik(m1,6)=angle(Ik(m1,5))*180/pi;Ik(m1,5)=abs(Ik(m1,5));else %否则为变压器支路Ik(m1,3)=(U_k(I)-U_k(J))/(R+1j*X)/k_t;Ik(m1,4)=angle(Ik(m1,3))*180/pi;Ik(m1,3)=abs(Ik(m1,3));Ik(m1,5)=(U_k(J)-U_k(I))/(R+1j*X)/k_t;Ik(m1,6)=angle(Ik(m1,5))*180/pi;Ik(m1,5)=abs(Ik(m1,5));endend%输出短路时各节点电流disp('第一列为首节点i')disp('第二列为末节点j')disp('第三列为Ii幅值')disp('第四列为Ii相角(单位为°)')disp('第五列为Ij幅值')disp('第六列为Ij相角(单位为°)')format shortIksave result_k%形成包括发电机内阻抗、负荷阻抗的节点导纳矩阵format long %规定数据显示精度load data P Q Y Node_p ;load result U;rY=Y;for n1=1:size(Node_p,1)Xd=Node_p(n1,6);Ed=Node_p(n1,7);style=Node_p(n1,8);if style~=0 %判断是否为发电机节点rY(n1,n1)=rY(n1,n1)+1/(1j*Xd);%YN中与发电机节点对应的对角线元素增加发电机导纳else %其他节点(包含负荷节点)rY(n1,n1)=rY(n1,n1)+(-P(n1)+1j*Q(n1))/(U(n1)*U(n1));%与负荷节点对应的对角线元素增加负荷导纳%对于非负荷节点Y矩阵元素不做修改但仍满足上式end;end;rY;。
直角坐标牛顿-拉夫逊法潮流计算matlab程序(仅供参考)
%该程序仅针对《电力系统分析下》何仰赞P61的4节点算例。
%节点电压用直角坐标表示时的牛顿-拉夫逊法潮流计算(matlab程序,可能有小错误,仅供学习之用,如果想要通用的程序,可自己动手改或再到pudn、csdn等网站搜索更好的)%南昌大学电力061李圣涛2009年5月编写,2012年5月上传clc%清空command windowsclear all%清空workspace%为了提高可移植性、可读性、通用性,设置以下变量N=4;%独立节点数NPQ=2;%PQ节点数NPV=1;%PV节点数K=0;%迭代次数%请输入最大迭代次数Kmax。
可从0开始,以观察第Kmax次迭代的结果Kmax=input('\n\n请输入最大迭代次数后回车(可从零开始) Kmax=\n');small=10^(-5);%ε不能太小%i为节点标号,其中1号……NPQ号为PQ节点,(NPQ+1)%号……(N-1)号为PV节点,N号节点为平衡节点%节点导纳矩阵Y的实部G=[1.042093-0.5882350-0.453858;-0.5882351.0690050-0.480769;0000;-0.453858-0.48076900.934627 ];%节点导纳矩阵Y的虚部B=[ -8.2428762.3529413.6666671.891074;2.352941-4.72737702.403846;3.6666670-3.33333330;1.8910742.4038460-4.261590 ];%Y矩阵Y=complex(G,B);%给定PQ节点的Pnode、Qnode,PV节点的Pnode、Vnode。
(Vnode为节点电压的幅值)Pnode=[ -0.3-0.550.5];%PQ、PV节点的初值PQnode=[-0.18-0.130];%PQ节点的初值QVnode=[ 001.10];%PV节点的初值V%迭代初值e=[ 1.01.01.11.05];f=[ 0000];%利用for循环来实现多次迭代。
matlabnewton-raphson method
matlabnewton-raphson method如何使用MATLAB 实现牛顿-拉夫逊方法引言:牛顿-拉夫逊方法是一种用于求解非线性方程的数值方法,在科学计算和工程领域具有广泛的应用。
在MATLAB 中,我们可以利用其强大的数值计算能力轻松实现这一方法。
本文将一步一步介绍如何使用MATLAB 实现牛顿-拉夫逊方法,帮助读者更好地理解和运用该方法。
第一步:问题建模和方程确定在使用牛顿-拉夫逊方法之前,我们首先需要建立一个数学模型并确定需要求解的方程。
我们假设我们试图解决的方程为F(x) = 0,其中x是需要求解的变量。
为了使用牛顿-拉夫逊方法,我们需要确定该方程的导数F'(x)。
在MATLAB 中,我们可以通过定义一个函数来表示方程F(x)和其导数F'(x)。
下面是一个简单的示例:MATLABfunction [F, dF] = equation(x)F = x^2 - 2; 示例方程为x^2 - 2 = 0dF = 2*x; 方程的导数为2*xend在这个示例中,我们定义了一个名为equation的函数,该函数接收一个变量x作为输入,并返回方程F(x)和其导数F'(x)的值。
请注意,这只是一个示例,实际问题中的方程和导数可能更加复杂。
第二步:实现牛顿-拉夫逊迭代算法在确定了方程和导数之后,我们可以开始实现牛顿-拉夫逊迭代算法。
该算法的基本思想是从一个初始猜测值x0开始,通过不断迭代来逼近方程的根。
迭代的过程可以通过以下公式表示:x(i+1) = x(i) - F(x(i)) / F'(x(i))在MATLAB 中,我们可以使用一个循环来实现这个迭代过程。
下面是一个使用牛顿-拉夫逊方法求解方程的示例:MATLABfunction x = newtonRaphson(x0, maxIter, epsilon)x = x0;for iter = 1:maxIter[F, dF] = equation(x);if abs(F) < epsilonbreak;endx = x - F / dF;endend在这个示例中,我们定义了一个名为newtonRaphson的函数,该函数接收一个初始猜测值x0、最大迭代次数maxIter和收敛条件epsilon作为输入,并返回牛顿-拉夫逊方法计算得到的根x。
稳态分析课程设计:直角坐标表示的牛顿拉夫逊法潮流计算程序设计
稳态分析课设目录1.任务书 (2)2.模型简介及等值电路 (3)3.修正方程的建立 (4)4程序流程图 (9)5. MATLAB程序编写 (10)6.结果分析 (16)7.设计总结 (18)8.参考文献 (19)1.任务书课程设计任务书2.、模型简介及等值电路电力网络接线如下图所示,各支路阻抗标幺值参数如下:Z 12=0.02+j0.06,Z 13=0.08+j0.24, Z 23=0.06+j0.18, Z 24=0.06+j0.12, Z 25=0.04+j0.12, Z 34=0.01+j0.03, Z 45=0.08+j0.24, k=1.1。
该系统中,节点1为平衡节点,保持1 1.060V j =+为定值;节点2、3、4都是PQ 节点,节点5为PV 节点,给定的注入功率分别为:20.200.20S j =+, 3-0.45-0.15S j =,40.400.05S j =--,50.500.00S j =-+,5 1.10V =。
各节点电压(初值)标幺值参数如下:节点12345U i (0)=e i (0)+j f i (0)1.06+j0.0 1.0+j0.0 1.0+j0.0 1.0+j0.0 1.1+j0.0 计算该系统的潮流分布。
计算精度要求各节点电压修正量不大于10-5。
3.修正方程的建立当采用直角坐标时,潮流问题的待求量为各节点电压的实部和虚部两个分量1212,,,...,nnf f fe e e 由于平衡节点的电压向量是给定的,因此待求两共2(1)n 需要2(n-1)个方程式。
事实上,除了平衡节点的功率方程式在迭代过程中没有约束作用以外,其余每个节点都可以列出两个方程式。
对PQ 节点来说,is isQ P 和是给定的,因而可以写出()()0()()0i ijij i ijjijj isjj jj ij iijij ijjj ijj iisi jjj ij ip ff fe G e G e P B B Q Qf f fG e e G e B B ∈∈∈∈⎫∆=---+=⎪⎬∆=--++=⎪⎭∑∑∑∑ (3-2-1)对PV 节点来说,给定量是is is V P 和,因此可以列出2222()()0()0i is ijij i ij j ijj ji jj i j ii is i iff fe G e G e P P B B fV V e ∈∈⎫∆=---+=⎪⎬⎪∆=-+=⎭∑∑ (3-2-2)以直角坐标系形式表示3.1迭代推算式采用直角坐标时,节点电压相量及复数导纳可表示为:i i i ij ij ijV e jf Y G jB =+=+ (3-2-3)将以上二关系式代入上式中,展开并分开实部和虚部;假定系统中的第1,2,,m 号为P —Q 节点,第m+1,m+2,,n-1为P —V 节点,根据节点性质的不同,得到如下迭代推算式:⑴对于PQ 节点1111()()()()nni i i ij j ij j i ij j ij j j j n ni i i ij j ij j i ij j ij j j j P P e G e B f f G f B e Q Q f G e B f e G f B e ====⎫∆=---+⎪⎪⎬⎪∆=--++⎪⎭∑∑∑∑ (3-2-4) 1,2,,i m =⑵对于PV 节点112222()()()n ni i i ij j ij j i ij j ij j j j I i i i P P e G e B f f G f B e V V e f ==⎫∆=---+⎪⎬⎪∆=-+⎭∑∑ (3-2-5)1,2,,1i m m n =++-⑶对于平衡节点平衡节点只设一个,电压为已知,不参见迭代,其电压为:n n n V e jf =+ (3-2-6)3.2修正方程式(2-3-5)和(2-3-6)两组迭代式工包括2(n-1)个方程.选定电压初值及变量修正量符号之后代入式(2-3-5)和(2-3-6),并将其按泰勒级数展开,略去,i i e f ∆∆二次方程及以后各项,得到修正方程如下:x J f ∆=∆ (3-2-7)(3-2-8)3.3雅可比矩阵各元素的算式式(3-2-8)中, 雅可比矩阵中的各元素可通过对式(3-2-4)和(3-2-5)进行偏导而求得.当j i ≠时, 雅可比矩阵中非对角元素为22()0i iij i ij i j j i i ij i ij i j jj j P Q G e B f e f P Q B e G f f e U U e f ⎫∂∆∂∆=-=-+⎪∂∆∂∆⎪⎪∂∆∂∆⎪==-⎬∂∆∂∆⎪⎪∂∆∂∆⎪==∂∂⎪⎭(3-2-9)当j i =时,雅可比矩阵中对角元素为:111122()()()()22ni ij j ij j ii i ii i j i n iij j ij j ii i ii i j j n iij j ij j ii i ii i j i niij j ij j ii i ii i j j i iji i i P G e B f G e B f e P G f B e G f B e f Q G f B e G f B e e Q G e B f G e B f f U e e U f f ====∂∆⎫=----⎪∂⎪⎪∂∆=-+-+⎪∂⎪⎪∂∆⎪=+-+∂⎪⎪⎬∂∆⎪=-∆-++⎪∂⎪∂∆⎪=-⎪∂⎪∂∆=-∂⎭∑∑∑∑⎪⎪⎪ (3-2-10)雅可比矩阵各元素的表示如下:()()()()ij i ij i i ij ij j ij j ii i ii i j j iG e B f j i P H G e B f G e B f j i e ∈-+⎧≠∂∆⎪==⎨----=∂⎪⎩∑)()()()ij i ij i i ij ij j ij j ii i ii i j j iB e G f j i P N G f B e B e G f j i f ∈-⎧≠∂∆⎪==⎨-++-=∂⎪⎩∑)()()()ij i ij i i ij ij j ij j ii i ii i j j i B e G f j i Q M G f B e B e G f j i e ∈-⎧≠∂∆⎪==⎨++-=∂⎪⎩∑)()()()ij i ij i i ij ij j ij j ii i ii i j j i G e B f j i Q L G e B f G e B f j i f ∈+⎧≠∂∆⎪==⎨--++=∂⎪⎩∑20()2()i ij ij j i U R e j i e ≠⎧∂∆==⎨-=∂⎩4.程序流程图启动输入数据形成节点导纳矩阵设定节点起始计算电压迭代次数k=0应用式(7-16)和(7-17)计算置节点号i=1雅克比矩阵J 是否已经全部形成,i>n?按式(7-21)和(7-22)计算雅克比矩阵元素J 增大节点号i=i+1解修正方程式,由计算电压修正量求出迭代是否收敛 ,计算平衡节点功率 和线路功率结束S s S ijV i (k)maxi(k)max3?<V i (k)V i (k)V i (k)V i (0)V i(k)V i (k+1)i(k)i(0)i(k)i(k)i(k)i(k+1),和P i (k)(k)(k)i iQ J 和(k)iP i(k)(k)iQ ,=+=+k=k+1否是是否5.MATLAB程序编写程序编写如下:clc;clear;g(4,1)=2.7500;b(4,1)=-8.2500;g(4,3)=1.2500;b(4,3)=-3.7500;g(1,4)=2.7500;b(1,4)=-8.2500;g(1,2)=1.6667;b(1,2)=-5.0000;g(1,3)=3.3334;b(1,3)=-6.6667;g(1,5)=5.0000;b(1,5)=-15.0000;g(2,1)=1.6667;b(2,1)=-5.0000;g(2,3)=10.0000;b(2,3)=-30.0000;g(2,5)=1.2500;b(2,5)=-3.7500;g(3,4)=1.2500;b(3,4)=-3.7500;g(3,1)=3.3334;b(3,1)=-6.6667;g(3,2)=10.0000;b(3,2)=-30.0000;g(5,1)=5.0000;b(5,1)=-15.0000;g(5,2)=1.2500;b(5,2)=-3.7500;b(1,1)=-0.8250;b(4,4)=0.7500;g(1,1)=0.275;g(4,4)=-0.25;N1=4;for m=1:N1+1;for n=1:N1+1;if m==nG(m,m)=g(m,1)+g(m,2)+g(m,3)+g(m,4)+g(m,5);B(m,m)=b(m,1)+b(m,2)+b(m,3)+b(m,4)+b(m,5);elseG(m,n)=-g(m,n);B(m,n)=-b(m,n);endendendY=G+j*B;e(1)=1.0;e(2)=1.0;e(3)=1.0;e(4)=1.10;f(1)=0;f(2)=0;f(3)=0;f(4)=0;u(1)=1.0;u(2)=1.0;u(3)=1.0;u(4)=1.1;uu(1)=0;uu(2)=0;uu(3)=0;uu(4)=0;P(1)=0.20;Q(1)=0.20;P(2)=-0.45;Q(2)=-0.15;P(3)=-0.40;Q(3)=-0.05;P(4)=-0.50;Q(4)=0.00;k=0;disp('迭代前的参数:')e,f,uuN1=4;precision=1;%除平衡节点外节点数while precision>0.00001;e(5)=1.06;f(5)=0.00;for m=1:N1for n=1:N1+1pt(n)=e(m)*(G(m,n)*e(n)-B(m,n)*f(n))+f(m)*(G(m,n)*f(n)+B(m,n)*e(n));endpp(m)=P(m)-sum(pt);endfor m=1:N1-1for n=1:N1+1qt(n)=f(m)*(G(m,n)*e(n)-B(m,n)*f(n))-e(m)*(G(m,n)*f(n)+B(m,n)*e(n));endqq(m)=Q(m)-sum(qt);endfor m=N1uu2(m)=u(m)*u(m)-(e(m)*e(m)+f(m)*f(m))enda=1;for m=1:4dW(a)=pp(m);a=a+2;enda=2;for m=1:3dW(a)=qq(m);a=a+2;enda=3*2+2;for m=4,dW(a)=uu2(m);a=a+2;if max(dW)< precisionfprintf('\n 迭代是收敛的。
基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)
基于牛顿拉夫逊法潮流计算的matlab实验报告一、实验目的和要求1.学习掌握matlab的基本用法2.应用MATLAB语言编写具有一定通用性的牛顿-拉夫逊法潮流计算程序。
要求:(1)潮流计算方法为牛顿-拉夫逊法。
(2)编程语言为MATLAB。
(3)程序具有较强通用性。
二、程序流程图1.程序流程图开始形成节点导纳矩阵输入原始数据,节点重新编号设节点电压初值(0)(0)i ie f,i=1,2…,n,i≠s置迭代次数P=0置节点号i=1计算雅克比矩阵元素按公式计算PQ节点的()k i P∆,()kiQ∆,PV节点的()kiP∆,()2kiU∆求解修正方程式,得()kie∆,()kif∆雅克比矩阵是否已全部形成?求()max||ke∆,()max||kf∆迭代次数P=P+1i=i+1计算各节点电压的新值:(1)()()k k kie e e+=+∆(1)()()k k kif f f+=+∆三、求解问题及其结果1.求解问题:IEEE-美国新英格兰10机39节点测试系统1)系统单线图2)系统参数1)系统容量基准值为100MV A。
2) 负荷数据见表D-1表D-1 负荷数据3)发电机数据见表D-24)线路参数见表D-3LN35: BUS-4接有并联电容器,B 4=1.0000 LN36: BUS-5接有并联电容器,B 4=2.00005)变压器参数见表D-4%IEEE-美国新英格兰10机39节点测试系统% 1 2 3 4 5 6% bus volt angle p q typebus=[ 1 1.0000 0.00 0.00 0.00 12 1.0000 0.00 0.00 0.00 13 1.0000 0.00 -3.22 -0.024 14 1.0000 0.00 -5.00 -1.84 15 1.0000 0.00 0.00 0.00 16 1.0000 0.00 0.00 0.00 17 1.0000 0.00 -2.338 -0.84 18 1.0000 0.00 -5.22 -1.76 19 1.0000 0.00 0.00 0.00 110 1.0000 0.00 0.00 0.00 111 1.0000 0.00 0.00 0.00 112 1.0000 0.00 -0.085 -0.88 113 1.0000 0.00 0.00 0.00 114 1.0000 0.00 0.00 0.00 115 1.0000 0.00 -3.20 -1.53 116 1.0000 0.00 -3.29 -0.323 117 1.0000 0.00 0.00 0.00 118 1.0000 0.00 -1.58 -0.30 119 1.0000 0.00 0.00 0.00 120 1.0000 0.00 -6.80 -1.03 121 1.0000 0.00 -2.74 -1.15 122 1.0000 0.00 0.00 0.00 123 1.0000 0.00 -2.475 -1.15 124 1.0000 0.00 -3.08 -0.922 125 1.0000 0.00 -2.24 -0.472 126 1.0000 0.00 -1.39 -0.17 127 1.0000 0.00 -2.81 -0.755 128 1.0000 0.00 -2.06 -0.276 129 1.0000 0.00 -2.835 -0.269 130 1.0475 0.00 2.50 0.00 231 1.0000 0.00 0.00 0.00 332 1.0000 0.00 6.50 1.759 133 1.0000 0.00 6.32 1.0335 134 1.0123 0.00 5.08 0.00 235 1.0493 0.00 6.50 0.00 236 1.0000 0.00 5.60 0.9688 137 1.0278 0.00 5.40 0.00 238 1.0265 0.00 8.30 0.00 239 1.0300 0.00 -1.04 0.00 2];% 1 2 3 4 5 6 7 % line: from bus to bus R, X, G, B/2 Kline=[ 2 1 0.00350 0.04110 0 0.34935 0;39 1 0.00100 0.02500 0 0.37500 0;3 2 0.00130 0.01510 0 0.12860 0;25 2 0.00700 0.00860 0 0.07300 0;4 3 0.00130 0.02130 0 0.11070 0;18 3 0.00110 0.01330 0 0.10690 0;5 4 0.00080 0.01280 0 0.06710 0;14 4 0.00080 0.01290 0 0.06910 0;6 5 0.00020 0.00260 0 0.02170 0;8 5 0.00080 0.01120 0 0.07380 0;7 6 0.00060 0.00920 0 0.05650 0;11 6 0.00070 0.00820 0 0.06945 0;8 7 0.00040 0.00460 0 0.03900 0;9 8 0.00230 0.03630 0 0.19020 0;39 9 0.00100 0.02500 0 0.60000 0;11 10 0.00040 0.00430 0 0.03645 0;13 10 0.00040 0.00430 0 0.03645 0;14 13 0.00090 0.01010 0 0.08615 0;15 14 0.00180 0.02170 0 0.18300 0;16 15 0.00090 0.00940 0 0.08550 0;17 16 0.00070 0.00890 0 0.06710 0;19 16 0.00160 0.01950 0 0.15200 0;21 16 0.00080 0.01350 0 0.12740 0;24 16 0.00030 0.00590 0 0.03400 0;18 17 0.00070 0.00820 0 0.06595 0;27 17 0.00130 0.01730 0 0.16080 0;22 21 0.00080 0.01400 0 0.12825 0;23 22 0.00060 0.00960 0 0.09230 0;24 23 0.00220 0.03500 0 0.18050 0;26 25 0.00320 0.03230 0 0.25650 0;27 26 0.00140 0.01470 0 0.11980 0;28 26 0.00430 0.04740 0 0.39010 0;29 26 0.00570 0.06250 0 0.51450 0;29 28 0.00140 0.01510 0 0.12450 0;4 0 0 0 0 1.0000 0;5 0 0 0 0 2.0000 0;11 12 0.00160 0.04350 0 0 100.60000/100;13 12 0.00160 0.04350 0 0 100.60000/100;30 2 0.00000 0.01810 0 0 102.50000/100 ;31 6 0.00000 0.02500 0 0 107.00000/100 ;32 10 0.00000 0.02000 0 0 107.00000/100 ;34 20 0.00090 0.01800 0 0 100.90000/100 ;33 19 0.00070 0.01420 0 0 107.00000/100 ;35 22 0.00000 0.01430 0 0 102.50000/100 ;36 23 0.00050 0.02720 0 0 100.00000/100 ;37 25 0.00060 0.02320 0 0 102.50000/100 ;38 29 0.00080 0.01560 0 0 102.50000/100 ;20 19 0.00070 0.01380 0 0 106.00000/100] ;计算结果牛顿-拉夫逊法潮流计算结果节点计算结果:n节点节点电压节点相角(角度)节点注入功率1 1.049185 -8.874991 0.000000 + j 0.0000002 1.053167 -6.367180 0.000000 + j 0.0000003 1.041493 -9.207297 -3.220000 + j -0.0240004 1.036574 -10.042585 -5.000000 + j -1.8400005 1.044652 -8.959237 0.000000 + j 0.0000006 1.043883 -8.293104 0.000000 + j 0.0000007 1.032645 -10.342431 -2.338000 + j -0.8400008 1.031177 -10.811816 -5.220000 + j -1.7600009 1.042715 -10.595648 0.000000 + j 0.00000010 1.046426 -6.010476 0.000000 + j 0.00000011 1.044322 -6.792462 0.000000 + j 0.00000012 1.030736 -6.795388 -0.085000 + j -0.88000013 1.042351 -6.675491 0.000000 + j 0.00000014 1.036310 -8.232337 0.000000 + j 0.00000015 1.018517 -8.519794 -3.200000 + j -1.53000016 1.025492 -7.051856 -3.290000 + j -0.32300017 1.032750 -8.077118 0.000000 + j 0.00000018 1.034779 -8.936485 -1.580000 + j -0.30000019 1.044862 -2.382169 0.000000 + j 0.00000020 0.988148 -3.811032 -6.800000 + j -1.03000021 1.024926 -4.596980 -2.740000 + j -1.15000022 1.042650 -0.070512 0.000000 + j 0.00000023 1.032952 -0.245457 -2.475000 + j -1.15000024 1.021125 -6.906503 -3.080000 + j -0.92200025 1.060163 -4.952002 -2.240000 + j -0.47200026 1.052697 -6.205207 -1.390000 + j -0.17000027 1.037683 -8.217337 -2.810000 + j -0.75500028 1.050444 -2.695196 -2.060000 + j -0.27600029 1.050163 0.063077 -2.835000 + j -0.26900030 1.004392 1.594781 6.500000 + j 1.75900031 0.991632 2.892572 6.320000 + j 1.03350032 1.050539 7.797786 5.600000 + j 0.96880033 1.047500 -3.957598 2.500000 + j 1.21117434 1.012300 1.385774 5.080000 + j 1.82635935 1.049300 4.925324 6.500000 + j 2.63756636 1.027800 1.819476 5.400000 + j -0.10822437 1.026500 7.125579 8.300000 + j 0.21422538 1.030000 -10.390696 -1.040000 + j -2.29163939 1.000000 0.000000 5.628660 + j 1.384403线路计算结果:n节点I 节点J 线路功率S(I,J) 线路功率S(J,I) 线路损耗dS(I,J)2 1 1.178698 + j -0.360055 -1.174311 + j -0.360481 0.004386 + j -0.720536 39 1 6.405845 + j -2.096152 -6.361848 + j 2.408287 0.043997 + j 0.3121353 2 -3.633961 + j -0.542613 3.649983 + j 0.446577 0.016021 + j -0.096036 25 2 2.370242 + j -1.109311 -2.328681 + j 0.997356 0.041562 + j -0.1119554 3 -0.750370 + j -0.307172 0.751094 + j 0.080014 0.000724 + j -0.227159 18 3 0.337560 + j -0.663855 -0.337133 + j 0.438599 0.000427 + j -0.225256 5 4 1.635254 + j 0.499000 -1.633054 + j -0.609119 0.002200 + j -0.110119 14 4 2.621711 + j -0.216428 -2.616576 + j 0.150777 0.005135 + j -0.065651 6 5 4.826035 + j -0.675350 -4.821682 + j 0.684607 0.004353 + j 0.0092578 5 -3.178130 + j -1.041836 3.186428 + j 0.998989 0.008297 + j -0.042847 7 6 -4.249274 + j -0.969559 4.259899 + j 1.010657 0.010625 + j 0.04109811 6 3.465003 + j -0.270003 -3.457273 + j 0.209136 0.007730 + j -0.0608668 7 -1.909893 + j -0.196732 1.911274 + j 0.129559 0.001381 + j -0.0671739 8 0.132235 + j 0.116464 -0.131977 + j -0.521432 0.000258 + j -0.404968 39 9 7.617154 + j -1.902126 -7.557438 + j 2.142687 0.059717 + j 0.24056111 10 -3.483660 + j -0.203064 3.488121 + j 0.171352 0.004461 + j -0.03171213 10 -3.008372 + j -0.730489 3.011879 + j 0.688680 0.003508 + j -0.04180914 13 -2.934129 + j -0.411463 2.941429 + j 0.307264 0.007300 + j -0.10419915 14 -0.311115 + j -0.998556 0.312417 + j 0.627891 0.001303 + j -0.37066516 15 2.896296 + j 0.430232 -2.888885 + j -0.531444 0.007411 + j -0.10121217 16 -2.048841 + j 0.950740 2.052282 + j -1.049122 0.003441 + j -0.098383 19 16 4.542969 + j 0.681545 -4.511670 + j -0.625873 0.031300 + j 0.05567221 16 3.324778 + j -0.302389 -3.316338 + j 0.177006 0.008440 + j -0.125383 24 16 0.410793 + j -0.811601 -0.410571 + j 0.744757 0.000222 + j -0.066844 18 17 -1.917560 + j 0.363855 1.920087 + j -0.475208 0.002527 + j -0.111353 27 17 -0.128621 + j 0.132648 0.128754 + j -0.475531 0.000133 + j -0.342884 22 21 6.093176 + j 1.070437 -6.064778 + j -0.847611 0.028398 + j 0.22282623 22 -0.406149 + j -1.116063 0.406824 + j 0.928040 0.000675 + j -0.18802424 23 -3.490793 + j -0.110399 3.516516 + j 0.138837 0.025723 + j 0.02843826 25 -0.771398 + j -0.442881 0.773189 + j -0.111580 0.001791 + j -0.55446027 26 -2.681379 + j -0.887648 2.691475 + j 0.731900 0.010096 + j -0.15574828 26 1.416063 + j -0.565082 -1.408178 + j -0.210747 0.007885 + j -0.77583029 26 1.921038 + j -0.679443 -1.901899 + j -0.248272 0.019138 + j -0.927715 29 28 3.491624 + j -0.395924 -3.476063 + j 0.289082 0.015561 + j -0.106842 4 0 0.000000 + j -1.074485 0.000000 + j 0.000000 0.000000 + j -1.0744855 0 0.000000 + j -2.182596 0.000000 + j 0.000000 0.000000 + j -2.18259611 12 0.018656 + j 0.473066 -0.018327 + j -0.464126 0.000329 + j 0.00894013 12 0.066943 + j 0.423225 -0.066673 + j -0.415874 0.000270 + j 0.00735130 2 7.897633 + j -0.731582 -7.897633 + j 1.860277 0.000000 + j 1.12869531 6 7.506817 + j 1.371343 -7.506817 + j 0.109153 0.000000 + j 1.48049632 10 12.260592 + j 5.296517 -12.260592 + j -2.064007 0.000000 + j 3.23250934 20 5.080000 + j 1.826359 -5.054406 + j -1.314473 0.025594 + j 0.51188633 19 -1.716763 + j 5.348910 1.736896 + j -4.940504 0.020133 + j 0.40840535 22 6.500000 + j 2.637566 -6.500000 + j -1.998477 0.000000 + j 0.63908936 23 1.402814 + j -0.195113 -1.401865 + j 0.246763 0.000949 + j 0.05165037 25 9.586236 + j 0.419689 -9.533808 + j 1.607517 0.052428 + j 2.02720638 29 -12.165903 + j 2.106593 12.280860 + j 0.135062 0.114957 + j 2.24165520 19 -1.745594 + j 0.284473 1.747837 + j -0.240265 0.002242 + j 0.044208结果分析:此程序的运行结果和试验程序给出的结果是一致的。
基于MATLAB的直角坐标下牛顿拉夫逊法潮流计算
节点的给定功率设为 Pis 和 Qis (称为注入功率)。 假定系统中的第 1、2、…、m 节点为 PQ 节点,对其中每一个节点的 N-R
法表达式 F(x)=0[如 Si 0 、 Pi 0 、 Qi 0 ]形式有些下列方程:
n
n
Pi Pis Pi Pis ei (Gije j Bij f j ) fi (Gij f j Bije j ) 0
j 1
Bij f j ) Giiei
Bii fii
J
ii
U
2 i
ei
2ei
U
2 i
fi
2 fi
(2-5)
当 j i 时,矩阵非对角元素为:
Pi ei
Qiij
Jij
Pi f j
2.2 牛顿——拉夫逊法潮流计算计算公式
把牛顿法用于潮流计算,采用直角坐标形式表示的如式(2-2)所示的形式。
其中电压和支路导纳可表示为:
Ui ei jfi Yij Gij jBij
U j ej jf j
Y ij Gij jBij
(2-1)
将上述表示式(2-1)代入(1-1)式的右端,展开并分出实部和虚部,便
Key words: Electric power system; flow calculation; MATLAB
(完整版)潮流计算的MATLAB源程序
%简单潮流计算的牛顿拉夫逊程序,相关的原始数据数据数据输入格式如下:%B1是支路参数矩阵,第一列和第二列是节点编号。
节点编号由小到大编写%对于含有变压器的支路,第一列为低压侧节点编号,第二列为高压侧节点%编号,将变压器的串联阻抗置于低压侧处理。
%第三列为支路的串列阻抗参数。
%第四列为支路的对地导纳参数。
%第五列为含变压器支路的变压器的变比%第六列为变压器是否含有变压器的参数,其中“1"为含有变压器,%“0”为不含有变压器。
%B2为节点参数矩阵,其中第一列为节点注入发电功率参数;第二列为节点负荷功率参数;第三列为节点电压参数;第六列为节点类型参数,其中“1”为平衡节点,“2”为PQ节点,“3”为PV节点参数。
%X为节点号和对地参数矩阵.其中第一列为节点编号,第二列为节点对地%参数。
n=input(’请输入节点数:n=');n1=input(’请输入支路数:n1=');isb=input(’请输入平衡节点号:isb=');pr=input('请输入误差精度:pr=');B1=input(’请输入支路参数:B1=’);B2=input(’请输入节点参数:B2=’);X=input('节点号和对地参数:X=');Y=zeros(n);Times=1; %置迭代次数为初始值%创建节点导纳矩阵for i=1:n1if B1(i,6)==0 %不含变压器的支路p=B1(i,1);q=B1(i,2);Y(p,q)=Y(p,q)-1/B1(i,3);Y(q,p)=Y(p,q);Y(p,p)=Y(p,p)+1/B1(i,3)+0。
5*B1(i,4);Y(q,q)=Y(q,q)+1/B1(i,3)+0。
5*B1(i,4);else %含有变压器的支路p=B1(i,1);q=B1(i,2);Y(p,q)=Y(p,q)—1/(B1(i,3)*B1(i,5));Y(q,p)=Y(p,q);Y(p,p)=Y(p,p)+1/B1(i,3);Y(q,q)=Y(q,q)+1/(B1(i,5)^2*B1(i,3));endendYOrgS=zeros(2*n—2,1);DetaS=zeros(2*n—2,1); %将OrgS、DetaS初始化%创建OrgS,用于存储初始功率参数h=0;j=0;for i=1:n %对PQ节点的处理if i~=isb&B2(i,6)==2h=h+1;for j=1:nOrgS(2*h-1,1)=OrgS(2*h—1,1)+real(B2(i,3))*(real(Y (i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))—imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));endendendfor i=1:n %对PV节点的处理,注意这时不可再将h初始化为0 if i~=isb&B2(i,6)==3h=h+1;for j=1:nOrgS(2*h—1,1)=OrgS(2*h—1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))—real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));endendendOrgS%创建PVU 用于存储PV节点的初始电压PVU=zeros(n-h—1,1);t=0;for i=1:nif B2(i,6)==3t=t+1;PVU(t,1)=B2(i,3);endendPVU%创建DetaS,用于存储有功功率、无功功率和电压幅值的不平衡量h=0;for i=1:n %对PQ节点的处理if i~=isb&B2(i,6)==2h=h+1;DetaS(2*h—1,1)=real(B2(i,2))-OrgS(2*h—1,1);DetaS(2*h,1)=imag(B2(i,2))—OrgS(2*h,1);endendt=0;for i=1:n %对PV节点的处理,注意这时不可再将h初始化为0 if i~=isb&B2(i,6)==3h=h+1;t=t+1;DetaS(2*h-1,1)=real(B2(i,2))-OrgS(2*h-1,1);DetaS(2*h,1)=real(PVU(t,1))^2+imag(PVU(t,1))^2-real(B2(i,3))^2—imag(B2(i,3))^2;endendDetaS%创建I,用于存储节点电流参数i=zeros(n—1,1);h=0;for i=1:nif i~=isbh=h+1;I(h,1)=(OrgS(2*h—1,1)-OrgS(2*h,1)*sqrt(-1))/conj(B2(i,3));endendI%创建Jacbi(雅可比矩阵)Jacbi=zeros(2*n—2);h=0;k=0;for i=1:n %对PQ节点的处理if B2(i,6)==2h=h+1;for j=1:nif j~=isbk=k+1;if i==j %对角元素的处理Jacbi(2*h-1,2*k—1)=—imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=-Jacbi(2*h-1,2*k)+2*real (I(h,1));Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k-1)—2*imag (I(h,1));else %非对角元素的处理Jacbi(2*h—1,2*k-1)=—imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h—1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=—Jacbi(2*h—1,2*k);Jacbi(2*h,2*k)=Jacbi(2*h—1,2*k—1);endif k==(n-1) %将用于内循环的指针置于初始值,以确保雅可比矩阵换行k=0;endendendendendk=0;for i=1:n %对PV节点的处理if B2(i,6)==3h=h+1;for j=1:nif j~=isbk=k+1;if i==j %对角元素的处理Jacbi(2*h—1,2*k-1)=—imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h—1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=2*imag(B2(i,3));Jacbi(2*h,2*k)=2*real(B2(i,3));else %非对角元素的处理Jacbi(2*h-1,2*k—1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h—1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k—1)=0;Jacbi(2*h,2*k)=0;endif k==(n-1) %将用于内循环的指针置于初始值,以确保雅可比矩阵换行k=0;endendendendendJacbi%求解修正方程,获取节点电压的不平衡量DetaU=zeros(2*n—2,1);DetaU=inv(Jacbi)*DetaS;DetaU%修正节点电压j=0;for i=1:n %对PQ节点处理if B2(i,6)==2j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j—1,1)*sqrt(—1);endendfor i=1:n %对PV节点的处理if B2(i,6)==3j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(-1);endendB2%开始循环**********************************************************************while abs(max(DetaU))>prOrgS=zeros(2*n-2,1); %初始功率参数在迭代过程中是不累加的,所以在这里必须将其初始化为零矩阵h=0;j=0;for i=1:nif i~=isb&B2(i,6)==2h=h+1;for j=1:nOrgS(2*h—1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))—imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))—imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));endendendfor i=1:nif i~=isb&B2(i,6)==3h=h+1;for j=1:nOrgS(2*h-1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real (B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))—real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));endendendOrgS%创建DetaSh=0;for i=1:nif i~=isb&B2(i,6)==2h=h+1;DetaS(2*h-1,1)=real(B2(i,2))—OrgS(2*h—1,1);DetaS(2*h,1)=imag(B2(i,2))—OrgS(2*h,1);endendt=0;for i=1:nif i~=isb&B2(i,6)==3h=h+1;t=t+1;DetaS(2*h—1,1)=real(B2(i,2))—OrgS(2*h—1,1);DetaS(2*h,1)=real(PVU(t,1))^2+imag(PVU(t,1))^2-real(B2(i,3))^2-imag(B2(i,3))^2;endendDetaS%创建Ii=zeros(n-1,1);h=0;for i=1:nif i~=isbh=h+1;I(h,1)=(OrgS(2*h—1,1)-OrgS(2*h,1)*sqrt(—1))/conj(B2(i,3));endendI%创建JacbiJacbi=zeros(2*n—2);h=0;k=0;for i=1:nif B2(i,6)==2h=h+1;for j=1:nif j~=isbk=k+1;if i==jJacbi(2*h—1,2*k—1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k—1)=-Jacbi(2*h-1,2*k)+2*real(I(h,1));Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k—1)—2*imag(I(h,1));elseJacbi(2*h—1,2*k—1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h—1,2*k)=real(Y(i,j))*real (B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k—1)=-Jacbi(2*h-1,2*k);Jacbi(2*h,2*k)=Jacbi(2*h—1,2*k-1);endif k==(n-1)k=0;endendendendendk=0;for i=1:nif B2(i,6)==3h=h+1;for j=1:nif j~=isbk=k+1;if i==jJacbi(2*h—1,2*k-1)=—imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=2*imag(B2(i,3));Jacbi(2*h,2*k)=2*real(B2(i,3));elseJacbi(2*h-1,2*k—1)=-imag(Y(i,j))*real (B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=0;Jacbi(2*h,2*k)=0;endif k==(n—1)k=0;endendendendendJacbiDetaU=zeros(2*n-2,1);DetaU=inv(Jacbi)*DetaS;DetaU%修正节点电压j=0;for i=1:nif B2(i,6)==2j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j—1,1)*sqrt(-1);endendfor i=1:nif B2(i,6)==3j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(—1);endendB2Times=Times+1; %迭代次数加1endTimes一个原始数据的例子节点数 5支路数 5平衡节点编号 5精度pr 0。
matlab潮流计算
使用牛顿拉夫逊法进行潮流计算的 Matlab 程序代码% 牛拉法计算潮流程序% ----------------------------------------------------------------------% B1 矩阵: 1、支路首端号; 2、末端号; 3、支路阻抗; 4、支路对地电纳 % 5、支路的变比; 6、支路首端处于 K 侧为 1, 1 侧为 0% B2 矩阵: 1、该节点发电机功率; 2、该节点负荷功率; 3、节点电压初始值 % 4、 PV 节点电压 V 的给定值; 5、节点所接的无功补偿设备的容量 % 6、节点分类标号: 1 为平衡节点(应为 1 号节点); 2 为 PQ 节点; 3 为 PV 节点;% ---------------------------------------------------------------------- clear all;format long;n=input(' 请输入节点数 :nodes='); nl=input(' 请输入支路数 :lines=');isb=input(' 请输入平衡母线节点号 :balance='); pr=input(' 请输入误差精度 :precision='); B1=input(' 请输入由各支路参数形成的矩阵 :B1='); B2=input(' 请输入各节点参数形成的矩阵 :B2=');Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl); % for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); elsep=B1(i,2);q=B1(i,1);endY(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5)); %非对角元Y(q,p)=Y(p,q);Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)A2)+B1(i,4);%对角元 K 侧 Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4); %对角元 1 侧end %求导纳矩阵 disp ('导纳矩阵Y='); disp(Y)% -----------------------------------------------------------------e(i)=real(B2(i,3)); f(i)=imag(B2(i,3));附录 1%支路数%左节点处于 1 侧% 左节点处于 K 侧 %非对角元G=real(Y);B=imag(Y);%分解出导纳阵的实部和虚部 for i=1:n%给定各节点初始电压的实部和虚部% ------------------------------------------------------------------- P=real(S);Q=imag(S); %分解出各节点注入的有功和无功功率ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0; % 迭代次数ICT1、a ;不满足收敛要求的节点数IT2while IT2~=0% N0=2* n 雅可比矩阵的阶数;N=N0+1扩展列IT2=0;a=a+1;for i=1:n%非平衡节点C(i)=0;D(i)=0; for j1=1: nC(i)=C(i)+G(i,j1)*e(j1)- B(i,j1)*f(j1);% 工(Gjf D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);%工(Gij*fj+Bij*ej)endP1= C(i)*e(i)+f(i)*D(i);% 节点功率 P 计算 ei S (Gij*ej-Bij*fj)+fi 工(Gij*fj+Bij*ej)Q1= C(i)*f(i)-e(i)*D(i);% 节点功率 Q 计算 fi S (Gij*ej-Bij*fj)-eiS (Gij*fj+Bij*ej)%求i 节点有功和无功功率 P',Q'的计算值 V2=e(i)A 2+f(i)A 2;% 电压模平方% X4=dQ/df X2=dp/df%非平衡节点&对角元X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/dfV(i)=B2(i,4); end for i=1: nS(i)=B2(i,1)-B2(i,2); B(i,i)=B(i,i)+B2(i,5);end%PV 节点电压给定模值 %给定各节点注入功率 %i 节点注入功率SG-SL %i 节点无功补偿量if i~=isb %以下针对非PV 节点来求取功率差及 Jacobi 矩阵元素 ------------------- if B2(i,6)~=3DP=P(i)-P1; DQ=Q(i)-Q1;%以上为除平衡节点外其它节点的功率计算%非PV 节点%节点有功功率差 %节点无功功率差%求取 Jacobi 矩阵 -------------------------------------- for j1=1:nif j1~=isb&j1~=i%非平衡节点&非对角元X 仁-G(i,j1)*e(i)-B(i,j1)*f(i);% dP/de=-dQ/df X2=B(i,j1)*e(i)-G(i,j1)*f(i); % dP/df=dQ/deX3=X2; % X2=dp/df X3=dQ/de X4=-X1;% X1=dP/de X4=dQ/dfp=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;m=p+1; % X3=dQ/deJ(p,N)=DQ 节点无功功率差点有功功率差J(m,q)=X1;J(m,N)=DP;q=q+1;% X1=dP/de J(m,N)=DP 节J(p,q)=X4;J(m,q)=X2; elseif j1==i&j1~=isbX3=D(i)+B(i,i)*e(i)-G(i,i)*f(i); % dQ/deX4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);% dQ/df p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;% 扩展列△ Q m=p+1;J(m,q)=X1;q=q+1;J(p,q)=X4;J(m,N)=DP;% 扩展列△ PJ(m,q)=X2;end end else%下面是针对PV 节点来求取Jacobi 矩阵的元素 ------------------------------DP=P(i)-P1; % PV 节点有功误差 DV=V(i)A 2-V2;% PV 节点电压误差 for j1=1:nfor k=3:N0 % N0=2* n (从第三行开始,第一、二行是平衡节点)k1=k+1;N 仁N; % N=N0+1 即 N=2*n+1 扩展列△ P 、A Q 或厶 U for k2=k1:N1% 从k+1列的Jacobi 元素到扩展列的厶 P 、△ Q 或△ UJ(k,k2)=J(k,k2)./J(k,k);% 用K 行K 列对角元素去除 K 行K 列后的非对角元素进行规格化 endJ(k,k)=1; %对角元规格化 K 行K 列对角元素赋1 %回代运算 --------------------------------------------if k~=3% 不是第三行k > 3if j1~=isb&j1~=i%非平衡节点&非对角元X1=-G(i,j1)*e(i)-B(i,j1)*f(i); % dP/de X2=B(i,j1)*e(i)-G(i,j1)*f(i); % dP/dfX5=0;X6=0; p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV; m=p+1; J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;% PV 节点电压误差% PV 节点有功误差J(m,q)=X2; elseif j1==i&j1~=isb%非平衡节点&对角元X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df X5=-2*e(i); X6=-2*f(i);p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV; m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;% PV 节点电压误差 % PV 节点有功误差J(m,q)=X2; end end end end end%以上为求雅可比矩阵的各个元素及扩展列的功率差或电压差k4=k-1;for k3=3:k4 %用k3行从第三行开始到当前行的前一行k4行消去for k2=k1:N1 % k3行后各行上三角元素J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);% 消去运算(当前行k 列元素消为0)end %用当前行K2列元素减去当前行k列元素乘以第k行K2列元素J(k3,k)=0; %当前行第k列元素已消为0endif k==N0 %若已到最后一行break;end%前代运算---------------------------------------for k3=k1:N0 % 从k+1 行到2*n 最后一行for k2=k1:N1 % 从k+1列到扩展列消去k+1行后各行下三角元素J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);% 消去运算end %用当前行K2列元素减去当前行k列元素乘以第k行K2列元素J(k3,k)=0; %当前行第k列元素已消为0endelse %是第三行k=3%第三行k=3的前代运算 ----------------------------------for k3=k1:N0 %从第四行到2n行(最后一行)for k2=k1:N1 %从第四列到2n+1列(即扩展列)J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);% 消去运算(当前行 3 列元素消为0)end %用当前行K2列元素减去当前行3列元素乘以第三行K2列元素J(k3,k)=0; %当前行第3列元素已消为0endendend%上面是用线性变换方式高斯消去法将Jacobi矩阵化成单位矩阵% ---------------------------------------------------------------------------------for k=3:2:N0-1L=(k+1)./2;e(L)=e(L)-J(k,N); %修改节点电压实部k仁k+1;f(L)=f(L)-J(k1,N); %修改节点电压虚部end%修改节点电压------------------for k=3:N0DET=abs(J(k,N));if DET>=pr%电压偏差量是否满足要求IT2=IT2+1 ;%不满足要求的节点数加 1endendICT2(a)=IT2;%不满足要求的节点数ICT 1=ICT1+1;%迭代次数end%用高斯消去法解"w=J*V" disp('迭代次数:'); disp(ICTI); disp('没有达到精度要求的个数: disp(ICT2); for k=1: nV(k)=sqrt(e(k)A 2+f(k)A 2); sida(k)=ata n(f(k)./e(k))*180./pi;E(k)=e(k)+f(k)*1i; end%计算各输出量 ------------------------------------ disp('各节点的实际电压标幺值 E 为:’);disp(E);%显示各节点的实际电压标幺值E 用复数表示disp(' --------------------------------------------------- '); disp('各节点的电压大小 V 为:'); disp(V);%显示各节点的电压大小V 的模值disp(' --------------------------------------------------- '); disp('各节点的电压相角 deg 为:’); disp(sida); %显示各节点的电压相角for p=1: n C(p)=0; for q=1: nC(p)=C(p)+conj(Y(p,q))*conj(E(q));%计算各节点的注入电流的共轭值endelseSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)./B1(i,5))… -');%计算各节点电压的模值 %计算各节点电压的角度 %将各节点电压用复数表示S(p)=E(p)*C(p); %计算各节点的功率 S =电压X 注入电流的共轭值enddisp('各节点的功率 S 为:’); disp(S);%显示各节点的注入功率disp(' ---------------------------------------------------- '); disp('各条支路的首端功率 Si 为:’); for i=1: nlp=B1(i,1);q=B1(i,2);if B1(i,6)==0Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))... -conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));Siz(i)=Si(p,q);conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));Siz(i)=Si(p,q);enddisp(Si(p,q));SSi(p,q)=Si(p,q);ZF=['S(', nu m2str(p),',', nu m2str(q),')=' ,n um2str(SSi(p,q))];disp(ZF);disp(' --------------------------------------------------- ');enddisp('各条支路的末端功率Sj为:’);for i=1: nlp=B1(i,1);q=B1(i,2);if B1(i,6)==0Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))… -conj(E(p)))*conj(1./(B1(i,3)*B1(i,5))));Sjy(i)=Sj(q,p);elseSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)*B1(i,5))… -conj(E(p)))*conj(1./(B1(i,3)*B1(i,5)))); Sjy(i)=Sj(q,p);enddisp(Sj(q,p));SSj(q,p)=Sj(q,p);ZF=['S(', nu m2str(q),',' ,n um2str(p),')=', nu m2str(SSj(q,p))];disp(ZF);disp(' --------------------------------------------------- ');enddisp('各条支路的功率损耗DS为:’);for i=1: nlp=B1(i,1);q=B1(i,2);DS(i)=Si(p,q)+Sj(q,p);disp(DS(i));DDS(i)=DS(i);ZF=['DS(', nu m2str(p),',', nu m2str(q),')=' ,n um2str(DDS(i))];disp(ZF);disp(' --------------------------------------------------- ');end附录2使用PQ分解法进行潮流计算的Matlab程序代码%PQ分解法潮流计算程序%本文中的实例数据如下:节点数为9;支路数为9;平衡母线节点号为1;误差精度为0.00001; PQ节点数为5;%主程序clear all;format lo ng;n=in put('请输入节点数:n=');n l=i nput('请输入支路数:nl=');isb=i nput('请输入平衡母线节点号:isb=');pr=i nput('请输入误差精度:pr=');B1=input('请输入由支路参数形成的矩阵:B仁');%输入B1B2=input('请输入由支路参数形成的矩阵:B2='); %输入B2na=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: nlif B1(i,6)==0 p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endY(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);丫(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5F2)+B1(i,4);YI(q,q)=YI(q,q)+1./B1(i,3);Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4);YI(p,p)=YI(p,p)+1./B1(i,3);end %求导纳矩阵disp('节点导纳矩阵为:');disp(Y);G=real(Y);B=imag(YI);BI=imag(Y);for i=1: nS(i)=B2(i,1)-B2(i,2);BI(i,i)=BI(i,i)+B2(i,5);endP=real(S);Q=imag(S);for i=1: ne(i)=real(B2(i,3));f(i)=imag(B2(i,3)); V(i)=B2(i,4);endfor i=1: nif B2(i,6)==2V(i)=sqrt(e(i)A2+f(i)A2);O(i)=ata n(f(i)./e(i));精选文档endendfor i=2: nif i==nB(i,i)=1./B(i,i);else IC1= i+1;for j1=IC1: nB(i,j1)=B(i,j1)./B(i,i);endB(i,i)=1./B(i,i);for k=i+1: nfor j1=i+1: nB(k, j1)=B(k,j1)-B(k,i)*B(i,j1); endendendendP=0;q=0;for i=1: nif B2(i,6)==2p=p+1;k=0;for j1=1: nif B2(j1,6)==2 k=k+1; A(p,k)=BI(i,j1);endendendendfor i=1: naif i==naA(i,i)=1./A(i,i);else k=i+1;for j1=k:naA(i,j1)=A(i,j1)./A(i,i);endA(i,i)=1./A(i,i);for k=i+1: nafor j1=i+1: naA(k,j1)=A(k,j1)-A(k,i)*A(i,j1);endendendendICT2=1;ICT1=0;kp=1;kq=1;K=1;DET=0;ICT3=1;while ICT2~=0||ICT3~=0ICT2=0;ICT3=0;精选文档for i=1: nif i~=isbC(i)=0;for k=1: nC(i)=C(i)+V(k)*(G(i,k)*cos(O(i)-O(k))+BI(i,k)*si n(O(i)-O(k)));endDP1(i)=P(i)-V(i)*C(i);DP(i)=DP1(i)./V(i);DET=abs(DP1(i));if DET>=prICT2=ICT2+1;endendendNp(K)=ICT2;if ICT2~=0for i=2: nDP(i)=B(i,i)*DP(i);if i〜=nIC1= i+1;for k=IC1: nDP(k)=DP(k)-B(k,i)*DP(i);endelsefor LZ=3:iL=i+3-LZ;IC4=L-1;for MZ=2:IC4l=IC4+2-M Z;DP(I)=DP(I)-B(I,L)*DP(L);endend endendfor i=2: nO(i)=O(i)-DP(i);endkq=1;L=0;for i=1: nif B2(i,6)==2C(i)=0;L=L+1;for k=1: nC(i)=C(i)+V(k)*(G(i,k)*si n( O(i)-O(k))-BI(i,k)*cos(O(i)-O(k))); endDQ1(i)=Q(i)-V(i)*C(i);DQ(L)=DQ1(i)./V(i); DET=abs(DQ1(i));精选文档if DET >=prICT3=ICT3+1;endendendelse kp=0;if kq~=0;L=0;for i=1: nif B2(i,6)==2 C(i)=0;L=L+1;for k=1: nC(i)=C(i)+V(k)*(G(i,k)*si n( O(i)-O(k))-BI(i,k)*cos(O(i)-O(k))); endDQ1(i)=Q(i)-V(i)*C(i);DQ(L)=DQ1(i)./V(i);DET=abs(DQ1(i));endendendendNq(K)=ICT3;if ICT3~=0L=0;for i=1: naDQ(i)=A(i,i)*DQ(i);if i==nafor LZ=2:iL=i+2-LZ;IC4=L-1;for MZ=1:IC4I=IC4+1-M Z;DQ(I)=DQ(I)-A(I,L)*DQ(L); endendelseIC1= i+1;for k=IC1: naDQ(k)=DQ(k)-A(k,i)*DQ(i);endendendL=0;for i=1: nif B2(i,6)==2精选文档L=L+1; V(i)=V(i)-DQ(L);endendkp=1;K=K+1;elsekq=0;if kp~=0K=K+1;endendfor i=1: nDy(K-1,i)=V(i);endenddisp('迭代次数');disp(K);disp('每次没有达到精度要求的有功功率个数为');disp(Np);disp('每次没有达到精度要求的无功功率个数为');disp(Nq);for k=1: nE(k)=V(k)*cos(O(k))+V(k)*si n(O(k))*j;O(k)=O(k)*180./pi;end disp('各节点的电压标幺值E为:’);disp(E);disp('各节点的电压V大小为:’);disp(V);disp('各节点的电压相角0为:’);disp(O);for p=1: nC(p)=0;for q=1: nC(p)=C(p)+conj(丫(p,q))*conj(E(q));endS(p)=E(p)*C(p);enddisp('各节点的功率S为:');disp(S);disp('各条支路的首端功率Sj为:’);for i=1: nlif B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./( B1(i,3)*B1(i,5))));disp(Si(p,q));enddisp('各条支路的末端功率Sj为:’);for i=1: nlif B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./( B1(i,3)*B1(i,5))));disp(Sj(q,p));enddisp('各条支路的功率损耗DS为:’);for i=1: nlif B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endDS(i)=Si(p,q)+Sj(q,p);disp(DS(i));endfor i=1:KCs(i)=i;for j=1: nDy(K,j)=Dy(K-1,j);endend附录3进行三相短路容量计算的Matlab程序代码%短路容量计算程序% -------------------------------------------------------------------% B1矩阵:1、支路首端号;2、末端号;3、支路阻抗;4、支路对地电纳% 5、支路的变比;6支路首端处于K侧为1,1侧为0% B2矩阵:1、该节点发电机功率;2、该节点负荷功率;3、节点电压初始值% 4、PV节点电压V的给定值;5、节点所接的无功补偿设备的容量% 6节点分类标号:1为平衡节点(应为1号节点);2为PQ节点; %Yd为修改后的节点导纳矩阵% --------------------------------------------------------------------- clear all;format lo ng;g1=input('300MW 发电机数:g仁');g2=input('250MW 发电机数:g2=');n=input('请输入节点数:n=');nl=input('请输入支路数:nl=');B1=i nput('请输入由各支路参数形成的矩阵:B仁');B2=i nput('请输入各节点参数形成的矩阵:B2=');Y=zeros( n);% Y为修改前节点导纳矩阵for i=1: nlif B1(i,6)==0p=B1(i,1);q=B1(i,2);elsep=B1(i,2);q=B1(i,1); %支路数%左节点处于1侧%左节点处于K侧end丫(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5)); %非对角元丫(q,p)=Y(p,q); % 非对角元Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)A 2)+B1(i,4);% 对角元 K 侧丫(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4); % 对角元 1 侧end% ---------------------------------------------------------%Y2-Y5为各PQ 节点负荷的导纳Y1=0;Y2=conj(B2(2,2));Y3= conj(B2(3,2));Y4= conj(B2(4,2));Y5= conj(B2(5,2)); Xd300=0.51j/0.950413A2;XT300=0.033212j/0.950413A2;Xd250=0.714j/0.950413A2;XT250=0.038747j/0.950413A2;Y6=g1/(XT300+Xd300)+g2/(XT250+Xd250);%处理相应的负荷及机组部分的导纳% ---------------------------------------------------------C=[Y1,Y2,Y3,Y4,Y5,Y6];Yd=Y;for j=1: nI(j) = 1/Z(j,j); %电压故障前电压标幺值为1S(j)=abs(I(j));Sn (j)=S(j)*100;%短路电流有名值end%计算完毕 ---------------------------------- disp('各节点短路时的短路电流幅值标幺值')disp(abs(l))disp('短路容量有名值Sn=');disp(S n);for i=1: nYd(i,i)=Yd(i,i)+C(i); end disp(Yd);Z = in v(Yd);%修改各节点自导纳%求节点阻抗矩阵。
牛顿-拉夫逊法潮流计算matlab程序
end
fprintf(myf,'n线路计算结果:n节点I 节点J 线路功率S(I,J) 线路功率S(J,I) 线路损耗dS(I,J)n');
[bus,line] = ReNum_(bus,line,nodenum); % 对节点恢复编号的子程序
YtYm = YtYm_(line); % 计算线路的等效Yt和Ym的子程序,以计算线路潮流
bus_res = bus_res_(bus); % 计算节点数据结果的子程序
J = Jac_(bus,Y,nPQ); % 计算雅克比矩阵的子程序
UD = zeros(nPQ,nPQ);
for i = 1:nPQ
UD(i,i) = bus(i,2); % 生成电压对角矩阵
fclose(myf); % 在当前目录下生成“Result.m”文件,写入节点导纳矩阵
format long
EPS = 1.0e-10; % 设定误差精度
for t = 1:100 % 开始迭代计算,设定最大迭代次数为100,以便不收敛情况下及时跳出
[dP,dQ] = dPQ_(Y,bus,nPQ,nPV); % 计算功率偏差dP和dQ的子程序
for i = 1:nb
fprintf(myf,'%2.0f ',bus_res(i,1));
fprintf(myf,'%10.6f ',bus_res(i,2));
fprintf(myf,'%10.6f ',bus_res(i,3));
牛顿—拉夫逊法潮流计算MATLAB程序
牛顿—拉夫逊法潮流计算程序By Yuluo%牛顿--拉夫逊法进行潮流计算n=input('请输入节点数:n=');n1=input('请输入支路数:n1=');isb=input('请输入平衡母线节点号:isb=');pr=input('请输入误差精度:pr=');B1=input('请输入由支路参数形成的矩阵:B1=');B2=input('请输入各节点参数形成的矩阵:B2=');X=input('请输入由节点参数形成的矩阵:X=');Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=seros(1,n);O=zeros(1,n);S1=zeros(n1);for i=1:nif X(i,2)~=0;p=X(i,1);Y(p,p)=1./X(i,2);endendfor i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endY(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5);Y(p,q)=Y(p,q);Y(p,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;end %求导纳矩阵G=real(Y);B=imag(Y);for i=1:ne(i)=real(B2(i,3));f(i)=imag(B2(i,3));V(i)=B2(i,4);endfor i=1:nS(i)=B2(i,1)-B2(i,2);B(i,i)=B(i,i)+B2(i,5);endP=rea(S);Q=imag(S);ICT1=0;IT2=1;NO=2*n;N=NO+1;a=0;while IT2~=0IT2=0;a=a+1;for i=1:n;if i~=isbC(i)=0;D(i)=0;for j1=1:nC(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);endP1=C(i)*e(i)+f(i)*D(i);Q1=f(i)*C(i)-D(i)*e(i); %求'P,Q'V2=e(i)^2+f(i)^2;if B2(i,6)~=3DP=P(i)-P1;DQ=Q(i)-Q1;for j1=1:nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X3=X2;X4=-X1;p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X4;J(m,q)=X2; endendelseDP=P(i)-P1;DV=V(i)~2-V2;for j1=1:nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X5=0;X6=0;p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2; elseif j1==i&j1~=isbX1=-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*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2;endendendendend %求雅可比矩阵for k=3:N0k1=k+1;N1=N;for k2=k1:N1J(k,k2)=J(k,k2)./J(k,k);endJ(k,k)=1;if k~=3k4=k-1;for k3=3:k4for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2); endJ(k3,k)=0;endendfor k3=k1:N0for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2); endJ(k3,k)=0;endendendfor k=3:2:N0-1L=(k+1)./2;e(L)=e(L)-J(k,N);k1=k+1;f(L)=f(L)-J(k1,N);endfor k=3:N0DET=abs(J(k,N));if DET>=prIT2=IT2+1endendICT2(a)=IT2ICT1=ICT1+1;for k=1:ndy(k)=sqrt(e(k)^2+f(k)^2);endfor i=1:nDy(k)=sqrt(e(k)^2+f(k)^2);endfor i=1:nDy(ICT1,i)=dy(i);endend %用高斯消去法解“w=-J*V”disp('迭代次数');disp(ICT1);disp('没有达到精度要求的个数');disp(ICT2);for k=1:nV(k)=sqrt(e(k)^2+f(k)^2);O(k)=atan(f(k)./e(k))*180./pi;endE=e+f*j;disp('各节点的实际电压标么值E为(节点号从小到大的排列):');disp(E);disp('各节点的电压大小V为(节点号从小到大的排列):');disp(V);disp('各节点的电压相角O为(节点号从小到大的排列):');disp(O);for p=1:nC(p)=0;for q=1:nC(p)=C(p)+conj(Y(p,q))*conj(E(q));endS(p)=E(p)*C(p);enddisp('各节点的功率S为(节点号从小到大排列):‘);disp(S);disp('各条支路的首端功率Si为(顺序同您输入B1时一样):‘);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*con j(1./(B1(i,3)*B1(i,5))));disp(Si(p.q));enddisp('各条支路的末端功率Sj为(顺序同您的输入B1时一样):‘);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(xonj(E(q)./B1(i,5))-conj(E(p)))*xo nj(1./(B1(i,3)*B1(i,5))));disp(Sj(q,p));enddisp('各条支路的功率损耗DS为(顺序同您输入B1时一样):’);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endDS(i)=Si(p,q)+Sj(q,p);disp(DS(i));endfor i=1:ICT1Cs(i)=i;enddisp('以下是每次迭代后各节点的电压值(如图所示)‘);plot(Cs,Dy),xlabel('迭代次数’),ylabel('电压'),title('电压迭代次数曲线');。
MATLAB牛顿拉夫逊法算潮流分析
MATLAB牛顿拉夫逊法算潮流分析潮流分析是电力系统中的一项重要任务,主要用于计算电网中各个节点的电压和线路中的电流分布。
这些数据对于电力系统的运行和规划具有重要意义。
牛顿拉夫逊法(Newton-Raphson method)是一种常用的求解潮流分析问题的数值算法。
牛顿拉夫逊法基于非线性潮流方程,通过迭代计算来逼近电力系统中节点电压和线路电流的值。
它采用了泰勒级数展开和牛顿迭代的思想,通过不断更新估计值来找到方程的根。
在潮流分析中,我们需要求解的主要是节点电压和线路电流。
对于节点电压,我们可以通过潮流方程来描述。
假设电网中有N个节点,那么每个节点的电压都可以表示为V=,V,e^(jθ),其中,V,表示幅值,θ表示相角。
根据潮流方程,节点电压之间的复数表示为:I=Y*V其中,I是节点电流,Y是节点导纳矩阵,V是节点电压。
将节点电压和电流的复数表示代入潮流方程中,我们可以得到以下非线性方程组:f(V)=Y*V-I=0这个方程组的求解就是潮流分析的目标。
由于方程组是非线性的,无法直接求解,因此我们需要借助数值方法,如牛顿拉夫逊法。
牛顿拉夫逊法的基本思想是通过迭代寻找方程组f(V)的根。
假设当前的电压估计值为V0,我们需要找到一个新的电压估计值V1,使得f(V1)=0。
牛顿拉夫逊法通过泰勒级数展开,将f(V1)在V0附近展开,然后求得方程的近似解。
具体来说,牛顿拉夫逊法的迭代步骤如下:1.初始化电压估计值V0为一个合理的初始值。
2.计算方程f(V)在V0处的雅可比矩阵J和残差向量r,其中雅可比矩阵J是方程f(V)对于未知数V的偏导数矩阵。
3.解线性方程组J*ΔV=-r,求得修正量ΔV。
4.更新电压估计值V1=V0+ΔV。
5.如果方程的近似解达到了要求的精度,终止迭代;否则,返回第2步。
牛顿拉夫逊法的关键是求解线性方程组J*ΔV=-r,其中J是雅可比矩阵,r是残差向量。
可以采用直接法或迭代法来求解线性方程组,具体方法可以根据实际情况选择。
牛顿拉夫逊法潮流计算matlab程序
牛顿拉夫逊法潮流计算matlab 程序%电力系统的潮流计算,以下程序参考文献《电力系统毕业设计》中国水利电力出版社%(该文献用极坐标下的牛顿——拉夫逊方法实现,在此为了与课本一致做了修改)%为了计算方便将原来的下标做以下修改: S2 S3 S4 S5 U2 U3 U4 U5 改为S1 S2 S3 S4 U1 U2 %U3 U4 ,即原题的平衡点1就变为现在的平衡点5%1.形成节点导纳矩阵,yb55=6.250-18.750j;yb51=-5.000+15.000j;yb52= -1.250+3.750j;yb53=0.000-0.000j;yb54=0.000-0.0 00j;yb15=-5.000+15.000j;yb11=10.834-32.500j;yb12 =-1.667+5.000j;yb13=-1.667+5.000j;yb14=-2.500 +7.500j;yb25=-1.250+3.750j;yb21=-1.667+5.000j;yb22=12.917-38.750j;yb23=-10.000+30.000j;yb24=0.000 -0.000j;yb35=0.000-0.000j;yb31=-1.667+5.000j;yb32=-1 0.000+30.000j;yb33=12.917-38.750j;yb34=-1.250 +3.750j;yb45=0.000-0.000j;yb41=-2.500+7.500j;yb42=0.0 00-0.000j;yb43=-1.250+3.750j;yb44=3.750-11.25 0j;YB=[yb11 yb12 yb13 yb14 yb15; yb21 yb22 yb23 yb24 yb25 ;yb31 yb32 yb33 yb34 yb35; yb41 yb42 yb43 yb44 yb45 ;yb51 yb52 yb53 yb54 yb55];%计算各节点功率的不平衡量设U=E+jF ;Y=G+Bj;E(1)=1.00;E(2)=1.00;E(3)=1.00;E(4)=1.00;F(1)=0;F(2)=0;F(3)=0;F(4)=0;G=real(YB);B=imag(YB);%设S=P+Bj;S(1)=0.20+0.20i;S(2)=-0.45-0.15i;S(3)=-0.40-0.05 i;S(4)=-0.60-0.10i;P=real(S);Q=imag(S);k=0;precision=1;N1=4;while precision > 0.00000001E(5)=1.06;F(5)=0;for m=1:N1for n=1:N1+1%计算Pi,Qi,设Pi=Pt;Qi=QtPt(n)=(E(m)*(G(m,n)*E(n)-B(m,n)*F(n))+F(m)* (G(m,n)*F(n)+B(m,n)*E(n)));Qt(n)=(F(m)*(G(m,n)*E(n)-B(m,n)*F(n))-E(m)* (G(m,n)*F(n)+B(m,n)*E(n)));end%设P,Q的改变量为dP,dQdP(m)=P(m)-sum(Pt);dQ(m)=Q(m)-sum(Qt);endfor m=1:N1for n=1:N1+1%计算Hij Nij Jij LijH(m,n)=-B(m,n)*E(m)+G(m,n)*F(m); N(m,n)=G(m,n)*E(m)+B(m,n)*F(m); J(m,n)=-B(m,n)*F(m)-G(m,n)*E(m);L(m,n)=G(m,n)*F(m)-B(m,n)*E(m);endendfor m=1:N1for n=1:N1+1Bi(n)=G(m,n)*F(n)+B(m,n)*E(n);Ai(n)=G(m,n)*E(n)-B(m,n)*F(n);end%计算Hii,Nii,Jii,Lii,由公式4-44b 左侧公式实现,sum(Ai),sum(Bi)用于实现公式中的sigerma从j到n的求和;H(m,m)=sum(Bi)-(B(m,m)*E(m)+G(m,m)*F(m) )+2*G(m,m)*F(m);N(m,m)=sum(Ai)-(G(m,m)*E(m)-B(m,m)*F(m)) +2*G(m,m)*E(m);J(m,m)=-2*B(m,m)*F(m)+sum(Ai)-(G(m,m)*E( m)-B(m,m)*F(m));L(m,m)=-2*B(m,m)*E(m)-(sum(Bi)-(B(m,m)*E( m)+G(m,m)*F(m)));end%设雅可比矩阵为JJ,以下语句用来实现雅可比矩阵中对角线上元素H N J L 的排列for m=1:N1JJ(2*m-1,2*m-1)=H(m,m);JJ(2*m-1,2*m)=N(m,m);JJ(2*m,2*m-1)=J(m,m);JJ(2*m,2*m)=L(m,m);end%以下语句用于实现雅可比矩阵非对角线上元素的排列for m=1:N1for n=1:N1if m==nelseH(m,n)=-B(m,n)*E(m)+G(m,n)*F(m);N(m,n)=G(m,n)*E(m)+B(m,n)*F(m);J(m,n)=-B(m,n)*F(m)-G(m,n)*E(m);L(m,n)=G(m,n)*F(m)-B(m,n)*E(m);JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=N(m,n);JJ(2*m,2*n-1)=J(m,n);JJ(2*m,2*n)=L(m,n);endendend%设由P,Q的改变量组成的8×1矩阵为PQ,由E,F的改变量组成的8×1矩阵为dU for m=1:N1PQ(2*m-1)=dP(m);PQ(2*m)=dQ(m);enddU=inv(JJ)*PQ';precision=max(abs(dU));for n=1:N1F(n)=F(n)+dU(2*n-1);E(n)=E(n)+dU(2*n);endfor n=1:N1+1U(n)=E(n)+(F(n))*j;endk=k+1;k-1, dU=dU',PQ,Uend%计算S(5),也就是题目中的S1,即平衡节点功率for m=1:N1+1I(m)=YB(5,m)*U(m);endS(5)=U(5)*sum(conj(I))%设网络总损耗为Ss,计算输电效率efficiency for m=1:N1+1S0(m)=S(m); P(m)=real(S(m));endSs=sum(S0)efficiency=(abs(P(3)+P(4)+P(2)))/(P(5)+(P(1)))*1 00%计算线功率S(m,n),与课本中各元素的相对位置有所不同for m=1:N1+1for n=1:N1+1S(m,n)=U(m)*(conj(U(m))-conj(U(n)))*conj(-YB (m,n));endendS。
潮流计算(matlab)实例计算
潮流例题:根据给定的参数或工程具体要求(如图),收集和查阅资料;学习相关软件(软件自选:本设计选择Matlab进行设计)。
2.在给定的电力网络上画出等值电路图。
3.运用计算机进行潮流计算。
4.编写设计说明书。
一、设计原理1.牛顿-拉夫逊原理牛顿迭代法是取x0 之后,在这个基础上,找到比x0 更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。
电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。
为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,一般为额定电压,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成新的节点电压初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。
牛顿—拉夫逊迭代法的一般步骤:(1)形成各节点导纳矩阵Y。
(2)设个节点电压的初始值U和相角初始值e 还有迭代次数初值为0。
(3)计算各个节点的功率不平衡量。
(4)根据收敛条件判断是否满足,若不满足则向下进行。
(5)计算雅可比矩阵中的各元素。
(6)修正方程式个节点电压(7)利用新值自第(3)步开始进入下一次迭代,直至达到精度退出循环。
(8)计算平衡节点输出功率和各线路功率2.网络节点的优化1)静态地按最少出线支路数编号这种方法由称为静态优化法。
matpower牛顿拉夫逊法计算机程序研究
课程作业牛顿-拉夫逊法计算机程序研究课程名称:电力系统分析指导教师:姓 名: ___ 学号:____________ 年级专业班级:_____________提交日期 2014年1月12日1概念潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,比如各母线上的电压幅值与相角、网络中的功率分布及功率损耗等。
在简单电力网络中,一般可采取手工计算方法,如单端供电网络,给定首端电压以及末端功率,从末端向前推出功率损耗,再从首端向后推出电压损耗。
然而,实际的电力系统十分复杂,少则几十个节点,多则上千节点,此时采取手工运算基本不可能实现运行要求,计算机代替手算的方法由此产生。
它服务于大系统,较之手算,速度快,结果精确,能够满足电力系统运行要求。
本文主要研究了基于matlab 的牛顿-拉夫逊潮流计算方法,结合书本例子,验证了该程序的实用性。
2分析方法网络方程式(如节点方程)是潮流计算的基础方程式。
如果能够给出电压源(或电流源),直接求解网络方程就可以求得网络内电流和电压的分布。
但是在潮流计算中,在网络的运行状态确认以前,无论是电源的电势,还是节点的注入电流都是无法事先给定的。
对于一个三节点简单电力系统,其网络方程为:I I =I I1I 1+I I2I 2+I I3I 3 (I =1,2,3)(1)将节点电流用节点功率与电压表示后代入上式,这样n 节点系统的潮流方程为 I I +II I =I I **1n ijj j Y V =∑ (i=1,2,…,n) (2)将上述方程的实部,虚部分开,对于每一个节点课的两个实数方程,但是变量仍有4个,P ,Q,V, δ。
我们需要给定其中两个,这样方程就有解了。
按给定量的不同,分为PQ 节点(又叫负荷节点),PV 节点(又叫电压控制节点),还有平衡节点(给定V ,δ)。
下面采用的方法,是将节点电压表示为极坐标形式·i (cos sin )i i i i V V V j δδδ=∠=+ (3) 将(3)带入(2)可得I I 与I I 的表达式,即由电压幅值,相角计算不平衡量的公式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%该程序仅针对《电力系统分析下》何仰赞P61 的4节点算例。
%节点电压用直角坐标表示时的牛顿-拉夫逊法潮流计算(matlab程序,可能有小错误,仅供学习之用,如果想要通用的程序,可自己动手改或再到pudn、csdn等网站搜索更好的)%南昌大学电力061 李圣涛2009年5月编写,2012年5月上传
clc %清空command windows
clear all %清空workspace
%为了提高可移植性、可读性、通用性,设置以下变量
N=4; %独立节点数
NPQ=2; %PQ节点数
NPV=1; %PV节点数
K=0; %迭代次数
%请输入最大迭代次数Kmax。
可从0开始,以观察第Kmax次迭代的结果
Kmax=input('\n\n 请输入最大迭代次数后回车(可从零开始) Kmax=\n');
small=10^(-5); %ε不能太小
%i为节点标号,其中1号……NPQ号为PQ节点,(NPQ+1)
%号……(N-1)号为PV节点,N号节点为平衡节点
%节点导纳矩阵Y的实部
G=[1.042093 -0.588235 0 -0.453858;
-0.588235 1.069005 0 -0.480769;
0 0 0 0 ;
-0.453858 -0.480769 0 0.934627 ];
%节点导纳矩阵Y的虚部
B=[ -8.242876 2.352941 3.666667 1.891074 ;
2.352941 -4.727377 0 2.403846 ;
3.666667 0 -3.3333333 0 ;
1.891074
2.403846 0 -4.261590 ];
%Y矩阵
Y=complex(G,B);
%给定PQ节点的Pnode、Qnode,PV节点的Pnode、Vnode。
(Vnode为节点电压的幅值)Pnode=[ -0.3 -0.55 0.5 ];%PQ、PV节点的初值P
Qnode=[ -0.18 -0.13 0 ];%PQ节点的初值Q
Vnode=[ 0 0 1.10 ];%PV节点的初值V
%迭代初值
e=[ 1.0 1.0 1.1 1.05 ];
f=[ 0 0 0 0 ];
%利用for循环来实现多次迭代。
for K=0:Kmax,
%计算△W。
△W=【△P1,△Q1,△P2,△Q2,……,△P,△V^2】(平衡节点不参与迭代) %用公式(11-46)计算NPQ个PQ节点的△P、△Q。
算法:先初始化,再不断地累减
%初始化,得△P=【Pnode(1),Pnode(2),……,Pnode(NPQ)】
for i=1:NPQ,
dP(i)=Pnode(i);
dQ(i)=Qnode(i);
end
%不断地累减,得△P和△Q
for i=1:NPQ,
for j=1:N,
dP(i)=dP(i)-e(i)*G(i,j)*e(j)+e(i)*B(i,j)*f(j)-f(i)*G(i,j)*f(i)-f(i)*B(i,j)*e(j);%△P
dQ(i)=dQ(i)-f(i)*G(i,j)*e(j)+f(i)*B(i,j)*f(j)+e(i)*G(i,j)*f(i)+e(i)*B(i,j)*e(j);%△Q
end
end
%用公式(11-47)计算NPV个PV节点的△P、(△V)^2 (其中△P的计算同上)算法:先初始化,再不断地累减
%初始化
for i=(NPQ+1):(N-1),
dP(i)=Pnode(i);
end
%不断地累减,得△P和(△V)^2
for i=(NPQ+1):(N-1),
for j=1:N,
dP(i)=dP(i)-e(i)*G(i,j)*e(j)+e(i)*B(i,j)*f(j)-f(i)*G(i,j)*f(i)-f(i)*B(i,j)*e(j);
dV2(i)=Vnode(i)^2-e(i)^2-f(i)^2;
end
end
%组合成△W=【△P1,△Q1,△P2,△Q2,……,△P,△V^2】(平衡节点不参与迭代)
%将△P间隔地赋入△W
a=1;
for i=1:(N-1),
dW(a)=dP(i);
a=a+2;
end
%将△Q间隔地赋入△W
a=2;
for i=1:NPQ,
dW(a)=dQ(i);
a=a+2;
end
%将△V^2间隔地赋入△W
a=NPQ*2+2;
for i=(NPQ+1):(NPQ+NPV),
dW(a)=dV2(i);
a=a+2;
end
%判断是否小于ε
if max(dW)<small
fprintf('\n 迭代是收敛的。
第%d次迭代后终止迭代。
\n',K-1);
break;
end
%计算雅克比矩阵各元素。
算法:先初始化,再不断地累减
J=zeros(N-1);
%初始化
for i=1:N-1,
for j=1:N-1,
if i<=NPQ %求雅克比矩阵中PQ节点的元素
if i==j
J(2*i-1,2*j-1) = -G(i,i)*e(i)-B(i,i)*f(i);
J(2*i-1,2*j ) = B(i,i)*e(i)-G(i,i)*f(i);
J(2*i ,2*j-1) = B(i,i)*e(i)-G(i,i)*f(i);
J(2*i ,2*j ) = G(i,i)*e(i)+B(i,i)*f(i);
elseif i~=j
J(2*i-1,2*j-1) = -G(i,j)*e(i)-B(i,j)*f(i);
J(2*i-1,2*j ) = B(i,j)*e(i)-G(i,j)*f(i);
J(2*i ,2*j-1) = B(i,j)*e(i)-G(i,j)*f(i);
J(2*i ,2*j ) = G(i,j)*e(i)+B(i,j)*f(i);
end
end
if i>NPQ %求雅克比矩阵中PV节点的元素
if i==j
J(2*i-1,2*j-1) = -G(i,i)*e(i)-B(i,i)*f(i);
J(2*i-1,2*j ) = B(i,i)*e(i)-G(i,i)*f(i);
J(2*i ,2*j-1) = -2*e(i);
J(2*i ,2*j ) = -2*f(i);
elseif i~=j
J(2*i-1,2*j-1) = -G(i,j)*e(i)-B(i,j)*f(i);
J(2*i-1,2*j ) = B(i,j)*e(i)-G(i,j)*f(i);
J(2*i ,2*j-1) = 0;
J(2*i ,2*j ) = 0;
end
end
end
end
%不断地累减
for i=1:NPQ,
for k=1:N,
J(2*i-1,2*i-1) = J(2*i-1,2*i-1)-G(i,k)*e(k)+B(i,k)*f(k);
J(2*i-1,2*i ) = J(2*i-1,2*i )-G(i,k)*f(k)-B(i,k)*e(k);
J(2*i ,2*i-1) = J(2*i ,2*i-1)+G(i,k)*f(k)+B(i,k)*e(k);
J(2*i ,2*i ) = J(2*i ,2*i )-G(i,k)*e(k)+B(i,k)*f(k);
end
end
%根据△W=-J*△V, 得△V
dV=(-J)\dW';
%用dV对e、f进行修正,并得到复数表示的V
for i=1:(N-1),
e(i)=e(i)+dV(2*i-1);
f(i)=f(i)+dV(2*i );
V(i)=complex(e(i),f(i));
end
V(N)=complex(e(N),f(N));
format long g;
fprintf('\n 第%d次迭代(共%d个独立节点)',K,N);
V
end。