马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我自己编了个潮流的程序,现在只能在书上一个特定的算例上能够收敛,如果换成IEEE算例就不收敛了,不知道怎么回事情。
4 u) \ ~- |2 L8 ~8 w5 m" r刚才看别人一个程序,它基本和我一样,只不过我用左除,他编写了一个高斯的程序。都没有考虑任何PQ。PV节点互换之类的问题。但是他的程序却能在IEEE算例收敛,不知道为什么?( W E& E& i# M$ P
我的程序如下% S; X) K6 U$ J' h' N
function newton
% Q8 j. v) G+ C6 iclear;
! R9 B% j; ~9 B$ g6 An=input('\n请输入节点数:n=');
- f6 E& l. r- ?, km=input('\n请输入支路数:m=');
& M( `7 f J1 qph=input('\n请输入平衡节点的节点号:ph=');
9 T6 M9 S6 H0 v8 b0 vB1=input('\n请输入支路信息:B1=');
2 @/ z4 W" ^4 R- [; b% 他以矩阵的形式存贮支路的情况,每行贮存一条支路
* q! A3 w- a) {/ q" z) }' @$ D2 _% 第一列存贮支路的一个端点3 } m! v, E0 k
% 第二列存贮支路的另一个端点
/ Q) M" q+ O5 s9 X k+ `" j% 第三列存贮支路的阻抗' u4 K1 U" C$ d# K* {
% 第四列存贮支路的对地导纳
4 W) |) K: ~9 @' k% 第五列存贮支路的序号$ M6 ^& Y+ F0 G8 q* O, q* X; O
B2=input('\n请输入节点信息:B2=');
% \2 m& W& N6 W3 O+ n. h, z9 o+ P% 第一列为电源侧的功率 ' G' W/ N. V% W0 k G
% 第二列为负荷侧的功率
) R3 L1 Z5 O0 `. ]! }1 Q% 第三列为该点的电压值
* }3 P# J" p D2 \: I% 第四列为该点的类型:1为PQ节点 ,2为PV节点,3为平衡节点2 _( l& M" g3 _& e
A=input('\n请输入节点号及对地阻抗:A=');
2 P& ^) P; `& y) ]9 dip=input('\n请输入修正精度:ip=');& S, S! v3 G- E3 S
Y=zeros(n);" H6 {. Y3 Z& z1 }
e=zeros(1,n);. ~- I& {+ |/ g! ~+ y% q, b
f=zeros(1,n);7 d9 s# d# Q7 V
no=2*ph-1;
6 j9 X. q0 W2 L' sfor i=1:n6 F6 z$ | b* \: ?! H- [& c% s# o% Z
if A(i,2)~=0;
) e) G3 F" m$ i4 g' O& z% b; C- R. S p=A(i,1);9 l0 Z* P! e/ |# q) \3 V9 q( x
Y(p,p)=1./A(i,2);: A) _& ~& j% h h* G$ r" X
end
x; {: E% x% R( x: p( hend% e$ S) ?+ h: v
for i=1:m' C% g( d% c7 l; o9 P( a
p=B1(i,1);
! B8 {) u: w6 G9 I* E2 N q=B1(i,2);* i1 ^, d6 ~* y+ F3 D# w
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; % 自导纳形成
1 F9 c; n$ N3 I9 a Y(p,q)=Y(p,q)-1./B1(i,3);
- x2 E5 h1 r+ h1 t6 l) | Y(q,p)=Y(p,q); % 互导纳形成3 X! p; z% q! V( K8 u
Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;
! e* D, J. ^' i f! iend7 j* P: h5 A7 V/ Z
G=real(Y);
7 x* f& L, f: B: M; M" ~# HB=imag(Y);- b5 d% |& Z/ D0 S* x1 l1 f% v; k
for i=1:n;
3 O1 o c, \0 `# c+ a% z e(i)=real(B2(i,3));% k6 u7 t" S( m
f(i)=imag(B2(i,3));' n: x1 ~2 z* ?; M$ c
S(i)=B2(i,1)-B2(i,2);* R' C5 `* i! W5 ^9 G3 J
V(i)=B2(i,3); H# Q* m8 T9 u! T }3 [4 j
end
0 e, p0 p& g3 M; _P=real(S);2 C- h A* C0 ^3 \" c1 I, U7 f( A
Q=imag(S);
0 c) X7 b( y9 W7 L3 ~ S[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
8 ?% J7 T4 S' h' R" F* Y# C' ?J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);& w) o2 @, N- q( f$ {! x" P
[De,Df]=hxf(J,DF,ph,n,no);
0 Q; H7 Q' a4 p# ^2 ]t=0;8 \- P, _3 |2 L% X) J) H
while (max(abs(De))>ip|max(abs(Df))>ip)' x4 p& d- D n
t=t+1;$ p ^7 p, m2 ?& B; F3 d. }/ D' O
e=e+De;
, f& j0 h6 k7 o2 s/ g f=f+Df;
l. a2 T* @: h. s, ^ [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);
7 L4 h' v5 K5 M- n; p$ |7 ^2 C J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);( q$ t2 r& R" \2 H+ z% R- ]
[De,Df]=hxf(J,DF,ph,n,no);! T- q& I+ o" g3 b$ L s8 R- Q0 ~2 F3 D
end
( w4 t; j* s5 a* hv=e'+f'*j;
2 l' ^9 ?8 i7 M% zfor i=1:n
6 a) } d- Y I/ S hh(i)=conj(Y(ph,i)*v(i));
% M2 E0 o$ V; P2 o7 B' [2 Pend8 b: R! p0 h L
S(ph)=sum(hh)*v(ph);
: |, L* m7 A1 n% \B2(ph,1)=S(ph);
, W* o( i8 c; P9 h8 D: }V=abs(v);
& w! I8 f1 R7 Ijd=angle(v)*180/pi;! ]' Y; R3 c$ J0 T
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))];4 w1 t$ ~# j* \ B! L
for i=1:m
" a' K x- Z+ C$ R6 X. I ] a(i)=conj((v(B1(i,1))-v(B1(i,2)))/B1(i,3));1 C* f1 c$ y; Q0 u r; }+ c. ^- X
b(i)=v(B1(i,1))*a(i)-j*B1(i,4)*v(B1(i,1))^2/2;
+ F7 ?% |3 k: B+ D* J" s c(i)=-v(B1(i,2))*a(i)-j*B1(i,4)*v(B1(i,2))^2/2;
* x1 \/ Z" p B6 }3 Eend$ p. P8 P* { X* H3 |
result2=[B1(:,5),B1(:,1),B1(:,2),real(b.'),imag(b.'),real(c.'),imag(c.'),real(b.'+c.'),imag(b.'+c.')];1 z' v& G- b- j& l% J
t* P5 h" k) D$ L8 [7 U; J8 v i
result1
0 F s( k) u# D HS" j: N* T* U8 ?
b* L1 Q- p$ v! l% c
c
6 ^" w" v/ _0 N" B% J% w6 k6 U, dresult2
/ |$ y1 X4 O: k6 b8 U
/ r0 h: m( @! m' u6 l* X
1 |' p7 Z4 r" [& D0 p( }. S
; u$ i$ ^3 h+ G/ I3 Mfunction [C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no) % 该子程序是用来求取DF+ G9 q1 ]$ _3 a/ C" Y6 ]
for i=1:n
# D' j: M8 a' T) ?+ l7 k if i~=ph
9 U; B+ y% T/ m( `9 g W6 k C(i)=0;
) r/ I# E- |. u+ @5 M$ D D(i)=0;
0 W9 ]6 ?& V. Q0 [$ \" A' r/ Q for j=1:n
' U: m) a) r" Z1 K6 z% q3 F+ o) H C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j); % aii2 `1 f$ Q( V0 K: T3 P# k
D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j); % bii
2 [) D& p A- D; K end
% T |6 B& m: W6 L2 k: _ P1=C(i)*e(i)+D(i)*f(i);
. K# U6 w0 l7 p* X& Z* ^ Q1=C(i)*f(i)-D(i)*e(i);% ]5 l' @0 T" u) B3 c( n
V1=e(i)^2+f(i)^2;6 B& q+ |' l: Q8 k& e
if B2(i,4)==25 w8 X- o- p' y: o2 X4 ^# n
p=2*i-1;
# t o* O1 H0 a0 A) z! z DF(p)=P(i)-P1;
) u7 F) B, K' I2 \; I! Q4 z: J( [ p=p+1;; U& [8 @ c% K$ c" }4 y! `
DF(p)=V(i)^2-V1^2;; q% a y* H8 D( g
else
; Y2 }8 Y% f" E4 C% F p=2*i-1;, r1 c8 r% o( f
DF(p)=P(i)-P1;* m: j# d3 a2 h/ V. p# _4 _ ]
p=p+1;$ z- o* I" y# M. C
DF(p)=Q(i)-Q1;8 @" ^7 ?, N# t
end4 R% k$ w: p8 g+ x9 Q
end
# U6 R' b1 C5 ?end+ u- Q3 I/ [, n0 h8 C2 w7 m+ P+ T
DF=DF';
0 k5 S. N# f6 t X5 R! S* Nif ph~=n
- ^7 M4 N, v' M' v; q DF(no,:)=[];
( ?: [" b4 o' ]2 b DF(no,:)=[];% T% r6 G( ]6 r4 v' w8 T
end6 F* b0 C8 x O* N
7 F3 z& E9 }0 d7 ^$ J$ X' A" p4 p' ^% s/ Y4 U# j! [+ y2 o
function [De,Df]=hxf(J,DF,ph,n,no) % 该子函数是为求取De Df
3 f3 G6 [/ z% \DX=J\DF;# S" f/ A8 K. g
DX1=DX;" a/ h( N" Z( S7 I5 b/ V% H# ?; |. O) B
x1=length(DX1);9 s, s8 w2 {+ }8 Q* T9 |- G
if ph~=n
' G& F- z2 W" L w0 i, y, Y DX(no)=0;
. O% Q: A2 N* V* [% A' _! n. f DX(no+1)=0;
/ P0 f/ _5 n( h( m. x. Q- e for i=(no+2):(x1+2)
- q" Z& g# _7 J. C8 ~ DX(i)=DX1(i-2);: d# ^5 k( H% b- ~5 s( S
end. v- X$ I$ B4 u b
else% `/ K: J' `# r' V( d, ^ ^1 b
DX=[DX1,0,0];
2 ] G& f3 l- H2 C1 jend
# K, a* {$ B6 ~4 s/ ck=0;
6 R( g2 u/ n9 `+ Q9 y[x,y]=size(DX);0 n0 ]7 C0 V( R5 M+ f$ y0 Q$ {! z( Y1 k
for i=1:2:x
, q% H5 `9 q3 P, Y4 J3 t2 W k=k+1;
5 w7 T K5 s& Y) B Df(k)=DX(i);) n, ]! F; O9 ? Z2 Z! g) H2 x6 q
De(k)=DX(i+1);
7 b/ @: a& }: U& V% Z2 k! Rend
& \! I$ A( X) c3 k+ }! }: ^/ u
5 k+ c) ^* E# i( e$ p- n1 f# I2 g5 a. l7 S( q0 }* g
function J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no) % 该子程序是用来求取jacci矩阵! }; \9 b/ v3 I, V/ a
for i=1:n
- O4 o( e% R) a0 Z switch B2(i,4) 1 e5 y$ T5 j2 b c0 D! h1 @( N8 f% {
case 3
" n0 ?4 k% A% U6 ^7 W% b continue, w4 u, T$ J- L% q% p
case 1
: b a# Z/ Y) n! i. ^# Y for j=1:n
5 f: H3 h( Q K8 H# B% X4 W if (j~=i&j~=ph), Q6 W V5 K6 F
X1=G(i,j)*f(i)-B(i,j)*e(i);
0 H- ^" z, B# y' |* m% o5 W1 T X2=G(i,j)*e(i)+B(i,j)*f(i);9 n) B( o/ R% D/ N
X3=-X2;
. C5 @& F6 F6 K( B X4=X1;
$ e, I( Q9 A/ s, W2 K6 L p=2*i-1;( G+ R: l& t) I; F$ f
q=2*j-1;+ S5 S% F+ g8 H9 C- e9 _
J(p,q)=X1;
* I0 L5 h$ U- A# E m=p+1;
/ [, t1 b4 [0 c9 @& s J(m,q)=X3;
$ Q8 Q9 Z$ A7 t5 F# w% X% _ q=q+1; O, {7 N/ X) s/ K( L& @* @
J(p,q)=X2;
/ C9 `" Y3 K' r. q9 B1 Y+ G J(m,q)=X4;9 x C+ j) i0 b, [& f3 Z8 k7 g
else if (j==i&j~=ph)
4 ~/ M+ y# J' d8 [# Z) O; u& E X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);8 V6 ?0 |# h9 H$ y( V0 m
X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);
5 k" _1 O w8 ~; B4 m+ w X3=C(i)-G(i,i)*e(i)-B(i,i)*f(i);
3 d$ ]$ D% }5 \; g" R X4=-D(i)+G(i,i)*f(i)-B(i,i)*e(i);
* J2 o( x/ H/ i% l' j8 f: f q=2*j-1;
4 I8 `+ U) t1 p* X5 P& M p=2*i-1;8 V' e7 U$ C' w% n4 h
J(p,q)=X1;) B' ?* B; s6 N2 F7 W$ V- O
m=p+1;! j1 |: _( H* G6 i2 y. a- T
J(m,q)=X3; P3 f% |; p9 P! F* C; d% U
q=q+1;( _' \* D' _' g# B( x% _
J(p,q)=X2;- s) O d9 U9 x# P8 U& ^$ i# i1 U5 U
J(m,q)=X4;
1 f9 T/ \. c6 H5 [7 w: U; S end# x/ W$ t0 r* ?3 y
end# @* `4 m/ O# X) ], Q: x% d
end8 ~" Q. z$ h7 Q0 g2 |0 T5 W
case 2! U8 i7 @+ Y9 J% e$ b; U7 `
for j=1:n# M% Y1 m. I2 |1 x6 O3 N4 S
if (j~=i&j~=ph)
/ Y' J% l5 |' O/ A X1=G(i,j)*f(i)-B(i,j)*e(i);4 t u0 j9 l! G0 ]8 o
X2=G(i,j)*e(i)+B(i,j)*f(i);$ A! h$ s* e, a' i: E
X3=0;
* ?. R( W' X0 |. ~+ ? X4=0;! E5 N* E* H2 n& t# O! `
p=2*i-1;% A/ a! A5 l- e( J* `/ j
q=2*j-1;
$ `; h! B6 V+ l5 F; Y J(p,q)=X1;
4 r, D5 j) R/ }( S, u4 [& L* j+ w m=p+1;
u3 K& w1 K _! x! n+ T/ p J(m,q)=X3;
L" J: [$ a8 M# \ q=q+1;
. C% O$ O# Q% o9 G$ x. f [! W G J(p,q)=X2;
: K4 k5 D6 r. U- i' c) S- D8 P" \+ t J(m,q)=X4;) T$ \' H1 g* V4 a. X) n$ l T
else if j==i&j~=ph
& ?$ A# r3 v9 c' D7 B5 q% @/ x X1=D(i)+G(i,i)*f(i)-B(i,i)*e(i);
, {; L7 P/ q2 n X2=C(i)+G(i,i)*e(i)+B(i,i)*f(i);8 }) x+ V5 { l% d* M6 j6 M
X3=2*f(i);4 c+ \- e0 G3 e. T
X4=2*e(i);
5 M7 C! P1 P! b: o6 l p=2*i-1;
& n) }4 b- x: p$ ]' _ q=2*j-1;
@; ]' F+ O0 }) C; a/ N# W* | J(p,q)=X1;9 B0 u' I2 k |) S7 k5 p" q1 e
m=p+1;
2 {) ?# k% d2 @# o! p& b0 K. s J(m,q)=X3; r) n/ k+ Y; x' {
q=q+1;8 d5 [4 o4 a x) G
J(p,q)=X2;
2 t" T( b7 D k5 t7 B0 H J(m,q)=X4;
- e8 ~8 e% `5 z+ y- L3 A5 L- h end N; F/ v5 w" p# m* r0 d5 ~. a
end
( ~8 {* Z8 ]" E8 ` end
' U4 B/ u% E5 w8 }7 tend
+ G& A6 q8 H4 F5 o; Nif ph~=n
) F* f' i+ E# Z1 E J(no,:)=[];
9 \* `' a. P5 Z9 U9 v$ L6 C J(no,:)=[];' S6 @! X; H) T9 ~, f8 a
J(:,no)=[];
+ Y9 q" r9 B; f: C* v0 D+ a+ N J(:,no)=[]; % 删除不需要的空间0 N2 o, P$ L& M" L
end |