2022年潮流程序 .pdf

上传人:H****o 文档编号:33388086 上传时间:2022-08-10 格式:PDF 页数:18 大小:114.46KB
返回 下载 相关 举报
2022年潮流程序 .pdf_第1页
第1页 / 共18页
2022年潮流程序 .pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《2022年潮流程序 .pdf》由会员分享,可在线阅读,更多相关《2022年潮流程序 .pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 电力系统分析潮流计算潮流计算框图:输入电网节点注入数据计算节点导纳矩阵参数设置节点电压初值设置 k=0 及最大迭代次数kmax 计算 fi(x(k)以及雅各比矩阵x(k+1)=x(k)+dx(k) 求解修正方程获得dx max|fi(x(k)|kmax? 输出潮流不收敛信息结束N Y N Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 2 程序部分:#include #include #include FuShu.h

2、#include #include using namespace std; double Function1(PowerGrid &y,double *e,double *f,double *w,double *P,double *Q,double *U,int n,int m); void Function2(int n,double *pa); void Function3(int n,int m,double *Ya,PowerGrid &Y,double *e,double *f); void Function4(int &n); void Function5(int k,doubl

3、e *ya,int n,PowerGrid &y,FuShu *z); void Function6(double *e,double *f,double *P,double *Q,PowerGrid &y,int n); void Function7(double *e,double *f,double *P,double *Q,PowerGrid &y,int n,int m); void Function8(PowerGrid &y,double *e,double *P,double *Q,double *U,int n,int m); void Function9(FuShu &If

4、,int &k,double *U,FuShu *z,FuShu zf,double *e,double *f,int n); void main() int n(0),m; int shuliang(0); double MAX(0.0); int i,j; int kmax(4); double *e,*de,*f,*df,*P,*dP,*Q,*dQ,*U,*dU2; double h=1e-5; double *w,*ef,*Ya; int tell(1); FuShu *Z; int k(4); FuShu If(0,0),Zf(0,0); char nomeaning; Functi

5、on4(n); P=new double n+1; Q=new double n+1; U=new double n+1; Z=new FuShu n+1; PowerGrid Y(n); Y.FromFile(Data1.txt); Y.FromFile(Data4.txt); coutnn节点导纳矩阵实部G 为:endl; Y.PrintG(); coutnn节点导纳矩阵虚部B 为:endl; Y.PrintB(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 1

6、8 页 - - - - - - - - - 3 coutiPjQjUj; if(Uj=0) m+; j+; fin2.close(); e=new double n+1; f=new double n+1; de=new double n+1; df=new double n+1; dU2=new double n+1; dP=new double n+1; dQ=new double n+1; ifstream fin3; fin3.open(Data3.txt); while(!fin3.eof() for(i=1;iei; dU2i=dPi=dQi=0.0; for(i=1;ifi; f

7、or(i=1;in+1;i+) dei=dfi=0.0; fin3.close(); w=new double 2*n-1; ef=new double 2*n-1; Ya=new double*2*n+1; for(i=1;i2*n+1;i+) *(Ya+i)=new double 2*n+1; if(ih) shuliang+; fout.open(out.txt); Function3(n,m,Ya,Y ,e,f); for(i=1;i2*n-1;i+) for(j=1;j2*n-1;j+) foutYaij ; coutendl; fout.close(); i=1; fin4.ope

8、n(out.txt); while(i2*n-1) for(j=1;jYaij; i+; fin4.close(); Function2(2*n-2,Ya); for(i=1;i2*n-1;i+) for(j=1;j2*n-1;j+) efi+=Yaij*wj; for(i=1;i2*n-1;i+) efi=-efi; for(i=2;in+1;i+) dei=efi-1; dfi=efi-1+n-1; for(i=1;in+1;i+) ei=ei+dei; fi=fi+dfi; MAX=Function1(Y,e,f,w,P ,Q,U,n,m); for(i=1;ikmax-1) break

9、; cout迭代次数为 :shuliangendl; cout各节点电压为:endl; for(i=1;in+1;i+) cout 节点 i: e= setw(10)eisetw(10)f= fiendl; Function6(e,f,P,Q,Y ,n); Function7(e,f,P,Q,Y ,n,m); cout极坐标形式为 :endl; for(i=1;in+1;i+) ei=sqrt(ei*ei+fi*fi); fi=atan(fi/ei); for(i=1;in+1;i+) cout节点i: 幅值: setw(10)ei 相角: setw(10)fiendl; cout各节点功率为

10、:endl; for(i=1;in+1;i+) cout 节 点 i: 有 功 功 率 :setw(10)Pi 无 功 功 率 : setw(10)Qiendl; Function8(Y,e,P,Q,U,n,m); Function5(k,Ya,n,Y ,Z); cout节电阻抗矩阵的第k列为 :endl; for(i=1;in+1;i+) coutsetw(5); Zi.Print(); coutendl; coutendl; Function9(If,k,U,Z,Zf,e,f,n); coutnn短路电流为: ; If.Print(); coutendl; cout短路后各节点电压为:n;

11、 for(i=1;in+1;i+) cout节点i: 幅值: setw(12)ei 相角: setw(10)fiendl; cout短路点为 :kendl; delete P; delete dP; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 6 delete Q; delete dQ; delete e; delete de; delete f; delete df; delete U; delete dU2; dele

12、te w; delete ef; delete Z; Y.Deletep(); for(i=1;inomeaning; double Function1(PowerGrid &y,double *e,double *f,double *w,double *P,double *Q,double *U,int n,int m) int i,j; double temp2(0),temp3(0.0),temp(0); for(i=2;in+1;i+) for(j=1;jn+1;j+) temp2+=(y.pij.shibu*ej-y.pij.xubu*fj); temp3+=(y.pij.shibu

13、*fj+y.pij.xubu*ej); temp=Pi-ei*temp2-fi*temp3; wi-1=temp; temp3=temp2=0.0; temp2=temp3=0.0; for(i=n-m+1;in+1;i+) for(j=1;jn+1;j+) temp2+=(y.pij.shibu*ej-y.pij.xubu*fj); temp3+=(y.pij.shibu*fj+y.pij.xubu*ej); temp=Qi-fi*temp2+ei*temp3; wi+m-1=temp; temp3=temp2=0.0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - -

14、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 7 temp2=temp3=0.0; for(i=2;in-m+1;i+) temp=Ui*Ui-ei*ei-fi*fi; wn+m+i-2=temp; temp2=0; for(i=1;itemp2) temp2=fabs(wi); return temp2; void Function2(int n,double *pa) int i; double *pb; pb=new double*n+1; for(i=1;in+1;i+) *(pb+i

15、)=new doublen+1; double *pe; pe=new double*n+1; for(i=1;in+1;i+) *(pe+i)=new doublen+1; int j,k,l; double m(1.0),h(1.0); for(i=1;in+1;i+) for(j=1;jn+1;j+) if(j!=i) peij=0; else peij=1; for(i=1;in+1;i+) for(j=1;jn+1;j+) if(paij!=0.000) m=paij; k=j; break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

16、- - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 8 if(j=(n+1) k=n+1; break; for(j=1;jn+1;j+) paij/=m; peij/=m; for(l=1;ln+1;l+) h=palk; if(l!=i) for(j=1;jn+1;j+) palj-=(h*paij); pelj-=(peij*h); if(kn+1) for(i=1;in+1;i+) for(j=1;jn+1;j+) if(paij!=0.0) k=j; break; for(j=1;jn+1;j+) pbkj=

17、peij; else cout矩阵不可逆!endl; for(i=1;in+1;i+) for(j=1;jn+1;j+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 9 paij=pbij; for(i=1;in+1;i+) delete *(pb+i); delete *(pe+i); delete pb; delete pe; void Function3(int n,int m,double *Ya,PowerGri

18、d &Y,double *e,double *f) int i,j,k; double temp1=0,temp2=0; double *H,*N,*M,*L,*R,*S; H=new double*n; N=new double*n; for(i=1;in;i+) *(H+i)=new doublen; *(N+i)=new doublen; M=new double*m+1; L=new double*m+1; for(i=1;im+1;i+) *(M+i)=new doublen; *(L+i)=new doublen; R=new double*n-m; S=new double*n-

19、m; for(i=1;in-m;i+) *(R+i)=new doublen; *(S+i)=new doublen; temp1=temp2=0.0; for(i=1;in;i+) for(j=1;jn;j+) if(j+1)!=(i+1) Hij=-(Y.pi+1j+1.shibu*ei+1+Y.pi+1j+1.xubu*fi+1); Nij=(Y.pi+1j+1.xubu*ei+1-Y.pi+1j+1.shibu*fi+1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9

20、 页,共 18 页 - - - - - - - - - 10 else for(k=1;kn+1;k+) temp1+=(Y.pi+1k.shibu*ek-Y.pi+1k.xubu*fk); temp2+=(Y.pi+1k.shibu*fk+Y.pi+1k.xubu*ek); Hij=-temp1-(Y.pi+1i+1.shibu*ei+1+Y.pi+1i+1.xubu*fi+1); Nij=-temp2+(Y.pi+1i+1.xubu*ei+1-Y.pi+1i+1.shibu*fi+1); temp1=temp2=0.0; temp1=temp2=0.0; temp1=temp2=0.0;

21、for(i=1;im+1;i+) for(j=1;jn;j+) if(j+1)!=(n-m+i) Mij=Y.pn-m+ij+1.xubu*en-m+i-Y.pn-m+ij+1.shibu*fn-m+i; Lij=Y.pn-m+ij+1.shibu*en-m+i+Y.pn-m+ij+1.xubu*fn-m+i; else for(k=1;kn+1;k+) temp1+=(Y.pn-m+ik.shibu*fk+Y.pn-m+ik.xubu*ek); temp2+=(Y.pn-m+ik.shibu*ek-Y.pn-m+ik.xubu*fk); Mij=temp1+Y.pn-m+in-m+i.xub

22、u*en-m+i-Y.pn-m+in-m+i.shibu*fn-m+i; Lij=-temp2+Y.pn-m+in-m+i.shibu*en-m+i+Y.pn-m+in-m+i.xubu*fn-m+i; temp1=temp2=0.0; temp1=temp2=0.0; temp1=temp2=0.0; for(i=1;in-m;i+) for(j=1;jn;j+) if(j!=i) Rij=0.0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - -

23、 - - - - - - 11 Sij=0.0; else Rii=-2*ei+1; Sii=-2*fi+1; for(i=1;in;i+) for(j=1;j2*n-1;j+) if(jn) Yaij=Hij; else Yaij=Nij-n+1; for(i=n;in+m;i+) for(j=1;j2*n-1;j+) if(jn) Yaij=Mi-n+1j; else Yaij=Li-n+1j-n+1; for(i=n+m;in*2-1;i+) for(j=1;j2*n-1;j+) if(jn) Yaij=Ri-n-m+1j; else Yaij=Si-n-m+1j-n+1; for(i=

24、1;in;i+) delete *(H+i); delete *(N+i); delete H; delete N; for(i=1;im+1;i+) delete *(M+i); delete *(L+i); delete M; delete L; for(i=1;istendY.shibuY.xubuB2k; if(stn) n=st; if(endn) n=end; while(!fin2.eof() fin2stendY.shibuY.xubuB2k; if(stn) n=st; if(endn) n=end; fin1.close(); fin2.close(); void Func

25、tion5(int k,double *ya,int n,PowerGrid &y,FuShu *z) int i,j; for(i=1;i2*n+1;i+) for(j=1;j2*n+1;j+) if(i=n&j=n) yaij=y.pij.shibu; if(in) yaij=-y.pij-n.xubu; if(in&jn&jn) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 13 yaij=y.pi-nj-n.shi

26、bu; Function2(2*n,ya); for(i=1;in+1;i+) zi.shibu=yaik; zi.xubu=yai+nk; void Function6(double *e,double *f,double *P,double *Q,PowerGrid &y,int n) double temp1(0),temp2(0); int j; for(j=1;jn+1;j+) temp1+=(y.p1j.shibu*ej-y.p1j.xubu*fj); temp2+=(y.p1j.shibu*fj+y.p1j.xubu*ej); P1=e1*temp1+f1*temp2; Q1=f

27、1*temp1-e1*temp2; temp1=temp2=0.0; void Function7(double *e,double *f,double *P,double *Q,PowerGrid &y,int n,int m) int i,j; double temp1(0),temp2(0); for(i=2;in-m+1;i+) for(j=1;jn+1;j+) temp1+=(y.pij.shibu*ej-y.pij.xubu*fj); temp2+=(y.pij.shibu*fj+y.pij.xubu*ej); Qi=fi*temp1-ei*temp2; temp1=temp2=0

28、.0; void Function8(PowerGrid &y,double *e,double *P,double *Q,double *U,int n,int m) y.FromFile(Data5.txt); int num(0),i; for(i=1;in+1;i+) if(Pi=0&Ui!=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - 14 num=i; break; if(num!=(n+1) y.pnu

29、mnum.shibu+=fabs(Pnum)/(enum*enum); y.pnumnum.xubu+=(Qnum)/(enum*enum); for(i=n-m+1;in+1;i+) y.pii.shibu+=fabs(Pi)/(ei*ei); y.pii.xubu+=(Qi)/(ei*ei); void Function9(FuShu &If,int &k,double *U,FuShu *z,FuShu zf,double *e,double *f,int n) int i; FuShu t(0,0); zk=zk+zf; zk.ToRad(); If.shibu=ek/(zk.shib

30、u); If.xubu=fk-zk.xubu; for(i=1;in+1;i+) zi.ToRad(); t.shibu=zi.shibu*If.shibu; t.xubu=zi.xubu+If.xubu; t.d=1; t.ToShiXu(); ei=ei*cos(fi); fi=ei*sin(fi); ei=ei-t.shibu; fi=fi-t.xubu; ei=sqrt(ei*ei+fi*fi); fi=atan(fi/ei); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

31、 14 页,共 18 页 - - - - - - - - - 15 程序附加部分:定义复数运算:#include #include #include #include using namespace std; class FuShu public: double shibu; double xubu; int d; FuShu() shibu=0; xubu=0; d=0; FuShu Set(double s,double x) return FuShu(s,x); FuShu(double s,double x) shibu=s; xubu=x; d=0; FuShu() void Pri

32、nt() cout=0) cout+xubuj; else coutxubud!=1) this-shibu=sqrt(shibu*shibu+xubu*xubu); this-xubu=atan(xubu/shibu); this-d=!d; void ToShiXu() if(this-d!=0) this-shibu=shibu*cos(xubu); this-xubu=shibu*sin(xubu); this-d=!d; ; class PowerGrid public: int NodeNumber; FuShu *p; PowerGrid(int nn) NodeNumber=n

33、n; p=new FuShu*NodeNumber+1; for(int i=0;iNodeNumber+1;i+) *(p+i)=new FuShuNodeNumber+1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - 17 void FromFile(char s20) ifstream fin(s); int startpoint=1,endpoint=1; double B2=0,k=1; FuShu Y(0,0

34、),YB; int i=0; while(istartpoint; finendpoint; finY.shibuY.xubuB2k; YB=YB.Set(0.0,B2); if(k!=0&startpoint!=0&endpoint!=0) pstartpointstartpoint=pstartpointstartpoint+Y.DaoShu(); pendpointendpoint=pendpointendpoint+(Y.Kbei(k*k).DaoShu(); pstartpointendpoint=pstartpointendpoint-(Y.Kbei(k).DaoShu(); pe

35、ndpointstartpoint=pendpointstartpoint-(Y.Kbei(k).DaoShu(); if(k=0&startpoint!=0&endpoint!=0) pstartpointstartpoint=pstartpointstartpoint+Y.DaoShu()+YB; pendpointendpoint=pendpointendpoint+Y.DaoShu()+YB; pstartpointendpoint=pstartpointendpoint-Y.DaoShu(); pendpointstartpoint=pendpointstartpoint-Y.Dao

36、Shu(); if(startpoint!=0&endpoint=0) pstartpointstartpoint=pstartpointstartpoint+Y.DaoShu(); fin.close(); void Deletep() for(int i=1;iNodeNumber+1;i+) delete *(p+i); delete p; void Print() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 18

37、 for(int i=1;i=NodeNumber;i+) for(int j=1;j=NodeNumber;j+) pij.Print(); cout ; coutendl; void PrintG() for(int i=1;i=NodeNumber;i+) for(int j=1;j=NodeNumber;j+) coutsetw(10)pij.shibu; /cout ; coutendl; void PrintB() for(int i=1;i=NodeNumber;i+) for(int j=1;j=NodeNumber;j+) coutsetw(10)pij.xubu; /cout ; coutendl; ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁