牛顿-拉夫逊迭代法极坐标潮流计算C语言程序(共17页).doc
《牛顿-拉夫逊迭代法极坐标潮流计算C语言程序(共17页).doc》由会员分享,可在线阅读,更多相关《牛顿-拉夫逊迭代法极坐标潮流计算C语言程序(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上/*利用牛顿-拉夫逊迭代法(极坐标形式),计算复杂电力系统潮流,具有收敛性好,收敛速度快等优点。所有参数应归算至标幺值下。/*可计算最大节点数为100,可计算PQ,PV,平衡节点*/*可计算非标准变比和平行支路*/#include#include#include#define M 100 /*最大矩阵阶数*/#defineNl 100 /*迭代次数*/int i,j,k,a,b,c; /*循环控制变量*/int t,l; double P,Q,H,J; /*中间变量*/ int n, /*节点数*/ m, /*支路数*/ pq, /*PQ节点数*/ pv; /*PV节
2、点数*/double eps; /*迭代精度*/double aaM,bbM,ccM,ddM,max, rr,tt; /*中间变量*/ double mo,c1,d1,c2,d2; /*复数运算函数的返回值*/ double GMM,BMM,YMM; /*节点导纳矩阵中的实部、虚部及其模方值*/double ykbMM,DM,dM,dUM; /*雅克比矩阵、不平衡量矩阵*/struct jd /*节点结构体*/ int num,ty; /* num为节点号,ty为节点类型*/ double p,q,S,U,zkj,dp,dq,du,dj; /*节点有功、无功功率,功率模值,电压模值,阻抗角 牛
3、顿-拉夫逊中功率不平衡量、电压修正量*/ 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); /*输入节点数,支路数,PQ节点数,PV节点数和迭代精度*/ for
4、(i=1;i=n;i+) /*输入节点编号、类型、输入功率和电压初值*/ fscanf(fp1,%d,%d,&number,&h); if(h=1) /*类型h=1是PQ节点*/ fscanf(fp1,%lf,%lf,%lf,%lfn,&jdi.p,&jdi.q,&jdi.U,&jdi.zkj); jdi.num=number; jdi.ty=h; if(h=2) /*类型h=2是pv节点*/fscanf(fp1,%lf,%lf,%lfn,&jdi.p,&jdi.U,&jdi.zkj); jdi.num=number; jdi.ty=h;jdi.q=-1.567; if(h=3) /*类型h=
5、3是平衡节点*/ fscanf(fp1,%lf,%lfn,&jdi.U,&jdi.zkj); jdi.num=number; jdi.ty=h; for(i=1;i=m;i+) /*输入支路阻抗*/ fscanf(fp1,%d,%lf,%d,%d,%lf,%lfn,&zli.numb,&zli.kx,&zli.p1,&zli.p2,&zli.r,&zli.x); fclose(fp1); if(fp2=fopen(output.txt,w)=NULL) printf( can not open file!n); exit(0); fprintf(fp2, 电力系统潮流计算n ); fprint
6、f(fp2, * 原始数据 *n); fprintf(fp2,=n); fprintf(fp2, 节点数:%d 支路数:%d PQ节点数:%d PV节点数:%d 精度:%fn, n,m,pq,pv,eps); fprintf(fp2, -n); for(i=1;i=pq;i+) fprintf(fp2, PQ节点: 节点%d P%d=%f Q%d=%fn, jdi.num,jdi.num,jdi.p,jdi.num,jdi.q); for(i=pq+1;i=pq+pv;i+) fprintf(fp2, PV节点: 节点%d P%d=%f U%d=%f 初值Q%d=%fn, jdi.num,jd
7、i.num,jdi.p,jdi.num,jdi.U,jdi.num,jdi.q); fprintf(fp2, 平衡节点: 节点%d e%d=%f f%d=%fn, jdn.num,jdn.num,jdn.U,jdn.num,jdn.zkj); fprintf(fp2, -n); for(i=1;i=m;i+) fprintf(fp2, 支路%d: 相关节点:%d,%d 非标准变比:kx=%f R=%f X=%f n, i,zli.p1,zli.p2,zli.kx,zli.r,zli.x); fprintf(fp2, =n); /*-复数运算函数-*/ double mozhi(double a
8、0,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,double b3,double a4,double b4) /*复数除法求商函数*
9、/ 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() for(i=1;i=n;i+) /*节点导纳矩阵元素附初值*/ for(j=1;j=n;j+) Gij=Bij=0; for(i=1;i=n;i+) /*节点导纳矩阵的主对角线上的元素,非对地导纳加入相应的主对角线元素中(考虑非标准变比)*/ for(j=1;j=m;j+) if(zlj.p1=i) if(zlj.kx=1) mozhi(zlj.r,zlj.x);
10、 if(mo=0) continue; shang(1,0,zlj.r,zlj.x); Gii+=c2; Bii+=d2; else mozhi(zlj.r,zlj.x); if(mo=0) continue; shang(1,0,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) if(zlj.kx=1) mozhi(zlj.r,zlj.x); if(mo=0) continue; shang(1,
11、0,zlj.r,zlj.x); Gii+=c2; Bii+=d2; else mozhi(zlj.r,zlj.x); if(mo=0) continue; shang(1,0,zlj.r,zlj.x); Gii+=c2/zlj.kx+c2*(zlj.kx-1)/zlj.kx; Bii+=d2/zlj.kx+d2*(zlj.kx-1)/zlj.kx; for(k=1;k=m;k+) /*节点导纳矩阵非主对角线上(考虑非标准变比)的元素*/ if(zlk.kx=1) i=zlk.p1; j=zlk.p2; mozhi(zlk.r,zlk.x); if(mo=0) continue; shang(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 牛顿 拉夫逊 迭代法 坐标 潮流 计算 语言 程序 17
限制150内