C語言編寫短路電流計算的程序講課講稿_第1頁
C語言編寫短路電流計算的程序講課講稿_第2頁
C語言編寫短路電流計算的程序講課講稿_第3頁
C語言編寫短路電流計算的程序講課講稿_第4頁
C語言編寫短路電流計算的程序講課講稿_第5頁
已閱讀5頁,還剩15頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。C語言編寫短路電流計算的程序-初始條件:如圖所示電力系統,最大運行方式時,兩個電源同時送電,變壓器并聯運行,忽略線路電阻,線路電抗0.4/km。計算k1和k2點在最大運行方式時的三相短路電流。要求完成的主要任務:(包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)1.寫出三相短路電流的計算方法;2.用C或FORTRAN語言實現三相短路電流的計算程序;3.調試程序并求出計算結果;4.撰寫計算方法原理、計算流程文檔及設計說明書;5.提供計算程序代碼。代碼使用C+編寫的,共有三個文件,請建立工程,一起

2、編譯。這是Plural.hpp#ifndefPLURAL_HPP#definePLURAL_HPP/類名稱:Plural/方法:GetR,GetI,SetRI,SetR,SetI/數據:m_pluralR,m_pluralIclassPluralpublic:Plural();Plural(floatpR,floatpI);Plural();floatGetR()const;floatGetI()const;voidSetRI(floatpR,floatpI);voidSetR(floatpR);voidSetI(floatpI);private:floatm_pluralR;floatm_p

3、luralI;/名稱:復數乘法,PluralMul(Pluralplural1,Pluralplural2)/參數:復數plural1plural2/返回值:復數PluralPluralMul(Pluralplural1,Pluralplural2);/函數名:復數除法,運算浮點數除以復數/參數:num,分子,是一個浮點數。den,分母,是一個復數/返回值:結果的復數PluralPluralDiv(floatnum,Pluralden);/函數名:復數求倒數/參數:den,分母,是一個復數/返回值:此復數的倒數PluralPluralDiv(Pluralplu);/參數:mat為待變換的復數矩

4、陣的數組名,n為階數/返回值:無/說明:變換后的結果依舊保存在mat中voidMatrixInv(Plural*mat,intn);#endif#includeplural.hpp#include#include#include/類名稱:Plural/方法:GetR,GetI,SetRI,SetR,SetI/數據:m_pluralR,m_pluralIPlural:Plural()m_pluralR=0;m_pluralI=0;Plural:Plural(floatpR,floatpI)m_pluralR=pR;m_pluralI=pI;Plural:Plural()floatPlural:G

5、etR()constreturnm_pluralR;floatPlural:GetI()constreturnm_pluralI;voidPlural:SetRI(floatpR,floatpI)m_pluralR=pR;m_pluralI=pI;voidPlural:SetR(floatpR)m_pluralR=pR;voidPlural:SetI(floatpI)m_pluralI=pI;/名稱:復數乘法,PluralMul(Pluralplural1,Pluralplural2)/參數:復數plural1plural2/返回值:復數PluralPluralMul(Pluralplural

6、1,Pluralplural2)Pluralresult;result.SetRI(plural1.GetR()*plural2.GetR()-plural1.GetI()*plural2.GetI(),plural1.GetR()*plural2.GetI()+plural1.GetI()*plural2.GetR();returnresult;/函數名:復數除法,運算浮點數除以復數/參數:num,分子,是一個浮點數。den,分母,是一個復數/返回值:結果的復數PluralPluralDiv(floatnum,Pluralden)Pluralresult;floatk;k=den.GetR(

7、)*den.GetR()+den.GetI()*den.GetI();result.SetR(num*den.GetR()/k);result.SetI(-1.0*num*den.GetI()/k);returnresult;/函數名:復數求倒數/參數:den,分母,是一個復數/返回值:此復數的倒數PluralPluralDiv(Pluralplu)Pluralresult;floatk;k=plu.GetR()*plu.GetR()+plu.GetI()*plu.GetI();result.SetR(plu.GetR()/k);result.SetI(-1.0*plu.GetI()/k);r

8、eturnresult;/說明:以下3個函數組合用來求復數矩陣的逆。double*inv(double*A,double*Ainv,intn);voidmulAB(double*A,double*B,double*C,intam,intan,intbm,intbn);/參數:mat為待變換的復數矩陣的數組名,n為階數/返回值:無/說明:變換后的結果依舊保存在mat中voidMatrixInv(Plural*mat,intn);/矩陣求逆。A為原矩陣,Ainv為求逆之后矩陣,n為階數double*inv(double*A,double*Ainv,intn)int*is,*js,i,j,k,l,u

9、,v;doubled,p;for(i=0;in*n;i+)*(Ainv+i)=*(A+i);is=(int*)malloc(n*sizeof(int);js=(int*)malloc(n*sizeof(int);for(k=0;k=n-1;k+)d=0.0;for(i=k;i=n-1;i+)for(j=k;jd)d=p;isk=i;jsk=j;if(d+1.0=1.0)free(is);free(js);returnNULL;if(isk!=k)for(j=0;j=n-1;j+)u=k*n+j;v=isk*n+j;p=Ainvu;Ainvu=Ainvv;Ainvv=p;if(jsk!=k)fo

10、r(i=0;i=n-1;i+)u=i*n+k;v=i*n+jsk;p=Ainvu;Ainvu=Ainvv;Ainvv=p;l=k*n+k;Ainvl=1.0/Ainvl;for(j=0;j=n-1;j+)if(j!=k)u=k*n+j;Ainvu=Ainvu*Ainvl;for(i=0;i=n-1;i+)if(i!=k)for(j=0;j=n-1;j+)if(j!=k)u=i*n+j;Ainvu=Ainvu-Ainvi*n+k*Ainvk*n+j;for(i=0;i=0;k-)if(jsk!=k)for(j=0;j=n-1;j+)u=k*n+j;v=jsk*n+j;p=Ainvu;Ainvu=

11、Ainvv;Ainvv=p;if(isk!=k)for(i=0;i=n-1;i+)u=i*n+k;v=i*n+isk;p=Ainvu;Ainvu=Ainvv;Ainvv=p;free(is);free(js);returnAinv;/參數:a為原矩陣,b為逆矩陣,c為結果。其他在此都為nvoidmulAB(double*a,double*b,double*c,intam,intan,intbm,intbn)inti,j,l,u;if(an!=bm)printf(不能完成原矩陣和其逆矩陣矩陣相乘n);return;for(i=0;iam;i+)for(j=0;jbn;j+)u=i*bn+j;cu

12、=0.0;for(l=0;lan;l+)cu=cu+ai*an+l*bl*bn+j;return;/復數矩陣求逆。參數:mat為待求矩陣,n為階數voidMatrixInv(Plural*mat,intn)inti,j;doublepluralRnn,pluralInn;double*a=NULL,*b=NULL,*c=NULL;double*resultR=NULL,*resultI=NULL;Pluralresultnn;for(i=0;in;i+)for(j=0;jn;j+)pluralRij=mati*n+j.GetR();pluralIij=mati*n+j.GetI();print

13、f(原始矩陣為:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%10.4f+j%0.4ft,(*pluralR)i*n+j,(*pluralI)i*n+j);printf(n);a=(double*)malloc(n*n*sizeof(double);b=(double*)malloc(n*n*sizeof(double);c=(double*)malloc(n*n*sizeof(double);resultR=inv(*pluralR,a,n);resultI=inv(*pluralI,b,n);if(resultI!=NULL)printf(n求逆之后虛部是:

14、n);if(n%2=0)for(i=0;in;i+)for(j=0;jn;j+)printf(%10.4f+j%0.4ft,resultR=NULL?0:resultRi*n+j,resultI=NULL?0:resultIi*n+j);printf(n);elsefor(i=0;in;i+)for(j=0;jn;j+)printf(%10.4f+j%0.4ft,resultR=NULL?0:resultRi*n+j,resultI=NULL?0:-1.0*resultIi*n+j);printf(n);/測試所求實部逆矩陣/mulAB(*pluralR,a,c,n,n,n,n);/print

15、f(nn求逆后原實部和現在的實部乘積是n);/for(i=0;in;i+)/for(j=0;jn;j+)/printf(%10.4ft,ci*n+j);/printf(n);/測試用所求逆矩陣/mulAB(*pluralI,b,c,n,n,n,n);/printf(nn求逆之后原虛部和現在的虛部乘積是:n);/for(i=0;in;i+)/for(j=0;jn;j+)/printf(%10.4ft,-1.0*ci*n+j);/printf(n);/for(i=0;in;i+)for(j=0;jn;j+)mati*n+j.SetRI(resultR=NULL?0:resultRi*n+j,res

16、ultI=NULL?0:resultIi*n+j);free(a);free(b);free(c);#include#includeplural.hpp/#includeinput.hppusingnamespacestd;voidNodInit()floatg1S,g1X,g2S,g2X,l1L,l1D,l2L,l2D,t1S,t1U,t2S,t2U;coutg1S;coutg1X;coutendl*endlendl;coutg2S;coutg2X;coutendl*endlendl;coutl1L;coutl1D;coutendl*endlendl;coutl2L;coutl2D;cout

17、endl*endlendl;coutt1S;coutt1U;coutendl*endlendl;coutt2S;coutt2U;intmain()NodInit();Pluralmatrix233;matrix200.SetRI(0,1);matrix201.SetRI(0,2);matrix210.SetRI(0,1);matrix211.SetRI(0,1);matrix202.SetRI(0,2);matrix212.SetRI(0,1);matrix220.SetRI(0,3);matrix221.SetRI(0,2);matrix222.SetRI(0,1);MatrixInv(*matrix2,3);printf(n1點短路電

溫馨提示

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

評論

0/150

提交評論