📄 cal_tide.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 + -