|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。
- ~: T7 J0 c$ t! }8 @6 b刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?( b6 W# f% u+ j9 i5 f. ]
我的程序如下* \' i+ ~+ ~' \# E, o
function newton
* R( C+ ?) E; x) t2 W) eclear;6 J5 Q) R2 |' M* T5 ]
n=input('\n请输入节点数:n=');; N# q" L7 Q/ y9 T6 p b
m=input('\n请输入支路数:m=');3 h# \' |+ L+ k! u* A; d
ph=input('\n请输入平衡节点的节点号:ph=');1 Q6 m& w. v3 w0 N% v
B1=input('\n请输入支路信息:B1=');
/ J' @% z. q& C0 a( \, H* x4 L% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
' S2 [2 e7 j0 ^7 C* K! p6 F% 第一列存贮支路的一个端点+ p( i! ^4 d# c4 C; m
% 第二列存贮支路的另一个端点
. \/ t3 P w$ o, i( T% 第三列存贮支路的阻抗
( @- Y, T* K" R% 第四列存贮支路的对地导纳$ w6 t% A, Z& j: d& X5 b* ?' I! p% u
% 第五列存贮支路的序号3 J& s) ~- z) y% |
B2=input('\n请输入节点信息:B2=');
6 ^. \- k+ _* Z/ q1 V4 X' W% 第一列为电源侧的功率
) v( W9 ?. K6 s. V% 第二列为负荷侧的功率6 S; `/ Q K; q
% 第三列为该点的电压值" U7 g' d: K$ ]8 T+ ] g
% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点* E I1 b$ J2 ?0 Q3 u( h
A=input('\n请输入节点号及对地阻抗:A=');
- s/ ^- M% [ p. y$ Wip=input('\n请输入修正精度:ip=');
! W3 i& P$ m. T' v' sY=zeros(n);
7 M) w) R% h" ze=zeros(1,n);
: i9 O3 a$ u9 k4 E# X! ?0 Mf=zeros(1,n);1 F, n. P# D/ i" ~$ e6 ]: U
no=2*ph-1;
* |) h# G* |/ |" ?. ^+ lfor i=1:n+ C$ y# U/ d+ ^2 Q
if A(i,2)~=0;
# z8 y" Q: n% ^, e p=A(i,1);, X, I* b, U, h8 V7 b
Y(p,p)=1./A(i,2);% ]/ | J8 F5 X/ v+ _$ A( L
end9 g6 I3 c* f8 V$ }9 _ I
end
' k! u# i$ D3 K. `* _, [for i=1:m
& y+ B' }9 J- m. X8 g& b p=B1(i,1);% d+ r$ i! G6 d- B1 A
q=B1(i,2);
~6 K( b8 }7 d Y: C Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成; d$ Z' a. p ?7 V2 m% U
Y(p,q)=Y(p,q)-1./B1(i,3);
# c+ d( F }8 `1 t$ j9 `; J Y(q,p)=Y(p,q); % 互导纳形成2 Z2 Q' m: u% x4 c8 s# j9 `7 l6 b& ?. @
Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;( G1 T+ Z/ T1 ?; Z; r& x
end
, H0 i. O; p, {8 u7 w8 J1 h9 xG=real(Y);
. C- H4 n4 d/ k6 L5 J6 K" AB=imag(Y);. C2 |! b0 G( C9 I- r! N
for i=1:n;
- Y, v: d+ k3 C, T% H e(i)=real(B2(i,3));
$ N- H4 I2 \2 ]8 f+ U6 A ?9 A f(i)=imag(B2(i,3)); R& R" v+ h5 Z! o
S(i)=B2(i,1)-B2(i,2);& x( v/ w4 F) R+ j l" P
V(i)=B2(i,3);) M+ l) K1 v$ \$ w) a3 ]
end
' {+ l1 R2 a$ Q2 L- W7 x9 [; SP=real(S);
' f" r" C$ X: A# Y5 }1 ~5 S xQ=imag(S);
/ A7 O) S; l! G, }0 e* n' X" J h% w[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
0 A8 D) Z. ^2 b, ^8 @7 BJ=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
1 T0 r; C5 `/ A& p% H[De,Df]=hxf(J,DF,ph,n,no);# e% {+ l9 ~( d/ y* |( P' ^' U
t=0;- V. N1 I$ P c2 V9 A, W
while (max(abs(De))>ip|max(abs(Df))>ip)
4 o2 }) w0 P7 N5 H t=t+1;
" B& {1 ^+ \$ d n" m, O/ Y e=e+De;" S! K' E# W' g/ u; s* T1 S3 `. L( C
f=f+Df;9 q% A. F4 c. A) l2 h
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);/ U4 k, U$ {- f' {. T- z
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);& [3 x' Y! X$ w. ^5 |, }, A
[De,Df]=hxf(J,DF,ph,n,no);% i8 h8 [" U' ^7 v
end! }% s9 b5 b/ @* n' l
v=e'+f'*j;9 ~6 ]! A& k X) n+ } J
for i=1:n
1 e5 {4 S/ P) R9 f: G# m W. b hh(i)=conj(Y(ph,i)*v(i));
+ D& r9 \. A! l: e. k- K, G+ s- X' rend
* `2 o* F# }- m# e" u: ?S(ph)=sum(hh)*v(ph);
, c. ]" g8 M7 E0 CB2(ph,1)=S(ph);
0 @) j8 F' d% g, iV=abs(v);: `' J) d# P$ D5 T7 k" P4 x( e
jd=angle(v)*180/pi;/ z) v; s {# G3 l
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))];
( G: y# c: r. h# E( q: Qfor i=1:m& H3 Q- i" i8 V) R. M+ F
a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));: P& Q) v/ \( T3 C# m- [
b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;9 [( [9 r0 ?0 D( D
c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;) Z2 O4 b/ f/ o3 s& u; \# x! r- ]
end/ B% l' u% E8 k& W8 S3 f: `$ \
result2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];
8 e# E) J' B3 D4 v- U2 {, gt7 J. J: H( q7 G4 x2 g2 X' R3 f
result1
/ N: U& x( x2 D' f1 s, BS9 w) t, U% d& J1 t' }, \( W
b
2 c" R+ }8 f2 u! a. z; kc
2 \- M& T4 X `+ `2 R& m0 ]& bresult2) |. t7 D) n- T9 {0 w" B
* [6 F! J: y8 _/ U
/ F4 ?( B- G3 {, j5 c8 A/ ?8 l" G0 k; S/ ~ D
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF0 Q4 ?8 T- \, ]: C6 S
for i=1:n9 W J! ]$ m& @1 P# k; r0 x
if i~=ph
9 E. ?, ^# I) [' @+ `2 e9 | C(i)=0;
6 E! B$ G$ p. p( c7 z D(i)=0;6 O* q" }) f, [7 i
for j=1:n* g# L$ p& S- N# W1 l, ]+ \- j% U- T
C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii
1 T3 x( P; b- B1 e, \& _4 V D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii; { \2 i0 Y! `3 A% u" o
end
- N) a. j' f9 F2 u( _7 Q P1=C(i)*e(i)+D(i)*f(i);1 v2 q; e) S5 _; s
Q1=C(i)*f(i)-D(i)*e(i);
5 P: ]7 v) w8 t! q& V V1=e(i)^2+f(i)^2;
3 Z& |2 H+ D m# L: ?$ F4 ^" g if B2(i,4)==2
# v: l% L% J0 u Y1 y, a p=2*i-1;# o1 d+ k: i$ [# K8 e: C) _
DF(p)=P(i)-P1;' ~. j- t5 F+ j1 H+ [* q( b% d7 g
p=p+1;, f; ^6 t* a, s" h( k. [
DF(p)=V(i)^2-V1^2;
3 \' I; n f6 V! r else. g( V' G" i2 M; M7 x9 E U$ Q
p=2*i-1;
- U6 U& A" N& T DF(p)=P(i)-P1;, W. @# s* C1 |3 i
p=p+1;$ h3 _' E2 @3 f+ N& y
DF(p)=Q(i)-Q1;
$ R7 V% k3 N; _4 I3 T, S# Z end6 z" j/ ^9 J& v$ h' M8 o
end
' Q- ]6 I/ E) z/ r5 Lend( {+ D7 h; q4 H6 t7 R# v+ q
DF=DF';
, E" a6 c5 Y- Z8 V: Wif ph~=n8 j$ P- u# k# l6 r3 }$ a
DF(no,:)=[];" t& ^# C) V# ?# u
DF(no,:)=[];
7 x+ K6 @9 P# Dend
, @: ^' W# d8 S; l+ R
7 S( i+ z. C* a! h" @& a8 D2 c+ I. ~) ~) h: |' J K5 t8 |* i0 o9 x
function [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df' B7 |3 n$ h9 `- W0 `3 X B+ T) L% ]
DX=J\DF;
, F* z, s% D2 \; g. u2 \8 [" dDX1=DX;
" |2 b5 P& l$ h) y+ d* }( ~x1=length(DX1);) r7 o% g1 b( }% z8 l
if ph~=n+ j. B5 q* S, \ F% {" Q
DX(no)=0;
* O$ C* v( A8 U! \% c* E DX(no+1)=0;
! \6 C T3 c z- R8 G5 Y for i=(no+2):(x1+2)
3 F, |! v3 k# t, o$ v DX(i)=DX1(i-2);
9 l5 O7 t, L v end
) i' Q5 q T1 _+ relse
3 h w: {1 Q$ G. t! m: G; k DX=[DX1,0,0];- V# V. T8 g+ ~. M
end
8 T" w% T; R+ ^6 u: j# X% h( Z& Yk=0;" _) V3 m" f% R s. R4 O
[x,y]=size(DX);3 u2 a8 n9 p% _! z- y
for i=1:2:x' Q' Z+ O, a0 j* _/ m( _& }. l
k=k+1;
: G J5 x+ C" V$ N Df(k)=DX(i);$ T$ }& b+ |# u2 h
De(k)=DX(i+1);
# ?4 j1 C8 @1 V5 p5 Zend
+ m! p: r0 A8 b: g: v7 `) ?: e& E; ?/ w
# ?3 l3 q! E7 A
/ q' q+ R1 y7 c. n* Zfunction J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵9 Z+ F4 M/ m8 K6 g+ a% T2 T1 h' j
for i=1:n
c7 C( ~, G2 f' l; _# f- N switch B2(i,4)
- s: P% c% ^% m' k, }; ^* { case 3
( v1 @- x2 m+ F9 e6 c* k9 u continue
@# a& ^3 N& l0 U0 q case 17 a' Z% l- `+ I3 \8 R
for j=1:n
% D( P% _( i: p- }9 \; a8 u if (j~=i&j~=ph), P# \2 e8 p" {6 T! ] K
X1=G(i,j)*f(i)-B(i,j)*e(i);
$ E/ P P/ Z+ S" a; W) U( p X2=G(i,j)*e(i)+B(i,j)*f(i);
# Y( }$ u1 n2 v9 v7 z% g* Z X3=-X2;
6 D. W( R: Z( A. h' u6 N X4=X1;
- }# n5 _5 t/ [/ {/ t+ L9 j p=2*i-1;
1 M9 }) b! Q ~: f( Q q=2*j-1;5 P4 T) P8 V" O& J1 s+ ]
J(p,q)=X1;
7 b( E& x( q+ m/ ?0 J0 K m=p+1;; E B, D" V2 b1 m. G
J(m,q)=X3;
9 n) U Y5 Z2 o) n q=q+1;
1 \' H+ J [ I+ K6 P' u J(p,q)=X2;0 p/ q* J7 x& |# u
J(m,q)=X4;
# \+ t ^: o: P/ L; b q else if (j==i&j~=ph)5 E+ [$ o$ R" |! X3 k. j
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
/ H4 k, C, b. V+ m- q+ J X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);& Y, j$ m1 e6 w0 N1 _8 f7 ~
X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);9 s# u. A1 \( K8 l+ b8 m" @
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
! G4 r* }' v- _1 Y/ m q=2*j-1;2 e- F8 N( G9 H
p=2*i-1;
8 h5 K" `7 l a5 g* ?: E J(p,q)=X1;
# V/ B7 c8 ]/ ~, |+ H m=p+1;5 H" B% \, b" x4 q6 Q2 H- V& R3 S
J(m,q)=X3;
6 J% X5 D0 v8 J d q=q+1;
- t. ^0 h1 K: V# {" d: B J(p,q)=X2;
* U! w1 |7 F% c1 }# B J(m,q)=X4;
3 h* d9 O2 a5 U0 O, W end
$ I1 m2 O# b) @' N* ] end
+ p3 ]7 i; E8 J7 a F: O end- c. {5 \$ c! {! d1 s$ Q' M
case 2
9 ? m- j2 m7 T6 f& g6 _3 o7 m for j=1:n9 K& s! Q. ]# j: o9 `( v6 g0 ]: R
if (j~=i&j~=ph)2 c7 f! t7 Q( \, U# F3 a9 n
X1=G(i,j)*f(i)-B(i,j)*e(i);
& k T1 G! l' O M+ y( C% k1 G X2=G(i,j)*e(i)+B(i,j)*f(i);
/ g6 y# H3 ~) a% u( w X3=0;
! }! C, X* s( H( S; V5 s) t X4=0;
% A+ M: L$ S6 ?4 K p=2*i-1;
8 Q* h+ a" l( A! M! y! e# q# ~ q=2*j-1;/ L4 X/ H2 N' V0 e! N5 D
J(p,q)=X1;
" I2 T* J! {7 H% ~+ ^ m=p+1; p# w* F7 C8 \8 n0 }
J(m,q)=X3;
+ D: v" r+ @) h3 G6 Z q=q+1;, B6 k/ p9 |4 Y
J(p,q)=X2;
; Q6 n4 j, F1 E& N1 J J(m,q)=X4;
9 I$ W3 i: f4 k/ ~9 c" _; ~4 x else if j==i&j~=ph3 L0 w9 R: Q0 f
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
" V9 U. e: Q( G X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);( M+ f* O; y) G' k( w" O' I
X3=2*f(i);, h1 \: }7 ~5 e0 Y8 U6 v1 s8 S) _
X4=2*e(i);/ U5 _, }3 }9 F8 {% O, m1 F
p=2*i-1;( X0 U* L+ V$ g% R4 p, ]5 }2 f. W
q=2*j-1;
+ I9 u* x% K8 R J(p,q)=X1;
$ v* Z' {, H2 Z9 V m=p+1;; ~0 S1 Z3 f1 M
J(m,q)=X3;
5 n) L q0 G/ E8 u8 {4 B q=q+1;
( C+ u# h+ [4 ]6 [6 T/ [ J(p,q)=X2;( D# F* J3 p0 x1 O7 t, D
J(m,q)=X4;
5 T% f+ c" y7 L3 @8 |0 r. h# K7 A end3 `# f) {/ B, m" T7 \
end' L# k6 H$ t0 }+ t2 C9 w# n- X
end( I9 [: |7 O1 q$ S4 g
end
}) y2 X4 \# `if ph~=n1 D4 a# S+ U4 @1 i" E! R+ k
J(no,:)=[];
1 Y q5 K0 h# j! L" x S J(no,:)=[];- Q; S6 q- E% @1 ?1 _6 @9 } `
J(:,no)=[];
) Q5 o, p( M2 D( d# J+ ^5 ~ J(:,no)=[]; % 删除不需要的空间
7 V0 T" w4 c4 s2 \% A5 h( cend |