版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电力系统潮流计算 c语言程序,两行,大家 可以看看,仔细研究,然后在这个基础上修 改。谢谢#include "stda仅.h"#include <iostream>#include <fstream>#include <process.h>#include"Complex.h"#include"wanjing.h"#include"gauss.h"using namespace std;int _tmain(int argc, _TCHAR* argv口) int i;/i作为整
2、个程序的循环变量int N=Bus:ScanfBusNo();输入节点个数int L=Line:ScanflineNo();输入支路个数if(L&&N)=0)return 0;如果找不到两个文件中的任意一个,退出Line *line=new LineL;动态分配支路结构体Line:ScanfLineData(line);输入支路参数Line:PrintfLineData(line,L); 输出支路 参数Bus *bus=new BusN;动态分配结点结构体for(int i=0;i<N;i+)busi.Sdelta.real=0;busi.Sdelta.image=0;B
3、us:ScanfBusData(bus);输入节点参数Bus:PrintfBusData(bus,N);输出结点参数Complex *X; X=new Complex *N; for(i=0;i<N;i+) Xi=new ComplexN;/ 动态分配二维数组作节点导纳阵Bus:JisuanNodeDnz(X,line,bus,L,N); /计算节点导纳矩阵Bus:PrintfNodeDnz(X,N);输出节点导纳矩阵int NN=(N-1)*2;double *JacAug; JacAug=new double*NN;for(i=0;i<NN;i+) JacAugi=newdou
4、bleNN+1;/为雅可比增广动态分配一 个二维数组double *x;x=new doubleNN;int count=1;LOOP:Bus:JisuanNodeI(X,bus,N);计算节点注入电流Bus:JisuanNodeScal(X,bus,N);计算节点功率Bus:JisuanNodeScal(X,bus,N);/ 计算节 点功率Bus:JisuanNodeSdelta(bus,N); 计算 节点功率差值Bus:PrintfNodeScal(X,bus,N);/ 输出节 点功率差值int icon=wehcon1(bus,N);/whether converbence看迭代是否结束
5、if(icon=1)cout<<"icon="<<icon<<" 进行第 "<<count<<"次迭代"<<endl;Bus:JisuanJacAug(JacAug,X,bus,N); /计算雅可比增广矩阵/ Bus:PrintfJacAug(JacAug,N);gauss:gauss_slove(JacAug,x,NN);/解方程组求出电压差值Bus:ReviseNodeV(bus,x,N); 修正 节点电压/ Bus:PrintfNodeV(bus,N);co
6、unt+; goto LOOP; else for(i=0;i<L;i+)/计算输电线路上 的传输功率 int statemp,endtemp; Complex aa,bb,cc,dd,B; B.real=0;B.image=-linei.B; statemp=linei.start; endtemp=linei.end;aa=Complex二productComplex (Complex:getconj(busstatemp-1.V), B);bb=Complex二subComplex (Complex二getconj(busstatemp-1.V), Complex:getconj(
7、busendtemp-1.V);cc=Complex二productComplex (bb,Complex:getconj(linei.Y); dd=Complex二CaddC(aa,cc);linei.stoe=Complex:productComplex(b usstatemp-1.V,dd);aa=Complex二productComplex (Complex:getconj(busendtemp-1.V), B);bb=Complex二subComplex (Complex二getconj(busendtemp-1.V), Complex:getconj(busstatemp-1.V)
8、;cc=Complex二productComplex (bb,Complex:getconj(linei.Y);dd=Complex:CaddC(aa,cc);linei.etos=Complex:productComplex(b usendtemp-1.V ,dd);cout<<"icon="<<icon<<", 迭代结 束。"<<endl;Bus:JisuanNodeScal(X,bus,N);/ 计算节点功率for(i=0;i<N;i+)busi.Scal.real=busi.Scal.real
9、 + busi.Load.real;/ 发电机功率=注入功率+负荷功率busi.Scal.image= busi.Scal.image+ busi.Load.image;busi.V=Complex:Rec2Polar(busi.V);cout<<"= 节 点 电 压 = 发 电机发 出功率 ="<<endl;for(i=0;i<N;i+) cout<<"节点"<<(i+1)<<'t'Complex:PrintfComplex(busi.V);coutt(busi.Scal
10、.real);coutt(busi.Scal.image); cout<<endl;cout<<"= 线路传输功率 ="<<endl;for(i=0;i<L;i+)/输出线路上的传输功率int statemp,endtemp;statemp=linei.start;endtemp=linei.end;cout<<statemp<<"to"<<endtemp<<'t'Complex二PrintfComplex(Complex:Com DivRea(li
11、nei.stoe,0.01);Complex二PrintfComplex(Complex:Com DivRea(linei.etos,0.01);cout<<endl;return 0;#include "stda仅.h"#include <iostream>#include <fstream>#include <process.h>#include"Complex.h"#include"wanjing.h"#include"gauss.h" using namesp
12、ace std;int _tmain(int argc, _TCHAR* argv)int i;/i作为整个程序的循环变量int N=Bus二ScanfBusNo();输入节点个数int L=Line:ScanflineNo();输入支路个数if(L&&N)=0)return 0;如果找不到两个文件中的任意一个,退出Line *line=new LineL;动态分配支路结构体Line:ScanfLineData(line);输入支路Line:PrintfLineData(line,L); 输出支路 参数Bus *bus=new BusN;动态分配结点结构体for(int i=0
13、;i<N;i+)busi.Sdelta.real=0;busi.Sdelta.image=0;Bus:ScanfBusData(bus);输入节点参数Bus:PrintfBusData(bus,N);输出结点Complex *X; X=new Complex *N; for(i=0;i<N;i+) Xi=new ComplexN;/ 动态分配二维数组作节点导纳阵Bus:JisuanNodeDnz(X,line,bus,L,N); /计算节点导纳矩阵Bus:PrintfNodeDnz(X,N);输出节点导纳矩阵int NN=(N-1)*2;double *JacAug; JacAug
14、=new double *NN;for(i=0;i<NN;i+) JacAugi=newdoubleNN+1;/为雅可比增广动态分配一 个二维数组double *x;x=new doubleNN;int count=1;LOOP:Bus:JisuanNodeI(X,bus,N); 计算节点注入电流Bus:JisuanNodeScal(X,bus,N); 计算 节点功率Bus:JisuanNodeScal(X,bus,N);/ 计算节 点功率Bus:JisuanNodeSdelta(bus,N); 计算节点功率差值Bus:PrintfNodeScal(X,bus,N);/ 输出节 点功率差
15、值int icon=wehcon1(bus,N);/whether converbence看迭代是否结束if(icon=1) cout<<"icon="<<icon<<" 进行第 "<<count<<"次迭代"<<endl;Bus:JisuanJacAug(JacAug,X,bus,N); /计算雅可比增广矩阵/ Bus:PrintfJacAug(JacAug,N);gauss:gauss_slove(JacAug,x,NN);/解方程组求出电压差值Bus:Rev
16、iseNodeV(bus,x,N);/ 修正 节点电压/ Bus:PrintfNodeV(bus,N);count+; goto LOOP; else for(i=0;i<L;i+)/计算输电线路上 的传输功率 int statemp,endtemp; Complex aa,bb,cc,dd,B; B.real=0;B.image=-linei.B;statemp=linei.start; endtemp=linei.end;aa=Complex二productComplex (Complex:getconj(busstatemp-1.V), B);bb=Complex二subCompl
17、ex (Complex二getconj(busstatemp-1.V), Complex:getconj(busendtemp-1.V);cc=Complex二productComplex (bb,Complex:getconj(linei.Y); dd=Complex二CaddC(aa,cc);linei.stoe=Complex:productComplex(b usstatemp-1.V,dd);aa=Complex:productComplex (Complex:getconj(busendtemp-1.V), B);bb=Complex:subComplex (Complex:get
18、conj(busendtemp-1.V), Complex:getconj(busstatemp-1.V);cc=Complex:productComplex (bb,Complex:getconj(linei.Y);dd=Complex:CaddC(aa,cc);linei.etos=Complex:productComplex(b usendtemp-1.V ,dd);cout<<"icon="<<icon<<", 迭代结 束。"<<endl;Bus:JisuanNodeScal(X,bus,N);/
19、计 算节点功率for(i=0;i<N;i+)busi.Scal.real=busi.Scal.real + busi.Load.real;/ 发电机功 率=注入功率+负荷功率busi.Scal.image= busi.Scal.image+ busi.Load.image;busi.V=Complex:Rec2Polar(busi.V);cout<<"= 节 点 电 压 = 发电机发出功率 ="<<endl;for(i=0;i<N;i+) cout<<"节点"<<(i+1)<<
20、9;t'Complex:PrintfComplex(busi.V);coutt(busi.Scal.real);coutt(busi.Scal.image); cout<<endl;)cout<<"= 线路传 输功率 ="<<endl;for(i=0;i<L;i+)/输出线路上的传输功率int statemp,endtemp;statemp=linei.start;endtemp=linei.end;cout<<statemp<<"to"<<endtemp<<
21、;'t'Complex:PrintfComplex(Complex:Com DivRea(linei.stoe,0.01);Complex:PrintfComplex(Complex:Com DivRea(linei.etos,0.01);cout<<endl;)return 0;)#include <cmath>using namespace std;class Complex/定义复数类public:double real;double image;int RecPolar;/0表示直角坐标,1表示极坐标static Complex CaddC(Co
22、mplex c1,Complex c2); 求两个复数和static Complex subComplex(Complex c1,Complex c2);/求两个复数差staticComplexproductComplex(Complex c1,Complex c2); /求两个复数积static Complex divideComplex(Complex c1,Complex c2); /求两个复数商static Complex ComDivRea(Complex c1,double r2);/ 除数static Complex getconj(Complex c1); /求一个复数共轲st
23、atic Complex getinverse(Complex c1);/取倒数static double getComplexReal(Complex c1); 求一个复数实部static double getCompleximage(Complex c1);求一个复数虚部static void PrintfComplex(Complex c1);/显示一个复数static void PrintfmultiComplex(Complex C,int N);/显示多个复数static void zeroComplex(Complex c1);/将复数复零static Complex Rec2P
24、olar(Complex c1);取极坐标Complex() RecPolar=0;) );Complex Complex:Rec2Polar(Complex c1)/极坐标表不Complex Node;Node.real=sqrt(c1.real*c1.real+c1.image *c1.image);Node.image=atan2(c1.image,c1.real)*18 0/3.1415926;Node.RecPolar=1;return Node;)ComplexComplex:CaddC(Complex c1,Complex c2) / 复数加法 (Complex Node;Nod
25、e.real=c1.real+c2.real;Node.image=c1.image+c2.image; return Node;)Complex Complex:subComplex(Complex c1,Complex c2) / 复数减法 (Complex Node;Node.real=c1.real-c2.real;Node.image=c1.image-c2.image; return Node;)ComplexComplex:productComplex(Complex c1,Complex c2) / 复数乘法 (Complex Node;Node.real=c1.real*c2
26、.real-c1.image*c2.i mage;Node.image=c1.image*c2.real+c2.image *c1.real;return Node;)Complex Complex:divideComplex(Complex c1,Complex c2) / 复数除法 (Complex Node;Node.real=(c1.real*c2.real+c1.image*c2.image)/(pow(c2.real,2)+pow(c2.image,2);Node.image=(c1.image*c2.real-c1.real*c2.image)/(pow(c2.real,2)+p
27、ow(c2.image,2); return Node;)Complex Complex:ComDivRea(Complex c1,double r1)/ 复数除数 (Complex Node;Node.real=c1.real/(r1);Node.image=c1.image/(r1); return Node;)Complex Complex:getconj(Complex c1) / 取 共轲(Complex Node;Node.real=c1.real;Node.image=-c1.image;return Node;)Complex Complex:getinverse(Comple
28、x c1)/取倒数(Complex Node;Node.real=1;Node.image=0;Node=(Complex:divideComplex(Node,c1);return Node;)double Complex:getComplexReal(Complexc1) /取实部(return c1.real;)doubleComplex:getCompleximage(Complex c1) /取虚部(return c1.image;)void Complex:PrintfComplex(Complexc1)/按直角坐标输出(if(c1.RecPolar=0) cout.precisi
29、on(6);cout.width(8);cout.setf(ios:right);cout<<c1.real<<" "cout.precision(6);cout.width(8);cout.setf(ios:left);cout<<c1.image<<'i'<<" " else cout<<c1.real<<'t'<<c1.image<<"。if (pivot<fabs(aij)pivot=fabs
30、(aij);pivrowk=i;/ 行 pivcolk1=j;/ 列if(pivot<eps)cout<<"error"<<endl;getchar();exit(0);if(pivrowk!=k)/ 行变换for(j=k;j<(n+1);j+)al=apivrowkj;apivrowkj=akj;akj=al;if(pivcolk1!=k)/ 列变换for(i=0;i<n;i+)al=aipivcolk1;a皿pivcolk1=a皿k;aik=al;if (k!=(n-1)/将矩阵化为上三角形for(i=(k+1);i<n;
31、i+)aik=aik;for(j=k;j<(n+1);j+)aij-=aik*akj/akk;"<<'t'/按极坐标输出)void Complex:zeroComplex(Complexc1)/清零(c1.real=0;c1.image=0; class gauss( public:static void gauss_slove(double*a,double *x,int NN);static void gauss_output();void gauss:gauss_slove(double *a,double*x,int NN) (int n,i
32、,j,k,*pivrow,*pivcol;double eps,pivot,sum,aik,al;n=NN;pivrow=new intn;pivcol=new int *n;for(i=0;i<n;i+)pivcoli=new int2; eps=0.00001;for(k=0;k<(n-1);k+) pivot= fabs(akk);pivrowk=k;/ 行pivcolk0=k;pivcolk1=k;/ 列n*2矩阵for(i=k;i<n;i+)/找最大值放到主 对角线for(j=k;j<n;j+)0.1827090.016894)-0.0310701-0.040
33、2051xn-1=an-1n/an-1n-1;/ 解方程0.156702-0.0355909for(i=(n-2);i>=0;i-)-0.0668055-0.00703229(-0.0886481-0.0129814sum=0;-0.0390805-0.0135062for(j=(i+1);j<n;j+)-0.1023-0.0460568(-0.0342827-0.00382402sum +=aij*xj;-0.102896-0.0184062)-0.0237482-0.00347744xi=(ain-sum)/aii;-0.198318-0.0869347)-5.24266e-0
34、15-9.48909e-015for(k=(n-2);k>=0;k-)-0.0354071-0.0110778(-0.0925078-0.0538236al=xpivcolk1;-1.05629e-015-7.53784e-016xpivcolk1=xpivcolk0;-0.0391348-0.0168097xpivcolk0=al;0.0145297.049e-005)0.00158644-0.00146487-0.0258771-0.00458276cout<<" 节点 电压修正量-0.1095140.00251645"<<endl<
35、<""<<endl;for(i=0;i<n;i+)(icon=1进行第2次迭代cout<<xi<<endl;节点电压修正量cout<<endl<<endl;-0.00164889)-0.000540034-0.00261067-0.00532027-0.00235315-0.00600971-0.00189677-0.00643874=节点功率计算值 =-0.00236310.935261-0.159048-0.006506590.5739090.0789973-0.00170949-0.0028988
36、9-0.00796623-0.0074907-0.0791247-0.0168362-0.00164545-0.436255-0.0580392-0.004854150.0359139-0.0106592-0.00493977-0.229118-0.0885419-0.0119042-0.136179-0.148207-0.003312850.04462430.0111298-0.0175611-0.0223764-0.00695775-0.00207908-0.00336375-0.00530645-0.0147816-0.000326161-0.00640487-0.00251701-0.
37、0169829-0.00175286-0.0174333-0.00307326-0.0163809-0.00232773-0.01758068.74293e-005-0.01920180.000558996-0.0197776-0.000247851-0.0193784-0.00115346-0.0185848-0.00127275-0.0186244-0.00010108-0.01889660.000553585-0.0200901-3.76315e-005-0.02083030.00308341-0.0219386-0.00195916-0.0205356-0.00184757-0.007
38、64010.00197593-0.02455340.00434657-0.027534-0.0239063-0.076014-0.441997 0.000250012-0.228052-0.100078 0.000410707-0.0574970.200039-0.1111730.199792-0.0621041-0.0821379-0.0350785-0.0902383-0.0320461-0.0951562-0.0220362-0.175458 4.72557e-015-0.0320661-0.0871134-7.03489e-017-0.03507690.0002734551.51804
39、e-005-0.0240417-0.10604icon=1进行第3次迭代节点电压修正量=节点功率计算值 =0.98623-0.1341630.583136I0.166278-2.67079e-005-2.30128e-006-2.20543e-005-6.00686e-005-2.33043e-005-6.85601e-005-3.22294e-005-2.61107e-005-2.80198e-005-6.6167e-005-2.34528e-005-0.0119192-0.0160104-0.0750285 3.72542e-005-0.108844-0.105634 0.00037806
40、7-0.01958790.0582563-0.07398460.0227868-0.0158709-0.0248173-0.0179447-0.0578368-0.00890719-0.0337091-0.00693706-0.1116011.21429e-014-0.0159145-0.06673199.24355e-016-0.02285927.10354e-005-6.6188e-006-0.00889343-0.0184098-0.0005440110.000176034-0.000636202-0.000181763-3.81763e-006-5.66132e-005-4.4646e
41、-005-1.74668e-005-4.50947e-005-0.0002865810.986878-0.133979-6.68993e-0050.5830.167193-1.28441e-005-0.024-0.012-5.17172e-005-0.076-0.016-0.000223284-0.442-0.0748606-4.54717e-0051.43501e-0081.07366e-008-2.47586e-005-0.228-0.1094.32335e-007-0.0999999-0.104049-0.0002584944.51318e-0088.98835e-0081.82635e
42、-005-0.0579999-0.0199999-0.0002720510.20.0591018-6.95195e-006-0.112-0.0749997-0.0002519690.20.02425191.11318e-005-0.062-0.016-0.000279418-0.082-0.0255.74737e-005-0.035-0.018-0.000307368-0.0900001-0.0586.86998e-005-0.032-0.00899997-0.000320274-0.095-0.03399995.38112e-005-0.022-0.00699998-0.00031447-0
43、.175-0.1123.59531e-005-6.07156e-015-1.19217e-014-0.00030494-0.032-0.0163.37607e-005-0.087-0.0669999-0.0003074497.03078e-017-9.23979e-0165.26532e-005-0.035-0.0229999-0.0003107211.09492e-0074.45699e-0086.92761e-0051.54958e-009-2.01531e-010-0.000350373-0.024-0.008999945.60942e-005-0.106-0.0189996-0.000
44、409770.000123641-0.000440259icon=0,迭代结束。1.36149e-005|JH电压 发电机发-0.000426973出功率-1.70227e-005节点11.050。98.6878 -13.3979-9.37794e-005节点 21.045-1.846。80=节点功率计算值 =0.00011367529.4193节点31.02384 -3.83352。0节点251.01216 -9.68486。000节点41.01637-4.55698。0节点260.994393-10.1089。000节点51.01-6.48617。50节点271.02012-9.42025
45、。011.51390节点61.01332-5.38073。0节点281.00992-5.86244。000节点71.00489-6.38368。0节点291.00022-10.6579。000节点81.01-5.62974。20节点300.988705-11.5464。19.595100节点91.03905-6.78143。0或路传福功率02to1-57.73735.41674i58.3454节点101.03595-8.69362。0-15.1827i03to1-39.659-7.75964i40.3424节点111.05-4.5962。201.78481i5.910184to2-30.87-9.74186i31.4153节点121.04711-7.80323。03.58352i04to3-37.0772-7.78596i37.259节点131.05-6.34392。206.55964i2.425195to2-44.3717-9.78456i45.2968节点141.03242-8.7401 。04.84242i06to2-38.4766-8.22625i39.3252节点151.02788-8.86784。02.87667i06to4-34.9461.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滁州职业技术学院《小学班级管理》2025-2026学年期末试卷
- 江西师范大学《当代教育心理学》2025-2026学年期末试卷
- 安徽卫生健康职业学院《技术经济学》2025-2026学年期末试卷
- 江西师范大学《国际经济法》2025-2026学年期末试卷
- 徽商职业学院《跨国公司经营与管理》2025-2026学年期末试卷
- 福州外语外贸学院《中国对外贸易史》2025-2026学年期末试卷
- 长春职业技术大学《服装材料学》2025-2026学年期末试卷
- 录井工安全规程竞赛考核试卷含答案
- 福州黎明职业技术学院《方剂学》2025-2026学年期末试卷
- 皖西卫生职业学院《播音主持概论》2025-2026学年期末试卷
- 老年协会换届选举流程指南
- 科技进步奖申报培训
- 噎食患者的护理及处理措施
- 建筑安全责任事故合同书
- 家用电子产品维修工(高级)职业技能鉴定考试题库(含答案)
- 医院培训课件:《感染指标判读》
- (2023版)小学道德与法治三年级上册电子课本
- 天津机电职业技术学院教师招聘考试历年真题
- 林教头风雪山神庙 全国优质课一等奖
- 内部审计如何为管理者服务(一)
- 某集团HRBP方案介绍课件
评论
0/150
提交评论