马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。8 v0 t: E3 Q( x: A
刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?( t& n4 L. l* Q* L4 u0 L
我的程序如下9 W8 _$ C) h3 D) T' w1 S' l
function newton
0 @8 o/ w. H* V- W. ~+ [0 {- h: ~4 }clear;5 h4 B; p5 ^& }. W6 B/ P J
n=input('\n请输入节点数:n=');, h' c. A4 J$ V# G- @( A
m=input('\n请输入支路数:m=');9 Q0 j7 P4 u$ K0 i9 F
ph=input('\n请输入平衡节点的节点号:ph=');
4 i) v4 @5 Z% l5 P, c( VB1=input('\n请输入支路信息:B1=');' E" `4 ~! c" Q' a7 h
% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
/ z, p1 V% ^. F, r/ h% 第一列存贮支路的一个端点
' K: X6 x. o9 x I4 p4 s% 第二列存贮支路的另一个端点" Z/ U% k8 J; U5 x7 @2 K* e# c
% 第三列存贮支路的阻抗7 u0 x& @7 _( @: v4 t y
% 第四列存贮支路的对地导纳- c/ `6 J1 P, F
% 第五列存贮支路的序号' i! M5 @; L9 [4 ^5 k3 I, S
B2=input('\n请输入节点信息:B2=');1 Z" Y6 O$ \ p7 D) N& L
% 第一列为电源侧的功率 : Z/ a) W: q4 L6 Z
% 第二列为负荷侧的功率/ B# K' Z, e H9 V7 v N
% 第三列为该点的电压值- g, P% F( \6 q/ c+ z- t' @
% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点" D+ h& V( A5 W a, U
A=input('\n请输入节点号及对地阻抗:A=');$ x- F$ C& g7 U
ip=input('\n请输入修正精度:ip=');
7 `# {" p* y6 e1 p7 A5 A2 {Y=zeros(n);+ C% V- m. u2 N6 T0 L
e=zeros(1,n);
% d7 e9 c# J; r' S/ Sf=zeros(1,n);
! r' m9 y. ?( u1 t P' V6 l6 I' |no=2*ph-1;6 V/ \. i6 l6 x+ E, Q9 @; i* [9 u
for i=1:n: K" @# L; ]$ c0 g5 b
if A(i,2)~=0;
2 i! i4 L& V- X; c3 f( W p=A(i,1);1 o5 S5 b. P, e1 v9 N- {! ^
Y(p,p)=1./A(i,2);
$ N% H7 q3 d9 _" n( I' G" q$ x3 L* u end
) p! i z; {# b! dend
0 [* y& a _) @for i=1:m
5 g! M0 N; k S: |9 ?1 b: C; s p=B1(i,1);
8 M3 T, q3 a* K, t" ]' n q=B1(i,2);
6 h% J& Y& S }% @ Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成& {! o( F: j! o, l9 G
Y(p,q)=Y(p,q)-1./B1(i,3);' k1 L7 `& X5 s* X% s( x1 T
Y(q,p)=Y(p,q); % 互导纳形成
/ e& {1 e( P& l; S7 t# \# f6 {# V' H Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
9 l8 \& n0 n# H! m9 vend
: }- P7 h4 N2 n, M2 _G=real(Y);
; `) X5 k. K8 c( PB=imag(Y);
. q% d3 c q- b. L+ Gfor i=1:n;
4 k$ N# j# k+ w; E: ] e(i)=real(B2(i,3));
/ q/ Z. |7 h; l) t$ S; R* m. | f(i)=imag(B2(i,3));
1 \; Z% @& R1 I# @; V S(i)=B2(i,1)-B2(i,2);1 h4 L4 I$ K% E# j; k! ]
V(i)=B2(i,3);# t9 Y" `4 A/ @6 K
end4 A9 G: j% S$ B b; y3 v3 U
P=real(S);- ?. e/ f& \1 _ d" Q
Q=imag(S);
% S; ]* h: C$ i, y2 c) {( ~' _+ x[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no); a% j1 G: r0 l
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);5 g% ^8 _) y" H. ~- X8 N8 j
[De,Df]=hxf(J,DF,ph,n,no);( w+ o+ B1 y% `0 `6 r) ?
t=0;6 z0 f0 J# e! B
while (max(abs(De))>ip|max(abs(Df))>ip)
9 h; X) b% I8 Y0 Y4 v2 | ?5 y t=t+1;
: L1 \! w/ \! W e=e+De;
% G% y- v+ {& ~ }( j' f. N f=f+Df;
) R6 h1 g2 I% j: G" c9 n3 V [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
) N2 A7 \9 ]$ w Y. s" a J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
% u- R9 A1 A: y, E9 ^ [De,Df]=hxf(J,DF,ph,n,no);0 O5 F! A5 U8 k$ q% g7 o! k) B( ?, b
end
& j& l7 l7 B$ s- j) a3 Z( av=e'+f'*j;
' {$ m6 G3 l7 ?for i=1:n
5 \5 w6 ~) e* d6 e/ u hh(i)=conj(Y(ph,i)*v(i));
# a& K9 j: O3 yend, D( X1 C1 ~9 K
S(ph)=sum(hh)*v(ph);) u9 C/ d w7 L+ H1 g
B2(ph,1)=S(ph);) @+ P8 k- x+ W4 V' H5 Z
V=abs(v);
/ q5 Z$ e4 W7 A' k) gjd=angle(v)*180/pi;
/ m& `5 H4 L9 I* ^ G6 D$ }1 e- I& presult1=[A(:,1),real(v),imag(v),V,jd,real(S.'),imag(S.'),real(B2(:,1)),imag(B2(:,1)),real(B2(:,2)),imag(B2(:,2))];
; B( [0 E% q3 d+ Q/ r& Bfor i=1:m
2 d, W& Z: P/ Z0 D5 g a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));
! f( d: S* r2 U& M4 L b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;
/ N* i% F- X+ B7 f( N c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;# {/ K; d' f& B) S. y% ?
end6 P5 e8 O$ E9 ]/ _
result2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];
! v# w' k; B$ h; ~- Y! it% p7 w9 N9 h- d1 E- B6 n p' D
result1
8 A! P" n% e: J: z3 U$ w* FS
( r& [* N: j2 j6 G" ob1 }; R! O3 M5 A; a |( k
c0 v5 a* k' \4 G1 B1 ` x# ~8 O6 K
result2
2 a4 N2 l# v/ r' E' ^2 H3 R2 U! T8 y
z' q- U6 [; Z8 F
) O* d& L9 A8 _' o8 o# I! e9 ]% j* L! _- z0 k
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF! o0 }: b9 N O) z9 r, C- q3 e1 e
for i=1:n
! @' l" `" H) ]1 P2 n if i~=ph
7 ~- ?: r3 u$ b6 p' F( O C(i)=0;
& I6 s' ~) e3 B# y3 o" N1 ` D(i)=0;
2 G4 w. f% E4 U: x% m8 `( e for j=1:n; ?& w3 ^& W6 H" q4 d
C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii3 O% y4 w7 ?: X5 ]9 ?
D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii
; W2 D' }( s. o) K6 B5 b7 z end' f t8 E* m+ E$ [+ \9 ]
P1=C(i)*e(i)+D(i)*f(i);
/ I& {: t4 w$ u( ~! i6 h Q1=C(i)*f(i)-D(i)*e(i);: W- h" r; \5 a R: k& I8 e
V1=e(i)^2+f(i)^2;, U" r4 v8 K" G8 i" a
if B2(i,4)==28 H2 ^) G5 b( W& J8 ?
p=2*i-1;
' s5 R6 R1 f0 s3 ^* u DF(p)=P(i)-P1;0 h6 n9 T! E- b
p=p+1;
8 N6 }! f7 d8 g6 a' }" Q' z5 ^6 O DF(p)=V(i)^2-V1^2;0 r6 T: @0 o6 A7 L
else
( Y |- m& E- z9 Y p=2*i-1;
Q! P' b$ F5 F! r1 l6 y DF(p)=P(i)-P1;
. U: r9 ?% [0 G+ I9 C7 J p=p+1;* z/ q- X9 ?7 l1 E: ]( N$ t
DF(p)=Q(i)-Q1;
# s6 E3 m. ?3 j# G& f4 F/ r2 m end8 V a2 w6 b4 ]/ d4 Z$ ^5 p( j
end. g/ m% H* A2 w, U1 K
end
/ U5 [+ D. }1 n8 fDF=DF';
& }; s3 Y( M6 t" A0 }if ph~=n
7 g6 [+ M, E9 H DF(no,:)=[];
. g5 Q s: [* n. Z* H7 G DF(no,:)=[];
. C# n9 m! R# }* O6 E+ nend
! R. P Z+ j1 v0 x' b' x9 H6 N: w( G& [7 s# @, P% x5 i
/ G6 A- A! t5 v# `' H+ g& ~5 E8 i
function [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df4 O0 ^) c) [( A1 E
DX=J\DF;9 L* x: }* A+ x N% O
DX1=DX;
; t/ R! x- W3 p& m; B8 Ux1=length(DX1); U2 m5 A$ b, c# ~; Y7 V5 Z
if ph~=n0 A7 a: E, y0 K/ y
DX(no)=0;8 X; S6 o1 c5 K) m! A& p
DX(no+1)=0;
: n: o" r# O! ] for i=(no+2):(x1+2)
4 J6 Y ^5 X/ m! A( J' O8 F DX(i)=DX1(i-2);9 b2 u* z# `6 g1 a5 L2 [# b
end" O; q. T& t0 K9 L) f" R7 @
else
, l/ F8 ?( k) N4 ~ DX=[DX1,0,0];# h% K% f7 L) ~
end
' z" n& h# [& A! e" y4 @* a6 R& j- ik=0;' G! \2 [% Y7 T) y( M& G3 \3 n
[x,y]=size(DX);2 i: T! Q, v) }! S
for i=1:2:x6 Z& c3 |8 g9 W; h+ J
k=k+1;9 N! N- N/ o& K
Df(k)=DX(i);
) C& e% X# C, d( _. V5 g De(k)=DX(i+1);' b2 ^5 |0 }- x& \' @3 T; h
end
. C H* m" E. U) O% N
, h/ a: f! W, N. G; h
- r6 b( G2 E6 |, S( [function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵! m+ d# B) d, z, d* ~* |& }( Y: ]
for i=1:n
! f( a# V0 d2 C4 l switch B2(i,4)
' D+ y" C0 [" L' g+ ~) Z, e. t case 3 # x8 |% f y0 Y- _$ a
continue
R& q8 P' k0 k! s) V1 c case 13 V2 N/ Z a% p( T# a5 ?- b5 n
for j=1:n8 V: o% `. u# Z6 `, O5 X6 C
if (j~=i&j~=ph)
" L" ~- V% d2 c X1=G(i,j)*f(i)-B(i,j)*e(i);
& @7 p! \% a* S( r1 x' A X2=G(i,j)*e(i)+B(i,j)*f(i);) W8 R" ^8 W5 ~' l' v
X3=-X2;
. }4 n9 g9 r$ x: ]# q/ j, h1 z; \ X4=X1;
7 O5 A- {" H0 K. M Q p=2*i-1;
- d! P8 z% D3 N q=2*j-1;
( ` B0 T. w* _7 n/ M. d( [+ v J(p,q)=X1;; Z' ]/ a" H# @6 ]1 y3 _
m=p+1;
@) Q( |/ c9 f( f2 L: m9 F3 S J(m,q)=X3;
0 k/ a* Z0 {" [1 w- A, }$ c) p q=q+1;
# J1 D- s' C4 N( w' u8 J* P J(p,q)=X2;% D. x' }; g1 s4 }9 @: x
J(m,q)=X4;
2 r2 ?/ |3 N4 k' K1 R/ {# `- T else if (j==i&j~=ph)
! h$ T3 ^0 ]( L! x4 ] X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
4 h3 b( m* |3 o9 |: ] X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);% Y. j6 Z8 q7 {. }" C7 H' l2 @) g8 \# N/ z
X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);
) ?) h& W( c& I( K7 o3 |9 f1 K X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
8 K& h% [ R8 v2 t q=2*j-1;
0 s1 M* t9 {' n3 u1 i p=2*i-1;4 e, ^4 @3 Z6 A% Z0 t) x8 N
J(p,q)=X1;/ v6 l4 r5 W1 {4 L# C; F5 G
m=p+1;3 E7 w/ G0 a: ]+ G. V* S
J(m,q)=X3;
: E7 v b" V, O. b" q q=q+1;0 \" e7 J) T/ L2 l1 D% F" Z2 s6 I
J(p,q)=X2;/ @6 X0 x, t* S" K
J(m,q)=X4;
! N; l7 B. G% I end8 s: e6 |& f3 {! N' ^+ u+ l
end5 \/ a! B5 i, N/ U3 \
end
( N8 x7 {+ A- r6 |/ @) e7 j case 2
9 H- s, d) Y( D% P9 R for j=1:n$ l. W Q" u/ S9 N! g- H
if (j~=i&j~=ph)
( b8 y- ^. H( e) k: D) p4 U X1=G(i,j)*f(i)-B(i,j)*e(i);
" F5 c. y# J8 o, Q d X2=G(i,j)*e(i)+B(i,j)*f(i);+ w# D$ i9 }% N" ?! A, J* c
X3=0;* p& k5 k$ `) m+ O) [
X4=0;
5 R7 v' q$ g5 {$ F) { p=2*i-1;
) D# X" T4 C% o$ j2 w q=2*j-1;; Y& v8 M( V/ V1 m* K
J(p,q)=X1;4 N7 L; ^- k( b. }" Z, \9 z
m=p+1;" L' w* w+ m& M! Q& z: E, q
J(m,q)=X3;
( y `9 y! ]0 M4 ~ q=q+1;8 S& u" Z6 J# H& x
J(p,q)=X2;
) ~. ]0 T7 I4 F/ w J(m,q)=X4;- ~# H3 h+ K" l( e: \3 l
else if j==i&j~=ph( l$ D$ T, |- R7 J) }3 W: n3 B6 m
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);8 X2 _* j8 l1 K, J6 K* d
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);$ Y) p0 o3 C' f( Y2 ^9 f9 `9 }
X3=2*f(i);
- c& [ E/ v; l6 \ X4=2*e(i);- L$ F U- K, @0 D8 {
p=2*i-1;
! r: }" f- c/ J$ s' F$ O% ] q=2*j-1;
2 j2 ~& ^7 k# C8 r2 F" Y J(p,q)=X1;8 f( s& P/ ?9 g m+ G3 O
m=p+1;
! y& `6 n4 Z8 W" f; c0 h J(m,q)=X3;
U9 o/ ]6 x# k5 ~, M q=q+1;& m; @ \/ R8 u1 F& {
J(p,q)=X2;" {8 W! s) d7 d3 e5 n
J(m,q)=X4;
- K) B$ l& D3 ?% U4 X3 t; P$ H2 r end
5 S5 q. n1 j% O h8 j6 O9 y" k end* Y) I8 t) ]4 V( k" h7 M$ x
end
+ k5 F- ~4 C5 O3 T% Fend I' Z: {1 c7 Y' H6 e+ g6 x
if ph~=n
8 \) H! r. r& m! b1 O, m+ S" b J(no,:)=[];1 N" \8 ~. b6 c
J(no,:)=[];
4 S( w% H! q7 }9 v- w; B J(:,no)=[];
& A% N- f. v1 J$ I J(:,no)=[]; % 删除不需要的空间
+ L8 \' U( w. vend |