没有合适的资源?快使用搜索试试~ 我知道了~
牛顿拉夫逊潮流计算程序,详细有用,c语言
资源推荐
资源详情
资源评论
#include <stdio.h>
#include <math.h>
#define M 100 /*矩阵阶数*/
#define N 100 /*迭代次数*/
int l,i,j,k,l,z; /* 循环变量 */
int n, /* 节点数 */
m, /* 支路数 */
pq, /* PQ节点数 */
pv, /* PV节点数 */
duidi; /* 对地支路数 */
float eps, /* 精度 */
max;
static float G[M][M],B[M][M], /* 节点导纳矩阵中的实部、虚部*/
ykb[M][M],D[M]; /* 雅克比矩阵、不平衡量矩阵*/
struct jie_dian /* 用结构体定义节点 */
{
int num,s; /* num为节点号,s为节点类型,需注意节点在数组中的序号与节点号不一致*/
float p,q,e,f,v;
} jie_dian[M];
struct zhi_lu /* 用结构体定义支路 */
{
int num,s; /* num为支路号,s为支路类型*/
int p1,p2; /* 支路的两个节点*/
float r,x,g,b,k; /* 支路的电阻、电抗、电导、电纳和p1到p2支路的变压器变比*/
} zhi_lu[M];
#include <math.h>
#define M 100 /*矩阵阶数*/
#define N 100 /*迭代次数*/
int l,i,j,k,l,z; /* 循环变量 */
int n, /* 节点数 */
m, /* 支路数 */
pq, /* PQ节点数 */
pv, /* PV节点数 */
duidi; /* 对地支路数 */
float eps, /* 精度 */
max;
static float G[M][M],B[M][M], /* 节点导纳矩阵中的实部、虚部*/
ykb[M][M],D[M]; /* 雅克比矩阵、不平衡量矩阵*/
struct jie_dian /* 用结构体定义节点 */
{
int num,s; /* num为节点号,s为节点类型,需注意节点在数组中的序号与节点号不一致*/
float p,q,e,f,v;
} jie_dian[M];
struct zhi_lu /* 用结构体定义支路 */
{
int num,s; /* num为支路号,s为支路类型*/
int p1,p2; /* 支路的两个节点*/
float r,x,g,b,k; /* 支路的电阻、电抗、电导、电纳和p1到p2支路的变压器变比*/
} zhi_lu[M];
FILE *fp1,*fp2; /* 定义两个文件型指针变量,分别指向输入输出文件,用于读取和输出数据*/
void Read_data1() /* 从input文件中读取数据 */
{ int h,numb,numb2,h2;
fp1=fopen("input.txt","r+");
if(fp1==NULL)
{
printf(" 不能打开输入文件 !\n");
}
fscanf(fp1,"%d,%d,%d,%d,%d,%f\n",&n,&m,&pq,&pv,&duidi,&eps); /*输入节点数,支路数,PQ节点数,PV节点数,对地支路数和精度*/
j=1; /* pq节点存储在数组前pq位*/
k=pq+1; /* pv节点从数组的pq+1位开始*/
for(i=1;i<=n;i++)
{
fscanf(fp1,"%d,%d",&numb,&h); /* 读入节点编号、类型,因而可以根据节点的不同类型确定后续数据的含义*/
if(h==1) /* 类型h=1是PQ节点*/
{
fscanf(fp1,",%f,%f,%f,%f\n",&jie_dian[j].p,&jie_dian[j].q,&jie_dian[j].e,&jie_dian[j].f);
jie_dian[j].num=numb;
jie_dian[j].s=h;
j++;
}
if(h==2) /* 类型h=2是pv节点*/
{
fscanf(fp1,",%f,%f,%f,%f\n",&jie_dian[k].p,&jie_dian[k].q,&jie_dian[k].e,&jie_dian[k].f);
jie_dian[k].num=numb;
jie_dian[k].s=h;
jie_dian[k].v=sqrt(jie_dian[k].e*jie_dian[k].e+jie_dian[k].f*jie_dian[k].f);
k++;
}
void Read_data1() /* 从input文件中读取数据 */
{ int h,numb,numb2,h2;
fp1=fopen("input.txt","r+");
if(fp1==NULL)
{
printf(" 不能打开输入文件 !\n");
}
fscanf(fp1,"%d,%d,%d,%d,%d,%f\n",&n,&m,&pq,&pv,&duidi,&eps); /*输入节点数,支路数,PQ节点数,PV节点数,对地支路数和精度*/
j=1; /* pq节点存储在数组前pq位*/
k=pq+1; /* pv节点从数组的pq+1位开始*/
for(i=1;i<=n;i++)
{
fscanf(fp1,"%d,%d",&numb,&h); /* 读入节点编号、类型,因而可以根据节点的不同类型确定后续数据的含义*/
if(h==1) /* 类型h=1是PQ节点*/
{
fscanf(fp1,",%f,%f,%f,%f\n",&jie_dian[j].p,&jie_dian[j].q,&jie_dian[j].e,&jie_dian[j].f);
jie_dian[j].num=numb;
jie_dian[j].s=h;
j++;
}
if(h==2) /* 类型h=2是pv节点*/
{
fscanf(fp1,",%f,%f,%f,%f\n",&jie_dian[k].p,&jie_dian[k].q,&jie_dian[k].e,&jie_dian[k].f);
jie_dian[k].num=numb;
jie_dian[k].s=h;
jie_dian[k].v=sqrt(jie_dian[k].e*jie_dian[k].e+jie_dian[k].f*jie_dian[k].f);
k++;
}
剩余18页未读,继续阅读
资源评论
独来多任性
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功