1、 /*节点有功、无功功率,功率模值,电压模值,阻抗角 牛顿-拉夫逊中功率不平衡量、电压修正量*/ jdM;struct zl /*支路结构体*/ int numb; /*numb为支路号*/ int p1,p2; /*支路的两个节点*/ double kx; /*非标准变比*/ double r,x; /*支路的电阻与电抗*/ zlM;FILE *fp1,*fp2;void data() /* 读取数据 */ int h,number; fp1=fopen(input.txt,r); fscanf(fp1,%d,%d,%d,%d,%lfn,&n,&m,&pq,&pv,&eps); /*输入节点
2、数,支路数,PQ节点数,PV节点数和迭代精度*/ for(i=1;i=n;i+) /*输入节点编号、类型、输入功率和电压初值*/ fscanf(fp1,%d,%dnumber,&h); if(h=1) /*类型h=1是PQ节点*/ fscanf(fp1,%lf,%lf,%lf,%lfnjdi.p,&jdi.q,&jdi.U,&jdi.zkj); jdi.num=number; jdi.ty=h; if(h=2) /*类型h=2是pv节点*/ ,%lf,%lf,%lfn jdi.q=-1.567; if(h=3) /*类型h=3是平衡节点*/,%lf,%lfn =m;i+) /*输入支路阻抗*/
3、%d,%lf,%d,%d,%lf,%lfnzli.numb,&zli.kx,&zli.p1,&zli.p2,&zli.r,&zli.x); fclose(fp1); if(fp2=fopen(output.txtw)=NULL) printf( can not open file!n exit(0); fprintf(fp2, 电力系统潮流上机实习n 华北电力大学 电力1104 谭程凯 201105030119n * 原始数据 *n=n 节点数:%d 支路数:%d PQ节点数:%d PV节点数:%d 精度:%fn, n,m,pq,pv,eps); -n=pq;i+) PQ节点: 节点%d P%
4、d=%f Q%d=%fn jdi.num,jdi.num,jdi.p,jdi.num,jdi.q); for(i=pq+1;=pq+pv; PV节点: 节点%d P%d=%f U%d=%f 初值Q%d=%fn jdi.num,jdi.num,jdi.p,jdi.num,jdi.U,jdi.num,jdi.q); 平衡节点: 节点%d e%d=%f f%d=%fn jdn.num,jdn.num,jdn.U,jdn.num,jdn.zkj); -n 支路%d: 相关节点:%d,%d 非标准变比:kx=%f R=%f X=%f n i,zli.p1,zli.p2,zli.kx,zli.r,zli.
5、x); =n /*-复数运算函数-*/ double mozhi(double a0,double b0) /*复数求模值函数*/ mo=sqrt(a0*a0+b0*b0); return mo; double ji(double a1,double b1,double a2,double b2) /*复数求积函数 a1为电压模值,a2为阻抗角,a3为导纳实部,a4为导纳虚部*/ a1=a1*cos(b1); b1=a1*tan(b1); c1=a1*a2-b1*b2; d1=a1*b2+a2*b1; return c1; return d1; double shang(double a3,d
6、ouble b3,double a4,double b4) /*复数除法求商函数*/ c2=(a3*a4+b3*b4)/(a4*a4+b4*b4); d2=(a4*b3-a3*b4)/(a4*a4+b4*b4); return c2; return d2; /*-计算节点导纳矩阵-*/ void Form_Y()i+) /*节点导纳矩阵元素附初值*/ for(j=1;jj+) Gij=Bij=0; for(i=1;i+) /*节点导纳矩阵的主对角线上的元素,非对地导纳加入相应的主对角线元素中(考虑非标准变比)*/ j+) if(zlj.p1=i) if(zlj.kx=1) mozhi(zlj.
7、r,zlj.x); if(mo=0) continue; shang(1,0,zlj.r,zlj.x); Gii+=c2; Bii+=d2; else mozhi(zlj.r,zlj.x); Gii+=c2/zlj.kx+c2*(1-zlj.kx)/(zlj.kx*zlj.kx); Bii+=d2/zlj.kx+d2*(1-zlj.kx)/(zlj.kx*zlj.kx); else if(zlj.p2=i) Gii+=c2/zlj.kx+c2*(zlj.kx-1)/zlj.kx; Bii+=d2/zlj.kx+d2*(zlj.kx-1)/zlj.kx; for(k=1;k=0) fprintf
8、(fp2,+j%f ,Bik); else Bik=-Bik;-j Bik=-Bik;n -n /*-牛顿拉夫逊-*/ void Calculate_Unbalanced_Para() if(jdi.ty=1) /*计算PQ节点不平衡量*/ t=jdi.num; cct=ddt=0; for(j=1; for(a=1;aa+) if(jda.num=j) break; P=Q=0; P=jda.U*(Gtj*cos(jdi.zkj-jda.zkj)+Btj*sin(jdi.zkj-jda.zkj); Q=jda.U*(Gtj*sin(jdi.zkj-jda.zkj)-Btj*cos(jdi.z
9、kj-jda.zkj); cct+=P; ddt+=Q; jdi.dp=jdi.p-jdi.U*cct; jdi.dq=jdi.q-jdi.U*ddt; if(jdi.ty=2) /*计算PV节点不平衡量*/ Q=jda.U*(Gtj*sin(jdi.zkj-jda.zkj)-Btj*cos(jdi.zkj-jda.zkj); cct+=P; ddt+=Q; jdi.q=jdi.U*ddt;i+) /*形成不平衡量矩阵DM*/ D2*i-1=jdi.dp; D2*i=jdi.dq;=n-1; Dpq+i=jdi.dp;n 不平衡量为: /*输出不平衡量*/ t=jdi.num;n dp%d=%
10、f,i,D2*t-1);n dq%d=%f,i,D2*t);,i,Dpq+t);void Form_Jacobi_Matric() /*形成雅克比矩阵*/ i+) /*形成pq节点子阵*/ n; int i1=jdi.num; int j1=jdj.num; double Ui=jdi.U; double Uj=jdj.U; double zi=jdi.zkj; double zj=jdj.zkj; if(j=pq) /*求jpq时的H、J */ ykb2*i-1pq+j=Ui*Uj*(Gi1j1*sin(zi-zj)-Bi1j1*cos(zi-zj); ykb2*ipq+j=-Ui*Uj*(
11、Gi1j1*cos(zi-zj)+Bi1j1*sin(zi-zj);i+) /*形成pv节点子阵*/ for(j=1; int i1=jdi.num; if(jpq时的H*/ =j时的H*/ ykbpq+ipq+j=Ui*Uj*(Gi1j1*sin(zi-zj)-Bi1j1*cos(zi-zj); else /*求i=j时的H*/ aai=0; int k1=jdk.num; H=0; ykbpq+ipq+j=-Ui*(aai-Ui*(Gi1i1*sin(jdi.zkj-jdi.zkj)-Bi1i1*cos(jdi.zkj-jdi.zkj); /*-输出雅克比矩阵-*/ nn 雅克比矩阵为: =(2*pq+pv);i+) =2*pq+pv; %f,ykbij);void Solve_Equations() /* 求解修正方程组 (LU分解法)*/ double lNlNl=0; /定义L矩阵 double uNlNl=0; /定义U矩阵 double yNl=0; /定义数组Y double xNl=0; /定义数组X double aNlNl=0; /定义系数矩阵 double bNl=0; /定义
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1