C语言编写短路电流计算的程序.doc

上传人:豆**** 文档编号:17412267 上传时间:2022-05-23 格式:DOC 页数:12 大小:169KB
返回 下载 相关 举报
C语言编写短路电流计算的程序.doc_第1页
第1页 / 共12页
C语言编写短路电流计算的程序.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《C语言编写短路电流计算的程序.doc》由会员分享,可在线阅读,更多相关《C语言编写短路电流计算的程序.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、pp#ifndef PLURAL_HPP#define PLURAL_HPP/类名称:Plural/方法: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

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

4、ralDiv(Plural plu);/参数:mat为待变换的复数矩阵的数组名,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

5、_pluralR = pR; m_pluralI = pI; Plural:Plural()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;/名称: 复数乘法,Plura

6、lMul(Plural plural1, Plural plural2)/参数:复数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;/函数名:复数除法,运算

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 PluralDiv

8、(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,int bn);/

9、参数: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 = (int*)malloc(n*sizeof(int)

10、;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 + k; v = i * n

11、 + 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!=

12、k) 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为结果。其他在此都为nvoid mulAB(double *a, double *b, double *c, int a

13、m, int 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 =

14、 NULL, *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 =

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

16、LL? 0:resultRi*n+j, resultI=NULL ? 0:resultIi*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

17、(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, resultI =

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

19、 l1D; cout endl * endl endl; cout l2L; cout l2D; cout endl * endl endl; cout t1S; cout t1U; cout endl * endl endl; cout t2S; cout t2U; int main() NodInit(); Plural matrix233; matrix200.SetRI(0,1);matrix201.SetRI(0,2);matrix210.SetRI(0,1);matrix211.SetRI(0,1); matrix202.SetRI(0,2);matrix212.SetRI(0,1

20、);matrix220.SetRI(0,3);matrix221.SetRI(0,2);matrix222.SetRI(0,1); MatrixInv(*matrix2,3); printf(n1点短路电流是n); printf(%f + j%f,PluralDiv(matrix200).GetR(), PluralDiv(matrix200).GetI(); printf(n2点短路电流是n); printf(%f + j%f,PluralDiv(matrix211).GetR(), PluralDiv(matrix211).GetI(); printf(n3点短路电流是n); printf(%f + j%f,PluralDiv(matrix211).GetR(), PluralDiv(matrix211).GetI(); getchar(); return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁