⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal_tide.cpp

📁 高斯塞德尔迭代计算电网潮流
💻 CPP
字号:
// 程序为第174页例7.1 用高斯赛得尔迭代
//用阻抗网络矩阵实现 
//程序从resource文件中依次读入阻抗矩阵的第一行 Sn[0],Ys[0],Un[0][0]
//然后读入阻抗矩阵的第二行 Sn[1],Ys[1],Un[1][0]
//Un二维数组保存具体计算值 结果输出到文件result中
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <complex>
using namespace std;
int main()
{complex<double> Zn[2][2],Un[2][20];
 complex<double> Sn[2],Ys[2];
 complex<double> cosnt1,cosnt2,temp1,temp2;
 int  i,j,k,t; 

 ifstream infile("resource.txt",ios::in);
 if(!infile){cerr<<"open file failure!"<<endl;
              exit(1);
             } 	

  for(i=0;i<2;i++)
      {for(j=0;j<2;j++){infile>>Zn[i][j];
                        if(!infile){cerr<<"input error"<<endl;
                                    return EXIT_FAILURE;
                                   }
                        }      
                        infile>>Sn[i];
                        if(!infile){cerr<<"input error"<<endl;
                                    return EXIT_FAILURE;
                                   }                       
                        infile>>Ys[i];
                        if(!infile){cerr<<"input error"<<endl;
                                    return EXIT_FAILURE;
                                   }                       
                        infile>>Un[i][0];
                        if(!infile){cerr<<"input error"<<endl;
                                    return EXIT_FAILURE;
                                   }                       

                       
                       }   

/*      	               cout<<"Please input Zn["<<i<<"]["<<j<<"]:";
                       cin>>Zn[i][j];
                       if(!cin){cerr<<"input error"<<endl;
                                return EXIT_FAILURE;
                               }
                       cout<<endl;        
                       }
       cout<<"Please input Sn["<<i<<"]:";
       cin>>Sn[i];
       if(!cin){cerr<<"input error"<<endl;
                return EXIT_FAILURE;
                }
       cout<<endl;               

       cout<<"Please input Ys["<<i<<"]:";
       cin>>Ys[i];
       if(!cin){cerr<<"input error"<<endl;
                return EXIT_FAILURE;
                }
       cout<<endl;               

       cout<<"Please input Un["<<i<<"][0]:";
       cin>>Un[i][0];
       if(!cin){cerr<<"input error"<<endl;
                return EXIT_FAILURE;
                }
       cout<<endl;              
      } */

for(k=0;k<20;k++) 
   {t=k;
    Un[0][k+1]=Zn[0][0]*conj(Sn[0])/conj(Un[0][k])+Zn[0][1]*conj(Sn[1])/conj(Un[1][k]);
    Un[0][k+1]-=Zn[0][0]*Ys[0]+Zn[0][1]*Ys[1]; 
 
    Un[1][k+1]=Zn[1][0]*conj(Sn[0])/conj(Un[0][k+1])+Zn[1][1]*conj(Sn[1])/conj(Un[1][k]);
    Un[1][k+1]-=Zn[1][0]*Ys[0]+Zn[1][1]*Ys[1]; 
//    cout<<real(Un[0][k+1])-real(Un[0][k])<<endl;
    if(fabs(real(Un[0][k+1])-real(Un[0][k]))<1e-6&&fabs(imag(Un[0][k+1])-imag(Un[0][k]))<=1e-6)break;
    }
 
 ofstream outfile("result.txt",ios::out);
 if(!outfile){cerr<<"open file failure!"<<endl;
              exit(1);
             } 	
 	
 outfile<<"      This is the result of calculation!                "<<endl;
 outfile<<"--------------------------------------------------------"<<endl;
 outfile<<" n="<<t<<"         U1       "<<"         U2        "<<endl;
 outfile<<"--------------------------------------------------------"<<endl;
 for(i=0;i<t;i++){outfile<<"  "<<i+1<<" ";
                  outfile<<setiosflags(ios::fixed)<<setprecision(6);
                  outfile<<real(Un[0][i+1]);
                  if(imag(Un[0][i+1])<0){outfile<<"-j";
                                         outfile<<-imag(Un[0][i+1]);
                                        }
                  else outfile<<"+j"<<imag(Un[0][i+1]);
                  outfile<<"  ";                   
                  outfile<<real(Un[1][i+1]);
                  if(imag(Un[1][i+1])<0){outfile<<"-j";
                                         outfile<<-imag(Un[1][i+1]);
                                        }
                  else outfile<<"+j"<<imag(Un[1][i+1]);
                  outfile<<endl;
                }
 outfile.close();

 cout<<"The real is :"<<t;
 return (0);
} 




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -