|
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
我对程序严重的感冒 下面是我花了2个通宵修改的程序,可是还是有问题,但是我看不出来~~请高手帮忙解决一下,谢谢
) n2 j" q$ q8 z2 f: N7 p7 {5 G(我直接粘贴不知道行不行,如果不行后面有附件)我的邮箱langlang00000@sina.com
7 [2 c: q" P4 En=5;% u& p7 F" [9 D. q. p! T
nl=4;! h! F9 o, \, n* D( t! n' O$ ]
swing=1;; E' f) v" y" L' t
pr=1e-6;) S5 H) ~9 n* B4 e
B1=[1 2 0.12i 0 1 0;%[首节点号 末节点号 支路阻抗 对地导纳(b) 变比(无变压器则为1) 是否有变压器(是为1,否为0]6 n' L5 @" L1 W. a0 P# Q
2 3 0.01+0.12i 0.04 1 0;
4 W7 P8 ?; G5 I2 {/ y 2 4 0.2i 0 1.05 1;
: f, D' w% V- G6 { 2 5 0.12i 0 1 0]( \! D! e3 q" A) y5 n/ }
B2=[1 1.02 0 0 0 0 0 0; %[节点号 电压幅值 电压相角 发电机有功 发电机无功 负荷有功 负荷无功 节点类型(平衡节点为0,PV节点为1,PQ节点为2)]+ J9 _' e1 Y n3 R( w: `
2 0 0 0 0 0 0 2;
! Q/ `: j" }; H- K/ M& Q# F 3 0 0 0 0 0.9 0.6 2;% D6 f! A& }3 B- Z5 B
4 1.0 0 1.0 0 0 0 1;
6 m. |( {# D7 s# s+ p 5 0 0 0 0 0.8 0.5 2]' b* I' _6 E8 @
X=[1 0;%[节点号 导纳]" o" a$ ]7 b" R! n* j9 G/ y
2 0;7 o: B3 E3 t: z
3 0.1i;1 F" c; h6 s7 T& f3 t
4 0;
1 G# g# g1 J) O' j: B( M. B' s 5 0.1i]
; J! l9 `3 y" S8 ]8 J8 Q- [Y=zeros(n); %初始化节点导纳矩阵
# Z, l7 w( Z# l8 f6 @2 Q. cfor i=1:n
" \7 X0 `9 s2 `' T( @ if X(i,2)~=0;3 |8 I* S9 c7 \1 M+ q
p=X(i,1);
: Z; e, j% c' s) L! L- W2 S# w Y(p,p)=X(i,2); %写入节点对地导纳6 ^3 a( W* r, P; l
end
3 @5 P3 X. \. a% M# d4 d$ ~' Vend/ X. Y2 w' Q ]1 r3 B
for i=1:nl2 Y0 T8 ?; o5 L- W4 W0 Z2 W% o
if B1(i,6)==0
- c4 K' A: x3 d3 M+ J2 } p=B1(i,1);q=B1(i,2);6 f: `8 a4 ~7 A. {, ~* s
else p=B1(i,2);q=B1(i,1); %确定变压器首末节点$ \% G9 z" C) p4 W, [
end4 J# m" f& r$ Y/ S; c4 G
Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));( t7 i0 x0 w: O4 W, {' r: b
Y(q,p)=Y(p,q); %互导纳
1 x* A* h9 _; ~/ h1 Q | Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2; %首节点自导纳/ S6 Q5 a" W) v8 W# G5 V
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; %末节点自导纳
; q. q( g. {# @% p- I' U' d1 V4 send
$ i, C/ ^* D& _3 k; I9 oY4 {! D2 z; N8 E4 n9 I" d- W
MAG=abs(Y);PH=angle(Y); %求节点导纳矩阵各元素的幅值和相角- c7 k1 R* F5 O2 P6 B
/ E A Z* ?- g* F" M4 s- ]! b, E%--------------------------电压及功率初始化模块------------------------------
0 w6 V) V7 i9 }& M$ N
" k- T2 A5 ^) d v! L* g7 `+ ddelta=zeros(1,n);U=zeros(1,n);
# k/ g' T) B3 i( `3 }1 a4 Yfor i=1:n
; I' _: c& N3 Z( `% `% X delta(i)=B2(i,3); %节点电压相角初始化9 H6 p9 T7 o4 h4 x! ^8 R
U(i)=B2(i,2); %节点电压幅值初始化8 _/ {" F. D0 r5 C
end* R! s) [3 x0 J: S! G& ?: C
0 ^- W9 s8 K% u* J8 x: eP=zeros(1,n);Q=zeros(1,n);& O7 K, ^( G. J$ ~
for i=1:n
* h% a+ h, H) N( d if B2(i,8)~=0
/ U; v& f0 c! x P(i)=B2(i,4)-B2(i,6); %节点注入有功功率初始化
/ y2 f* ?/ a+ A) `( R7 c! H end
( w! N2 z0 l8 z7 T5 ]% r if B2(i,8)==2
4 _! W) D5 T. ^ Q(i)=B2(i,5)-B2(i,7); %节点注入无功功率初始化
9 @8 r1 `. g$ P' ~- o end 9 D4 g7 x3 F8 K2 C9 L% P, f) O/ U
end
* C5 {5 `: \7 S d! N" `: i0 q# p$ N
5 E, l" A) U5 _%------------------------求各节点功率不平衡量模块----------------------------) a4 I! [- C& A" v
' P$ e/ h9 H4 Z" {) S+ d/ q
NUM=0;IT2=1; %定义循环次数,循环条件标志
+ [( q9 m6 f: _8 ^2 m! v7 mwhile IT2~=0
, t( M8 O( p# h* g6 c( n- L IT2=0;t1=1;t2=1;
' m+ Y5 r* l0 [ for i=1:n. W( ^; K4 F8 M' i. L
! I* [7 t4 n" ]# ^& T
C(i)=0;! \2 X$ w: b# C
D(i)=0;1 Z$ O8 q0 b# H( ^9 Q
for j=1:n! X+ `/ X8 @2 E$ p" H
C(i)=C(i)+U(i)*(U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i))); %各节点有功功率 l2 m s1 W- c
D(i)=D(i)-U(i)*(U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i))); %各节点无功功率
9 i* }: P2 H7 f( U- J end
5 m4 O5 f8 v) g- O4 |7 q6 i; i3 P if i~=swing
4 X1 u4 _3 R# R3 {" O% A DP(t1)=P(i)-C(i); %PV节点和PQ节点的有功功率失配量
" j$ Q o$ [1 z# E( m$ B t1=t1+1;: w6 f D2 C& P
if B2(i,8)==2
. \/ n: S5 a; F/ H9 e DQ(t2)=Q(i)-D(i); %PQ节点的无功功率失配量4 t" v4 S+ O6 X, x I' E
t2=t2+1;; E7 c; D9 `8 Q7 p- t9 z, S( p
end - J: F6 t3 B1 z
end
1 t6 W/ H& {, y+ x; g7 V end" q1 B. T% N* r1 C/ c
* U+ ], E; R, c. f/ o$ g5 H$ k t1=t1-1;t2=t2-1;
3 a+ x% S5 O: A. d% o/ H* ^ J DPQ=[DP';DQ']; %功率失配量矩阵
0 M0 i+ P% A% ?2 ^) o l6 |8 d! _ for i=1:t1+t23 L- j8 c5 P3 r0 l' `$ S
if abs(DPQ(i))>pr %收敛精度判定& i; L' D$ a; p$ v* L2 A
& }" ?8 C, \) J8 \6 H M IT2=IT2+1; %不符合精度要求,进入下一次迭代
* l9 T/ V/ v- v8 q end
2 r) o# l; q, j* s2 A- s end: U; _" o" A- K$ w
5 ]" ?0 r! k0 r1 g. D%---------------------------求分块雅可比矩阵模块-----------------------------% E8 X, e! Y. f4 \% O9 m
2 h) s* h6 [ c1 z
H=zeros(n);0 f3 O w2 r) d- v5 F0 Y4 t
N=zeros(n);4 C2 Q! P. o- v& @3 I# R! S
K=zeros(n);
# G) b3 K' r1 n) OL=zeros(n); %初始化分块矩阵; ]2 k0 U: Q. r. H) G3 W( k+ K; u
for i=1:n
/ y2 V' \& ?" x k for j=1:n8 k+ d6 E9 N2 r
if i==j; Q/ X4 a0 M5 E, l, N4 x( F
H(i,i)=-D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i));
6 j% D0 Q& q4 X, O N(i,i)= C(i)+U(i)^2*MAG(i,i)*cos(PH(i,i));9 V9 m& n' B: P9 U. F$ R4 q4 E
K(i,i)= C(i)-U(i)^2*MAG(i,i)*cos(PH(i,i));" Y8 w0 G1 M6 a' J0 `! L! ~& ^; W
L(i,i)= D(i)-U(i)^2*MAG(i,i)*sin(PH(i,i)); %各n阶分块矩阵对角元9 [2 Y; {/ U8 w: x: R$ ?# } n" |
else) x7 ~ ^5 W1 A2 L
H(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i));& M4 p2 l$ F4 o" _5 G( P8 F' V- x
N(i,j)= U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i));
1 Z4 {% A5 l5 M; q K(i,j)=-U(i)*U(j)*MAG(i,j)*cos(PH(i,j)+delta(j)-delta(i));
V$ u N' h$ d4 A& G3 w) T L(i,j)=-U(i)*U(j)*MAG(i,j)*sin(PH(i,j)+delta(j)-delta(i)); %各n阶矩阵非对角元$ J, Y! N. x8 C$ y" ~
end
$ i: {8 Q. M" m/ _% B$ | end* k+ M* c6 X% q
end8 k" x7 I; w+ J, R3 l
- l6 v; M3 ]2 C% v%----------------------------求雅可比矩阵模块-------------------------------7 k/ q3 ~" H; [" H: }. B5 j; H. ~
- y y- W' P2 \/ Y5 L* \) g! u' @J=zeros(2*n); %初始化雅可比矩阵. Q6 h) \/ R6 R! m/ _& P3 x# J
for i=1:n
) f! z" @3 r) ?4 r: l5 x& ~ for j=1:n$ L/ b5 x7 i \, K' i/ \
J(i,j)=H(i,j);% o/ F; }6 O. N% a
J(i,(j+n))=N(i,j);
, m/ G* w; |# u* h J((i+n),j)=K(i,j);1 f6 L4 S4 ? h1 f+ Q2 N1 r+ N
J((i+n),(j+n))=L(i,j); %将各个分块矩阵合并为2n阶雅可比矩阵6 ?4 y! L; G& O0 F5 W6 l* @
end
: v; ^! t% e( Send
+ [8 G* ^# I4 o2 j
* { E4 r0 {! `4 y: v- iPV=[];& h" t* {- C5 \/ Y2 k* w
for i=1:n
. T8 i8 m( Z' ?6 a if B2(i,8)==10 J! @ G/ V3 h' `5 `4 q5 }6 v
PV=[PV B2(i,1)]; %记录PV节点的标号
' C1 I/ h& M' T: L- u4 X end/ C" n1 l. V( b2 j) I
end
0 U+ a" n" k$ s$ } M
$ p9 d# @6 b- M: i& rJ([PV+n,swing,swing+n],:)=[]; %删除与平衡节点对应的两行,与PV节点对应的一行
8 d0 i. ~/ m* w. r Z rJ(:,[PV+n,swing,swing+n])=[]; %删除与平衡节点对应的两列,与PV节点对应的一列) X2 g6 g- {. D0 g- i; E! s9 V
/ b4 i+ ]+ _( EJ; %最终的雅可比矩阵: n( e* Q4 N4 v0 x( A/ l2 ~5 P) ^
) J5 R0 s7 B# j0 u) l3 \0 |%------------------------解修正方程求各节点电压模块--------------------------
) q2 l+ S; O- D$ t) G4 r2 X+ k 3 d4 P' D& m' ~0 Z" `1 A. O
modify=inv(J)*DPQ; %各变量的修正量
* }' k8 b" u2 r: j) x) P! [ Ddelta=modify([1:t1],:); %节点电压相角修正量
3 K! u: E. j {' U& O- u) d& o DU=modify([t1+1:t1+t2],:); %节点电压幅值修正量
# Z \5 R% d0 F; X5 l$ v. X2 d
5 o5 Y" C- n% y# H0 Y' ^ UR(:,NUM+1)=U(1,:); %记录各次迭代节点电压值
$ g* {* A9 Q" B1 D% k t4=1;
" C. Z& C/ a4 s for i=1:n
( g* U* c0 L+ K. p3 l5 e if B2(i,8)~=0
8 D: H g4 G _% U$ | delta(1,i)=delta(1,i)+Ddelta(t4,1); %修正后的节点电压相角8 {. e. d% t) N) c
t4=t4+1;) C3 J S2 {8 V# H
end
( x) H5 u- P( f end
- ?1 U" H2 E5 S/ t0 y
1 u+ P8 d `8 C" w: p) D t5=1;
2 z+ @: N7 D3 g9 }, P; U. K ]! L for i=1:n
5 P! x: h2 Z7 t6 e1 I8 f$ b4 g if B2(i,8)==2
* J: R7 }; g( B3 I U(1,i)=U(1,i)+DU(t5,1)*U(1,i); %修正后的节点电压幅值
9 V$ V! T' u5 G U! \ t5=t5+1;$ K& v. T+ R5 C( m, C
end
1 n+ P+ k: s( m7 ` end
5 g; n+ _2 c9 h9 a. W1 o6 x( K2 n NUM=NUM+1; %迭代次数
- k2 C3 E. c# f, a5 J. K& o7 s0 { if NUM==1 %最大迭代次数判断
# l! [2 | T& A$ T- ^ break; %超过最大迭代次数,跳出( O" f0 ?; d3 U; s
end " I3 l" R3 R k" O: o" u- T6 @
end % [- D$ l+ q% x D
$ K _5 `9 C$ s. k0 j
%--------------------------------输出模块----------------------------------0 C! n+ d4 ?8 w8 d: p+ R! m
+ y5 O7 q3 O" s# _! ^
disp('------------------------------------------------------------------');. l# j2 N' ^1 U' P1 s
disp('各节点电压U幅值为(节点从小到大排列):');$ u) @; g6 D) J: a
disp(U); %输出节点电压幅值; d' `7 Y3 g. i8 u0 E( e7 U k2 i
disp('------------------------------------------------------------------');, V" Z, l5 w0 ?: J! P
disp('各节点电压相角为(节点从小到大排列):');/ ^, u8 M% Y5 J6 C
disp(delta); %输出节点电压相角2 M8 q- A# |6 e# }# R4 N
disp('------------------------------------------------------------------');* T" g, B( ~9 \- Z7 X+ ]5 C4 I e) G
disp('迭代次数:');, W3 y: P0 y/ r5 n7 `& i3 q" U
disp(NUM); %输出迭代次数 |
|