短路电流计算_第1页
短路电流计算_第2页
短路电流计算_第3页
短路电流计算_第4页
短路电流计算_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

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

2、AL_HPP#define PLURAL_HPP/ 类名称: Plural/ 方法: GetR,GetI,SetRI,SetR,SetI/ 数据: m_pluralR,m_pluralIclass Pluralpublic: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_pl

3、uralI;/ 名称: 复数乘法, PluralMul(Plural plural1, Plural plural2)/ 参数:复数 plural1 plural2/ 返回值:复数Plural PluralMul(Plural plural1, Plural plural2);/ 函数名:复数除法,运算浮点数除以复数分母,是一个复数n 为阶数/ 参数: num ,分子,是一个浮点数。 den ,/ 返回值:结果的复数Plural PluralDiv(float num, Plural den);/ 函数名:复数求倒数/ 参数: den ,分母,是一个复数/ 返回值:此复数的倒数Plural P

4、luralDiv(Plural plu);/ 参数: mat 为待变换的复数矩阵的数组名,/ 返回值:无/ 说明 :变换后的结果依旧保存在 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,

5、float pI)m_pluralR = pR;m_pluralI = pI;Plural:Plural() float Plural:GetR() constreturn m_pluralR;float Plural:GetI() constreturn 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;/ 名称 : 复数乘法

6、, PluralMul(Plural plural1, Plural plural2)/ 参数:复数 plural1 plural2/ 返回值:复数Plural PluralMul(Plural plural1, Plural plural2) Plural result;plural1.GetI()result.SetRI(plural1.GetR() * plural2.GetR()plural2.GetI(),plural1.GetR() * plural2.GetI() + plural1.GetI() * plural2.GetR(); return result;/ 函数名:复数除

7、法,运算浮点数除以复数/ 参数: num ,分子,是一个浮点数。 den ,分母,是一个复数/ 返回值:结果的复数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

8、 PluralDiv(Plural plu)Plural result; float k;k = 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

9、,int bn);/ 参数: mat 为待变换的复数矩阵的数组名, n 为阶数/ 返回值:无/ 说明 :变换后的结果依旧保存在 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 =

10、 (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);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 +

11、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)

12、for (j=0; j=n-1; j+)u = k*n+j;v = jsk * 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 为结果。其他在此都为 n void mulAB(double *a, double *b, double *c, int am, i

13、nt an, int bm, int bn) int i, j, l, u;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 = NU

14、LL, *b = NULL, *c = NULL; double *resultR = 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*)m

15、alloc(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 求逆之后虚部是 :n);if (n%2 = 0)for (i=0; in; i+)for (j=0; jn; j+)0:resultRi*n+j,0:resultRi*n+j,printf(%10.4f + j%0.4ft,

16、 resultR=NULL? 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? 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+

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

18、#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;coutendl n*n endlendl;cout g2S;cout g2X;cout endl n*n endlendl;cout l1L;cout l1D;coutendl n*n endlendl;cout l2L;cout l2D;coutendl n*n endlendl;cout

温馨提示

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

评论

0/150

提交评论