潮流計(jì)算電力系統(tǒng)大作業(yè)C編寫(xiě)_第1頁(yè)
潮流計(jì)算電力系統(tǒng)大作業(yè)C編寫(xiě)_第2頁(yè)
潮流計(jì)算電力系統(tǒng)大作業(yè)C編寫(xiě)_第3頁(yè)
潮流計(jì)算電力系統(tǒng)大作業(yè)C編寫(xiě)_第4頁(yè)
潮流計(jì)算電力系統(tǒng)大作業(yè)C編寫(xiě)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 程序設(shè)計(jì)所涉及二叉樹(shù)解釋任意一棵樹(shù)或一個(gè)森林都能唯一地對(duì)應(yīng)一棵二叉樹(shù),由此而編寫(xiě)本程序。本程序采用類(lèi)二叉樹(shù)為整體結(jié)構(gòu),二叉樹(shù)類(lèi)下定義節(jié)點(diǎn)類(lèi),每一條支路均為樹(shù)的一個(gè)節(jié)點(diǎn),支路所有的參數(shù)均作為節(jié)點(diǎn)的屬性,并給節(jié)點(diǎn)加入屬性“支路編號(hào)”,并以支路編號(hào)為依據(jù)構(gòu)建二叉樹(shù),這就要求提前根據(jù)二叉樹(shù)結(jié)構(gòu)給每一個(gè)支路編號(hào)。支路編號(hào)原則:左子樹(shù)上所有編號(hào)均小于其雙親的編號(hào),右子樹(shù)上所有編號(hào)均大于其雙親的編號(hào),為了便于查看,本程序在節(jié)點(diǎn)較少時(shí)編號(hào)從1開(kāi)始,逐個(gè)遞加至支路數(shù);當(dāng)支路較多時(shí),可不必拘泥于逐個(gè)遞加,只要滿足支路編號(hào)原則即可。例如習(xí)題3-4:程序二叉樹(shù)結(jié)構(gòu)示意圖: 本二叉樹(shù)中節(jié)點(diǎn)1即支路1為題目中節(jié)點(diǎn)1與節(jié)

2、點(diǎn)2之間的部分;本二叉樹(shù)中節(jié)點(diǎn)2即支路2為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)3之間的部分;對(duì)于習(xí)題3-3:程序二叉樹(shù)結(jié)構(gòu)示意圖: 本二叉樹(shù)中節(jié)點(diǎn)2即支路2為題目中節(jié)點(diǎn)1與節(jié)點(diǎn)2之間的部分;本二叉樹(shù)中節(jié)點(diǎn)1即支路1為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)3之間的部分;本二叉樹(shù)中節(jié)點(diǎn)3即支路3為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)4之間的部分.拓展:如下多支路網(wǎng)絡(luò):對(duì)于三節(jié)點(diǎn)網(wǎng)絡(luò)需先進(jìn)行以下網(wǎng)絡(luò)處理轉(zhuǎn)化為標(biāo)準(zhǔn)二叉樹(shù),而后進(jìn)行計(jì)算;圖中三角形表明該項(xiàng)阻抗為零,為純導(dǎo)線,并進(jìn)行相應(yīng)參數(shù)補(bǔ)充進(jìn)行計(jì)算。程序說(shuō)明文檔*本程序測(cè)試使用方法:在E盤(pán)根目錄下建立輸入文件: 輸入文件名:input.txt; 將所附算例對(duì)應(yīng)輸入文件內(nèi)容復(fù)制粘貼至上述文件中,在VC+6.

3、0環(huán)境下運(yùn)行cpp文件得出結(jié)果。 輸出文件在E盤(pán)根目錄下 輸出文件名為:data.txt;*程序功能說(shuō)明:本程序可以計(jì)算任意長(zhǎng)度線型開(kāi)始網(wǎng)絡(luò)潮流; 支持多電壓等級(jí)下的計(jì)算; 可在除供電節(jié)點(diǎn)外任意節(jié)點(diǎn)引出負(fù)載;* 輸入格式說(shuō)明:以支路為基本單位,按潮流方向輸入數(shù)據(jù): 以下例示意: 2 /支路個(gè)數(shù) 1,110,118,8.5,20.5,0.000564,0,0,1,0,0 /線路等效的支路 2,11,110,1.22,20.2,0,40,30,10,0.17,1.7 /變壓器等效的支路 . /按此方式知道輸入所有的支路 . /輸入從上到下的順序?yàn)槌绷髟?. /線型開(kāi)式網(wǎng)絡(luò)中的流動(dòng)方向 /* 第一行

4、輸入支路個(gè)數(shù),回車(chē) 第二行至后輸入各個(gè)支路參數(shù),回車(chē)分隔不同支路; 各行輸入的支路參數(shù)順序是: 支路編號(hào),末端電壓,始端電壓,線路等效電阻,線路等效感抗,線路等效容納,末端輸入有功,末端輸入無(wú)功,變比,變壓器有功勵(lì)磁損耗,變壓器無(wú)功勵(lì)磁損耗 對(duì)于線路等效電路:變壓器有功/無(wú)功損耗輸入零,變比輸入1; 對(duì)于變壓器等效電路:所有的參數(shù)均歸算至高壓側(cè),Rt,Xt對(duì)應(yīng)輸入線路等效電阻/感抗的位置,線路等效容抗為零; 對(duì)于個(gè)節(jié)點(diǎn)的引出負(fù)荷:輸入至以此節(jié)點(diǎn)為末節(jié)點(diǎn)的支路的末端輸入有功/無(wú)功部分; */*輸出文件格式說(shuō)明:輸出的內(nèi)容包括 (1)支路信息:每個(gè)支路元件的始端有功、無(wú)功和末端有功、無(wú)功;有功損耗

5、無(wú)功損耗;電壓損耗; (2)全網(wǎng)信息:全網(wǎng)的總電源有功、總負(fù)荷有功、有功損耗、網(wǎng)損率; (3)迭代信息:每次完整迭代后的所有內(nèi)容; 具體在輸出文件中都明確標(biāo)出。*程序中變量定義說(shuō)明:類(lèi)中定義的變量class line_part /定義支路類(lèi) double U2; /支路電壓降落:U0電壓降落橫分量,U1電壓降落縱分量 double k; /變壓器變比 double val; /支路排序 double U_end; /支路末端電壓 double U_begin; /支路首段電壓 double X3; /支路等效阻抗: X0電阻,X1感抗,X2容納 double S_end2; /支路末端功率:S

6、_end0有功,S_end1無(wú)功 double S_begin2; /支路首段功率:S_begin0有功,S_begin1無(wú)功 double S02; /變壓器勵(lì)磁損耗:S00有功,S01無(wú)功 double S_org2; /支路末端負(fù)載:S_org0有功,S_org1無(wú)功 line_part *lchild,*rchild; /支路的后繼兩個(gè)支路class BinTree /定義樹(shù)類(lèi)void PreOrder()PreOrder(root); /樹(shù)的先序遍歷修改電壓void PostOrder()PostOrder(root); /樹(shù)的后序遍歷修改潮流void display()displa

7、y(root); /樹(shù)的先序遍歷顯示數(shù)據(jù)line_part *root; /樹(shù)的根,是一個(gè)支路類(lèi);主函數(shù)中定義的數(shù)據(jù) ofstream outfile; /輸出數(shù)據(jù)流定 ifstream infile; /輸入數(shù)據(jù)流定 const int M(a); /支路個(gè)數(shù)常量 主程序(復(fù)制粘貼到C+就能用)*#include<fstream.h>#include<iostream.h>#include<math.h>double p_cost_all=0;double sqr(double x) /平方計(jì)算函數(shù)return x*x;class line_part /定

8、義支路類(lèi)private: double val; /支路排序 double U_end; /支路末端電壓 double U_begin; /支路首段電壓 double X3; /支路等效阻抗: X0電阻,X1感抗,X2容納 double S_end2; /支路末端功率:S_end0有功,S_end1無(wú)功 double S_begin2; /支路首段功率:S_begin0有功,S_begin1無(wú)功 double S02; /變壓器勵(lì)磁損耗:S00有功,S01無(wú)功 double S_org2; /支路末端負(fù)載:S_org0有功,S_org1無(wú)功 line_part *lchild,*rchild;

9、public: double U2; /支路電壓降落:U0電壓降落橫分量,U1電壓降落縱分量 double k; /變壓器變比public:line_part()val=0;U_end=0;U_begin=0;X0=0;X1=0;X2=0;S_end0=S_org0=0;S_end1=S_org1=0;S_begin0=0;S_begin1=0;k=1;S00=0;S01=0;U0=0;U1=0;lchild = rchild= NULL;line_part(double vall,double u_end=0,double u_begin=0,double r=0, double x=0,d

10、ouble b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0) val=vall; U_end=u_end;U_begin=u_begin;X0=r;X1=x;X2=b;S_end0=S_org0=Pe;S_end1=S_org1=Xe;S_begin0=0;S_begin1=0;k=K;S00=P0; S01=Q0;U0=0;U1=0;lchild = rchild= NULL;friend class BinTree;friend void pass_U(line_part*a,line_part*b,line_p

11、art*c); /電壓傳遞函數(shù) friend void pass_w(line_part*a,line_part*b,line_part*c); /功率傳遞函數(shù)friend void pass_U2(line_part*a,line_part*b); /電壓傳遞函數(shù) friend void pass_w2(line_part*a,line_part*b); /功率傳遞函數(shù)void Sbegin() /支路首段功率計(jì)算函數(shù)double Uend,I2;Uend=k*U_end;I2=(sqr(S_end0)+sqr(S_end1-sqr(U_end)*X2/2)/sqr(Uend);S_begi

12、n0=S_end0+I2*X0+S00;S_begin1=S_end1+I2*X1+S01-sqr(U_begin)*X2/2-sqr(U_end)*X2/2; ;void Uend() /支路末端電壓計(jì)算函數(shù) double U_heng(0),U_zong(0);double p_begin,q_begin;p_begin=S_begin0-S00;q_begin=S_begin1+sqr(U_begin)*X2/2-S01;U_heng=(p_begin*X0+q_begin*X1)/U_begin; /U_heng即是u2U_zong=(p_begin*X1-q_begin*X0)/U_

13、begin; /U_zong即是u2U_end=sqrt(sqr(U_begin-U_heng)+sqr(U_zong)/k;U0=U_heng;U1=U_zong;double get_val() /返回支路編號(hào)if(this=0)return -1;elseif(val>0&&val<100) return val;else return -1;double get_Uend() /返回支路末端電壓 return U_end;double get_Ubegin() /返回支路首段電壓return U_begin; double get_Pbegin() /返回支

14、路首段有功return S_begin0;double get_Pend() /返回支路末端有功 return S_end0;double get_Qbegin() /返回支路首段無(wú)功return S_begin1;double get_Qend() /返回支路末端無(wú)功 return S_end1;double get_Pcost() /返回支路有功損耗 return S_begin0-S_end0;double get_Qcost() /返回支路無(wú)功損耗 return S_begin1-S_end1;line_part *get_lchild() /返回支路無(wú)功損耗 return lchil

15、d;line_part *get_rchild() /返回支路無(wú)功損耗 return rchild;void pass_U(line_part *a,line_part *b,line_part *c)(*c).U_begin=(*a).U_end;(*b).U_begin=(*a).U_end;void pass_w(line_part *a,line_part *b,line_part *c)(*a).S_end0=(*b).S_begin0+(*c).S_begin0+(*a).S_org0;(*a).S_end1=(*b).S_begin1+(*c).S_begin1+(*a).S_o

16、rg1;void pass_U2(line_part *a,line_part *b)(*b).U_begin=(*a).U_end;void pass_w2(line_part *a,line_part *b)(*a).S_end0=(*b).S_begin0+(*a).S_org0;(*a).S_end1=(*b).S_begin1+(*a).S_org1;class BinTreepublic:friend void pass_U(line_part*,line_part*,line_part*); /電壓傳遞函數(shù)friend void pass_w(line_part*,line_pa

17、rt*,line_part*); /功率傳遞函數(shù)BinTree()line_part *aa=new line_part(0,0,0,0,0,0,0,0,0,0,0); root = aa; line_part *Getroot()return root;void insertline_part(double vall,double u_end=0,double u_begin=0,double r=0, double x=0,double b=0,double Pe=0,double Xe=0, double K=0,double P0=0,double Q0=0)insertline_pa

18、rt(root,vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);void PreOrder()PreOrder(root);void PostOrder()PostOrder(root);void display()display(root);private:line_part *root;void insertline_part(line_part *&t,double vall,double u_end,double u_begin,double r, double x,double b,double Pe,double Xe, double K,d

19、ouble P0,double Q0);void PreOrder(line_part *&t);void PostOrder(line_part *t);void display(line_part *&t);void BinTree:insertline_part(line_part *&t, double vall,double u_end=0,double u_begin=0,double r=0, double x=0,double b=0,double Pe=0,double Xe=0, double K=0,double P0=0,double Q0=0)

20、 /插入節(jié)點(diǎn)double ass=t->get_val();if(t=0|t->get_val()<=0) t=new line_part (vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);else if(vall<t->get_val() insertline_part(t->lchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);else insertline_part(t->rchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);/vo

21、id BinTree:display(line_part *&t)if(t->get_val()>0&&t->get_val()<100)display(t->lchild);display(t->rchild);ofstream outfile1; outfile1.open("e:data.txt",ios:ate); p_cost_all +=t->get_Pcost();double U; / 計(jì)算并存放各個(gè)節(jié)點(diǎn)的電壓相角(始端為零)U=atan2(t->U1,(t->get_Ubegin

22、()-t->U0)/3.1415926*180;outfile1<<"支路"<<t->get_val()<<"電壓相角"<<" "<<U<<endl;outfile1<<" "<<"首端電壓"<<" "<<t->get_Ubegin()<<endl;/計(jì)算并存放各個(gè)支路的首端電壓outfile1<<" &q

23、uot;<<"末端電壓"<<" "<<t->get_Uend()<<endl; /計(jì)算并存放各個(gè)支路的末端電壓double U_cost; /計(jì)算并存放各個(gè)支路的電壓損耗U_cost=t->get_Ubegin()-t->get_Uend();outfile1<<" "<<"電壓損耗"<<" "<<U_cost<<endl;outfile1<<" &

24、quot;<<"始端有功"<<" "<<t->get_Pbegin()<<endl;/計(jì)算并存放各個(gè)支路的首端電壓outfile1<<" "<<"始端無(wú)功"<<" "<<t->get_Qbegin()<<endl; /計(jì)算并存放各個(gè)支路的末端電壓outfile1<<" "<<"末端有功"<<"

25、 "<<t->get_Pend()<<endl;/計(jì)算并存放各個(gè)支路的首端電壓outfile1<<" "<<"末端無(wú)功"<<" "<<t->get_Qend()<<endl; /計(jì)算并存放各個(gè)支路的末端電壓double P_cost; /計(jì)算并存放各個(gè)支路的有功損耗P_cost=t->get_Pcost();outfile1<<" "<<"有功損耗"<&l

26、t;" "<<P_cost<<endl;double Q_cost; /計(jì)算并存放各個(gè)支路的無(wú)功損耗Q_cost=t->get_Qcost();outfile1<<" "<<"無(wú)功損耗"<<" "<<Q_cost<<endl;outfile1.close();/void BinTree:PreOrder(line_part *&t) /先序遍歷二叉樹(shù)修改電壓if(t->get_val()>0&&am

27、p;t->get_val()<100)if(t->get_lchild()->get_val()>0&&t->get_lchild()->get_val()<100)if(t->get_rchild()->get_val()>0&&t->get_rchild()->get_val()<100)t->Uend();pass_U(t,t->lchild,t->rchild);t->lchild->Uend();t->rchild->Uend(

28、);elset->Uend();pass_U2(t,t->lchild);t->lchild->Uend();elseif(t->get_rchild()->get_val()>0&&t->get_rchild()->get_val()<100)t->Uend();pass_U2(t,t->rchild);t->rchild->Uend();elsePreOrder(t->lchild);PreOrder(t->rchild);void BinTree:PostOrder(line_

29、part *t) /后序遍歷二叉樹(shù)修改潮流if(t->get_val()>0&&t->get_val()<100)PostOrder(t->lchild);PostOrder(t->rchild);if(t->get_lchild()->get_val()>0&&t->get_lchild()->get_val()<100)if(t->get_rchild()->get_val()>0&&t->get_rchild()->get_val()<

30、;100)t->lchild->Sbegin();t->rchild->Sbegin();pass_w(t,t->lchild,t->rchild); t->Sbegin();elset->lchild->Sbegin();pass_w2(t,t->lchild);t->Sbegin();elseif(t->get_rchild()->get_val()>0&&t->get_rchild()->get_val()<100)t->rchild->Sbegin();pa

31、ss_w2(t,t->rchild); t->Sbegin();else;void main()ofstream outfile; /輸出數(shù)據(jù)流定義outfile.open("e:data.txt"); outfile.clear();outfile.close();ifstream infile;infile.open("e:input.txt"); /輸入數(shù)據(jù)流定義int a;int l(0);char b; infile>>a; cout<<"節(jié)點(diǎn)個(gè)數(shù) "<<a<<en

32、dl; const int M(a); /支路節(jié)點(diǎn)數(shù)常量 double *A=new double10*M; /輸入流輸入各支路數(shù)據(jù)數(shù)組 while(l<11*M) infile>>Al; infile.get(b); l+; ;outfile.open("e:data.txt",ios:ate); outfile<<"節(jié)點(diǎn)個(gè)數(shù) "<<a<<endl;outfile<<endl;outfile.close(); BinTree elec;for(int i=0;i<M;i+) /添加節(jié)點(diǎn)elec.insertline_part(A11*i+0,A11*i+1,A11*i+2,A11*i+3,A11*i+4,A11*i+5,A11*i+6,A11*i+7,A11*i+8,A11*i+9,A

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。