📄 new.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 + -