|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。
& R% a S1 j* q0 j, e刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?
' T( l1 }( o o( k4 ^我的程序如下4 H4 p; u1 _. Z2 Q
function newton: |% F3 p3 D0 j$ x' ^8 E
clear;4 ^+ a( v& h# ~$ K
n=input('\n请输入节点数:n=');& [% l# t9 b+ |" a+ O9 G
m=input('\n请输入支路数:m=');# a0 q1 b0 [$ H
ph=input('\n请输入平衡节点的节点号:ph=');9 ~4 \8 _; w$ {; D( _. b
B1=input('\n请输入支路信息:B1=');
5 H# v8 P4 C% G. f* P2 @% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
* W$ C, J* i* L: l2 `# Y+ v& R: d% 第一列存贮支路的一个端点9 I) L$ v) Z$ l$ v/ X
% 第二列存贮支路的另一个端点+ v% A8 E) a4 r! k0 q9 v2 ]
% 第三列存贮支路的阻抗1 k/ V0 `) g" D0 [) {) l4 ~2 V0 \
% 第四列存贮支路的对地导纳. c5 t* ~( T. j. j
% 第五列存贮支路的序号
$ e& v3 m" `! y7 e9 y0 `B2=input('\n请输入节点信息:B2=');
0 }4 N1 ^; h" G, G5 i, m# e% 第一列为电源侧的功率
, j. }7 `. |0 V3 ]4 l8 P9 Z/ d% 第二列为负荷侧的功率
7 n2 C- j3 S! P( ^! [$ m% 第三列为该点的电压值# Q. E4 t; V- Y) h7 G) k& E* W
% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点3 M9 G: K& `6 K! x
A=input('\n请输入节点号及对地阻抗:A=');* B+ w9 ~& L$ d9 J
ip=input('\n请输入修正精度:ip=');
7 w0 O+ S% s" O @# vY=zeros(n);# B8 X! `9 h' K3 Y# k* Y
e=zeros(1,n);
3 o, G6 Y* Q5 O& \9 m9 Zf=zeros(1,n);! U" u1 a$ |, G1 G* \
no=2*ph-1;
% U: M( ]. a* ?" ?* efor i=1:n3 D6 W3 \9 U$ H9 Y: s! z/ z
if A(i,2)~=0;
; e- E8 `, @5 x' {' U6 K# ]: b+ ] p=A(i,1);
( H2 I* L' C- t3 ^ Y(p,p)=1./A(i,2);
0 c1 O" K3 f8 W* w! g( O end
5 U& M1 A/ H) H* h) Q- Y: A+ J- y& ~end. t; `4 W& S1 f& q! c9 c
for i=1:m5 W& I$ _5 u/ G2 C- A1 p
p=B1(i,1);+ y: J3 h# p+ k8 |( P. M5 _6 j
q=B1(i,2);/ F: U3 v3 d: M! X
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成. j" j) j* c9 @ t* ]
Y(p,q)=Y(p,q)-1./B1(i,3);% C- _' ^% w# h$ C$ ]
Y(q,p)=Y(p,q); % 互导纳形成
7 m1 r+ b+ s5 | Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
1 x1 ~! n* E# R# {6 {. vend
- R; M5 F. H& i( {0 TG=real(Y);' U: `! Y* v0 x7 R
B=imag(Y);
. z$ Y1 g* E y8 x. f( Ofor i=1:n;( b. d D( ]4 e. Z3 w
e(i)=real(B2(i,3));
; Z6 ^# H# _7 B( \9 c f(i)=imag(B2(i,3));
% e4 p, |' {: k1 {5 \8 d S(i)=B2(i,1)-B2(i,2);3 J+ j, g- u: J
V(i)=B2(i,3);) T3 ?: Y- R* m, o& `
end
$ f. W! _0 w* b* Q1 N$ h4 t+ h2 RP=real(S);1 h3 j/ D1 h% ^$ }4 n: U1 K) a
Q=imag(S);
2 c* F2 I1 \" W" J: S- b6 I[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);+ X! P* z# q: w, G
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);5 x. D, t$ @; t9 Z
[De,Df]=hxf(J,DF,ph,n,no);
/ }( K7 _7 [5 l- |* e5 p0 ^t=0;/ N6 f1 v6 |: d& Q! k
while (max(abs(De))>ip|max(abs(Df))>ip)3 A7 n( {' ]! \% _
t=t+1;6 p5 ] m0 b# r: F6 g
e=e+De;
9 Y) [3 g0 d0 i" _0 t: ^6 x f=f+Df;
9 q! X' Q! K) i [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
, A$ Q$ N; }0 M `& E J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);& H1 Y; Z2 G' J( e& ~* z
[De,Df]=hxf(J,DF,ph,n,no);
. {2 m% {; y. kend
: a4 x5 M0 B% Q& W, }! `6 e4 nv=e'+f'*j;
4 X9 ?. N& q/ R' w! L: i# k( @for i=1:n
6 C2 K9 L* Q* Z hh(i)=conj(Y(ph,i)*v(i));2 R& ?7 U% W8 W& s; {, B
end! C2 {2 i6 T. y; C
S(ph)=sum(hh)*v(ph);* G; F% T' Q9 r+ f' U5 a
B2(ph,1)=S(ph);! V9 l# `0 x, q( I
V=abs(v);
( X7 M, _9 ]) z" qjd=angle(v)*180/pi; N: @4 a6 k2 @- f) i: G0 a
result1=[A(:,1),real(v),imag(v),V,jd,real(S.'),imag(S.'),real(B2(:,1)),imag(B2(:,1)),real(B2(:,2)),imag(B2(:,2))];: P/ D; }( S( {+ j g) |, \
for i=1:m5 }: _) P, A, h- K6 \! _5 F% N3 g
a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));
- h5 o. @! Y* M' q b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;
/ i5 o* o/ M' h6 }% I) F0 [ c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;
( Y+ i1 @5 {# }9 E7 b7 V6 T1 Cend
+ F d$ q2 f) }) _result2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];6 a) T; {# D7 N8 W0 ?& n c' u4 \
t9 b+ t. o& D# x! v
result1
4 P9 H! T- v- r2 C( `$ p QS
1 e+ ?) m V9 \3 T: g9 S9 [ t9 lb. t2 ?" q/ |; p9 W% o: G0 @
c# e( ?5 d9 {$ @# o! m
result2
8 w0 b, f8 G- i5 K- E! P; ]8 r& U# K1 ]4 t. z
2 P2 b5 v5 I; O6 ~/ Z6 R) K2 e3 V4 W! ?1 ]
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF- E' ?2 N0 H4 i
for i=1:n7 `7 R( v7 f) G8 y( X$ \- w
if i~=ph/ x! U" G5 s: W7 y
C(i)=0;
+ y* p6 {! ?- W1 i. r% u" a D(i)=0;
2 y% G) C+ Y' a/ F" \ for j=1:n
3 \0 R. V4 L3 h% v C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii& Z/ k+ y& c+ q+ K
D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii
) _. e* q+ x: o# } end
2 Y5 g( n/ y% l! L5 `4 W P1=C(i)*e(i)+D(i)*f(i);, _1 b8 T# ] m8 d
Q1=C(i)*f(i)-D(i)*e(i);
8 k7 ]$ h* r/ A; ?9 d7 G, _/ U V1=e(i)^2+f(i)^2;
5 t5 H; q7 x& I! Y" u8 p" K0 P: U if B2(i,4)==2. J: c2 n7 Z1 o5 t6 A! i
p=2*i-1;% k3 v- c' k Z" D1 r1 R, e9 u
DF(p)=P(i)-P1;
! R! k2 t! r9 O/ C7 e p=p+1;
- Y) ?- y S. C4 c* |: d: S DF(p)=V(i)^2-V1^2;
* Q( t' G. U7 p4 [2 P2 D/ H else3 D" F5 Z9 b. z2 D5 G
p=2*i-1;
1 H2 O8 ^+ n3 M: y DF(p)=P(i)-P1;) @( ]5 Q, E" n- E2 U7 b9 R
p=p+1;
D. l7 S+ e, \3 ^+ R9 P5 r DF(p)=Q(i)-Q1;
5 S4 t! \+ f4 @& V! m end
- f0 e {# G5 `4 f0 o end
8 L. M7 L j u$ x& D1 [end7 X8 p& j! @1 b, c& N: A% Y7 V
DF=DF';; u* ?4 O0 n: L
if ph~=n2 K5 E s/ O0 N/ ^# L+ T
DF(no,:)=[];0 ]" e: \/ D/ i7 i; C; C
DF(no,:)=[];/ c9 h- W6 `& k5 G+ y0 S
end( ]2 h3 ]" \0 ^' Q
& o9 v* l3 C/ n- \- a
, B* I3 G0 K$ M5 V" r! d) v! Afunction [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df
8 M" @2 c$ i' F6 r5 vDX=J\DF;: \$ p6 q- Y$ u: i$ K6 x
DX1=DX;" m) U" f) A$ R+ N- X! q3 f2 X0 b
x1=length(DX1);/ o# D& v: S: p) [' l# L, o1 `& e
if ph~=n% j! }0 ~, @- [, g& K$ w+ Q' A
DX(no)=0;
% B1 G7 k" r$ a! D+ m$ {. [3 Y DX(no+1)=0;
8 f/ Z- Y9 [8 f- ? for i=(no+2):(x1+2)
0 h/ ] [1 ? v3 E+ |; N DX(i)=DX1(i-2);; r _& e4 `. J. h1 N
end3 ?. `: w9 W% b0 d/ Y8 o
else
! T7 X% ~1 Y9 H: @# @( F6 S3 @) } DX=[DX1,0,0];
* `5 z7 \+ U# {8 k+ Fend
% m/ z/ e# U& o" H: j' `, D. Kk=0;
1 t- \, @- [ F0 a[x,y]=size(DX);
' z/ {7 @0 j! m. k( l( s0 F2 ?2 {for i=1:2:x
@; T; H* }1 X; J$ S8 ` k=k+1;6 B: p+ e+ Q' P( }# h! V
Df(k)=DX(i);
$ c$ u+ B/ y" c De(k)=DX(i+1);
2 q1 n. r3 a" V8 @' i; w+ Zend
: M4 b, V+ h7 S2 |1 X' z0 }
7 @- }1 X4 A% o" T! k, l0 ]/ s u% s W2 E* { c: C* @
function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵
D1 V6 k$ c( ?: _2 Tfor i=1:n, Y8 m* `& G+ ?2 Y
switch B2(i,4) 1 ~" r% x& ]# V# }' I( A
case 3 4 j+ c s+ [( k9 D
continue! ?! z/ I: ?" y6 l2 ?
case 1
0 q7 o8 P4 z' ]& |* r for j=1:n
9 g1 i# r( v$ Q+ V7 c5 O2 V! m if (j~=i&j~=ph)
; G+ f# D. m: r, a* {" a X1=G(i,j)*f(i)-B(i,j)*e(i);
0 J# u+ A$ \, @- t8 e9 n X2=G(i,j)*e(i)+B(i,j)*f(i);
, O) ]7 B* u7 S" J X3=-X2;
/ x$ `. I- l3 E X4=X1;
( S) Z% [, P) s* v p=2*i-1;/ M6 o) I; p8 e. P" x4 u
q=2*j-1;( l" f5 I& `: W- q5 u
J(p,q)=X1;, ^0 W( O4 V+ e1 g' ?
m=p+1;
" j7 w7 G3 M+ Q+ p J(m,q)=X3;
3 b) m, p1 k/ o5 S! U/ ^ q=q+1; X' m* |* g. ` n; g6 w1 W* B
J(p,q)=X2;
! L- U' S/ c1 }' S J(m,q)=X4;- c: x8 l1 l9 ~9 Z$ a2 r
else if (j==i&j~=ph)
4 q, k+ N5 _+ k" X: r X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);5 H4 y# o p- _- d' U' Q; c* W- x
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);2 f4 x& f. r3 o& E5 R4 g) t
X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);: z8 O ^& ]$ H3 | W
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
- e4 ^1 G. J" O2 e. ~7 N7 N" { q=2*j-1;; ]$ P/ @$ J$ g0 \
p=2*i-1;, y. f- p+ }7 t! _
J(p,q)=X1;
4 r1 G+ `; s$ _! ^1 s1 F m=p+1;
, l# a2 v ?1 b1 e" @8 r2 b; b J(m,q)=X3;6 r( k. |; k. ]! J9 b
q=q+1;/ n/ T q; k8 i! H) m( T
J(p,q)=X2;! [# G4 ^) X3 i! w
J(m,q)=X4;- [: ?* D; P R- v2 L. i
end3 z' E1 w5 ~8 d3 G+ I( m( N$ h! c
end1 H2 r5 I' d7 d" _' q
end7 }& y3 S: I9 R# }/ u- a* C6 x1 M
case 2. ?' u8 ?/ d+ m3 N7 D5 k7 o
for j=1:n* H$ ^! T# H, j: D
if (j~=i&j~=ph); W. r- G$ X# } I( w
X1=G(i,j)*f(i)-B(i,j)*e(i);
$ A( G# z( f J, X& E4 x X2=G(i,j)*e(i)+B(i,j)*f(i);) y$ Z4 T* S; c0 Y% s- k8 h
X3=0;5 u Q' F% C2 T' j6 P7 [9 V
X4=0;
& Q8 e" X' m2 R7 e! e/ n! I p=2*i-1;2 C, L1 D1 X1 O+ w
q=2*j-1;& @# D/ c1 \# t7 L8 L" m! g! q: S
J(p,q)=X1;
5 M* E( ^8 m# L! Z6 s) U- Y K4 h m=p+1;
/ q, C+ z& |. j+ Y* O J(m,q)=X3;8 Y3 K3 Z* T: j* G4 t6 V
q=q+1;
3 N: `! W/ u% H! f& ~ m J(p,q)=X2;3 I! c, Z4 S2 W' a- E
J(m,q)=X4;& I. M( ]4 v2 r, z, [) L2 t
else if j==i&j~=ph; x$ C9 k3 D4 |1 o, q
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);0 e4 j; C! m9 u! m0 j1 _
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
/ i6 n! m. G% @' [ X3=2*f(i);( I% o/ M1 ^ e( z8 z$ s
X4=2*e(i);
: {# S! a+ f2 L& O0 R p=2*i-1;+ a# G: Y" I* Z4 E0 O
q=2*j-1;
6 y# N( v" B. x# I& k5 m J(p,q)=X1;+ a# C1 n3 N1 D0 n
m=p+1;
+ X ]% n0 G0 b5 Q( p J(m,q)=X3;
+ i: i$ \1 R3 F' \! _ q=q+1;3 c: J/ K. i' Y! b4 e( X" n; n" e
J(p,q)=X2;! s) Y3 S; J, ~" q/ s+ x& ~3 T
J(m,q)=X4;: Y- H- d7 |2 A" Q- b' [# L0 J
end
4 p9 g7 a1 ^5 F end
3 ?" y/ `1 y# V" U0 c9 Z3 t% x end: ]; }$ S0 Z9 L* s4 v7 B; o
end
! N2 p0 b) a/ W, kif ph~=n
5 q! ~+ F) ^3 }" I" [ O; M4 { J(no,:)=[];* Z* N8 W- B: R" N8 f$ {9 [
J(no,:)=[];
& R! l; }$ W( t" M; S3 u0 y J(:,no)=[];7 d/ W8 h0 P+ ? k0 L$ T$ r: U, p; A* ?
J(:,no)=[]; % 删除不需要的空间
% j4 ~. E! n3 p6 eend |