马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。8 y3 P0 V9 s7 g1 ]/ C$ `
刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?# {, Q$ a' |" L: f* m
我的程序如下
1 c1 M; ?* `2 W" X; |; l2 l& [function newton
T; V3 z1 k: f8 Z6 g+ I' eclear;
: G+ `0 I4 f/ U4 m+ @n=input('\n请输入节点数:n=');
" V! _7 K, s- h cm=input('\n请输入支路数:m=');
6 A- H h4 Z; W0 i1 pph=input('\n请输入平衡节点的节点号:ph=');: v& e0 R( C' G+ J& X5 A# |
B1=input('\n请输入支路信息:B1=');7 F' T1 d: d) F; v* A8 `% G
% 他以矩阵的形式存贮支路的情况,每行贮存一条支路: Q/ p4 s3 F% {6 C2 T, r( X/ n9 \
% 第一列存贮支路的一个端点/ h- [, ^ t! b* @
% 第二列存贮支路的另一个端点- _$ O; n! g1 T8 D, g4 ~
% 第三列存贮支路的阻抗
8 M! D, r5 d( _( X4 `$ M% Z7 \% 第四列存贮支路的对地导纳2 E m, m/ C8 h8 f2 \+ [
% 第五列存贮支路的序号1 ^- v+ c% v6 c0 |
B2=input('\n请输入节点信息:B2=');
2 d" g O a. ?+ a% 第一列为电源侧的功率 ; g+ j0 A" g4 Y1 p
% 第二列为负荷侧的功率
- l6 D9 [+ O0 v. B1 \- P) Z% 第三列为该点的电压值7 ^( I! p! v+ [% [
% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点
9 [( }- n* U' Y* l1 f6 G- Z; S6 ^* ZA=input('\n请输入节点号及对地阻抗:A=');' `9 _2 k4 J, f
ip=input('\n请输入修正精度:ip=');' h% d3 q, R9 L' C1 |% N
Y=zeros(n);, s; P5 I" t4 X+ S! W; C
e=zeros(1,n);6 J! g6 I: V X" K
f=zeros(1,n);
' d) J5 b+ u9 O$ g" \no=2*ph-1;
% ]4 F8 E" M- k8 xfor i=1:n4 L4 C( s0 m8 J( G# X
if A(i,2)~=0;
P. T6 b) ]6 M- a4 D/ h p=A(i,1);
/ z) C- T/ O, Y- k6 O! _$ w& N Y(p,p)=1./A(i,2);
. }5 u& O; }. E+ A2 N1 m3 B; H5 z end6 D0 c7 {, R1 X9 u
end
9 g1 T9 E/ B; `& |5 V v$ hfor i=1:m
7 F% o) L: b6 @& s6 o/ V p=B1(i,1);0 r2 J& R1 U! [4 s9 E) z7 Z
q=B1(i,2);
2 ^* v& F4 n. K1 v3 A6 K Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成
- g! B" l, O: L/ ^ Y(p,q)=Y(p,q)-1./B1(i,3);/ _* |" Y4 S/ Z" z7 Z) \5 {
Y(q,p)=Y(p,q); % 互导纳形成
- n4 V) m2 j4 p- s Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
/ t0 S7 U0 T3 ?- l& C3 dend
- F- F! E+ X$ xG=real(Y);! H5 Y# ]8 S! F! ~
B=imag(Y);4 x$ e% E3 f! Y) m5 K* q1 ^
for i=1:n;; F- Q, Z: N4 B w( |! p# F
e(i)=real(B2(i,3));
& e1 w. E( f# M9 B/ _4 w0 a& o- M1 M f(i)=imag(B2(i,3));6 @ I# }' A/ d& F( i1 ^
S(i)=B2(i,1)-B2(i,2);$ o1 S% M# }! u7 V6 ^) Q* t
V(i)=B2(i,3);3 a+ ~" e& B) |$ J
end
" g1 c" G. y4 `9 ~. mP=real(S);) T1 V7 n) |/ V9 ~4 D
Q=imag(S);
7 z1 b- ]5 q( e) \" Z! G! A[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);! V2 r7 h7 V; [8 ` z
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
* ?9 u7 ~; s9 u) x- R5 g[De,Df]=hxf(J,DF,ph,n,no);, `0 Y8 R$ n+ f5 a2 i
t=0;! i$ `, x* Z, i+ j3 ~8 X
while (max(abs(De))>ip|max(abs(Df))>ip)0 d" r& u. C; S+ {' ^4 d/ k4 |6 l
t=t+1;+ A8 E1 }2 M2 k2 Z$ B
e=e+De;
( K8 u$ \( O! J$ L% h4 \5 ^0 Y1 } f=f+Df;
. Z$ J' I7 B% A6 [% ]' D [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
$ T i5 O3 H u" {& {* L3 R6 y J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
& C! `, B. y( _# W [De,Df]=hxf(J,DF,ph,n,no);3 J! B4 P, F9 F# y+ y
end2 R. V5 B/ m5 |8 g3 |# A; |
v=e'+f'*j;
! C& Z+ n5 J6 I1 }" _# d8 n: R. Wfor i=1:n
( z) |/ n, S9 o( W' e, ^0 k hh(i)=conj(Y(ph,i)*v(i));
1 A% l$ U. x: V* send
9 h4 \+ `4 F2 u: O8 {/ MS(ph)=sum(hh)*v(ph);
0 _4 E2 b: ?5 u1 V( r, o9 f4 A0 IB2(ph,1)=S(ph);8 H; {! e3 F1 z2 T2 y
V=abs(v);- o( {7 e0 S( g5 j
jd=angle(v)*180/pi;
6 V5 D5 h- x) }4 {) e' jresult1=[A(:,1),real(v),imag(v),V,jd,real(S.'),imag(S.'),real(B2(:,1)),imag(B2(:,1)),real(B2(:,2)),imag(B2(:,2))];' m) s; f! ~9 h8 z) y3 |
for i=1:m
% i% N4 D2 k( j! h/ H a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));
1 [3 ]4 C3 d; }3 @6 K! L# F b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;
% T' t* d" l; ~) d/ h& P8 y5 t c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;
. G; D* t: ^# n( yend
: T# r% A' }& b9 L+ @4 G" Oresult2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];$ r* R9 {1 @ v/ D) T1 h3 k& g1 P2 y
t
# U- O3 ?" h1 W) Cresult13 A0 B! I* f3 Y' C) s- V
S' `& _/ t. V8 g
b
# G; p; X$ @7 ^& g2 e* \9 i4 Oc
- ]9 B0 q9 ~) G0 `' b* E* F$ v) hresult2* D8 j. |, e4 C8 u
; G; v( E: @" } y, t
1 P8 `) B+ Z" ]- V! ]
, \5 g1 A m& a! o1 |function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF& h% ~1 o5 v+ s* ]# c- U+ N# K' q
for i=1:n
3 {, L/ R- r" G$ g/ W if i~=ph& ] z* g7 N: l
C(i)=0;
. y' I: q9 K/ i2 n: A* } D(i)=0;
8 z4 m1 ]0 r/ M& B7 b for j=1:n$ [) y3 s; t/ K; F5 h V; o) W( E
C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii7 V) k1 Z: h7 o: Y, t7 I
D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii
- w, a, i! L) ]5 ~ end. ]' r% y* V7 Q, q, N/ y/ c8 e
P1=C(i)*e(i)+D(i)*f(i);" s3 {8 C% K; i5 F
Q1=C(i)*f(i)-D(i)*e(i);
9 X! g2 t F0 c, y# { V1=e(i)^2+f(i)^2;
5 P0 S3 e @3 G& ? if B2(i,4)==2
7 x# T: h4 n% N p=2*i-1;
8 z$ o E8 D$ _5 p+ h DF(p)=P(i)-P1;
- m$ G( G" z+ S _ p=p+1; i: ~+ O' v. J/ E
DF(p)=V(i)^2-V1^2;
h D$ d0 B( H4 s else; j4 A" S6 a g+ P1 |1 g
p=2*i-1;
4 n4 w( \' R/ M DF(p)=P(i)-P1;! ?4 E. X! q% f. ~+ D( U! A* {; {
p=p+1;
; q4 f3 \+ v& H- A1 D DF(p)=Q(i)-Q1;
; R) k. l/ q9 X end* u+ {/ H C7 M9 u2 s* m
end" h0 d* X3 e1 d: P
end3 n Z6 m# S+ P/ d% Y F( g% D
DF=DF';
9 L+ @. C9 r6 \8 J! ~ ~3 B Y* Dif ph~=n' ?( n9 a- S, T' M$ n
DF(no,:)=[];+ ~/ E+ F# H9 A8 p/ V. O9 M# c
DF(no,:)=[];- v+ A/ f; K7 X
end' }* k" M* O# l; H: W% p$ c. }9 }
- a7 }' {3 L& F4 S" ?6 I5 b7 R
1 R) z' j" D" n: n' W! |! Z0 t; Efunction [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df. I- y) _2 p( L; ?: L: M
DX=J\DF;1 B. D+ K4 l9 O+ L
DX1=DX;1 g K" R1 g4 J+ u8 w
x1=length(DX1);
+ I: t8 u; A e: tif ph~=n
, n) U2 b0 _& q' k2 B3 u DX(no)=0; C% j6 F8 p9 c' V; }- a
DX(no+1)=0;
+ `( _( X$ V5 q7 \2 h9 O for i=(no+2):(x1+2)" Y6 U1 C4 U. O. N9 U% _7 t
DX(i)=DX1(i-2);+ B( ^2 b% C' V$ M4 n8 |
end
& C/ [$ |/ j9 h( Gelse9 @. x$ |1 H w
DX=[DX1,0,0];( N# Z2 X e% [7 r5 e3 v9 [, s
end
; h0 Y- y! d' G% rk=0;
' Y, J4 P" ]9 Z4 F' y" I: v[x,y]=size(DX);
; J8 z3 @/ n, H0 Dfor i=1:2:x
- h' g) ~. n# r# V k=k+1;
. j' Z, e2 H0 L Df(k)=DX(i);
8 s, D3 U% k7 c# Z' H, t De(k)=DX(i+1);( Z# ^. ^4 `+ N# f( |3 k
end
3 z$ D6 O8 A1 P8 Q: M0 {$ E" E* ^: U3 s% G4 F
; o; I" h# ]4 }/ g. cfunction J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵' k( e! ~6 G5 G7 |
for i=1:n
: a$ H* S: q3 N6 R1 M& ]" I$ r, ~ switch B2(i,4)
8 c# P5 N+ V$ Z7 h% X case 3 ! \- H( N# \# P# |; Z; Z+ C' H
continue
% v5 d s) r3 j5 @+ s case 1
+ Y/ R6 t0 l! C1 A7 V, _9 g @6 I8 x for j=1:n
8 c# y' H) c0 W7 X" R/ T if (j~=i&j~=ph)
" S, D6 d5 g. p/ B. K: ^ X1=G(i,j)*f(i)-B(i,j)*e(i);
' `) E* m, X7 [4 |5 T/ o X2=G(i,j)*e(i)+B(i,j)*f(i);2 J. x8 X! C% Q$ y
X3=-X2;; L4 ^ h+ u% c
X4=X1;- P3 u3 E( R6 {7 [
p=2*i-1; C6 ^5 c4 \5 S+ P8 B" F5 Y
q=2*j-1;
! `: U9 H) ~ j$ u J(p,q)=X1;
$ D( `, W K) ] m=p+1;' O3 c. O' c4 e( E: _! W/ v
J(m,q)=X3;
# }) Y$ ]* M6 I4 R+ r9 m q=q+1;. Y4 }$ i- O, N- h+ q) W% d3 B: _
J(p,q)=X2;
' O6 @, D( x( w- H6 @' u) b J(m,q)=X4;
/ x, C9 B# V& }8 K7 z else if (j==i&j~=ph)
# [2 Q. f5 G1 h3 R* a3 a" l4 g X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);3 ^0 T$ N5 _# ` T; E! C
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
8 T/ S0 ]$ Q- e' ^ m3 O1 V0 d X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);8 \4 C/ a2 x) C. s2 t! u' n* M
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
7 B4 C( D" Y% r. E( g9 z2 E q=2*j-1;: i+ X, c, ?' [8 B4 g" {
p=2*i-1;% e! Q& M1 q" o3 v" j u4 p
J(p,q)=X1;
7 f: o& }2 y6 K: \ m=p+1;: J* K0 O& L" a" a
J(m,q)=X3;
, S( B J8 y& H6 p* m } q=q+1;
4 o4 {' X, V; W, I9 u$ {- g J(p,q)=X2;
5 C n5 o3 H a. f J(m,q)=X4;3 o! U! n R& ~. [6 J
end2 T# Y- K/ Z" T1 a, ?6 m1 P- w+ R
end
$ x; m( U9 c; m G* k: w end
3 i* B3 |' k0 d& E$ k, o case 22 }" F, R% }9 v M
for j=1:n
. M/ _: R7 o( _$ f if (j~=i&j~=ph)
7 e- z2 v, q- J9 `) } X1=G(i,j)*f(i)-B(i,j)*e(i);# a( w# |( K* ?
X2=G(i,j)*e(i)+B(i,j)*f(i);
K# T& n1 R, }: W# N X3=0;$ _# q& B% R v+ X! I7 D+ d
X4=0;5 A, t! k1 {9 e3 T' D' S! [
p=2*i-1;
2 p' P- b! |0 M! s% t% m! \ q=2*j-1;
% C' W; B# j. p1 c( ? U4 G; R# Z J(p,q)=X1;. g% y7 C4 ]3 J9 {7 u3 ]" R! R6 ^
m=p+1;! B' q) p/ I9 v9 O1 {9 {" j9 c
J(m,q)=X3;
, H" @5 Y2 n) x. M9 `+ e q=q+1; v- ?6 ^* ? |5 c9 m1 ^: C
J(p,q)=X2;7 J( T5 F* q' I: W( @; N
J(m,q)=X4;, N N6 N7 i- Q) Q
else if j==i&j~=ph
5 z( N; o, x7 S8 D( v8 [0 R9 [ X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
- h/ u6 ^4 E; q7 i* A0 ]3 K X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);( {# Z5 O# \) D' _3 @/ P: z- n
X3=2*f(i);0 D2 e- v) K1 n Z* p
X4=2*e(i);8 K, o# P# u2 d4 m& ], Z& \
p=2*i-1;0 H2 j: B3 F" W5 s- H
q=2*j-1;
8 T0 `# B8 @6 ? J(p,q)=X1;
" e- t1 U! U! p m=p+1;/ v' W$ }8 \! T6 f
J(m,q)=X3;/ ?( P0 j* y: [ K7 m( l1 n# k
q=q+1;% I8 M$ a- C! b: R! A, x! n
J(p,q)=X2;/ u* e$ F! r5 g
J(m,q)=X4;
0 G" d M8 I* Y$ k& f end
: A: g% n6 \# s4 q1 p end: F4 M/ g( R1 L+ M0 l
end+ u5 a* f: Q0 b/ p8 \! T- [
end* z. m. l" r, ~' o
if ph~=n
- i- K7 l% a/ ^. W$ a2 l2 K J(no,:)=[];
9 Y* }+ {, i! W1 e( F J(no,:)=[];' }4 n8 E$ { u, @3 _
J(:,no)=[];. @7 H; n; [( `, S1 T
J(:,no)=[]; % 删除不需要的空间
0 {* D8 r* S: s# Nend |