C语言进行潮流计算Word文档下载推荐.docx
《C语言进行潮流计算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言进行潮流计算Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
![C语言进行潮流计算Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/26/93400b4a-cb73-4c33-889e-7e66eaa4aa1d/93400b4a-cb73-4c33-889e-7e66eaa4aa1d1.gif)
给定了注入有功功率Pi(PGi,PLi),Ui和Qu,待求QGi(Qi),§
。
例如:
有一定无功电源的降压变电所母线,有一定储备的发电厂母线。
(3)平衡节点:
给定了Ui,§
和PLi,QLi,待求PGi,QGi,即Pi,Qi,用来平衡全电网的功率,通常在一个独立的电力系统中只设一个平衡节点。
4•牛顿-拉夫逊迭代法
牛顿-拉夫逊迭代法将解非线性方程组的过程转化为反复求与之相对应的线性方程的
求解过程。
对于一个n维非线性方程组:
fi(x1,x2,...,xn^yin=1,2,3,…,n
假定其初值为Xi(0),X2(0),…,Xn(0),也即其近似解,它与真值之间的误差为
.-■:
x1(0)^■■:
x2(0),...^■■:
xn(0)也即各变量与真解之间的修正量。
将这n个方程式都在初值的附近展开成Taylor级数且忽略二次项及高次项,则可得修
正方程
fi(X1(0),X2(0),…,Xn(0))+f
心X1(0)+..
+Cfn
扎(0)
^xn=y
i,1=1,2,…n.(1-10)
cX1
釵n
将修正方程写成矩阵形式
它的第
I行,第j列交点的兀素为第I个函数fi(x1,X2,...Xn)对第j个变量Xj的偏导数在点
(X1(0),X2(0),…,Xn(0))的值,所以方程组是线性方程,可用于求出厶%⑼门X2(0),..."
Xn⑼,从
而得到新的近似解,
Xi⑴二Xi(0)」Xi(0)(1-12)
于是得到一般迭代式:
迭代一直进行到Max{|yi-fi(x1(0),x2(0),…,xn(0))|}<
&
或Max{|Axi(k)|}<
为止。
用牛顿-拉夫逊迭代法进行潮流计算
设网络中除参考节点外有n个节点,其中1个平衡节点(并令第n个节点为平衡节点)
方程(1-9),并将Yj=Gij+jBj及Uj=ei+fi代入得:
n
ejfi'
©
-jBj)(e-jfj二rjQi
j壬
将实部和虚部分开得:
二心(Gjej-Bjfj)fi(GjfjBjej)]=R(2-1)
为[fi(Gjej—Bjfi)—e(Gjfj+Bjej)]=Qi(2-2)
j吕
此外由于系统中还有PV节点,所以还应补充一组方程:
(2-3)
在式(2-3)中,ei、fi分别为迭代过程中求得的节点电压的实部和虚部,Pi为PQ节点和PV
节点的注入有功功率,Qi为PQ节点的注入无功功率,5为PV节点的电压大小。
由(2-1),
(2-2),(2-3)三式所组成的方程组一共有2(n-1)个独立方程,其中,式(2-1)类型的
有(n-1)个,包括除平衡节点以外所有节点的有功功率Pi的表达式式(3-2)类型的有(m-1)个,包
括所有PQ节点无功功率Qi的表达式式(2-3)类型的有(n-m)个,包括所有PV节点电压U:
的表达式•平衡节点s的功率和电压之所以不包括在这方程组内,是由于平衡节点的注入功率不
可能事先给定,从而不可能列出Ps,Qs的表达式,而平衡节点的电压Us=es'
jfs则不必求取
于是建立修正方程式如下
AQi
jii
Lii
Ji2
Li2…
Jip
Lip
Jin
Lin
心P2
H2i
N2i
H22
N22…
H2p
N2p
H2n
N2n
也f2
△Q2
*
」2i
s
L2i
J22
L22…
a*
J2p
a
L2p
」2n
L2n
△62
APp
Hpi
Npi
Hp2
Np2…
Hpp
Npp
Hpn
Npn
Afp
2
iUp
Rpi
Spi
Rp2
Q・・・
Sp2
Rpp
Spp
Rpn
Spn
△ep
APn
Hni
Nni
Hn2
Nn2…
Hnp
Nnp
Hnn
Nnn
Afn
2工Un_
Rni
Sni
Rn2
Sn2…
Rnp
Snp
Rnn
厶Pi
Nii
N12
H12
Nip
Nin
Hin
Hip
Hii
(2-4)
式中的
[cGej-Bj
fj)fi(Gjfj
Bijej)]
(2-5)
lQ.二Qi-'
[fi(Gjej-Bij
j討
£
)-©
(GjjfjBjej)]
(2-6)
Ui2=U^-(e2fi2)
(2-7)
当j工I时雅可比方阵的各个元素分别为:
Hij
-:
R
fj
-Bqe'
Gijfi;
FR.
NijGijeBijfi
cej
Jij
■:
-Nij;
Lij
=Hij;
Rj
=o;
.:
ej
=0
当j=I时雅可比方阵的各个元素分别为:
fi「BiieGdh;
二Gii&
Biif
.■ei
-aii;
NH
8=-GiieffaH;
Hh
Ri
Sfi;
fi
Si=
其中:
ii二如-Biifi)'
(GijfiBjfi)
bii-(Giiej-Bjjfj)亠二(GjfjBjej)
j」
丄
三.用C语言编程计算潮流的流程图
四.
用编程方法求解实际问题
如图所示的一个电力网络,
0.08+j0.24
0.06+
i0」8
0.45+j0.15
3一
0.06+P!
8
0.04+j0.12
0.4+j0.05
4
0.01+j0.03
乡oj-ooo
(0.2+j0.2)
0.6+j0.1|
已知:
U;
=1.06•j0为定值,其余四个节点都是PQ节点,且给定的注入功率分别为:
S=0.20j0.20,S3=-0.45-jO.15,S4二-0.40-j0.05,S5二-0.60-j0.10由上图可得相应的节点导纳矩阵
五.程序清单
#inelude<
stdio.h>
math.h>
floatdivRe(b1,b2,b3,b4)
floatb1,b2,b3,b4;
{
floata1r;
a1r=(b1*b3+b2*b4)/(b3*b3+b4*b4);
return(a1r);
}
floatdivIm(b1,b2,b3,b4)
floata1i;
a1i=(b2*b3-b1*b4)/(b3*b3+b4*b4);
return(a1i);
floatmulRe(b1,b2,b3,b4)
floata2r;
a2r=b1*b3-b2*b4;
return(a2r);
floatmulIm(b1,b2,b3,b4)
floata2i;
a2i=b2*b3+b1*b4;
return(a2i);
floatMax(floata[],intn)
{inti;
floatmax;
for(i=0;
i<
n-1;
i++)
if(a[i]>
a[i+1])
{max=a[i];
a[i]=a[i+1];
a[i+1]=max;
return(max);
main()
inti,j,k,n,km;
floateps,sumpi1,sumpi2,sumqi1,sumqi2,max,sumir,sumii,I1r,I1i;
floatpi0[5],qi0[5],detpi[5],detqi[5],Iir0[5],Iii0[5],J0[8][8],detsi[8],detui[8],
u[8][8],l[8][8],y[8],ui1[8],H[4][4],N[4][4],J[4][4],L[4][4],ei1[5],fi1[5];
staticfloatybr[5][5]={{6.250,-5.000,-1.250,0,0},{-5.000,10.834,-1.667,-1.667,-2.500},{-1.250,-1.667,12.917,-10.000,0},{0,-1.667,-10.000,12.917,-1.250},{0,-2.500,0,-1.250,3.750}};
staticfloatybi[5][5]={{-18.750,15.000,3.750,0,0},{15.000,-32.500,5.000,5.000,7.500},{3.750,5.000,-38.750,30.000,0},{0,5.000,30.000,-38.750,3.750},{0,7.500,0,3.750,-11.250}};
floatei0[5]={1.06,1.0,1.0,1.0,1.0};
floatfi0[5]={0,0,0,0,0};
floatpi[5]={0,0.2,-0.45,-0.4,-0.6};
floatqi[5]={0,0.2,-0.15,-0.05,-0.1};
k=0;
km=6;
eps=0.00001;
do{
k+=1;
printf("
Nowstart...\n"
);
printf("
The%dtimes\n"
k);
for(i=1;
5;
i++)printf("
pi[%d]=%-14.6f"
i,pi[i]);
sumpi2=0;
sumqi2=0;
for(i=1;
{for(j=0;
j<
j++)
{sumpi1=(ei0[i]*(ybr[i][j]*ei0[j]-ybi[i][j]*fi0[j])+fi0[i]*(ybr[i][j]*fi0[j]+ybi[i][j]*ei0[j]));
sumpi2+=sumpi1;
}pi0[i]=sumpi2;
pi0[%d]=%-13.6f"
i,pi0[i]);
sumpi2=0;
}for(i=1;
{sumqi1=(fi0[i]*(ybr[i][j]*ei0[j]-ybi[i][j]*fi0[j])-ei0[i]*(ybr[i][j]*fi0[j]+ybi[i][j]*ei0[j]));
sumqi2+=sumqi1;
}qi0[i]=sumqi2;
qi0[%d]=%-13.6f"
i,qi0[i]);
{detpi[i]=pi[i]-pi0[i];
detqi[i]=qi[i]-qi0[i];
detpi[%d]=%-21.6f"
i,detpi[i]);
detqi[%d]=%-21.6f\n"
i,detqi[i]);
{Iir0[i]=divRe(pi0[i],-qi0[i],ei0[i],-fi0[i]);
Iii0[i]=divIm(pi0[i],-qi0[i],ei0[i],-fi0[i]);
Iir0[%d]=%-22.6f"
i,Iir0[i]);
Iii0[%d]=%-22.6f\n"
i,Iii0[i]);
}for(i=0;
4;
j++)if(i==j){
H[i][j]=-ybi[i+1][j+1]*ei0[i+1]+ybr[i+1][j+1]*fi0[i+1]+Iii0[i+1];
N[i][j]=ybr[i+1][j+1]*ei0[i+1]+ybi[i+1][j+1]*fi0[i+1]+Iir0[i+1];
J[i][j]=-ybr[i+1][j+1]*ei0[i+1]-ybi[i+1][i+1]*fi0[i+1]+Iir0[i+1];
L[i][j]=-ybi[i+1][j+1]*ei0[i+1]+ybr[i+1][j+1]*fi0[i+1]-Iii0[i+1];
else{
H[i][j]=ybr[i+1][j+1]*fi0[i+1]-ybi[i+1][j+1]*ei0[i+1];
N[i][j]=ybr[i+1][j+1]*ei0[i+1]+ybi[i+1][j+1]*fi0[i+1];
J[i][j]=-ybi[i+1][j+1]*fi0[i+1]-ybr[i+1][j+1]*ei0[i+1];
L[i][j]=ybr[i+1][j+1]*fi0[i+1]-ybi[i+1][j+1]*ei0[i+1];
8;
for(j=0;
j++){
if(i%2==0&
&
j%2==0)J0[i][j]=H[i/2][j/2];
elseif(i%2==0&
j%2!
=0)J0[i][j]=N[i/2][(j-1)/2];
elseif(i%2!
=0&
j%2==0)J0[i][j]=J[(i-1)/2][j/2];
elseJ0[i][j]=L[i/2][(j-1)/2];
输出雅可比矩阵:
\n"
%-10.4f"
J0[i][j]);
{if(i%2==0)detsi[i]=detpi[(i+2)/2];
elsedetsi[i]=detqi[(i+1)/2];
detsi[%d]=%-11.6f"
i,detsi[i]);
i++)u[i][i]=1.000;
for(n=0;
n<
n++)
{for(i=n;
{l[i][n]=J0[i][n];
=n-1;
l[i][n]-=(l[i][j]*u[j][n]);
for(j=n+1;
{u[n][j]=J0[n][j];
u[n][j]-=(l[n][i]*u[i][j]);
u[n][j]/=l[n][n];
{y[i]=detsi[i];
=i-1;
y[i]-=(l[i][j]*y[j]);
y[i]/=l[i][i];
}for(i=7;
i>
=0;
i--)
{detui[i]=y[i];
for(j=i+1;
n;
j++)detui[i]-=(u[i][j]*detui[j]);
detui[%d]=%-11.6f"
i,detui[i]);
for(i=0;
{if(i%2==0)ui1[i]=detui[i]+fi0[i/2+1];
elseui1[i]=detui[i]+ei0[(i+1)/2];
}printf("
ui1[%d]=%-13.6f"
i,ui1[i]);
{ei1[i]=ui1[2*i-1];
fi1[i]=ui1[2*i-2];
{printf("
ei1[%d]=%-13.6f"
i,ei1[i]);
fi1[%d]=%-13.6f"
i,fi1[i]);
}max=Max(detui,8);
max=%f\n"
max);
{ei0[i]=ei1[i];
fi0[i]=fi1[i];
{pi[i]=detpi[i]+pi0[i];
qi[i]=detqi[i]+qi0[i];
}}while(max>
eps&
k<
km);
Alldo%dtimes\n"
sumir=0;
sumii=0;
i++){
I1r=mulRe(ybr[0][i],-ybi[0][i],ei0[i],-fi0[i]);
I1i=mulIm(ybr[0][i],-ybi[0][i],ei0[i],-fi0[i]);
sumir+=I1r;
sumii+=I1i;
}pi[0]=mulRe(ei0[0],fi0[0],sumir,sumii);
qi[0]=mulIm(ei0[0],fi0[0],sumir,sumii);
S1=%f+j%f\n"
pi[0],qi[0]);
ei1[0]=ei0[0];
fi1[0]=fi0[0];
u%d=%f<
%f\n"
i+1,sqrt(ei1[i]*ei1[i]+fi1[i]*fi1[i]),atan(fi1[i]/ei1[i])*180/3.14159);
}
六.运行结果:
Nowstart...
The1times
The2times
33.1594
13.0920
-5.1360
-1.9751
-7.7040
-2.9621
-12.5811
33.6083
1.9751
2.9621
-4.9331
-2.1241
38.3848
16.0302
-29.5988
-12.7427
0.0000
2.1241
-16.8890
38.0788
12.7427
-4.9168
-2.1516
-29.5009
-12.9078
38.1553
16.2729
-3.6876
-1.6135
2.1516
12.9078
-17.0729
38.0553
1.6135
-7.3011
-3.3304
-3.6505
-1.6652
11.0516
4.3956
3.3304
1.6652
-5.5956
10.8516
detsi[0]=-0.077045detsi[4]=0.010254detui[0]=-0.000435detui[4]=0.002076ui1[0]=-0.047730ui1[4]=-0.090149ei1[1]=1.035457ei1[3]=1.003344max=0.003195Nowstart...
The3timespi[1]=0.200000pi0[1]=0.200525qi0[1]=0.200204detpi[1]=-0.000525detpi[2]=-0.000083detpi[3]=0.000025detpi[4]=-0.000003Iir0[1]=0.184354Iir0[2]=-0.431957Iir0[3]=-0.391092Iir0[4]=-0.585382
detsi[1]=-0.022040
detsi[5]=-0.036184
detui[1]=-0.007504detui[5]=-0.010761ui1[1]=