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

下载本文档

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

文档简介

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

2、:Plural方法:GetR,GetI,SetRI,SetR,SetI数据:m_pluralR,m_pluralIclass Pluralpublic:Plural();Plural(float pR, float pl);Plural();float GetR() const;float Getl() const;void SetRI(float pRz float pl);void SetR(float pR);void Setl(float pl);private:float m_pluralR;float m_plurall;;/名称:复数乘法,PluralMul(Plural plu

3、rall, Plural plural2)参数:复数 plurall plural2返回值:复数Plural PluralMul(Plural plurall, Plural plural2);函数名:复数除法,运算浮点数除以复数参数:num,分子,是一个浮点数。den,分母,是一个复数返回值:结果的复数Plural PluralDiv(float num, Plural den);函数名:复数求倒数参数:den,分母,是一个复数返回值:此复数的倒数 Plural PluralDiv(Plural plu);参数:mat为待变换的复数矩阵的数组名,n为阶数返回值:无说明:变换后的结果依旧保存在

4、mat中void MatrixInv(Plural *mat, int n);# endif#inelude "plural.hpp"#include <stdio.h>#include <stdlib.h>#include <math.h>类名称:Plural方法:GetR,GetIzSetRI,SetRzSetI数据:m_pluralR,m_pluralIPlural: :Plural()m_pluralR = 0; m_plurall = 0;Plural: :Plural(float pR, float pl)m_pluralR

5、= pR; m_plurall = pl;Plural: :Plural()float Plural:GetR() constreturn m_pluralR;float Plural:GetI() constreturn m_plurall;void Plural:SetRI(float pR, float pl)m_pluralR = pR; m_plurall = pl;void Plural:SetR(float pR)m_pluralR = pR;void Plural:SetI(float pl) m_plurall = pl;/ 名称:复数乘法,PluralMul(Plural

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

7、是一个浮点数。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(Plural plu)Plural result;f

8、loat 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 *Czint am,int an,int bmzint 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, lz u, v;double dz p;for (i=0; ivn*n; i+)*(Ainv+i) = *(A+i);is = (int*)malloc(n*sizeof(i nt);js = (in t*)malloc(n*sizeof(i nt);for (k=0; k<=n-l; k+) d=0.0;for

10、 (i=k; i<=n-l; i+) for (j=k; j<=n-l; j+) I = i*n+j;p = fabs(Ainvl);if (p>d)d = P;isk = i;jsk = j;if (d + 1.0 = 1.0)free(is); free(js); return NULL;if (isk != k)for 0=0; j<=n-l; j+)u =+j;v = isk * n + j;p = Ainvfu;Ainvu = Ainvv;Ainvv = p;if (jsk != k)for (i=0; i<=n-l; i+) u = i * n + k

11、;v = i * n + jsk; p = Ainvfu;Ainvu = Ainvfv;Ainvv = p;I = k * n + k;Ainvfl = 1.0 / Ainvfl;for (j=0; j<=n-l; j+)if (j!=k)u = k * n + j;Ainvu = Ainvfu * Ainvfl;for (i=0; i<=n-l; i+)if (i != k)for (j=0; j<=n-l; j+) if(j!=k)u = i * n + j;Ainvu = Ainvfu - Ainvi*n+k * Ainvk*n+j;for (i=0; i<=n-

12、l; i+)if (i != k)u = i * n + k;Ainvu = -Ainvfu * Ainvl;for (k=n-l; k>=0; k)if (jsk! = k)for (j=0; j<=n-l; j+ + )u =+j;v = jsk * n + j;p = Ainvu;Ainvu = Ainvv;Ainvv = p;if (isk != k)for (i=0; iv=nl; i+)u = i * n + k;v = i * n + isk;p = Ainvu;Ainvu = Ainvfv;Ainvv = p;free(is);free(js);return Ain

13、v;参数:a为原矩阵,b为逆矩阵,c为结果。英他在此都为nvoid mulAB(double *az double *b, double *c, int am, int an, int bmz int bn) int i, j, lz u;if (an != bm)printf(“不能完成原矩阵和其逆矩阵矩阵相乘nH);return;for (i=0; i<am; i+)for (j=0; jvbn; j+)u=i*b n+j;cu=0.0;for (1=0; l<an; I+)cu=cu+ai*an+l*bl*bn+j;return;复数矩阵求逆。参数:mat为待求矩阵,n为阶数

14、void MatrixInv(Plural *mat,int n)int i, j;double pluralRnn, plurallnn;double *a = NULL, *b = NULL, *c = NULL;double *resultR = NULL, *resultl = NULL;Plural resultnn;for (i=0; i<n; i+)for(j=0; j<n; j+)pluralRij = mati*n+j.GetR();plurallij = mati*n+j.GetI();printf(”原始矩阵为:nH);for(i=0;i vn ;i+)for

15、(j=0;j<n;j+)pnntf(H%10.4f + j%0.4ft,z (*pluralR)i*n+j/(*pluralI)i*n+j); printfCXn");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);resultl = inv(* plurall,bz n);if (resultl != NULL)printf(Mn求逆之

16、后虚部是:nH);if (n%2 = 0)for (i=0; i<n; i+)for (j=0; jvn; j+)printf("%10.4f + j%04ft蔦 resultR=NULL? 0:resultRi*n+jz resultI=NULL ? O:resultli*n+j);printfC'Xn");elsefor (i=0; i<n; i+)for (j=0; j<n; j+)pnntf(H%10.4f + j%04ft蔦 resultR=NULL? 0:resultRi*n+j,resultI=NULL ? 0:-1.0*result

17、Ii*n+j);printfCXn");/测试所求实部逆矩阵/mulAB(*pluralR,a/c,nznzn,n);/printfC'XnXn求逆后原实部和现在的实部乘积是n“);/for(i=0;i<n;i+)/for(j=0;j<n;j+)/printf(,%10.4ft,z ci*n+j);/printfC-Xn");/ 测试用所求逆矩阵mulAB(*pluralIzb,czn,nzn,n);printf(Hnn求逆之后原虚部和现在的虚部乘积是:nH); for (i=0; i<n; i+)for (j=0; j<n; j+)prin

18、tf("%10.4ft,z -1.0*ci*n+j); printfC'Xn");for (i=0; i<n; i+)for (j=0; j<n; j+)mati*n+j.SetRI(resultR = NULL ? O:resultRi*n+jz resultl = NULL ? O:resultli*n+j);free(a);free(b);free(c);#include <iostream>#inelude "plural.hpp"/#include "input.hpp"using names

19、pace std;void Nodlnit()float glS, glX, g2S, g2Xz I1L, I1D, I2L, I2D, tlS, tlU, t2S, t2U;cout << ”请输入发电机G1的容量S (无穷大请输入0): ”;cin >> glS;cout << ”请输入发电机G1的电抗Xd (没有请输入0): “;cin >> glX;cout << endl << << endl << endl;cout << ”请输入发电机G2的容量S (无穷大请输入0): “

20、; cin >> g2S;cout << ”请输入发电机G2的电抗Xd (没有请输入0): “; cin >> g2X;cout << endl <<I B<-)l,1-,1-,1-*-,1-,1 ,1-*-t- *-X-<-)l,1-1-| i*TW<< endl << endl;cout << ”请输入线路1的长度L(KM): H; cin >> I1L;cout « ”请输入线路1每千米电抗值:“; cin >> I1D;cout <<

21、 endl <<“*“<< endl << endl;cout << ”请输入线路2的长度L(KM): n; cin >> I2L;cout « ”请输入线路2每千米电抗值:“; cin >> I2D;cout << endl <<“*“<< endl << endl;cout << ”请输入变压器T1的容量S (MVA): n; cin >> tlS;cout << ”请输入变压器T1的Uk%:"cin >> till;cout << endl <<“*“<< endl << endl;cout << ”

温馨提示

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

评论

0/150

提交评论