📄 t2_5.cpp
字号:
// cpp t2_5源代码 上机练习题2_5
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
const int N=5;
int main()
{
int i,j;
double e,ss;
double aa[N+1][N+1]=
{
{0,0,0,0,0,0},
{0,28,-3,0,0,0},
{0,-3,38,-10,0,-5},
{0,0,-10,25,-15,0},
{0,0,0,-15,45,0},
{0,0,-5,0,0,30}
};
double bb[N+1]={0,10,0,0,0,0};
double ii0[N+1]={0,1,1,1,1,1};
double ii[N+1];
cout<<"上机练习题2_5"<<endl;
//////////////////////////////JACOBI迭代
do
{
for(i=1;i<=N;i++)
{
ss=0;
for(j=1;j<=N;j++)
if(j!=i)
ss+=aa[i][j]*ii0[j];
ii[i]=(bb[i]-ss)/aa[i][i];
}
e=fabs(ii[1]-ii0[1]);
for(i=1;i<=N;i++) ////找出最大误差
if(fabs(ii[i]-ii0[i])>e)
e=fabs(ii[i]-ii0[i]);
for(i=1;i<=N;i++)
ii0[i]=ii[i];
}while(e>=1E-3);
cout<<"用JACOBI迭代法解方程的结果为:"<<endl;
for(i=1;i<=N;i++)
cout<<"i["<<i<<"]="<<ii[i]<<";";
cout<<endl;
////////////////////////////////////////Gauss-Seidel迭代法
for(i=1;i<=N;i++)
{
ii[i]=1;
ii0[i]=1;
}
do
{
for(i=1;i<=N;i++)
{
ss=0;
for(j=1;j<=N;j++)
if(j!=i)
ss+=aa[i][j]*ii[j];
ii[i]=(bb[i]-ss)/aa[i][i];
}
e=fabs(ii[1]-ii0[1]);
for(i=1;i<=N;i++) ////找出最大误差
if(fabs(ii[i]-ii0[i])>e)
e=fabs(ii[i]-ii0[i]);
for(i=1;i<=N;i++)
ii0[i]=ii[i];
}while(e>=1E-3);
cout<<"用Gauss-Seidel迭代法解方程的结果为:"<<endl;
for(i=1;i<=N;i++)
cout<<"i["<<i<<"]="<<ii[i]<<";";
cout<<endl;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -