马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。1 ^2 ^) P" Q a$ n# }
刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?
( s- L- @! B, p, B, D) ~4 |我的程序如下
+ S& }' [ ?+ `2 H. O( Ufunction newton5 J `, Q; j# n2 E- S s( c7 I7 h
clear;
~7 N! m, L6 _4 J( b; dn=input('\n请输入节点数:n=');( v4 }! g4 K# l1 m
m=input('\n请输入支路数:m=');
( U* A$ R2 q, i9 ^) H4 S0 a2 Pph=input('\n请输入平衡节点的节点号:ph=');
+ A0 y9 L( N9 \1 ]- n% ^3 P8 zB1=input('\n请输入支路信息:B1=');
+ g3 y ?$ N6 V6 I3 y% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
- z6 r9 l* V; R& S4 v k' K: m% 第一列存贮支路的一个端点; }2 l1 Q0 o8 C8 d: k5 S2 r
% 第二列存贮支路的另一个端点& z( h3 v3 [2 H" M. A5 Y
% 第三列存贮支路的阻抗8 q) ]/ I, _" a2 s8 p5 z
% 第四列存贮支路的对地导纳
$ o6 K- ~9 L4 T% 第五列存贮支路的序号
9 j$ V9 D8 R fB2=input('\n请输入节点信息:B2=');6 K" M7 `+ f2 y& O6 I* K
% 第一列为电源侧的功率 4 y4 L" ~' @/ r3 Q9 a
% 第二列为负荷侧的功率
9 }; O, g( j. T5 _, ^3 W" F& r! c/ Y% 第三列为该点的电压值
* j# Q; @# U* F. M: U* t+ e/ _% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点
z7 N/ G5 V) qA=input('\n请输入节点号及对地阻抗:A=');
( m9 K" D* K5 V/ hip=input('\n请输入修正精度:ip=');+ m% a o2 p% k; e% e
Y=zeros(n);
% a/ P" L7 ]/ Ee=zeros(1,n);
$ p& d5 _7 q+ ~3 y; N) d" Rf=zeros(1,n);3 v5 }9 d6 Y" {
no=2*ph-1;
. B- Y5 N% W: S0 m$ gfor i=1:n
0 @2 X2 K1 w, L# d2 C if A(i,2)~=0;( X X6 m8 K- }$ p) P. q
p=A(i,1);" N8 }# }1 g" A# \0 b
Y(p,p)=1./A(i,2);
9 p* X. e" ]" E end. b E$ q8 [4 R( {+ t9 Y
end& U2 F0 E+ y& B3 v V: ^
for i=1:m* }" z; Y: r4 O A! Y. {$ f
p=B1(i,1);
8 V7 r& u2 f6 j1 Y# r7 t, Z q=B1(i,2);$ G6 p$ t! e, C0 k* X
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成, e& q) F* e' x% f: C" r0 v
Y(p,q)=Y(p,q)-1./B1(i,3);1 B6 i* \$ u. k, }4 e+ X. ^: J- z+ `
Y(q,p)=Y(p,q); % 互导纳形成
, H) I3 y$ R. d4 y! |4 c- c8 q3 S Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
1 X% A/ T1 ` V) F: Z! |$ D) rend
- k6 L4 j. b( [/ ]0 CG=real(Y);6 W8 s9 f* L( W8 b
B=imag(Y);
" @% x$ ^; U5 q; j( Efor i=1:n;6 N: w3 ?7 ~) n" ?
e(i)=real(B2(i,3));1 ]" z; h3 W2 q4 t1 z2 j/ Y1 ^
f(i)=imag(B2(i,3));$ Y& y7 J. {* o8 h* g" q I8 v' t
S(i)=B2(i,1)-B2(i,2);
5 k' z4 O5 b; W V(i)=B2(i,3);
7 `# I0 X8 o3 X% P9 W% M0 Bend; B# Q* E8 f- b& a# L
P=real(S);1 x" m' P# Q; D* a; ?; f
Q=imag(S);6 ]9 T X5 e6 W. V/ ]. g
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);& l7 |- O: H" _3 M
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);0 h4 Z/ I. S0 ?& O8 q* \
[De,Df]=hxf(J,DF,ph,n,no);
! n- O% \- e% i+ Q y( Z5 |8 wt=0;, y. P; \3 I. d" N
while (max(abs(De))>ip|max(abs(Df))>ip); H8 z1 I2 x/ {4 }7 r
t=t+1;
9 q$ F7 v% w3 n9 j( N: } e=e+De;
, Q" f; r7 \5 `: v7 c, t) r f=f+Df;- G$ \* z) U4 X2 x
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
3 @0 q4 o1 P; D, i3 k) h J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);! f: s$ m# G- e |' w9 x* ?+ c* ~
[De,Df]=hxf(J,DF,ph,n,no);% \& N* l! t7 R, R+ `4 p; v" ]7 S
end
0 Q7 b, U: x1 ~0 t/ i+ h' P% lv=e'+f'*j;! R" D) X8 ^: G/ g% _
for i=1:n0 Q( G3 d2 c) d: ], i) C1 p
hh(i)=conj(Y(ph,i)*v(i));
& ~5 Q7 J! I2 U" ]end! d8 @: g9 \2 n1 Y6 W
S(ph)=sum(hh)*v(ph);2 v2 k z: I8 b, e3 M! J2 Y% l/ w
B2(ph,1)=S(ph);
* r3 f: j% M! r2 aV=abs(v);
2 \4 y6 B( m/ o' P$ S( ~# p, `jd=angle(v)*180/pi;
/ i! F) B* X w/ s' L. D) @0 M/ Zresult1=[A(:,1),real(v),imag(v),V,jd,real(S.'),imag(S.'),real(B2(:,1)),imag(B2(:,1)),real(B2(:,2)),imag(B2(:,2))];/ _3 B i K% c& [% e1 }9 ^+ Q4 Q6 _
for i=1:m' C/ W7 P0 B: Y5 S- U+ n
a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));* J( Q' n- {" h
b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;
+ G S/ Q) m% K) }5 A c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;4 i+ G6 i) a* y0 I0 }% s
end
* [. m7 V+ \4 E3 C; M# jresult2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];
2 q: ^1 Z* n" V e. i1 jt- y0 r* g/ \, W
result1# @- d- P+ z8 ]9 F% p
S9 ~3 _* q, P* B+ f, D/ P7 A; s, N. F: {
b0 y; t5 c0 K5 F) o& G; v$ N; M; e
c- P! b& D& q! R, |/ a
result2
! [4 Q: g( F* q3 c
$ E( @- v7 [* A, @/ ~) f& \* e K E* L6 F0 k
& M( n6 D! r0 x0 ~9 ^8 ^' c
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF
* h- s" R2 f& y3 _7 dfor i=1:n
7 [8 \! H) c k" B4 q+ M if i~=ph d* r& s( e6 ^7 y2 |
C(i)=0;
. m. Y- `# D4 W! Q s7 x D(i)=0;
. g+ ]/ m9 p$ J( J! L for j=1:n; P* x: L( Z4 g3 [
C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii
# L; e! |7 J! |7 H. i D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii" ~+ l% _/ e0 H1 m _0 v) q) e
end/ D& X/ B( R% K7 H
P1=C(i)*e(i)+D(i)*f(i);
q" T7 Y. j5 i* K ?1 X& g Q1=C(i)*f(i)-D(i)*e(i);9 C: W" ]) ]7 W+ U7 B1 V
V1=e(i)^2+f(i)^2;
+ s! |+ ~6 W; R& K" t( d S if B2(i,4)==2( M: N7 n* k m* R, c
p=2*i-1;3 K7 x% A0 [$ f6 d1 ~. A5 {* Y" m
DF(p)=P(i)-P1;
3 g6 }* j' T( P: b) d% m p=p+1;
5 _* p7 m0 v* w DF(p)=V(i)^2-V1^2;
$ H; `$ j4 K* q+ k$ r; c else' X. F( O- i* O6 V6 F* M
p=2*i-1;
4 f# T3 O/ u5 p. v( u DF(p)=P(i)-P1;. _$ K8 T; R1 S. y, ], W
p=p+1;
4 Z5 K& H# Z3 {9 \$ M DF(p)=Q(i)-Q1;
3 _1 ]# \) M. x+ A* q end
* T( C7 s- [6 F" c( y% T end
' E# t# w; ]9 t6 [, Fend& c% M4 D# c& Q8 K- l8 A0 @& G
DF=DF';
4 M3 S8 T3 y; k- P3 [if ph~=n
' _6 K2 x* I6 X8 A. \ DF(no,:)=[];
$ j6 J$ o- q$ G% j* ~6 v DF(no,:)=[];' M1 U: w4 e+ S" I5 Z. j
end
+ j& g2 N; o/ c/ C. X/ Z; P" F. ?; P5 ?, s. M& ?
, j b3 }" `+ s
function [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df
3 l" N' Q9 P( ^; oDX=J\DF;
3 A/ m# @( F4 e4 Y* PDX1=DX;
& C5 R# j2 ?+ Y6 a% \6 J" cx1=length(DX1);
3 I3 H$ k9 d) _3 sif ph~=n
c q/ j3 u% R DX(no)=0;
9 B' ~4 ^, r0 ` t DX(no+1)=0;
+ @& G. \( y. j; M; I8 j( l for i=(no+2):(x1+2)
$ b: j2 O; B( w6 } DX(i)=DX1(i-2);$ y& l5 K8 s H: D. K7 F! C& R4 A
end) E. O" s0 w V( t: x+ |3 ]
else
/ z4 F$ |# {! Y0 | DX=[DX1,0,0];
# F Y2 `4 r8 J) _9 qend) S' M! T' L- k6 N: t
k=0;
3 n; L! \& Z2 {, a. l1 t2 u# J[x,y]=size(DX);% e1 N7 F& y j4 x i( {( C, P
for i=1:2:x7 D& i0 v- z( X2 ] |$ b! I- }
k=k+1;
9 Z7 |) [* }9 e# t/ p Df(k)=DX(i);) w7 O) H, y, J
De(k)=DX(i+1);
& @2 s/ X7 x& y0 h6 jend U& S0 V# o" i7 k+ D
. g3 s$ m% V {7 h4 }% {! h4 g% ^$ i* z; J& \
function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵$ C9 ?0 n# Z! G' ^0 V, r U0 Q- o
for i=1:n3 `. q% @ f: C" Z% ?
switch B2(i,4) . |; F7 G. ^) T
case 3 - i; V$ P' ]) B& N' t
continue1 E0 F' `% g% Z$ T: p2 h- t# C
case 16 w d4 z# z6 s; s/ a* c! M/ G% x# Z
for j=1:n
& ~3 p. g- m. p, D* @1 [* ?9 P9 C if (j~=i&j~=ph)9 t3 h5 }7 a* m0 Y+ w8 {" X) u
X1=G(i,j)*f(i)-B(i,j)*e(i);
' q( c7 B! S! V X2=G(i,j)*e(i)+B(i,j)*f(i);
0 N8 Q7 ]; I ?0 d4 W( \3 e X3=-X2;2 _' \* `7 C8 r0 g
X4=X1;$ G6 n: e S1 `! J: H: A; Y+ j
p=2*i-1;$ L) ~, u( {! \$ {
q=2*j-1;) e9 ?; y4 m S1 J* F' |
J(p,q)=X1;
! `# o0 v, T; L3 z! C m=p+1;
1 r1 U9 Q2 T# Q, L. c+ e" R( S J(m,q)=X3;3 m7 m2 ?) ^ Q2 C) V2 y
q=q+1;+ F8 U) _7 i" }4 G' z1 I6 o" q$ I
J(p,q)=X2;3 L$ y5 Y' i6 z6 F: g; |3 f' P& J c
J(m,q)=X4;
7 f9 I3 \/ O! @& j! m" T! c* s else if (j==i&j~=ph)4 d& e/ u0 x0 Y
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
) i" P$ _8 m2 Z X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);5 Y Y, J4 y8 G
X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);2 e( h. w1 y3 f0 K0 N* z2 d1 K4 |! D
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);2 ]$ V7 `0 a3 e. I/ a# v
q=2*j-1;& a6 ~2 X! H" \3 g
p=2*i-1;
2 \, l' e: U1 J9 e) Z' N1 y J(p,q)=X1;
( p) c& d [% M8 g- `+ K1 k m=p+1;3 D2 K: f m' ^! v' G) V
J(m,q)=X3;* _5 C0 l" X. S7 q& w1 |
q=q+1;, M! a! ]4 w5 u4 r" [
J(p,q)=X2;! D& [+ r1 f9 T: w( p5 ]
J(m,q)=X4;7 }) E- T6 a& c) a) \2 ?
end
/ `. g) C+ d% u( n X end
/ o+ w8 J5 h; m5 P2 ~ end7 g! Q7 x4 h- K% e+ F
case 2+ e/ D" A" S1 D% t
for j=1:n$ L8 o; c% ]5 `& K
if (j~=i&j~=ph)
" d1 @# T0 c% p: v" g/ ? X1=G(i,j)*f(i)-B(i,j)*e(i);& ]# D/ c% Z0 S
X2=G(i,j)*e(i)+B(i,j)*f(i);
9 I/ t6 \/ ]7 A* J" M* O; y6 ^( A X3=0;
9 H% a: }1 }) b) V4 v; O X4=0;
6 C F) P( ^, {; {. W p=2*i-1;( [4 p. x# ^& \* T! \
q=2*j-1;
, o9 ]- C$ A7 ]: c& m J(p,q)=X1;5 F' d& T, Q: i) F% p
m=p+1;
8 b$ c: z; L5 s J(m,q)=X3;2 z/ T4 q4 ^6 ^
q=q+1;/ P8 w* k+ J. ~) {2 O9 w/ g
J(p,q)=X2;1 n. U' t. x# |9 e9 G$ J* S
J(m,q)=X4;! M) G6 o j; v; ]4 C/ i
else if j==i&j~=ph
( a4 e- d0 w, S2 z" a X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);6 t0 j% |- E6 M$ f Z# F9 n
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
3 v- k; j& X0 { X3=2*f(i);, i3 k, C; T" B5 H
X4=2*e(i);: R( ], q: d4 f; ?, K4 S+ P2 G
p=2*i-1;
: S# o+ u5 A( y+ D q=2*j-1;
1 s, d1 O/ z. c/ z" {- h4 T& { J(p,q)=X1;
! w3 D7 G3 H' J m=p+1;& N# I2 \7 X" Q; U' F
J(m,q)=X3;
. B! o- s- n- `& L' f q=q+1;1 ]3 y% y3 J# Q e f
J(p,q)=X2;3 i& B0 x4 k- K( f' U! {, s
J(m,q)=X4;
+ P8 V5 p! B, a# v end' G, L! t- V3 F' _/ [+ a3 V1 {
end8 \. l6 J& g" c& N% Y: A6 t
end- H3 X. x8 q2 C3 G# } \* W
end6 F; l) c3 ^/ ?3 S
if ph~=n% i( g4 Z4 p7 U* u
J(no,:)=[];
2 c3 `! Z3 ?! H: Q9 ]+ e0 ^ J(no,:)=[];
9 `1 h+ p* J) U m( p E" B. r5 { J(:,no)=[];4 c. e0 Y+ V+ S* j' x
J(:,no)=[]; % 删除不需要的空间
- _, w" i5 ~# o5 Q% F0 ?, iend |