武漢理工大學(xué)電力系統(tǒng)分析C程序-短路電流計(jì)算_第1頁(yè)
武漢理工大學(xué)電力系統(tǒng)分析C程序-短路電流計(jì)算_第2頁(yè)
武漢理工大學(xué)電力系統(tǒng)分析C程序-短路電流計(jì)算_第3頁(yè)
武漢理工大學(xué)電力系統(tǒng)分析C程序-短路電流計(jì)算_第4頁(yè)
武漢理工大學(xué)電力系統(tǒng)分析C程序-短路電流計(jì)算_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

5.C語(yǔ)言實(shí)現(xiàn)三相短路電流的計(jì)算程序

代碼使用C++編寫的:

#ifndefPLURAL_HPP

#definePLURAL_HPP

〃類名稱:Plural

〃方法:GctR,GctI,SctRI,SctR,SctI

〃數(shù)據(jù):m_pluralR,m_pluralI

classPlural

(

public:

Plural();

Plural(floatpR,floatpl);

~Plural();

floatGetR()const;

floatGctl()const;

voidSetRKfloatpR,floatpl);

voidSetR(floatpR);

voidSeil(floatpl);

private:

floatm_pluralR;

floatm_plurall;

};

//名稱:復(fù)數(shù)乘法,PluralMul(Pluralplural1,Pluralplural2)

〃參數(shù):復(fù)數(shù)plural1plural2

〃返回值:復(fù)數(shù)

PluralPluralMuKPluralplural1.Pluralplural2);

〃函數(shù)名:復(fù)數(shù)除法,運(yùn)算浮點(diǎn)數(shù)除以復(fù)數(shù)

〃參數(shù):num,分子,是一個(gè)浮點(diǎn)數(shù)。den,分母,是一個(gè)復(fù)數(shù)

〃返回值:結(jié)果的復(fù)數(shù)

PluralPluralDiv(floatnum,Pluralden);

〃函數(shù)名:復(fù)數(shù)求倒數(shù)

〃參數(shù):den,分母,是一個(gè)復(fù)數(shù)

〃返回值:此復(fù)數(shù)的倒數(shù)

PluralPluralDiv(Pluralplu);

〃參數(shù):mal為待變換的復(fù)數(shù)矩陣的數(shù)組名,n為階數(shù)

〃返回值:無(wú)

〃說明:變換后的結(jié)果依舊保存在mal中

voidMatrixInv(Plural*mat,intn):

#endif

#inchide"plural.hpp"

#include<stdio.h>

#include<stdlib.h>

#includc<math.h>

〃類名稱:Plural

〃方法:GetR,GetI,SetRI,SetR,SetI

//數(shù)據(jù):m_pkiralR,m_pkirail

Plural::Plural()

(

m_pluralR=0;

m_plurall=0;

)

Plural::Plural(floatpR,floatpl)

(

m_pluralR=pR;

m_plurall=pl;

)

Plural::~Plural(){}

floatPlural::GetR()const

(

returnm_pluralR;

}

floatPlural::GetI()const

{

returnm_plurall;

)

voidPlural::SctRI(floatpR.floatpl)

(

m_pkiralR=pR;

m_plurall=pl;

)

voidPlural::SetR(floatpR)

(

m_pluralR=pR;

)

voidPlural::Sctl(floatpl)

{

m_pkirall=pl;

)

〃名稱:復(fù)數(shù)乘法,PluralMul(Pluralplural1,Pluralpkiral2)

〃參數(shù):復(fù)數(shù)plural1plural2

〃返回值:復(fù)數(shù)

PluralPluralMul(Pluralplural1,Pluralplura12)

(

Pluralresult;

result.SetRI(plural1.GetR()*plural2.GetR()-plural1.Getl()*plura!2.GetI(),pluralI.GetR()*plural2.Ge(I()+

plurall.GetIO*plural2.GetR());

returnresult;

)

〃函數(shù)名:復(fù)數(shù)除法,運(yùn)算浮點(diǎn)數(shù)除以復(fù)數(shù)

〃參數(shù):num,分子,是一個(gè)浮點(diǎn)數(shù)。den,分母,是一個(gè)復(fù)數(shù)

〃返回值:結(jié)果的復(fù)數(shù)

PluralPluralDiv(floatnum.Pluralden)

Pluralresult;

floatk;

k=den.GetR()*den.GetR()+den.GetI()*dcn.GetI();

result.SetR(num*den.GetR()/k);

rcsult.Sctl(-1.O*nuin*dcn.GctlO/k);

returnresult;

I

〃函數(shù)名:復(fù)數(shù)求倒數(shù)

//參數(shù):den,分母,是一個(gè)復(fù)數(shù)

〃返回值:此復(fù)數(shù)的倒數(shù)

PluralPluralDiv(Pluralplu)

(

Pluralresult;

floatk;

k=plu.GetR()*plu.GeiR()+plu.GelI()*plu.GelI();

result.SetR(pki.GetR()/k);

resuli.SeiI(-1.O^plu.GeilO/k);

returnresult;

)

〃說明:以下3個(gè)函數(shù)組合用來(lái)求復(fù)數(shù)矩陣的逆。

double*inv(double*A,double*A:nv,intn);

voidmulAB(double*A,double*B,double*C,iniam,inlan,inlbm,inlbn);

〃參數(shù):mat為待變換的復(fù)數(shù)矩陣的數(shù)組名,n為階數(shù)

〃返回值:無(wú)

〃說明:變換后的結(jié)果依舊保存在mat中

voidMatrixInv(Plura)*mat,intn):

〃能陣求逆。A為原矩陣,Ainv為求逆之后矩陣,n為階數(shù)

double*inv(doublc*A,double*Ainv,intn)

{

int*is,*js,i,j,k,1,u,v;

doubled,p;

for(i=0;i<n*n;i++)

*(Ainv+i)=*(A+i);

is=(int*)malloc(n*sizeof(int));

js=(int*)malloc(n*sizcof(int));

for(k=0;k<=n-l;k++)

{

d=0.0;

for(i=k;i<=n-l;i++)

for(j=k;j<=n-l;j++)

(

1=i*n+j;

p=fabs(Ainv[l]);

if(P>d)

for(i=0;i<=n-l;i++)

if(i!=k)

1

u=i*n+k;

Ainv[u]=-Ainv[u]*Ainv[lJ;)

}

for(k=n-1;k>=0;k-)

1

if(js[k]!=k)

for(j=0;j<=n-l;j++)

{

u=k*n+j:

v=jsfkl*n+j;

p=Ainv[uJ;

Ainv[u]=Ainv[v];

Ainvfv]=p;

)

if(is[k]!=k)

for(i=0;i<=n-1;i++)

u=i*n+k;

v=i*n+is[k];

p=Ainv[u];

Ainv[u]=Ainv[v];

Ainv[v]=p;

I

)

free(is);

free(js);

returnAinv;

)

〃參數(shù):a為原矩陣,b為逆矩陣,c為結(jié)果。其他在此都為n

voidmulAB(double*a,double*b.double*c,intam,intan,intbm,intbn)

{

inti,j,1,u;

if(an!=bm)

{

printf("不能完成原矩陣和其逆矩陣矩陣相乘\n”);

return;

)

for(i=0;i<am;i++)

for(j=0;j<bn;j++)

(

u=i*bn+j;

c[ul=0.0;

for(1=0;l<an:1++)

c[u]=c[u]+a[i*an+l]*b[l*bn+j]:

relum;

)

〃復(fù)數(shù)矩陣求逆。參數(shù):mat為待求矩陣,n為階數(shù)

voidMatrixinv(PIural*mat,intn)

(

inii,j;

doublepluralR[n][n],pluralI[nHn];

double=NULL,*b=NULL,氣=NULL;

double*resultR=NULL,*resultl=NULL;

Pluralresult[n][n];

for(i=0;i<n;i++)

:

for(j=0;j<n;j++)

{

pluralR[i][j]=mat[i*n+j].GetR();

plurall[i][j]=mat[i*n4j].GetI();

)

}

printf("原始矩陣為八n");

for(i=0;i<n;i++)

!

for(j=0;j<n;j++)

printf("%10.4f+j%0.4f\t",(*pluralR)[i*n+j],(*pluralI)[i*n4-j]);

printf("\n");

}

a=(double*)malloc(n*n*sizeof(double));

b=(double*)malloc(n*n*sizeof(double));

c=(double*)malloc(n*n*sizcof(doublc));

resultR=inv(*pluralR,a,n);

resultl=inv(*piurall,b5n);

if(resultl!=NULL)

(

printf("\n求逆之后虛部是后虛

if(n%2==0)

{

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

printf("%10.4f+j%0.4f\t",resultR==NULLO:resultR[i*n+j],resultI==NULLO:resultl[i*n+j]);

printf("\n");

else

for(i=0;i<n;i++)

for(j=O;j<n;j++)

printf("%10.4f+j%0.4f\t",resultR==NULLO:resultR[i*n+j],resultI==NULL0:-1.0*resultI[i*n+j]);

printf("\n");

//測(cè)試所求實(shí)部逆矩陣

//niulAB(*pluralR,a,c,n,n,n,n);

//printf("\n\n求逆后原實(shí)部和現(xiàn)在的實(shí)部乘積是\n");

//for(i=0;i<n;i++)

//{

//ror(j=0;j<n;j++)

//printf("%10.4iAr,c[i*n+j]);

//printfCNn'1);

〃}

//測(cè)試用所求逆矩陣

//rnulAB(*pluralI,b,c,n,n,n,n);

//prin(f("\n\n求逆之后原虛部和現(xiàn)在的虛部乘積是:\n");

//for(i=0;i<n;i++)

〃{

//for(j=0;j<n;j++)

//printf("%10.4f\t",-1.0*c[i*n+j]);

//prinlf("\n'^);

〃}

I

for(i=0;i<n;i++)

f

for(j=0;j<n;j++)

mat[i*n+j].SetRI(resultR==NULLO:resuItR[i*n+j],resultl==NULLO:resultl[i*n+j]);

I

free(a);

free(b);

free(c);

)

#include<iostream>

#includc"plural.hpp"

//#include"input.hpp"

usingnamespacestd;

voidNodlnit()

{

floatglS,glX,g2S,g2X,1IL,I1D,12L,12D,tlS,HU,t2S,t2U;

coutvv”請(qǐng)輸入發(fā)電機(jī)G1的容量S(無(wú)窮大請(qǐng)輸入0):

cin?glS;

coutvv”請(qǐng)輸入發(fā)電機(jī)G1的電抗Xd(沒有請(qǐng)輸入0):”;

cin?glX;

cout?endl?”******************************************"?endl?end卜

cout<<”請(qǐng)輸入發(fā)電機(jī)G2的容量S[無(wú)窮大請(qǐng)輸入0):

cin?g2S;

coutvv”請(qǐng)輸入發(fā)電機(jī)G2的電抗Xd(沒有請(qǐng)輸入0):

cin?g2X;

cout?endl?*******************************************"?endl?endl,

cout<<”請(qǐng)輸入線路1的長(zhǎng)度L(KM):

cin?11L;

coutV〈"請(qǐng)輸入線路1每千米電抗值:";

cin?11D;

cout?endl?'‘**************************木********木*******?endl?endl,

cout?”請(qǐng)輸入線路2的長(zhǎng)度L(KM):

cin?12L;

cout<<”請(qǐng)輸入線路2每千米電抗值:";

cin?12D;

木********木*x********木***************木***

cout?endl??I**11?endl?endl;

cout<<”請(qǐng)輸入變壓器T1的容置S(MVA):

cin?tlS;

cou(?”請(qǐng)輸入變壓器Ti的Uk%:";

cin?tlU;

cout?endl?**************x*************************?**"<<endl?endl;

coinw”請(qǐng)輸入變壓器T2的容量S(MVA):

cin?t2S;

cout?”請(qǐng)輸入變壓器T2的Uk%:

cin?t2U;

intmain()

I

NodlnitO;

Pluralmatrix2[3][3];

matrix2[0][0].SetRI(0,1);matrix2[0][1].SelRI(0,2);matrix2[1][0].SetRI(0,1);matrix2[I][I].SetRI(0J);

matrix2[0][2].SetRI(0,2);matrix2[1][2].SetRI(0,1);matrix2[2][0].SetRI(0,3);matrix2[2][1].SetRI(0,2);matrix2[2

][2].SetRI(0,l);

Matrixlnv(*matrix2,3);

printf("\nl點(diǎn)短路電流是\n");

printf("%f+j%f',PluralDiv(matrix2[0][0]).GetR(),PIuralDiv(matrix2[0][0]).GetI());

printf("\n2點(diǎn)短路電流是\n");

printf("%f+j%f\PluralDiv(matrix2[1][1]).GetR(),PkiralDiv(matrix2[1][1]).GetI());

printf("\n3點(diǎn)短路電流是\n");

printf("%f+j%f\PluralDiv(matrix2[1]f1]).GetR(),PkiralDiv(matrix2[1][1]).GetI());

getchar();

return0;

#inchide"stdafx.h"

#include,'stdio.h"

include1'math.h"

#defineSd100

#defineUavl37

#defineUav26.3

intmain(intargc,char*argv[])

(

doublexg1,S2,11,12,xT,Sn,xg

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論