我对程序严重的感冒 下面是我花了2个通宵修改的程序,可是还是有问题,但是我看不出来~~请高手帮忙解决一下,谢谢( u& f# t( }) G m! X8 ~
(我直接粘贴不知道行不行,如果不行后面有附件)我的邮箱langlang00000@sina.com0 R) Z# e: ?4 E- c% P
n=5; u6 P, e" e% y: u- t3 F5 R- c. mnl=4; : H# F, _( P5 V3 R! d% v0 n% _swing=1; ! Z, P6 b; t8 @5 ~pr=1e-6; & g# o! n; r- k9 F% g p' YB1=[1 2 0.12i 0 1 0;%[首节点号 末节点号 支路阻抗 对地导纳(b) 变比(无变压器则为1) 是否有变压器(是为1,否为0] 5 R! J) W, M# {1 _; P- {( Z 2 3 0.01+0.12i 0.04 1 0;' d" ~8 x# m7 ]2 p0 T) D
2 4 0.2i 0 1.05 1;) E* e5 @8 a$ k* c, O( i5 K2 m( |5 I
2 5 0.12i 0 1 0]& Q F3 @$ G8 U0 `, q" G/ q
B2=[1 1.02 0 0 0 0 0 0; %[节点号 电压幅值 电压相角 发电机有功 发电机无功 负荷有功 负荷无功 节点类型(平衡节点为0,PV节点为1,PQ节点为2)] 6 z$ m, v0 \/ ?6 j% N" a 2 0 0 0 0 0 0 2; " J1 e/ ]7 U$ I' M 3 0 0 0 0 0.9 0.6 2; * I3 B4 y5 N* V! s9 |% ~/ ] j 4 1.0 0 1.0 0 0 0 1; 1 ]8 x; H5 G- ~ 5 0 0 0 0 0.8 0.5 2]" _2 O1 g7 E/ s6 ^
X=[1 0;%[节点号 导纳] / T2 g W) z) a, D0 b 2 0; 5 a! Z/ }* E$ ~9 Z4 R( S- q 3 0.1i;! _8 m" l/ L8 @$ O S4 x
4 0;0 K; Q- d8 g; v, ]
5 0.1i] # ~ I0 T) K& k. B; I9 mY=zeros(n); %初始化节点导纳矩阵5 N8 c- U" k. Z f
for i=1:n 5 f* u. X! H/ ^, m if X(i,2)~=0;$ p3 }" D% y- ~! C
p=X(i,1); : v4 f6 v8 B" h; l/ ?( c Y(p,p)=X(i,2); %写入节点对地导纳 # B6 C# G$ n) f# B" O end7 b) F' ]% v& v! c1 T. a
end # l8 k1 ]( n: A+ g( A! ~# Sfor i=1:nl & K) z B0 r5 S* V if B1(i,6)==0! T/ h1 P4 v& s' G' a/ I3 A: h9 ~
p=B1(i,1);q=B1(i,2);6 J! T% K1 V0 o1 K3 M8 C9 o
else p=B1(i,2);q=B1(i,1); %确定变压器首末节点4 D; I2 w5 B6 e0 e
end: p9 i; ] b9 ^: J0 p
Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));$ r9 D" t/ D3 D0 g: G9 E# }
Y(q,p)=Y(p,q); %互导纳 5 h4 b+ r6 _, v [' z* u# \; g3 u Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2; %首节点自导纳 2 }9 b( p2 {# q$ M* H; \1 Y8 r# q& | Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; %末节点自导纳 7 \! ?/ m" @' d/ ~- ~end $ {+ t; K5 j5 N5 D7 q5 R- j, aY' \$ `- X1 G' n7 u6 _
MAG=abs(Y);PH=angle(Y); %求节点导纳矩阵各元素的幅值和相角 " j" \0 `1 ~! p ) a! V% |: l7 O2 Z%--------------------------电压及功率初始化模块------------------------------ + b; a( N9 r# c, v, Z; s # Z6 h( V1 \8 t+ d; @6 I; Bdelta=zeros(1,n);U=zeros(1,n);7 S y& Q: @8 k
for i=1:n, F5 G, w" V7 N% o2 m! X
delta(i)=B2(i,3); %节点电压相角初始化- c) a& y8 {& J
U(i)=B2(i,2); %节点电压幅值初始化: G% d/ n0 y) Y( m4 K; ^ I4 |
end 3 P7 Q% M+ B8 x) `5 \1 z' u) O7 F* n5 j' d. V2 c
P=zeros(1,n);Q=zeros(1,n);( o- ?# C; e5 R
for i=1:n ; Y! e; I7 d# E if B2(i,8)~=0 L; t$ n) u+ _" @% R' S( T P(i)=B2(i,4)-B2(i,6); %节点注入有功功率初始化 2 ?' M5 [/ k& M) b# P9 g0 ` S end3 Q1 A8 E, T; A: [' R
if B2(i,8)==2 0 c3 _" S; y' T, |# \" t Q(i)=B2(i,5)-B2(i,7); %节点注入无功功率初始化! I2 j+ _: i J$ d5 v
end 3 r8 _! E4 k! M" ]
end+ w5 ]3 ]9 b" }) h3 X# x
. K0 L4 K; \& Y; o& H/ ?8 w% R) q2 L 6 C; z7 M1 L1 s/ f- l3 Y- ?2 h%------------------------求各节点功率不平衡量模块---------------------------- , {6 G0 Q0 [2 k4 R# r) e* N1 P % Z3 y3 M( H T" p8 k0 B B: ?NUM=0;IT2=1; %定义循环次数,循环条件标志2 |% y/ c& j0 E( J' g) w
while IT2~=0 . l6 c- _: T7 R! ]5 ?4 @ IT2=0;t1=1;t2=1;: K: E- U% B. t7 `
for i=1:n/ I4 W1 q6 v B7 p I; N" j8 H
Z- I. C7 Z a n. Z C(i)=0;8 d. h, I$ u$ l: H" q
D(i)=0;# U. Q9 P& c, h! {, Q
for j=1:n 0 _4 M( q K( J( Q C(i)=C(i)+U(i)*(U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i))); %各节点有功功率 + l3 S; \( J9 u( o D(i)=D(i)-U(i)*(U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i))); %各节点无功功率 ) J. S* B$ i. V' ~& t end# \) U% F) [- N( v ?7 L- {
if i~=swing- s b; @6 T/ c# H; q
DP(t1)=P(i)-C(i); %PV节点和PQ节点的有功功率失配量1 ]1 B# e8 C. c' f6 g0 B P/ w
t1=t1+1;8 T. D9 E' U( { q9 z
if B2(i,8)==2 ! u6 i' [% X2 D, E DQ(t2)=Q(i)-D(i); %PQ节点的无功功率失配量 : u; ~; p7 d! | t2=t2+1;$ j Q' F1 B- f
end : \- z( u: R. ]0 ^) V. M* J
end # h- _2 P9 d3 B% ~3 s
end 3 j: f8 b' [ y! D& u $ _. f2 }- _" n: s9 k3 ?
t1=t1-1;t2=t2-1; 5 u6 a$ O3 f) E) g$ v DPQ=[DP';DQ']; %功率失配量矩阵 + \3 g: p( a( V+ j) w for i=1:t1+t2& K! Y8 F4 L( k
if abs(DPQ(i))>pr %收敛精度判定' e( s: s1 N6 J/ v" X1 A8 |
0 z: }* V* w3 W8 O* [ IT2=IT2+1; %不符合精度要求,进入下一次迭代- p, w1 W5 L! ? J9 o0 I' ]
end ' z. H _: e% v$ R end ' ^3 ~3 x8 d* Q2 w0 z& R* F7 z, K C
%---------------------------求分块雅可比矩阵模块-----------------------------* B9 {# S& Z* \4 i1 a$ m: Z
; o2 R, [ G7 ~' S) }H=zeros(n); 3 q" Z# v' m+ }" ON=zeros(n);, H6 Q* B1 o5 c1 ?" a, p! ~
K=zeros(n); # \- c8 V, a F9 p) N& n3 h0 TL=zeros(n); %初始化分块矩阵& `1 `* v% { l8 P' u5 n& k
for i=1:n & s, N9 q6 l0 ` for j=1:n & z' l) r/ F0 J3 Z A. ^ if i==j 0 `3 U2 _- u( D8 p; E" h6 K H(i,i)=-D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i));+ m" T6 [+ n5 g- A* I: ]& p
N(i,i)= C(i)+U(i)^2*MAG(i,i)*cos(PH(i,i)); * F0 A1 p7 E: }% l K(i,i)= C(i)-U(i)^2*MAG(i,i)*cos(PH(i,i)); I- x7 z: z, C8 s8 m
L(i,i)= D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i)); %各n阶分块矩阵对角元 0 I- P5 q* \4 q9 N0 g* D$ X1 P- M1 c1 X else r+ f. D/ p9 A1 j- P/ Y H(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i)); " _ M$ N4 E7 L1 a5 j: G1 P N(i,j)= U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i)); * W1 [" q0 }4 ?; d K(i,j)=-U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i));% ]7 ?/ g, B+ Q+ s/ y8 S
L(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i)); %各n阶矩阵非对角元 0 c% O3 E7 E8 \7 Q* x. y( w end) q& \, q5 Y4 [, b
end 6 Y2 T0 d& ]# L% d+ Q. Gend7 t2 v# b% @# g+ G
" O( C) y7 D' Q$ O
%----------------------------求雅可比矩阵模块------------------------------- 3 F* Q3 F+ a9 |# c: y1 c Y6 R0 m- `5 G7 F1 m
J=zeros(2*n); %初始化雅可比矩阵! k Q- X2 E, H+ l2 ~' P. m3 c
for i=1:n ; v `9 d# o) @; {( t for j=1:n " z$ ]. u! ^2 o1 y) f. t+ n# o; ? J(i,j)=H(i,j); 8 @' f6 P2 |2 \9 C+ a2 L9 N J(i,(j+n))=N(i,j);2 k9 v4 p; I7 \0 H/ C, t' ~6 O% M4 F" W
J((i+n),j)=K(i,j); 3 H0 K \# \$ B; f" J$ E: D J((i+n),(j+n))=L(i,j); %将各个分块矩阵合并为2n阶雅可比矩阵% X! W* @' l4 \! q! x( W
end% G) q) G$ Q; M& W! ~
end , v/ V3 M4 X$ \7 i- L4 G # G6 ^2 u& \& Y. j: y1 I2 pPV=[]; 5 i, W" m5 M# Hfor i=1:n/ B; m4 E8 D8 [+ `9 h1 \) J) l
if B2(i,8)==1 . l: v5 C" `( j% Z PV=[PV B2(i,1)]; %记录PV节点的标号 # [, d$ h1 B) ~3 C end / n) J( l) d" ?/ s. v5 `% g, V, Q6 J, Rend 2 X5 C; g, q+ h) u- r
k* s' u& z. H. X _8 T
J([PV+n,swing,swing+n],:)=[]; %删除与平衡节点对应的两行,与PV节点对应的一行+ J; ^* G( ^5 s% Z+ ^ ?
J(:,[PV+n,swing,swing+n])=[]; %删除与平衡节点对应的两列,与PV节点对应的一列 A6 q, r3 j8 v
. R+ F% V( A1 ?7 NJ; %最终的雅可比矩阵 ^2 d' o- i( N( W3 a/ u5 o$ I2 E" p0 E' B+ y7 \* X
%------------------------解修正方程求各节点电压模块--------------------------7 {: g4 L3 _ }4 e
, }9 T6 Y4 I" M" u$ _( `3 m* D modify=inv(J)*DPQ; %各变量的修正量 ! _2 @! W# z6 q, \3 B9 @ Ddelta=modify([1:t1],:); %节点电压相角修正量9 u) B6 J" p h* Z
DU=modify([t1+1:t1+t2],:); %节点电压幅值修正量5 v, G, Y8 x8 O9 `; H
$ W2 X K- m" H# d9 w# S* Z/ S UR(:,NUM+1)=U(1,:); %记录各次迭代节点电压值 ; A% f. d( |7 S! B) f2 H t4=1; ' p3 o( V# R* V* Q, F8 Q& h2 [ for i=1:n - u5 t) n' V( V# {+ o, a5 O) v if B2(i,8)~=0 % X" ?6 {/ a6 `' k1 Y! P( N& ? delta(1,i)=delta(1,i)+Ddelta(t4,1); %修正后的节点电压相角; m X: B# z: v r
t4=t4+1; 1 b( G1 U9 h6 ?2 ]7 }# K end ( f. m U8 ]/ Q4 w end 2 b" o" J# i6 k! C2 S9 j. i7 n; S6 t, _+ X1 D2 ^
t5=1; $ [. ~: o8 u8 l( |7 B+ Q0 I for i=1:n( i& a4 z B6 }" y E' `
if B2(i,8)==2 2 L2 k/ o' \, r4 Y# Y( v U(1,i)=U(1,i)+DU(t5,1)*U(1,i); %修正后的节点电压幅值) b, v0 g$ c+ n! K' t
t5=t5+1;3 H `. i- @' S2 L9 C7 r
end / x3 [/ U6 i0 q- }% D/ E end 3 g7 q: e" S# U) g/ W; [ NUM=NUM+1; %迭代次数0 v- }) s" _3 i8 [2 N7 v5 V4 G& g" e
if NUM==1 %最大迭代次数判断 c( `/ K: c8 f7 J. j9 T
break; %超过最大迭代次数,跳出# e' u) Q. r @) t! d9 G" @
end 5 ~2 Q- O$ I7 V+ [) Y4 I* U
end $ M6 e' E/ a8 | l
( K3 Z9 x! n8 C+ ?/ M ~- u
%--------------------------------输出模块---------------------------------- 9 w$ e+ F% h# j! j* Q$ d. B2 m( l( h% H! S
disp('------------------------------------------------------------------');2 A W* _3 a4 b/ Y
disp('各节点电压U幅值为(节点从小到大排列):');1 @; g& _ T1 o8 E6 ^& a( ?6 @
disp(U); %输出节点电压幅值 9 f* @8 M, k' @2 K& Ydisp('------------------------------------------------------------------'); * h. u9 T4 z" E$ f7 z7 q& |4 hdisp('各节点电压相角为(节点从小到大排列):'); # k7 m/ t/ j, s( e8 Q8 Ndisp(delta); %输出节点电压相角 " P/ d" w- k- Q; Ldisp('------------------------------------------------------------------');. V# u; K! E F" c* H
disp('迭代次数:'); 7 K: `( N1 B+ p4 t0 f( ]disp(NUM); %输出迭代次数