好文档 - 专业文书写作范文服务资料分享网站

牛顿拉夫逊迭代法极坐标潮流计算C语言程序

天下 分享 时间: 加入收藏 我要投稿 点赞

/*利用牛顿-拉夫逊迭代法(极坐标形式),计算复杂电力系统潮流,具有收敛性好,收敛速度快等优点。所

/*可计算最大节点数为100,可计算PQ,PV,平衡节点*/ /*可计算非标准变比和平行支路*/ #include #include #include

#define M 100 #define Nl 100 int i,j,k,a,b,c; int t,l;

double P,Q,H,J; int n, m, pq, pv; double eps; double aa[M],bb[M],cc[M],dd[M],max, rr,tt; double mo,c1,d1,c2,d2; double G[M][M],B[M][M],Y[M][M]; */

double ykb[M][M],D[M],d[M],dU[M]; struct jd { int num,ty; double p,q,S,U,zkj,dp,dq,du,dj; 抗角

修正量*/ } jd[M];

struct zl { int numb; int p1,p2;

double kx;

double r,x; } zl[M]; FILE *fp1,*fp2;

void data() {

int h,number;

fp1=fopen(\

/*最大矩阵阶数*/ /*迭代次数*/ /*循环控制变量*/ /*中间变量*/ /*节点数*/ /*支路数*/ /*PQ节点数*/ /*PV节点数*/ /*迭代精度*/ /*中间变量*/ /*复数运算函数的返回值*/

/*节点导纳矩阵中的实部、虚部及其模方值 /*雅克比矩阵、不平衡量矩阵*/ /*节点结构体*/

/* num为节点号,ty为节点类型*/ /*节点有功、无功功率,功率模值,电压模值,阻 牛顿--拉夫逊中功率不平衡量、电压

/*支路结构体*/ /*numb为支路号*/ /*支路的两个节点*/ /*非标准变比*/ /*支路的电阻与电抗*/

/* 读取数据 */ fscanf(fp1,\ /*输入节点数,支路数,PQ节点数,PV节点数和迭代精度*/

for(i=1;i<=n;i++) /*输入节点编号、类型、输入功率和电压初值*/ {

fscanf(fp1,\{

fscanf(fp1,\

if(h==1) /*类型h=1是PQ节点*/

jd[i].num=number; jd[i].ty=h;

} {

fscanf(fp1,\

if(h==2) /*类型h=2是pv节点*/

jd[i].num=number; jd[i].ty=h;

jd[i].q=-1.567;

}

if(h==3) /*类型h=3是平衡节点*/ {

fscanf(fp1,\ jd[i].num=number; jd[i].ty=h; } }

fscanf(fp1,\

for(i=1;i<=m;i++) /*输入支路阻抗*/ fclose(fp1);

if((fp2=fopen(\ {

printf(\ can not open file!\\n\ exit(0); }

fprintf(fp2,\ 电力系统潮流计算\\n \ fprintf(fp2,\ ********** 原始数据 *********\\n\

fprintf(fp2,\==========\\n\

fprintf(fp2,\ 节点数:%d 支路数:%d PQ节点数:%d PV节点数:%d 精度:%f\\n\

n,m,pq,pv,eps);

fprintf(fp2,\ ------------------------------------------------------------------------------\\n\ for(i=1;i<=pq;i++)

fprintf(fp2,\ PQ节点: 节点%d P[%d]=%f Q[%d]=%f\\n\

jd[i].num,jd[i].num,jd[i].p,jd[i].num,jd[i].q); for(i=pq+1;i<=pq+pv;i++)

fprintf(fp2,\ PV节点: 节点%d P[%d]=%f U[%d]=%f 初值Q[%d]=%f\\n\

jd[i].num,jd[i].num,jd[i].p,jd[i].num,jd[i].U,jd[i].num,jd[i].q); jd[n].num,jd[n].num,jd[n].U,jd[n].num,jd[n].zkj);

fprintf(fp2,\ 平衡节点: 节点%d e[%d]=%f f[%d]=%f\\n\ fprintf(fp2,\ -------------------------------------------------------------------------------\\n\ for(i=1;i<=m;i++)

fprintf(fp2,\ 支路%d: 相关节点:%d,%d 非标准变比:kx=%f R=%f X=%f \\n\

i,zl[i].p1,zl[i].p2,zl[i].kx,zl[i].r,zl[i].x);

fprintf(fp2,\

==============================================================================\\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); }

double shang(double a3,double b3,double a4,double b4) /*复数除法求商函数*/ { c2=(a3*a4+b3*b4)/(a4*a4+b4*b4); d2=(a4*b3-a3*b4)/(a4*a4+b4*b4); }

/*--------------------------------计算节点导纳矩阵----------------------------------*/ void Form_Y() {

for(i=1;i<=n;i++) /*节点导纳矩阵元素附初值*/

for(j=1;j<=n;j++)

G[i][j]=B[i][j]=0;

for(i=1;i<=n;i++) /*节点导纳矩阵的主对角线上的元素,非对地导 return c2; return d2; c1=a1*a2-b1*b2; d1=a1*b2+a2*b1; return c1; return d1;

纳加入相应的主对角线元素中(考虑非标准变比)*/

牛顿拉夫逊迭代法极坐标潮流计算C语言程序

/*利用牛顿-拉夫逊迭代法(极坐标形式),计算复杂电力系统潮流,具有收敛性好,收敛速度快等优点。所有参数应归算至标幺值下。/*可计算最大节点数为100,可计算PQ,PV,平衡节点*//*可计算非标准变比和平行
推荐度:
点击下载文档文档为doc格式
5fzo78fv8q3bj0w6iip07zlrl1bk8m012ym
领取福利

微信扫码领取福利

微信扫码分享