- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电网潮流计算序C版本
看大家在人人上发了各种电力系统作业,刚编完我也来得瑟一下吧,基本上可以解决开式单直网络和树状网络的计算。树状网络计算时要自己先设定好支路的起始节点和终止节点标号以及计算顺序,本来想做一个树状图的的深度遍历来进行自动排序,不过从网上找到一个深度遍历代码太长,在此就偷个懒把顺序自己输进去了。测试后3-4,3-3,以及例3-2答案基本正确。另外fun3是不加入横向电压分量计算的函数,在例3-2计算用的是这个函数。另外就是迭代终止条件的问题上我只是设定固定迭代次数为3,也可以用精度来限定,大致就是如此吧。请大家多多指教了。源代码:
#include iostream #include fstream #includeiomanip #includemath.h using namespace std; struct node{//节点类 int i;//节点编号 double U,P,Q,delta;//额定电压 计算负荷 电压相角 }; struct line{//线路类 连接父节点子节点 node f_node,s_node;//父节点 子节点 double R,X,B;//线路参数R X B/2 double P_in,Q_in,P_out,Q_out,d_P,d_Q,D_U,d_U;//线路输入输出功率以及线路消耗功率 void Set_node(node nod1,node nod2){ f_node=nod1; s_node=nod2; } }; void fun1(line lin){//由后往前递推功率 double p=lin.P_out; double q=lin.Q_out; double u=lin.s_node.U; lin.d_P=(p*p+q*q)/u/u*lin.R; lin.d_Q=(p*p+q*q)/u/u*lin.X; lin.P_in=lin.d_P+lin.P_out; lin.Q_in=lin.d_Q+lin.Q_out; }; void fun2(line lin){//由前往后推电压 double p=lin.P_in; double q=lin.Q_in; double u=lin.f_node.U; lin.D_U=(p*lin.R+q*lin.X)/u; lin.d_U=(p*lin.X-q*lin.R)/u; lin.s_node.U=sqrt(pow(lin.f_node.U-lin.D_U,2)+pow(lin.d_U,2));//子节点电压 lin.s_node.delta=lin.f_node.delta-atan(lin.d_U/(lin.f_node.U-lin.D_U)); }; void fun3(line lin){//由前往后推电压不计横向分量 double p=lin.P_in; double q=lin.Q_in; double u=lin.f_node.U; lin.D_U=(p*lin.R+q*lin.X)/u;
lin.d_U=(p*lin.X-q*lin.R)/u;? lin.s_node.U=lin.f_node.U-lin.D_U,2;//子节点电压
lin.s_node.delta=lin.f_node.delta-atan(lin.d_U/(lin.f_node.U-lin.D_U));? }; void main(){ int num_l; int num_n;//支路数 节点数 ifstream fin; fin.open(E:\\data.txt); finnum_nnum_l;//输入节点数支路数 ofstream fout; fout.open(E:\\databak.txt); node *nod; nod=new node[num_n];//节点数目 line *lin; lin=new line[num_l];//线路数目 nod[0].delta=0; double *u;//节点额定电压 u=new double[num_n]; for(int i=0;inum_n;i++){ finu[i]; }; double *p;//节点有功功率 p=new double[num_n]; for(int i=0;inum_n;i++){ finp[i]; }; double *q;//节点无功功率 q=new double[num_n]; for(int i=0;inum_n;i++){ finq[i]; }; for(int i=0;inum_n;i++){//设定节点标号 参数
文档评论(0)