马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我对程序严重的感冒 下面是我花了2个通宵修改的程序,可是还是有问题,但是我看不出来~~请高手帮忙解决一下,谢谢
) l+ G; H/ ^: V' {' j (我直接粘贴不知道行不行,如果不行后面有附件)我的邮箱langlang00000@sina.com $ u" W- {! v4 q1 Y T
n=5;
) k& k4 I8 O- }5 W C, H' x/ R nl=4;# H0 V2 ?% S6 e5 c( ]8 W
swing=1;& W* x- A, b2 Q {
pr=1e-6;
# S( Z* b( d4 ~5 C T% I3 _5 } B1=[1 2 0.12i 0 1 0;%[首节点号 末节点号 支路阻抗 对地导纳(b) 变比(无变压器则为1) 是否有变压器(是为1,否为0]
' l; R" O' G8 N6 c 2 3 0.01+0.12i 0.04 1 0;& F2 C7 u1 l6 b# U8 p
2 4 0.2i 0 1.05 1;
+ [ ~( c4 _: M 2 5 0.12i 0 1 0]
$ s! D# [* M# h" B B2=[1 1.02 0 0 0 0 0 0; %[节点号 电压幅值 电压相角 发电机有功 发电机无功 负荷有功 负荷无功 节点类型(平衡节点为0,PV节点为1,PQ节点为2)]9 I- _0 F3 R; r5 o2 t1 {- Z
2 0 0 0 0 0 0 2;
3 w5 k- z* i" Y$ s) _: y 3 0 0 0 0 0.9 0.6 2;
. N6 E8 S) `. L' r5 o- J8 H3 { 4 1.0 0 1.0 0 0 0 1; v# W @/ z: h% T) R5 g
5 0 0 0 0 0.8 0.5 2]
* Z# k3 M8 ~; s X=[1 0;%[节点号 导纳]# Z; ]3 @4 _$ }4 _) O/ O! |
2 0;
& n a3 x9 M S4 i. X1 ]* o 3 0.1i;! `0 L# h: e, d: a
4 0;( x& _9 F8 @. r) k& D
5 0.1i]: ~0 O! f0 b$ ]3 R5 _
Y=zeros(n); %初始化节点导纳矩阵( G" e- z0 D$ d1 |" x, _* l% r. O
for i=1:n( ^ E/ q. _' c4 Q
if X(i,2)~=0;
6 P' S' E( N, e P* L: N p=X(i,1);
4 h' z; f, U; F' }! t# } Y(p,p)=X(i,2); %写入节点对地导纳 y+ ]3 L! _4 R7 ~* R6 E J
end9 [0 i/ s' t( ~+ _9 k
end
) Q# J+ ?" x1 \) ^ for i=1:nl
: J4 _ W Q9 m, M2 _( D if B1(i,6)==0- ]3 ?9 A- b) m) s/ A `; C- R& `
p=B1(i,1);q=B1(i,2);
, G. i! F+ m( O/ \: h else p=B1(i,2);q=B1(i,1); %确定变压器首末节点
9 s; h5 p8 [0 J) E- x( J# C& I end
; ^* c# S/ L2 E2 n/ X( I Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));
/ q5 `8 X% i- P* C Y(q,p)=Y(p,q); %互导纳" V- J9 p1 F& Q- \: i. W
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2; %首节点自导纳( u' w4 _3 K, _1 R
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; %末节点自导纳+ j6 y2 p P4 C( P8 z7 v
end * Q9 C7 \6 e- ^: ]6 c
Y8 o7 Z7 L; E( L3 N5 r
MAG=abs(Y);PH=angle(Y); %求节点导纳矩阵各元素的幅值和相角
) H5 Z+ g' n! k2 k - t0 U) x. e* a* q
%--------------------------电压及功率初始化模块------------------------------
: m" }! i. k# @0 u3 y* Y
8 X# x% y" `7 ?; }3 g delta=zeros(1,n);U=zeros(1,n);
. m( Q1 `' u0 o- s for i=1:n
6 O9 h* J5 e8 v2 Y delta(i)=B2(i,3); %节点电压相角初始化: ]& @+ z U" H/ f+ k
U(i)=B2(i,2); %节点电压幅值初始化0 e5 ]" G, H+ ~3 R# ^+ R& x
end
5 B7 `# V8 H1 a $ k7 p* F0 w" u( m( q
P=zeros(1,n);Q=zeros(1,n);1 M5 F# ]4 L% ~
for i=1:n
6 U u8 }2 H8 N3 H if B2(i,8)~=0% c r+ E- ]# ^/ O: c
P(i)=B2(i,4)-B2(i,6); %节点注入有功功率初始化
5 C/ d! L0 ?$ [9 P. U5 S5 u& n end; l- V: V+ y3 g2 F) A- v- f
if B2(i,8)==2; _ F+ ~9 f$ Y' |, O% \
Q(i)=B2(i,5)-B2(i,7); %节点注入无功功率初始化
1 |5 I& X3 u! T( ^+ ^$ ^- c, x end 9 M ?% u7 w4 r$ |
end
) a; N a6 L" K# b8 { 1 W2 `, }2 m) N5 R* w4 \
% O; S) l, l# z: ~% n# s %------------------------求各节点功率不平衡量模块----------------------------
, Y4 |! l8 s9 H0 y1 ?, O* r# t , F* \, i$ M. N' u
NUM=0;IT2=1; %定义循环次数,循环条件标志6 R. u, k4 u% Q* M
while IT2~=0. k2 R9 j5 c6 O: w0 @9 U7 i$ a$ l
IT2=0;t1=1;t2=1;
7 c. o/ I/ d6 f2 _2 l+ t for i=1:n
5 l% P6 t& b# U% l
( L. M1 V, [6 t# N- c5 P6 c C(i)=0;1 t u# I0 B# f( {3 [
D(i)=0;
0 w- R. C$ X7 s4 t w: X% a) h9 |/ l for j=1:n
1 Z, k0 b3 J2 J& V4 r) Z7 _ J9 ] C(i)=C(i)+U(i)*(U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i))); %各节点有功功率
% n1 M) g/ `( E D(i)=D(i)-U(i)*(U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i))); %各节点无功功率
. J6 ^, s! Q9 p/ h end
3 |6 H1 j1 W2 z0 n6 o! N m if i~=swing
9 x, @5 h: L. ]- p) d k DP(t1)=P(i)-C(i); %PV节点和PQ节点的有功功率失配量. T/ }2 x; G$ m& z
t1=t1+1;
& N- _; _5 k, p3 a if B2(i,8)==2
% M& e" e* Y+ {1 Z7 `4 m$ K DQ(t2)=Q(i)-D(i); %PQ节点的无功功率失配量/ H( u0 D( v4 m6 {
t2=t2+1;# @; w Q3 v- B) m6 i+ x% L* U
end
3 k' z, O/ F- _9 N4 S7 X; P end . F* h6 z0 I1 D! l8 [
end
* j% R1 j2 F3 Q5 m& Y0 k4 a
5 T7 s5 }1 [% ]' O0 o. u t1=t1-1;t2=t2-1;
) E Z* q- j, h DPQ=[DP';DQ']; %功率失配量矩阵, e% l; y* Z9 o8 }5 T
for i=1:t1+t2 @) @; @" m9 X
if abs(DPQ(i))>pr %收敛精度判定0 A0 ^& ]& ?- l1 h, S
: d0 @/ X( t; ^; k, t" p, c. V
IT2=IT2+1; %不符合精度要求,进入下一次迭代
: |: Z% {) l3 a end
' k* v" s- Z- b# d: _( y9 e end
% Z7 I3 P* K' @ : A+ k" H; u3 d0 I4 i: Q$ }
%---------------------------求分块雅可比矩阵模块-----------------------------' U( `# y2 ^1 M0 d) V
+ _, `: k( u" F/ ? H=zeros(n);! z3 {( b* R, T0 p# X
N=zeros(n);7 g6 y5 M. H1 G' R. b
K=zeros(n);: s% J# @4 t6 q
L=zeros(n); %初始化分块矩阵
5 u7 t1 u$ S4 W0 A for i=1:n8 L3 I- W8 c" R$ s& E' o
for j=1:n
) r: v* i( a0 _, ~4 g5 v6 w9 K if i==j, {: m0 n8 {. B6 k. ^
H(i,i)=-D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i));3 M" e4 q9 n$ Z- u. e) Z; P1 @
N(i,i)= C(i)+U(i)^2*MAG(i,i)*cos(PH(i,i));8 W- n. \( k+ z5 v/ Z* V
K(i,i)= C(i)-U(i)^2*MAG(i,i)*cos(PH(i,i));; m+ L' X5 h- ?- N+ K/ @) U/ l
L(i,i)= D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i)); %各n阶分块矩阵对角元/ C+ b. ?: h+ g; C
else& `% ^7 ~6 m1 Q* o# h8 z* G4 I
H(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i));# V% d) g5 C' z. j1 X6 t7 S4 n2 z5 e
N(i,j)= U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i));
8 ?9 A% u3 R; |" C K(i,j)=-U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i));4 m) w3 m l, ?
L(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i)); %各n阶矩阵非对角元
1 t! N; n. r1 M end
* e U! z L. Y/ o3 m8 D4 o end% s' [6 y1 j6 k* E& a3 T" u
end0 f3 k$ a9 }$ s1 S' f% j
* i# ]4 H" |5 s7 {/ m
%----------------------------求雅可比矩阵模块-------------------------------
}6 S, a1 l: f! l( F( e9 v 5 [) T8 ?+ M- `; e$ j
J=zeros(2*n); %初始化雅可比矩阵5 Z2 l$ k2 Y3 j) {% N) w: T8 @
for i=1:n2 E1 T9 a9 P: Y; O
for j=1:n( Z5 W# A1 v7 _, u
J(i,j)=H(i,j);) t& G9 ?* S( G2 I. u2 |
J(i,(j+n))=N(i,j);
8 |1 B: e$ r n J((i+n),j)=K(i,j);
; a' W) }& r7 N: _7 X$ d O J((i+n),(j+n))=L(i,j); %将各个分块矩阵合并为2n阶雅可比矩阵% A6 t; Q9 F# T
end
; x1 s! g) q% N# {1 T end" u: ]6 D8 _- k5 l; y) B
6 j7 x* I+ Y0 [/ T2 K W& S PV=[];+ u+ z" F" i- s* K' z
for i=1:n- @3 \' n" u$ V& u. `
if B2(i,8)==1
$ h3 L4 r& Y, W' r& c PV=[PV B2(i,1)]; %记录PV节点的标号( ~* a/ s: [4 N# U/ z/ ^
end, w5 E9 y) v; _: b
end
) Y) i9 E8 `% s$ i, J7 d1 X / O" D+ i: g$ q) r" V
J([PV+n,swing,swing+n],:)=[]; %删除与平衡节点对应的两行,与PV节点对应的一行/ ^% S: ?5 S; N7 v" `+ m3 H: n
J(:,[PV+n,swing,swing+n])=[]; %删除与平衡节点对应的两列,与PV节点对应的一列) s0 o- [# v$ h, w
' p3 G- T, G7 F. s% Z( `6 k
J; %最终的雅可比矩阵
$ h3 s6 v8 H2 P( y9 Q
- S+ `4 ?3 z; k4 @- X %------------------------解修正方程求各节点电压模块--------------------------4 ^8 F, M, T4 G( K0 @3 W: m2 k' d+ r
9 a( X+ ^: ~$ p7 z3 T2 o modify=inv(J)*DPQ; %各变量的修正量( v8 U5 i! ]# Z/ M4 @* R; \
Ddelta=modify([1:t1],:); %节点电压相角修正量
' A1 I6 ~6 \" i7 e( F" D DU=modify([t1+1:t1+t2],:); %节点电压幅值修正量
U% ?1 ~5 y4 n! E# m! a. y
2 ~* w3 I0 t9 x5 K' Z! [1 v4 C UR(:,NUM+1)=U(1,:); %记录各次迭代节点电压值
; z0 b9 F* q' M0 k% P t4=1;8 e8 [8 R" Y- {
for i=1:n
# W, R0 o/ b( L2 M) C* V$ R if B2(i,8)~=0
4 b: A3 r, i0 X, o delta(1,i)=delta(1,i)+Ddelta(t4,1); %修正后的节点电压相角4 j4 \. J; Q7 u9 e
t4=t4+1;
- |) A; z0 o- F1 |9 b end9 h( \) R5 Z( n2 A+ R
end
0 z2 G; w1 G( [( M" |: h
* W- t9 h, Q! K6 w+ K/ y t5=1;
% ~. ?* U3 U ?! i for i=1:n) N0 F/ I: N0 w3 d g7 L, Z
if B2(i,8)==2
1 W5 U; H% G# V& W* Q U(1,i)=U(1,i)+DU(t5,1)*U(1,i); %修正后的节点电压幅值
3 L) i% z( q* B; l" w* i& E6 i& } t5=t5+1;
8 s1 u G9 W2 U! r$ B( j6 s end
$ {% F! Q, h( n# G& P" L6 T end( Z- O, i# t7 [8 Q& c4 y$ Y
NUM=NUM+1; %迭代次数
8 v& A( Y S; n6 p" j7 }# T if NUM==1 %最大迭代次数判断
$ @4 K' N |$ S2 R/ C' i; m4 ]* Q. z break; %超过最大迭代次数,跳出" c/ Y4 E: ]) B) d8 a* S
end
5 [8 L6 C# P6 d" i end
- g9 O. N$ q% u( I& R. I- C1 [
) E" F* n- q/ S %--------------------------------输出模块----------------------------------7 e) s- K; F/ m: J; d
, r' K. F( \5 a: U& w7 N! k$ x disp('------------------------------------------------------------------'); H- q1 j$ T. V2 v4 F9 Y1 n$ V
disp('各节点电压U幅值为(节点从小到大排列):');: L3 z; E* y6 [4 J/ j
disp(U); %输出节点电压幅值. O4 u' O/ ^ y
disp('------------------------------------------------------------------');0 |% M. B( A9 A
disp('各节点电压相角为(节点从小到大排列):');
( B" N0 O" s' t0 d$ Q0 }0 L6 f disp(delta); %输出节点电压相角
- j/ O/ t. ^: H& p& b9 J7 S disp('------------------------------------------------------------------');
7 J9 z3 M' u, ]( J disp('迭代次数:');
( N- T3 s# M7 @0 v disp(NUM); %输出迭代次数
楼主热帖