C语言编写短路电流计算的程序Word版_第1页
C语言编写短路电流计算的程序Word版_第2页
C语言编写短路电流计算的程序Word版_第3页
C语言编写短路电流计算的程序Word版_第4页
C语言编写短路电流计算的程序Word版_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初始条件:如图所示电力系统,最大运行方式时,两个电源同时送电,变压器并联运行,忽略线路电阻,线路电抗0.4/km。计算k1和k2点在最大运行方式时的三相短路电流。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.写出三相短路电流的计算方法;2.用C或FORTRAN语言实现三相短路电流的计算程序;3.调试程序并求出计算结果;4.撰写计算方法原理、计算流程文档及设计说明书;5.提供计算程序代码。 代码使用C+编写的,共有三个文件,请建立工程,一起编译。这是Plural.hpp#ifndef PLURAL_HPP#define PLURAL_HPP/类名称:Plu

2、ral/方法:GetR,GetI,SetRI,SetR,SetI/数据:m_pluralR,m_pluralIclass Plural public: Plural(); Plural(float pR, float pI); Plural(); float GetR() const; float GetI() const; void SetRI(float pR, float pI); void SetR(float pR); void SetI(float pI); private: float m_pluralR; float m_pluralI;/名称: 复数乘法,PluralMul(

3、Plural plural1, Plural plural2)/参数:复数plural1 plural2/返回值:复数Plural PluralMul(Plural plural1, Plural plural2);2 / 12/函数名:复数除法,运算浮点数除以复数/参数:num,分子,是一个浮点数。den,分母,是一个复数/返回值:结果的复数Plural PluralDiv(float num, Plural den);/函数名:复数求倒数/参数:den,分母,是一个复数/返回值:此复数的倒数Plural PluralDiv(Plural plu);/参数:mat为待变换的复数矩阵的数组名,

4、n为阶数/返回值:无/说明 :变换后的结果依旧保存在mat中void MatrixInv(Plural *mat, int n);#endif#include plural.hpp#include #include #include /类名称:Plural/方法:GetR,GetI,SetRI,SetR,SetI/数据:m_pluralR,m_pluralIPlural:Plural() m_pluralR = 0; m_pluralI = 0;Plural:Plural(float pR, float pI) m_pluralR = pR; m_pluralI = pI; Plural:Pl

5、ural()float Plural:GetR() const return m_pluralR;float Plural:GetI() const return m_pluralI;void Plural:SetRI(float pR, float pI) m_pluralR = pR; m_pluralI = pI;void Plural:SetR(float pR) m_pluralR = pR;void Plural:SetI(float pI) m_pluralI = pI;/名称: 复数乘法,PluralMul(Plural plural1, Plural plural2)/参数:

6、复数plural1 plural2/返回值:复数Plural PluralMul(Plural plural1, Plural plural2) Plural result; result.SetRI(plural1.GetR() * plural2.GetR() - plural1.GetI() * plural2.GetI(),plural1.GetR() * plural2.GetI() + plural1.GetI() * plural2.GetR(); return result;/函数名:复数除法,运算浮点数除以复数/参数:num,分子,是一个浮点数。den,分母,是一个复数/返回

7、值:结果的复数Plural PluralDiv(float num, Plural den) Plural result; float k; k = den.GetR() * den.GetR() + den.GetI() * den.GetI(); result.SetR(num*den.GetR()/k); result.SetI(-1.0*num*den.GetI()/k); return result;/函数名:复数求倒数/参数:den,分母,是一个复数/返回值:此复数的倒数Plural PluralDiv(Plural plu) Plural result; float k; k =

8、 plu.GetR() * plu.GetR() + plu.GetI() * plu.GetI(); result.SetR(plu.GetR()/k); result.SetI(-1.0*plu.GetI()/k); return result;/说明:以下3个函数组合用来求复数矩阵的逆。double *inv(double *A,double *Ainv,int n);void mulAB(double *A,double *B,double *C,int am,int an,int bm,int bn);/参数:mat为待变换的复数矩阵的数组名,n为阶数/返回值:无/说明 :变换后的结

9、果依旧保存在mat中void MatrixInv(Plural *mat, int n);/矩阵求逆。A为原矩阵,Ainv为求逆之后矩阵,n为阶数double *inv(double *A, double *Ainv, int n)int *is, *js, i, j, k, l, u, v;double d, 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

10、=n-1; i+) for (j=k; jd) d = p; isk = i; jsk = j; if (d + 1.0 = 1.0) free(is); free(js); return NULL; 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) for (i=0; i=n-1; i+) u = i * n + k; v = i * n + jsk; p = Ainvu; Ainvu = Ainvv; Ainvv

11、= 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 = j

12、sk * n + j; p = Ainvu; Ainvu = 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);return Ainv;/参数:a为原矩阵,b为逆矩阵,c为结果。其他在此都为nvoid mulAB(double *a, double *b, double *c, int am, int an, int bm, int bn)int i, j, l, u

13、;if (an != bm) printf(不能完成原矩阵和其逆矩阵矩阵相乘n); return;for (i=0; iam; i+)for (j=0; jbn; j+) u=i*bn+j; cu=0.0; for (l=0; lan; l+) cu=cu+ai*an+l*bl*bn+j;return;/复数矩阵求逆。参数:mat为待求矩阵,n为阶数void MatrixInv(Plural *mat,int n) int i, j; double pluralRnn, pluralInn; double *a = NULL, *b = NULL, *c = NULL; double *res

14、ultR = NULL, *resultI = NULL; Plural resultnn; for (i=0; in; i+) for(j=0; jn; j+) pluralRij = mati*n+j.GetR(); pluralIij = mati*n+j.GetI(); printf(原始矩阵为: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 =

15、 (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求逆之后虚部是: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:res

16、ultIi*n+j); printf(n); else 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:-1.0*resultIi*n+j); printf(n); / 测试所求实部逆矩阵/ mulAB(*pluralR,a,c,n,n,n,n);/ printf(nn求逆后原实部和现在的实部乘积是n);/ for(i=0;in;i+)/ / for(j=0;jn;j+)/ printf(%10.4ft, ci*n+j);/ p

17、rintf(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, resultI = NULL ? 0:resultIi*n+j); free(a); free(b

18、); free(c); #include #include plural.hpp/#include input.hppusing namespace std;void NodInit() float g1S, g1X, g2S, g2X, l1L, l1D, l2L, l2D, t1S, t1U, t2S, t2U; cout g1S; cout g1X; cout endl * endl endl; cout g2S; cout g2X; cout endl * endl endl; cout l1L; cout l1D; cout endl * endl endl; cout l2L; cout l2D; cout endl * endl endl; cout t1S; cout t1U; cout endl * endl endl; cout t2S; cout t2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论