马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。" B# r& Z# L3 k0 e% s% x- w& @& E+ \
刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?
; Z/ B) m# ?+ j+ V" G7 v5 V我的程序如下& M& }/ k6 V E! B+ ]# ]
function newton$ \8 o/ i2 C5 z5 W; Q F5 ]) l
clear;. ~$ b5 ~$ f6 U* {
n=input('\n请输入节点数:n=');; V8 |4 x$ Z4 @. |
m=input('\n请输入支路数:m=');
' t' ~8 P9 B9 l" G$ o* zph=input('\n请输入平衡节点的节点号:ph=');
2 B% v z# x6 k% z4 OB1=input('\n请输入支路信息:B1=');7 ^" D* t7 T" ^& Y( m7 r( y
% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
: g6 m& U6 `: N# L/ M0 ?7 G% 第一列存贮支路的一个端点2 W( K* I" [) P% D/ v
% 第二列存贮支路的另一个端点& q& H* z) p2 f" t& V$ H) l S
% 第三列存贮支路的阻抗
# ]+ e6 V" U& ]' R* s! [% 第四列存贮支路的对地导纳
# l2 F* `! K" [4 |; M8 ?% 第五列存贮支路的序号8 a) x! G7 T& F+ x7 O
B2=input('\n请输入节点信息:B2=');
7 C3 Q J' Y s$ P* u% E: |" {% 第一列为电源侧的功率 8 w: E$ H2 J) ^1 h& n
% 第二列为负荷侧的功率6 M; R" h/ c& A# E) X& F& p, ~
% 第三列为该点的电压值
0 v! y: i( j7 k- R4 R4 n% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点
_% {0 `+ V7 F6 sA=input('\n请输入节点号及对地阻抗:A=');& k& W$ @5 [' u; e
ip=input('\n请输入修正精度:ip=');' @. s: V5 c* v* z. _4 x1 Z( D
Y=zeros(n);; C& N' m# d# `, _
e=zeros(1,n);
3 n& p3 k; @6 v% Q( V8 Df=zeros(1,n);
# l" J8 ^0 S' t! f; T- H) zno=2*ph-1;' y" S* v8 E- D: |
for i=1:n
- @% `& p( Z6 g8 G1 k if A(i,2)~=0;7 q$ ~$ d# Z2 x* X+ j1 y
p=A(i,1);
6 t; _0 Q9 E+ K) Z4 @) f Y(p,p)=1./A(i,2);6 p8 m p' g5 b
end
$ u# ?. c2 D$ {0 U) A7 zend
5 G( G8 i& \8 t9 w8 A, l f* Rfor i=1:m
( ~3 E: ~. y* W. _% A* o) \2 G, W% W4 M p=B1(i,1);
; \3 u4 y$ `0 L0 Q; h1 G5 u+ C q=B1(i,2);
1 w2 ~: x1 R# o. y6 D0 |+ F4 M Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成* F9 k( w+ s. ?8 p6 \ H
Y(p,q)=Y(p,q)-1./B1(i,3);
1 H! w1 D, B* A* m Y(q,p)=Y(p,q); % 互导纳形成
# m2 F: e$ Z" `0 A" ]" Y- J Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;! i1 n# |8 w. ]/ ?9 L
end
& U+ z) t/ I+ P- \- L) ZG=real(Y);+ X, L0 n( _/ ]" ^ E# T
B=imag(Y);
, H0 |1 @/ X8 b* u9 { nfor i=1:n;4 X7 p& _1 y6 `
e(i)=real(B2(i,3));( l' J' L3 j+ r
f(i)=imag(B2(i,3));% }2 \( U3 U( p. k f
S(i)=B2(i,1)-B2(i,2);
- M0 P) `! E/ ]2 f ~9 Z V(i)=B2(i,3);
6 k; O6 U: O$ Aend
0 A% W2 p' ^7 I, }& d8 qP=real(S);7 U, w. ~7 H' w: h
Q=imag(S);2 e6 T9 _& P3 _) D: I
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
$ ~0 x6 `. f$ Q, R1 g: m- W% iJ=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);. W0 h' X- l$ f; o" \' q
[De,Df]=hxf(J,DF,ph,n,no);
( u% r3 Y; G& L5 s; g1 A# At=0;
$ U/ B4 z) R$ M+ kwhile (max(abs(De))>ip|max(abs(Df))>ip)
( m8 N; M' B! c3 }, |: w t=t+1;
- v+ `( Z1 |1 x e=e+De;# B5 r1 }$ q- S* G% P3 N* {
f=f+Df;0 l+ t" Q$ g; X5 Z
[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);, q2 v, ]& n* S5 U4 ^' c- \
J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);
3 b6 S) ^- x8 @% r$ l2 @# a- f- B [De,Df]=hxf(J,DF,ph,n,no);. E2 w& \' K6 d+ i
end
; P5 Z b2 V2 dv=e'+f'*j; h6 `7 _ v' j$ a4 j% l2 x% M
for i=1:n [7 s1 s; ^6 q4 b% x# i
hh(i)=conj(Y(ph,i)*v(i));
& W7 v8 h) N) E) z1 a4 y7 U; c$ a! yend% a$ K# e# W. n+ Q/ }2 b& _
S(ph)=sum(hh)*v(ph);- h. H# {4 | ?$ W4 n
B2(ph,1)=S(ph);& a( w1 C* F v# ?# h
V=abs(v);
/ n: N$ F" ~- Tjd=angle(v)*180/pi;
1 h# |4 k- m1 G* y# uresult1=[A(:,1),real(v),imag(v),V,jd,real(S.'),imag(S.'),real(B2(:,1)),imag(B2(:,1)),real(B2(:,2)),imag(B2(:,2))];7 c9 R- k! D: l4 j; p* [) ?1 I
for i=1:m: h; x+ \2 H, `$ q! y8 g# q: q1 u
a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));) U; n. ]" i4 l& [# Z7 l- j- a
b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;7 q& r; M6 X1 e3 M1 ?. L
c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;
+ J) _( ^! @1 [1 O, o% @end
0 j0 v9 d; _9 v F7 A+ v! G" yresult2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];3 x8 |( n1 O' d( g
t
2 [2 S, _1 S! t' h+ `# q; Lresult11 C$ p3 s0 Q& X: ~6 [
S
; `; R+ k: n7 M: X) L6 Hb
; I3 A' D: b* P) r( \, K0 [c
, R' y8 K8 e% z' N( Aresult2
) b! c' H; Z; [* ~5 F; i$ u) D$ R( Z( \! k0 U* c% b6 ]3 R
1 _! D3 N" J7 J% p" C1 C
( x0 b: V: |* s$ k2 q- C# J8 G
function [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF, P8 n0 w9 F3 n, r1 q. d& `
for i=1:n' {! Y1 c0 {7 r5 [, r& _
if i~=ph' X, ~# V9 {' f3 @
C(i)=0;( ]$ {- a3 N9 m3 L
D(i)=0;
8 \# S1 `: L! r2 c4 O5 l for j=1:n
0 @% ?, {: V3 J) t; E C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii
' T7 r3 r3 H5 l6 `4 ?! \ D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii$ ?, G/ Y8 J- I5 d1 e& N. r
end
( N* G% h+ e; t0 C P1=C(i)*e(i)+D(i)*f(i);
# v1 Y( t, B3 g: c9 N Q1=C(i)*f(i)-D(i)*e(i);1 I, s+ N) u7 N& [
V1=e(i)^2+f(i)^2;
1 ]0 a K: i& X4 [' X if B2(i,4)==25 i/ o8 T$ W, \% N: a3 y
p=2*i-1;( ?" U+ z+ g) p, E6 d4 m
DF(p)=P(i)-P1;* M s0 Z' y; U. e! l
p=p+1;
0 P+ W$ Q* k6 W; ]1 w. q l DF(p)=V(i)^2-V1^2;
9 k& j* K( F6 u6 `, u( z9 j3 }* F else9 i/ e* A" O: @; ?2 o3 X/ Z4 c
p=2*i-1;8 n% T# n9 }" D) F! a% p
DF(p)=P(i)-P1;
4 g/ _ A8 k" |' [; |/ e7 Q p=p+1;
5 V! r+ Y+ @" s( }1 | DF(p)=Q(i)-Q1;! z0 X2 {5 s5 p) d
end; y r" g# T- X- n
end5 W+ T- e6 J4 S6 D
end0 o8 O Z3 ~1 W' U, B8 D: ]* x( M
DF=DF';
- C3 ^8 x' _- t6 ^2 D3 [+ P8 ^% qif ph~=n( r; y' i L) r1 r; `
DF(no,:)=[];5 }" t. |. I3 j) @# A) _
DF(no,:)=[];
5 C; [7 o( t" f9 Aend) d2 a( y, ]2 I
' n; C% r, h" z$ V3 t% q: @
9 J) a0 u* \( Q) H, |function [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df
+ J* G: g* c3 |- Q, A5 V# HDX=J\DF;
* O' {7 E! i( q3 s/ D1 _DX1=DX;
+ |( z& y2 t9 A" v* E1 {" Cx1=length(DX1); V9 z' I2 ]7 n
if ph~=n( m. J2 l: ?" w; R9 U, M! }4 A
DX(no)=0;# h9 Q/ S' g+ W ?8 v
DX(no+1)=0;
- G2 q6 _/ A; L7 a for i=(no+2):(x1+2)" V$ I* T8 w) e" o+ {/ A; a6 |
DX(i)=DX1(i-2);
7 n, g5 a' t1 Q+ ^1 s& M2 Y7 W end
6 S3 D( x+ s3 N+ ]( delse" f7 a6 F5 I% `: H9 f5 R( I1 ?
DX=[DX1,0,0];
% @4 @( o5 j! `end
% F8 Y' Z9 u& O% R$ O, d3 ~k=0;+ K3 W3 D6 l) v
[x,y]=size(DX);
* w6 O/ N( U! L. jfor i=1:2:x! n H9 e4 l& k& ]5 m
k=k+1;( j5 _ z& V7 B+ R! U
Df(k)=DX(i);" p- U! n0 ?: L7 x: E9 X$ e
De(k)=DX(i+1);1 w! d* W& g7 _' O! j* ?) {4 h
end( d6 W8 q# Y6 e3 y" V
1 Q o5 C/ w, j
+ _0 n" r0 [2 I$ s2 |function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵
: O- B( [$ Y% O h# M# l1 R3 mfor i=1:n
r7 R. G% ^; P% f( a( U6 E switch B2(i,4) ; n" V4 t% g( K: \
case 3 $ [4 d7 n0 u: x5 s
continue
7 y4 I2 F0 v7 {9 y1 [) B case 1, ^1 t) \2 c9 J
for j=1:n6 D$ D. _/ Y5 L% `
if (j~=i&j~=ph)
# y) d5 j' h5 T6 a X1=G(i,j)*f(i)-B(i,j)*e(i);( Q9 S7 G) w' G/ y" P$ {
X2=G(i,j)*e(i)+B(i,j)*f(i);, N) E3 a: U( g1 g
X3=-X2;
. r g' }# ~6 | X4=X1;! I- W. w/ j$ A) p
p=2*i-1;2 @' i: {/ O4 I
q=2*j-1;! z5 p2 |3 _: f' e' f
J(p,q)=X1;
' ^9 }% K. f/ s m=p+1;. q0 }& \: \3 y
J(m,q)=X3;
- T& D+ B/ g w( @+ r; j5 s& v q=q+1;, N- D. T* d2 }" t/ `
J(p,q)=X2;
8 A E8 j8 v7 P; `9 f S J(m,q)=X4;9 a2 ?8 s* z8 X1 g. g
else if (j==i&j~=ph)
J9 w4 A1 s( ^/ ?8 k: K- ^ X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
) b9 M/ M5 m( \ X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
' V3 m* _# K' B/ U X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);4 Y! D4 }! U) a+ Z e' J$ G+ q
X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
, Z( k6 S- W$ v x- t3 A q=2*j-1;+ w2 Q; I1 r7 G. [- o, n& e7 H
p=2*i-1;
" w, ~8 p1 V0 Z) s J(p,q)=X1;* X! B8 Y G8 b' [
m=p+1;
# x S- o4 X8 e( c J(m,q)=X3;) h& i! P6 }2 L( {7 e2 P
q=q+1;
# i% \- E0 b6 [+ ]* Y- ?' O1 c, ^! R0 P J(p,q)=X2;: a( p; J1 N/ M( Z6 S @) _) `) u v
J(m,q)=X4;7 G& D4 v7 n, z+ _+ A
end: j1 L6 H4 i( q
end1 o; [+ F* `8 U. }' Z
end! @6 a R: V5 P: |
case 26 k) k. e1 S5 W* M1 v( B; P
for j=1:n' u/ Q7 ? I2 u* v; W e0 ~7 \, c% `' b
if (j~=i&j~=ph)5 j- M( C7 o+ ^9 ]3 q
X1=G(i,j)*f(i)-B(i,j)*e(i);% h5 ?6 Y9 S, H- K0 f8 A
X2=G(i,j)*e(i)+B(i,j)*f(i);% @6 H3 c" P, g: @. _ r
X3=0;
& X4 w+ |, x- L [1 k X4=0;
5 Y( ^) Y2 F* R* h& g p=2*i-1;( i) X' D* c5 n! V
q=2*j-1;
: ]% w% }. H" m* R! z J(p,q)=X1;5 d p; G+ N* c9 O! x
m=p+1;8 R% x M4 A: _0 Y& r9 l
J(m,q)=X3;
4 w* l3 s5 ?# k2 Y0 w n q=q+1;5 |: i9 S& v- C- N
J(p,q)=X2;
, d1 j7 P4 y) J# Z J(m,q)=X4;: B2 D( ]6 {: n% ~" ~
else if j==i&j~=ph8 b1 v6 {/ }4 F& F' ]) |& Z1 u
X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
0 @( e, m0 P/ Q) U( R( T X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
+ A# ] O, K- `# L2 t, l, K, j X3=2*f(i);2 b j5 B2 s* {/ r) P
X4=2*e(i);
' m# M, y: F+ y8 [; D% k p=2*i-1;0 ~ F: Z" U6 y
q=2*j-1;
+ D% U" f7 l5 j J(p,q)=X1;
& Q( Q3 n* Z {# y: l p8 S4 ~ m=p+1;) H, n* L) U( M6 D3 q0 m
J(m,q)=X3;
$ y7 l# `3 p0 r% r) b; |6 U q=q+1;9 i+ v: E6 R8 H) {/ c
J(p,q)=X2;
; [7 W- x! H. x J(m,q)=X4;
. i F% u4 x4 C' b- @7 \- i end* m. I0 P. U+ C& W$ j) L5 _
end$ B6 X6 E6 a c! T g
end
' z, d# X+ N% O3 G- }end
* z- U+ ?% e* V* d5 oif ph~=n
4 d# V3 k! G' b q' D- \% b8 F J(no,:)=[];
6 N: b, P/ ?% y" I. L B$ m) V J(no,:)=[];
2 Z. e9 X; P; ~! Z5 }8 g J(:,no)=[];
) _, R6 K# y8 G! M$ e" h; G) K$ h+ P J(:,no)=[]; % 删除不需要的空间
: i0 b6 E! q- k6 u1 @( G: R& n* Tend |