
潮流计算的MATLAB源程序.docx
18页细心整理%简洁潮流计算牛顿拉夫逊程序,相关原始数据数据数据输入格式如下:%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:n1 if 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)==2 h=h+1; for j=1:n OrgS(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))); end endendfor i=1:n %对PV节点处理,留意这时不行再将h初始化为0 if i~=isb&B2(i,6)==3 h=h+1; for j=1:n OrgS(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))); end endendOrgS%创立PVU 用于存储PV节点初始电压PVU=zeros(n-h-1,1);t=0;for i=1:n if B2(i,6)==3 t=t+1; PVU(t,1)=B2(i,3); endendPVU%创立DetaS,用于存储有功功率、无功功率和电压幅值不平衡量h=0;for i=1:n %对PQ节点处理 if i~=isb&B2(i,6)==2 h=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)==3 h=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:n if i~=isb h=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)==2 h=h+1; for j=1:n if j~=isb k=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); end if k==(n-1) %将用于内循环指针置于初始值,以确保雅可比矩阵换行 k=0; end end end endendk=0;for i=1:n %对PV节点处理 if B2(i,6)==3 h=h+1; for j=1:n if j~=isb k=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; end if k==(n-1) %将用于内循环指针置于初始值,以确保雅可比矩阵换行 k=0; end end end。
