欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:51554469       资源大小:138KB        全文页数:20页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    Good is good, but better carries it.精益求精,善益求善。C语言编写短路电流计算的程序-初始条件:如图所示电力系统,最大运行方式时,两个电源同时送电,变压器并联运行,忽略线路电阻,线路电抗0.4/km。计算k1和k2点在最大运行方式时的三相短路电流。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.写出三相短路电流的计算方法;2.用C或FORTRAN语言实现三相短路电流的计算程序;3.调试程序并求出计算结果;4.撰写计算方法原理、计算流程文档及设计说明书;5.提供计算程序代码。     代码使用C+编写的,共有三个文件,请建立工程,一起编译。这是Plural.hpp#ifndefPLURAL_HPP#definePLURAL_HPP/类名称:Plural /方法:GetR,GetI,SetRI,SetR,SetI/数据:m_pluralR,m_pluralI classPlural    public:        Plural();        Plural(floatpR,floatpI);        Plural();        floatGetR()const;        floatGetI()const;        voidSetRI(floatpR,floatpI);        voidSetR(floatpR);        voidSetI(floatpI);    private:          floatm_pluralR;          floatm_pluralI;/名称:复数乘法,PluralMul(Pluralplural1,Pluralplural2)/参数:复数plural1plural2 /返回值:复数 PluralPluralMul(Pluralplural1,Pluralplural2);/函数名:复数除法,运算浮点数除以复数 /参数:num,分子,是一个浮点数。den,分母,是一个复数 /返回值:结果的复数 PluralPluralDiv(floatnum,Pluralden);/函数名:复数求倒数 /参数:den,分母,是一个复数 /返回值:此复数的倒数 PluralPluralDiv(Pluralplu);/参数:mat为待变换的复数矩阵的数组名,n为阶数 /返回值:无 /说明:变换后的结果依旧保存在mat中 voidMatrixInv(Plural*mat,intn);#endif#include"plural.hpp"#include<stdio.h>#include<stdlib.h>#include<math.h>/类名称:Plural /方法:GetR,GetI,SetRI,SetR,SetI/数据:m_pluralR,m_pluralI Plural:Plural()  m_pluralR=0;  m_pluralI=0;Plural:Plural(floatpR,floatpI)  m_pluralR=pR;  m_pluralI=pI;                           Plural:Plural()floatPlural:GetR()const  returnm_pluralR;floatPlural:GetI()const  returnm_pluralI;voidPlural:SetRI(floatpR,floatpI)    m_pluralR=pR;    m_pluralI=pI;voidPlural:SetR(floatpR)    m_pluralR=pR;voidPlural:SetI(floatpI)    m_pluralI=pI;/  名称:复数乘法,PluralMul(Pluralplural1,Pluralplural2)/  参数:复数plural1plural2 /  返回值:复数 PluralPluralMul(Pluralplural1,Pluralplural2)    Pluralresult;    result.SetRI(plural1.GetR()*plural2.GetR()-plural1.GetI()*plural2.GetI(),plural1.GetR()*plural2.GetI()+plural1.GetI()*plural2.GetR();    returnresult;/函数名:复数除法,运算浮点数除以复数 /参数:num,分子,是一个浮点数。den,分母,是一个复数 /返回值:结果的复数 PluralPluralDiv(floatnum,Pluralden)    Pluralresult;    floatk;    k=den.GetR()*den.GetR()+den.GetI()*den.GetI();    result.SetR(num*den.GetR()/k);    result.SetI(-1.0*num*den.GetI()/k);    returnresult; /函数名:复数求倒数 /参数:den,分母,是一个复数 /返回值:此复数的倒数 PluralPluralDiv(Pluralplu)    Pluralresult;    floatk;    k=plu.GetR()*plu.GetR()+plu.GetI()*plu.GetI();    result.SetR(plu.GetR()/k);    result.SetI(-1.0*plu.GetI()/k);    returnresult; /说明:以下3个函数组合用来求复数矩阵的逆。 double*inv(double*A,double*Ainv,intn);voidmulAB(double*A,double*B,double*C,intam,intan,intbm,intbn);/参数:mat为待变换的复数矩阵的数组名,n为阶数 /返回值:无 /说明:变换后的结果依旧保存在mat中 voidMatrixInv(Plural*mat,intn);/矩阵求逆。A为原矩阵,Ainv为求逆之后矩阵,n为阶数 double*inv(double*A,double*Ainv,intn)   int*is,*js,i,j,k,l,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*sizeof(int);    for(k=0;k<=n-1;k+)     d=0.0;  for(i=k;i<=n-1;i+)  for(j=k;j<=n-1;j+)         l=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);       returnNULL;       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=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<=n-1;i+)  if(i!=k)         u=i*n+k;       Ainvu=-Ainvu*Ainvl;       for(k=n-1;k>=0;k-)         if(jsk!=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);    returnAinv;/参数:a为原矩阵,b为逆矩阵,c为结果。其他在此都为n voidmulAB(double*a,double*b,double*c,intam,intan,intbm,intbn)   inti,j,l,u;  if(an!=bm)       printf("不能完成原矩阵和其逆矩阵矩阵相乘n");    return;       for(i=0;i<am;i+)  for(j=0;j<bn;j+)       u=i*bn+j;    cu=0.0;    for(l=0;l<an;l+)    cu=cu+ai*an+l*bl*bn+j;    return;/复数矩阵求逆。参数:mat为待求矩阵,n为阶数 voidMatrixInv(Plural*mat,intn)    inti,j;  doublepluralRnn,pluralInn;  double*a=NULL,*b=NULL,*c=NULL;  double*resultR=NULL,*resultI=NULL;  Pluralresultnn;     for(i=0;i<n;i+)        for(j=0;j<n;j+)              pluralRij=mati*n+j.GetR();        pluralIij=mati*n+j.GetI();             printf("原始矩阵为:n");  for(i=0;i<n;i+)      for(j=0;j<n;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=(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;i<n;i+)                    for(j=0;j<n;j+)              printf("%10.4f+j%0.4ft",resultR=NULL?0:resultRi*n+j,resultI=NULL?0:resultIi*n+j);          printf("n");                    else              for(i=0;i<n;i+)                    for(j=0;j<n;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;i<n;i+)/      /        for(j=0;j<n;j+)/          printf("%10.4ft",ci*n+j);/        printf("n");/     /    测试用所求逆矩阵 /    mulAB(*pluralI,b,c,n,n,n,n);/    printf("nn求逆之后原虚部和现在的虚部乘积是:n");/    for(i=0;i<n;i+)/      /        for(j=0;j<n;j+)/          printf("%10.4ft",-1.0*ci*n+j);/        printf("n");/             for(i=0;i<n;i+)        for(j=0;j<n;j+)      mati*n+j.SetRI(resultR=NULL?0:resultRi*n+j,resultI=NULL?0:resultIi*n+j);         free(a);  free(b);  free(c);  #include<iostream>#include"plural.hpp"/#include"input.hpp"usingnamespacestd;voidNodInit()    floatg1S,g1X,g2S,g2X,l1L,l1D,l2L,l2D,t1S,t1U,t2S,t2U;    cout<<"请输入发电机G1的容量S(无穷大请输入0):"    cin>>g1S;    cout<<"请输入发电机G1的电抗Xd(没有请输入0):"    cin>>g1X;        cout<<endl<<"*"<<endl<<endl;        cout<<"请输入发电机G2的容量S(无穷大请输入0):"    cin>>g2S;    cout<<"请输入发电机G2的电抗Xd(没有请输入0):"    cin>>g2X;        cout<<endl<<"*"<<endl<<endl;        cout<<"请输入线路1的长度L(KM):"    cin>>l1L;    cout<<"请输入线路1每千米电抗值:"    cin>>l1D;        cout<<endl<<"*"<<endl<<endl;        cout<<"请输入线路2的长度L(KM):"    cin>>l2L;    cout<<"请输入线路2每千米电抗值:"    cin>>l2D;          cout<<endl<<"*"<<endl<<endl;        cout<<"请输入变压器T1的容量S(MVA):"    cin>>t1S;    cout<<"请输入变压器T1的Uk%:"    cin>>t1U;        cout<<endl<<"*"<<endl<<endl;        cout<<"请输入变压器T2的容量S(MVA):"    cin>>t2S;    cout<<"请输入变压器T2的Uk%:"    cin>>t2U;           intmain()  NodInit();  Pluralmatrix233;  matrix200.SetRI(0,1);matrix201.SetRI(0,2);matrix210.SetRI(0,1);matrix211.SetRI(0,1);  matrix202.SetRI(0,2);matrix212.SetRI(0,1);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();  return0;-

    注意事项

    本文(C语言编写短路电流计算的程序讲课讲稿.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开