ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:137.65KB ,
资源ID:4033594      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4033594.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电力系统分析大作业报告C++.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电力系统分析大作业报告C++.docx

1、电力系统分析大作业报告C+原创 电力系统分析潮流分析与三相短路计算年级 09级学院 电气与自动化工程学院专业 电气工程及其自动化程序说明:本程序实现了从键盘输入各节点参数,各支路参数,进行潮流计算、三相金属性短路计算,并将结果输出到文件中。节点参数的输入顺序与节点序号无关,支路参数参数的输入同样与其头尾结点的序号无关。节点编号从零开始,中间不能出现间断。由于时间紧迫,没能实现有文件输入数据,以及通过键盘输入命令调整节点参数,很是遗憾。本程序将节点编号(ID)作为作为联系程序各部分的纽带,减小了个部分之间的联系是程序的结构简单化。使用LU解潮流方程,而不是用高斯法,以减少计算量。但关于内存分配还

2、没有优化(毕竟时间紧)。程序中关于函数重载,指针的使用也小有心得。本程序写了整整两个星期,花了很多精力,后很多收获,对潮流计算又有了更深的理解,同时也耽误了好多时间。有得也有失吧程序流程图:程序中参数的意义1. 全局变量nodes_num(int) 节点数目(由外部输入)branchs_num (int) 支路书目(由外部输入)pv_num (int) PV节点数目pq_num (int) PQ节点数目B_angle_num (int) 与相角有关的电导矩阵阶数B_u_num (int) 与电压有关的电导矩阵的阶数array_end (int*) 以某节点为头结点的支路的条数B (double

3、*) 节点电导矩阵G (double*) 节点电抗矩阵b_angle_no (int*) 相角相关矩阵各节点ID数列b_u_no (int) 电压相关矩阵各节点ID数列NB_angle (double*) 相角相关矩阵NB_u (double*) 电压相关矩阵d_angle_angle (double*) 相角变化量数列(其元素为nodes中d_angle_x_u的地址)d_u_u (double*) 电变化量数列(其元素为nodes中d_u的地址)lu_u (double*) 的LU分解矩阵lu_angle (double*) 的LU分解矩阵d_P (double) d_Q (double)

4、fxP (double*) 相角相关矩阵的fx数列(其元素为node中fx_P的地址)fxQ (double*) 电压相关矩阵的fx数列(其元素为node中fx_Q的地址)Zf (double*) 短路点所在的节点阻抗矩阵的列(Zfi0=R,Zfi1=X)Uf (double*) 各节点短路电压矩阵(Ufi0为实部,Zfi1为虚部)outfile (ofstream) 文件输出流nodes_array (Node*) 节点数组(以节点ID为序排列)branchs (Branch*) 支路矩阵(以头结点ID排列)2. Nodeid (int) 节点序号(输入时最小序号为1,内部从0开始)type

5、 (int) 节点类型(平衡节点0,PV节点1,PQ节点2)u (double) 节点电压angle (double) 节点电压相角angle_x_u (double) 相角与电压的乘积xd (double) 发电机直轴电抗pi (double) 发电机输出有功与节点流出有功之差qi (double) 节点流出有功的值d_u (double) 电压变化量d_angle_x_u (double) 电压与相角乘积的变化量 P (double) 计算得节点的净流入有功Q (double) 计算得节点的净流入无功fx_P (double) (Pi-P)/Ufx_Q (double) (Qi-Q)/Uc

6、_nodes (int5) 与本节点相关的节点ID数列(本节点ID为该数列第一个元素)c_nodes_num (int) 本节点相关节点的数目3. Branchshead_id (int) 头结点ID(输入参数)end_id (int) 尾节点ID(输入参数)r (double) 线路阻抗(输入参数)x (double) 线路电抗(输入参数)b_2 (double) 线路并联电纳(输入参数)gii (double) 本支路对相关节点自电导的贡献gij (double) 本支路对相关节点互电导的贡献bii (double) 本支路对相关节点自电纳的贡献bij (double) 本支路对相关节点互

7、电导的贡献程序中函数void creat_B_angle_u(void) 建立void lu(double *a ,double *lu ,int num) 将线性方程组的系数矩阵进行LU分解void soving_equations(double *lu,double *x,double *b,int num) 利用LU矩阵进行回代解方程组void compute_PQ(void) 结算各节点的P、Qvoid creat_mat(double*a,int i,int j); 为矩阵分配内存空间void creat_mat(double*a,int i); 为矩阵分配内存空间void ini_

8、test(void) 用于测试的参数初始化函数void ini(void) 从键盘输入的参数初始化函数void out_mat(double*a,int n1,int n2) 输出矩阵void out_mat(double*a,int n) 输出矩阵void out_mat(double *a,int n); 输出数列void out_paraments(int i) 输出电网潮流结果void out_const_parament(void) 输出B G矩阵等潮流计算恒定参数void compute_new_B(void) 计算考虑发电机和负载后的节点导纳矩阵(含B、G)void comput

9、e_Zf(int id) 计算短路点所在的节点阻抗矩阵的列向量(id为短路点序号)void compute_new_BG(void) 计算考虑发电机和负载后的节点导纳矩阵(含B、G)void a_to_xy(double *a) 将虚数由极坐标表示变为直角坐标表示void xy_to_a(double *a) 将虚数由表示直角坐标变为极坐标表示void add_i(double *a,double *b) 虚数加法运算(参数为直角坐标表示,下同)void add_i(double *c,double *a,double *b) 虚数加法运算void sub_i(double *a,double

10、 *b) 虚数减法运算void sub_i(double *c,double *a,double *b) 虚数减法运算void mul_i(double *a,double *b) 虚数乘法运算void mul_i(double *c,double *a,double *b) 虚数乘法运算void div_i(double *a,double *b) 虚数除法运算void div_i(double *c,double *a,double *b) 虚数除法运算void compute_UI(int id) 计算短路后个点的电压void compute_Ii() 计算短路后各支路点电流潮流计算程序

11、#include#include#includeusing namespace std;/PQ,PV,平衡节点的fxP,fx_Q的求取int nodes_num,branchs_num;/节点总数,支路总数int pv_num,pq_num;/=pv节点数int B_angle_num;/=pv节点数+PQ节点数int B_u_num;/=PQ节点数int *array_end;/以某节点为头结点的树枝的条数double *B,*G;int *b_angle_no,*b_u_no;double *NB_angle,*NB_u;double *d_angle_angle,*d_u_u;doubl

12、e *lu_u,*lu_angle;/lu分解结果double d_P,d_Q,*fxP_angle,*fxQ_u;double *Zf,*Uf;ofstream outfile(E:data.txt);const double e=0.0001;/精确度struct Node int id,type;/平衡节点0,pv节点1,PQ节点2 double u,angle,angle_x_u,xd; double pi,qi; double d_u,d_angle_x_u; double P,Q,fxP,fxQ; int c_nodes5,c_nodes_num;*nodes_array;stru

13、ct Branch int head_id,end_id; double r,x,b_2;/输入参数 double gii,gij;/gb构成y double bii,bij;*branchs;void main() void creat_B_angle_u(void); void lu(double *a ,double *lu ,int num); void soving_equations(double *lu,double *x,double *b,int num); void compute_PQ(void); void creat_mat(double*a,int i,int j)

14、; void creat_mat(double*a,int i); void ini_test(void); void ini(void); void out_mat(double*a,int n1,int n2); void out_mat(double*a,int n); void out_mat(double *a,int n); void out_paraments(int i); void out_const_parament(void); void compute_new_B(void); void compute_Zf(int id); void compute_new_BG(v

15、oid); void a_to_xy(double *a); void xy_to_a(double *a); void add_i(double *a,double *b); void add_i(double *c,double *a,double *b); void sub_i(double *a,double *b); void sub_i(double *c,double *a,double *b); void mul_i(double *a,double *b); void mul_i(double *c,double *a,double *b); void div_i(doubl

16、e *a,double *b); void div_i(double *c,double *a,double *b); void compute_UI(int id); void compute_Ii(); ini(); /*ini_test();*/ B_angle_num=pv_num+pq_num;/计算雅可比矩阵 B_u_num=pq_num; b_angle_no=new intB_angle_num; b_u_no=new intB_u_num; creat_mat(&B,nodes_num,nodes_num); creat_mat(&G,nodes_num,nodes_num)

17、; creat_mat(&NB_angle,B_angle_num,B_angle_num); creat_mat(&lu_angle,B_angle_num,B_angle_num); creat_mat(&NB_u,B_u_num,B_u_num); creat_mat(&lu_u,B_u_num,B_u_num); creat_mat(&d_angle_angle,B_angle_num,1); creat_mat(&d_u_u,B_u_num,1); creat_mat(&fxP_angle,B_angle_num,1); creat_mat(&fxQ_u,B_u_num,1); cr

18、eat_mat(&Zf,nodes_num,2); creat_mat(&Uf,nodes_num,2); for(int i=0;inodes_num;i+) Bi=new doublenodes_num; for(int i=0;inodes_num;i+)/计算全网节点导纳矩阵 B G for(int j=0;jnodes_num;j+) Bij=0; Gij=0; for(int i=0;inodes_num;i+) for(int j=0;jarray_endi;j+) Bibranchsij.end_id=-branchsij.bij; Bbranchsij.end_idi=-br

19、anchsij.bij; Bii+=branchsij.bii; Bbranchsij.end_idbranchsij.end_id+=branchsij.bii; Gibranchsij.end_id=-branchsij.gij; Gbranchsij.end_idi=-branchsij.gij; Gii+=branchsij.gii; Gbranchsij.end_idbranchsij.end_id+=branchsij.gii; creat_B_angle_u(); lu(NB_angle,lu_angle,B_angle_num); lu(NB_u,lu_u,B_u_num);

20、out_const_parament(); int count=0; for(int i=0;i20;i+) int lte=0; count+; compute_PQ(); for(int i=0;iB_angle_num;i+) int this_id=b_angle_noi; nodes_arraythis_id.fxP=(nodes_arraythis_id.pi-nodes_arraythis_id.P)/nodes_arraythis_id.u;/改动- if(abs(nodes_arrayi.fxP)e) lte+; for(int i=0;iB_u_num;i+) int th

21、is_id=b_u_noi; nodes_arraythis_id.fxQ=(nodes_arraythis_id.qi-nodes_arraythis_id.Q)/nodes_arraythis_id.u; if(abs(nodes_arraythis_id.fxQ)=(B_angle_num+B_u_num) break; else soving_equations(lu_angle,d_angle_angle,fxP_angle,B_angle_num); soving_equations(lu_u,d_u_u,fxQ_u,B_u_num); for(int i=0;inodes_num

22、;i+) nodes_arrayi.angle_x_u+=nodes_arrayi.d_angle_x_u; nodes_arrayi.angle=nodes_arrayi.angle_x_u/nodes_arrayi.u; nodes_arrayi.u+=nodes_arrayi.d_u; out_paraments(count); compute_new_BG(); outfile修正后的节点电纳矩阵-endl; out_mat(B,nodes_num); outfile修正后的节点电导矩阵-endl; out_mat(G,nodes_num); compute_Zf(3); comput

23、e_UI(3); for(int i=0;inodes_num;i+) outfile第(i+1)节点 电压: sqrt(pow(Ufi0,2)+pow(Ufi1,2)endl; outfileendl; compute_Ii();void creat_B_angle_u(void) for(int i=0,j=0,k=0;inodes_num;i+)/获得两矩阵元素编号与节点编号的关系 if(nodes_arrayi.type!=0) b_angle_noj=i; j+; if(nodes_arrayi.type=2) b_u_nok=i; k+; for(int i=0;iB_angle_

24、num;i+) for(int j=0;jB_angle_num;j+) NB_angleij=-Bb_angle_noib_angle_noj; d_angle_anglei=&(nodes_arrayb_angle_noi.d_angle_x_u); fxP_anglei=&(nodes_arrayb_angle_noi.fxP); for(int i=0;iB_u_num;i+) for(int j=0;jB_u_num;j+) NB_uij=-Bb_u_noib_u_noj; d_u_ui=&(nodes_arrayb_u_noi.d_u); fxQ_ui=&(nodes_arrayb

25、_u_noi.fxQ); void lu(double *a ,double *lu ,int num) for(int i=0;inum;i+) for(int j=0;jnum;j+) luij=aij; if(ij) for(int k=0;ki;k+) luij-=luik*lukj; luij/=luii; else for(int k=0;kj;k+) luij-=luik*lukj; void soving_equations(double *lu,double *x,double *b,int num) double *y=new doublenum; for(int i=0;

26、inum;i+) yi=bi0; for(int j=0;j=0;i-) xi0=yi; for(int j=i+1;jnum;j+) xi0-=luij*xj0; delete y;void compute_PQ(void) for(int i=0;inodes_num;i+) double tempP=0,tempQ=0; for(int j=0;jnodes_arrayi.c_nodes_num;j+) int c_id=nodes_arrayi.c_nodesj; double angleij=nodes_arrayi.angle-nodes_arrayc_id.angle; temp

27、P+=nodes_arrayc_id.u*(Gic_id*cos(angleij)+Bic_id*sin(angleij); tempQ+=nodes_arrayc_id.u*(Gic_id*sin(angleij)-Bic_id*cos(angleij); nodes_arrayi.P=tempP*nodes_arrayi.u; nodes_arrayi.Q=tempQ*nodes_arrayi.u; void creat_mat(double*a,int i,int j) *a=new double*i; for(int k=0;ki;k+) (*a)k=new doublej;void creat_mat(double*a,int i) *a=new double*i; for(int k=0;ki;k+) (*a)k=new doublei;void ini_test(void) nodes_num=9; pv_num=2; pq_num=6; nodes_array=new Nodenodes_num; branchs=new Branch*nodes_num; for(int i=0;inodes_

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1