|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。
4 ], n+ L3 l+ Z1 P3 F% ^8 j: X- _刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?9 E( Z9 w2 T3 r- G
我的程序如下
! T( h6 p; O4 ~* afunction newton
9 j# Y5 l& z2 c: O- M( ]clear;" I/ e/ p2 M# w* O1 y) l
n=input('\n请输入节点数:n=');
W# u# q! K# e. Z" d6 Ym=input('\n请输入支路数:m=');$ g. m3 w: a8 c; ~' i0 j
ph=input('\n请输入平衡节点的节点号:ph=');
& z! W4 C4 t1 {6 Y$ _# u, D0 z1 LB1=input('\n请输入支路信息:B1=');
) U! ^! x# s; v+ Z1 o; O5 h% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
. z; G1 q! D+ J: P9 n# G# J4 j% 第一列存贮支路的一个端点
5 n6 I/ T5 m7 e2 L% 第二列存贮支路的另一个端点
# V- V( R L) H( v/ }% 第三列存贮支路的阻抗 P) q* M4 [9 x6 A% \
% 第四列存贮支路的对地导纳9 z8 e4 ^8 J2 U! h
% 第五列存贮支路的序号
& A. L$ U% X8 r; tB2=input('\n请输入节点信息:B2=');4 P3 g7 |$ K: z7 t; P
% 第一列为电源侧的功率 ; X8 f+ ~$ t3 X$ I
% 第二列为负荷侧的功率
G9 F$ |- n0 R. X2 i/ f% 第三列为该点的电压值
# x: M/ X: M# T# w0 e" H6 f% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点
" V7 K" c& \6 |( o9 XA=input('\n请输入节点号及对地阻抗:A=');
& E/ i" n# V* G/ S0 d; k |( Qip=input('\n请输入修正精度:ip=');
$ s( w3 }# j* m! E4 _* d' L. YY=zeros(n);
, V0 S* C2 Z9 A; ^/ }! Se=zeros(1,n);
0 l" o3 Y1 M8 ?8 b8 Jf=zeros(1,n);- A y4 T0 z% i! a M% j# w0 e' f
no=2*ph-1;
* [ X$ O( t2 f$ |9 ^7 y) v% Gfor i=1:n
' k w9 l- ]" m5 T5 T5 O* f0 t if A(i,2)~=0;
' M6 G. `& H( Y7 o9 B2 h p=A(i,1);6 K# F4 X4 S9 n5 C+ _
Y(p,p)=1./A(i,2);6 S! @& e. I( O7 c
end
# I- c/ Q1 }, F! Z- E: s8 w% vend
l, P' C; b7 _& W& `- d0 ffor i=1:m
' }! u' _( ^4 U6 g: x# p9 I p=B1(i,1);
3 g# L2 d; X6 E$ E q=B1(i,2);% `9 L* n+ z+ q& K+ c' ~% v
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成 R5 S# Z) ?2 _5 }# k1 Z" I9 B
Y(p,q)=Y(p,q)-1./B1(i,3);2 _7 G& c4 [& V7 o/ o2 G
Y(q,p)=Y(p,q); % 互导纳形成1 r. N: ?* G4 c$ Y
Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
$ f! W! s7 V/ W9 b4 eend
3 i+ d7 p: j. Z. kG=real(Y);" k: r6 z( h! v
B=imag(Y);0 X$ Q* R) ?& B) P/ K) r$ b9 D
for i=1:n;' t# y" i8 z6 V% y) t: Z3 U% ? g% L. M
e(i)=real(B2(i,3));! q4 w# Z. @ \/ R) n
f(i)=imag(B2(i,3));
+ Q* ~/ G4 P, I0 v1 V S(i)=B2(i,1)-B2(i,2);
. E3 O" J; y2 @8 p$ L r7 @ V(i)=B2(i,3);
- {7 Z. {; T1 r/ D% j' v, U6 a- rend
3 _1 z5 p- ?# J6 Q( W2 |P=real(S);
- h+ N. |" P2 i& kQ=imag(S);$ H- ^4 b+ A! Y! L; l7 {) C4 ^, y
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
' V# j& `% }. FJ=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);2 K" b; I$ V5 ^: z! U* l
[De,Df]=hxf(J,DF,ph,n,no);: s# {$ X ^& Z8 x2 X7 A2 r" A
t=0;# B! r6 Y4 h9 F7 Q3 w
while (max(abs(De))>ip|max(abs(Df))>ip). o! A N1 _, q7 k( p' u
t=t+1;) ~9 M- ~: ]/ g* [
e=e+De;
1 S8 Y- z4 j- n V, N f=f+Df;
1 X1 q; [& \' u; v [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);& V, ?; z2 ^6 p2 Z' G, r, F/ b
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
- {$ ^" K: |9 d+ ~! @ [De,Df]=hxf(J,DF,ph,n,no);
* p5 X4 M1 I8 t. z/ lend" O& f& c2 ~4 a" h- u
v=e'+f'*j;, w1 |1 K% e' n2 j4 D. M* k
for i=1:n
! M! _) d; c6 y8 i' y( t hh(i)=conj(Y(ph,i)*v(i));
- R7 `+ [) V2 hend5 V7 C; m' S: R7 A
S(ph)=sum(hh)*v(ph);
9 }0 ^) l& V# LB2(ph,1)=S(ph);
: K, j) t/ ^- i" Z* t* }! U- b" kV=abs(v);
* a+ b$ h) Y2 j( K0 S2 a ]jd=angle(v)*180/pi;
. w8 T) y8 m$ w3 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))];; }) W) E( K2 A& A7 H0 x
for i=1:m
" j. G% M! b2 M, B% ~ a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));5 d% z+ h# c5 M* ^9 g ~
b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;3 n# V$ A/ P+ |* R4 e- O$ ?
c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;
& O' ]; p# Y% @! G9 z. `end
& w- X8 W, ^4 l/ R s9 Fresult2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];
/ \2 v8 i, c" E5 A6 B( `t0 Y7 N& o+ |: J# p: m
result1, H$ e* S( \" T$ u2 o% W7 F
S
. ^6 v3 a! w0 }b; u# b3 c4 a4 F$ V3 p
c1 ?7 J" B9 v) u1 j& v& r
result2
& p! ^* q% @/ \4 l# u- v( A
1 A, c6 o5 f! x+ K$ M$ m" N$ q* d% s+ b$ o; D: ~ O
/ U0 d4 W! B& u
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF- w1 c: ~# s {3 o4 o$ j& O, e
for i=1:n& M' X! u8 F, G0 A
if i~=ph% h7 R; [0 i" t* I. I- V
C(i)=0;
/ j( Q2 E7 ^2 H: ] D(i)=0;
( s, ?! g: R, z for j=1:n
+ E% o( p& k9 [7 k C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii8 J7 `# R; ^+ Q, m
D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii
6 D3 E) A$ j f: A* B' k( V end
* o$ v A9 O, [4 T5 n1 c( ? P1=C(i)*e(i)+D(i)*f(i);
! K5 B* v' {9 H0 { Q1=C(i)*f(i)-D(i)*e(i);! _/ ~1 J8 W" O) ^
V1=e(i)^2+f(i)^2;0 W* p% Q" C' D& W# f- X8 r" k
if B2(i,4)==2' j2 W! o2 Q) [1 c& p
p=2*i-1;( t: `3 [) X9 A A% d( @
DF(p)=P(i)-P1;% U( t* r( b. O* v% ^$ L$ Q
p=p+1;
" b5 R& V# `, L# X DF(p)=V(i)^2-V1^2;
. X: {8 X7 B3 |1 g else% C$ }8 x2 l8 d; S/ g
p=2*i-1;
- G2 w( z! S y, k7 q/ b9 g" ~ DF(p)=P(i)-P1;
$ i G; P$ c I8 @; k* O! r p=p+1;
/ G# ], _4 `4 v! P DF(p)=Q(i)-Q1;4 c% @/ D' D% Q
end
' j5 f# F; H% S) O! d; M( K; m2 | end# V. S; r+ w+ `1 U* r. F H
end
+ O9 ~, m9 b1 G2 cDF=DF';% I7 q# G7 `9 Z9 [' }; i
if ph~=n: Y, a% K8 S5 w4 G2 i
DF(no,:)=[];
- @! A1 c) y: E5 U7 e2 m7 h DF(no,:)=[];
% t" z3 G' I8 k' B: fend( x- z9 S2 z. v3 [) j- I
- x- Q: V: F: ?3 T. i
. P/ T: c1 f/ m/ Pfunction [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df
& W' J8 D! \; I' {( TDX=J\DF;
. i9 ]. Q3 l b4 y6 oDX1=DX;" d* h" A0 m! f% {+ Q
x1=length(DX1);
; R$ F' t/ ~. I% T7 ^if ph~=n: G: G, j( ]/ C) t) T2 l, o0 R
DX(no)=0;
" k g" f; ^. y DX(no+1)=0;
3 g. j5 e( y$ z for i=(no+2):(x1+2)! x0 m5 T3 _& e
DX(i)=DX1(i-2);4 h# v% d! a, S5 I( a) S" N
end$ C7 ]0 J0 x" G- [; B* ]$ A
else
, s% X4 r* W9 [: N DX=[DX1,0,0];1 E1 I( r1 B( l1 F t; z
end
- S& _$ R0 p; m' c$ Qk=0;/ e [0 x/ S- @
[x,y]=size(DX);
& S' ^' }" `. xfor i=1:2:x
( Z" Y7 n& C3 s: F k=k+1; W6 H2 i' y4 O
Df(k)=DX(i);
+ s; s$ ]0 G5 P( \: ` De(k)=DX(i+1);
- c9 S/ q7 I% A, n0 |end0 h& H5 [- w+ @* \7 K, S7 j+ \
n' I& D( i3 o' g( J, p% O
5 G) A. X! I5 M2 u2 Z$ i
function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵6 y! \4 D, F5 f, B& m9 b
for i=1:n& i* z) T2 j3 |# c4 c
switch B2(i,4) $ {4 l4 T5 ~1 K+ T4 x
case 3
0 S$ U) b/ k7 h, g, T continue
5 i! V- V6 O: G% Z- `! V7 D2 E- H case 1
0 v, f, q. M( M- _7 d* J7 S for j=1:n& v' t' A7 \- G9 O9 ^
if (j~=i&j~=ph)9 |$ ~6 j! }6 Y$ W3 F
X1=G(i,j)*f(i)-B(i,j)*e(i);/ x5 e8 `! k, e9 c: M! y L: R$ S
X2=G(i,j)*e(i)+B(i,j)*f(i);
1 y' G3 P; M- B6 P# W5 e' O X3=-X2;( n- u+ f o- n
X4=X1;
& r% D6 L# C2 ~2 X" [+ a p=2*i-1;$ t# d& t8 O+ @0 T o
q=2*j-1;
% Q4 i# _' Y+ Y; k4 [& I+ _ J(p,q)=X1;
& s6 D, ^: p+ ]) s' ] m=p+1;
. R: `* ?9 X3 L J(m,q)=X3;
+ U, f$ o4 f! O: X q=q+1;
1 ~- }( y1 C/ o) U( I( ~ J(p,q)=X2;
) u6 e% e9 w& @5 L4 X4 {. _ J(m,q)=X4;* W2 A$ o0 d. U5 w+ ^+ |/ K0 U7 b1 o
else if (j==i&j~=ph)( n- f" i8 v& o
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
! p- l- Q+ T4 u/ |; T& _+ u X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
: Y: {" J6 ]6 T& [9 }' G X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);9 h4 t$ B9 g: n
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
7 R- K. D- r( Z9 ^1 h3 x q=2*j-1;
" K0 a; i0 s% P9 U5 E: o9 @ p=2*i-1;; e# ?' q3 z5 y5 j; @
J(p,q)=X1;
4 V" U8 k6 e! b m=p+1;
, Y# ^; j, G2 k* h0 [9 @, S7 d: L J(m,q)=X3; |' t( F- p( c3 I5 i' L) l
q=q+1;
9 e' b, H0 G, J; i J(p,q)=X2;
6 T0 h3 E( Z8 l3 C3 p/ |7 [! ? J(m,q)=X4;: V6 s6 m8 ^4 P& s0 L
end9 [) Q- U% e' k8 z, x
end
! v, g9 Q0 x! P- p! p: I end% {/ B! p& f3 s+ z. J$ l
case 2
# f j+ f0 v. K for j=1:n
# R( y4 E" J6 f# H4 B% R if (j~=i&j~=ph)
& Y3 N, x u6 }! C" ]6 P X1=G(i,j)*f(i)-B(i,j)*e(i);
& J& x" c k: ?# @) K X2=G(i,j)*e(i)+B(i,j)*f(i);
) f) \9 p/ E9 H/ B. H j* u X3=0;9 K6 F/ o9 z9 w1 G3 O1 |+ Z
X4=0;, M6 y* q w3 i0 l. C3 P. q
p=2*i-1;# o+ D& A# Z2 F
q=2*j-1;
2 z: i% Z! B6 E" x J(p,q)=X1;* K/ J7 n( g7 U/ H
m=p+1;) ]% l% I( `2 Q
J(m,q)=X3;
9 [1 T5 @. q3 g q=q+1;
+ o/ Z+ X" t; {" ~0 h J(p,q)=X2;
) O. }# h( d5 L6 r& N+ G J(m,q)=X4;
1 Y# o/ v* i6 T4 A7 S else if j==i&j~=ph4 T! Y; z* I4 ]& q
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);, W& q+ E0 {- N& H+ l* S
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
4 ~; I! B7 @. Y! y: ]2 V( u I X3=2*f(i);
9 T1 n4 d' h* E+ W+ | X4=2*e(i);
- K2 ~6 _/ _4 a( \ Z p=2*i-1;
$ Q& w1 x* |( k+ ?; ]0 [ q=2*j-1;1 d M7 p# T z$ C" G, _
J(p,q)=X1;4 P/ y3 e0 {1 g8 @/ g6 @
m=p+1;( Z3 N/ a) J- ^+ m) K
J(m,q)=X3;& {! n4 Z* J/ }( _& v# g+ ?
q=q+1;
' t) M7 g$ ^0 m( v J(p,q)=X2;
4 M1 c' [; y2 s J(m,q)=X4;# @1 ^" L8 N# b+ F) r. H6 q+ \- I
end& G5 d, j! z- C: ?) l f8 f. F+ l
end
T2 o/ w5 s, x+ ? end
. V1 T& |9 Y2 |% C0 Eend3 a7 ]: ^! p& k. h
if ph~=n1 y. S5 D1 q( @3 P# F- G
J(no,:)=[];
( z. O. Y7 Y4 I+ M J(no,:)=[];
/ S: ?- `! r: u. b J(:,no)=[];4 v7 Y ~8 r5 O6 X$ R2 M: t
J(:,no)=[]; % 删除不需要的空间0 b; J; ]+ L/ \3 Q. e: o; i& q$ O
end |