📄 c.m
字号:
clear
n=5;%n=input('请输入节点数');
b=4;%b=input('请输入支路数');
%disp('请输入支路阻抗和节点功率矩阵,第一列存支路号,第二列存首节点号,第三列存尾节点号,第四列存支路自阻抗,第五列存尾节点给定功率');
Sb=100;
Ub=10;
Zb=Ub^2/Sb;
Z=[1,0,1,0.075/Zb+i*0.1/Zb,2.00/Sb+i*1.6/Sb
2,1,2,0.09/Zb+i*0.18/Zb,2.0/Sb+i*0.18/Sb
3,1,3,0.08/Zb+i*0.11/Zb,3.0/Sb+i*1.5/Sb
4,2,4,0.04/Zb+i*0.04/Zb,1.5/Sb+i*1.20/Sb
];
k=0;
V=ones(n,1);
t=0;
%迭代开始处
while t<b & k<10
%算节点注入电流
x1=Z(b,3);x=x1-n;
for l=1:b
j=Z(l,3);
ua=V(j+1,1);
I(j,1)=conj(Z(j,5)/ua);
end
%回推算支路电流
J=zeros(b,1);
l=b;
J(l)=J(l)+I(l);
for jj=1:b-1
l=l-1;
for m=l+1:b
if Z(m,2)==Z(l,3)
J(l)=J(l)+J(m);
end
end
J(l)=J(l)+I(l);
end
%前推算节点电压
for l=1:b
j=Z(l,3)+1;
i=Z(l,2)+1;
V(j,1)=V(i,1)-Z(l,4)*J(l,1);
end
%收敛判定
t=0;
for j=2:n
SS=V(j,1)*conj(I(j-1,1));
dp=real(SS-Z(j-1,5));
dq=imag(SS-Z(j-1,5));
S(j-1,1)=SS;
ddp=abs(dp);
ddq=abs(dq);
L1=(ddp<0.000001)&(ddq<0.000001);
F(j-1,1)=L1;
if L1==1
t=t+1;
end
end
k=k+1;
end
%输出结果与否
disp('输出直角坐标各节点电压');
disp(V);
disp('显示迭代次数');
disp(k);
disp('显示收敛节点情况,"1"表示收敛,"0"表示不收敛');
disp(F);
for j=1:b
if F(j,1)==0
disp('显示不收敛节点号、计算功率');
disp(j);disp(S(j,1));
end
end
for j=1:n
Vm(j,1)=abs(V(j,1));Va(j,1)=angle(V(j,1));
end
disp('输出各节点电压幅值');
disp(Vm);
disp('输出各节点电压相角');
disp(Va)
%返回开始处
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -