t2_5.cpp
来自「本题采用的计算方法为:主要用Jacobi迭代和Gauss-Seidel迭代解线性」· C++ 代码 · 共 76 行
CPP
76 行
// 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 + =
减小字号Ctrl + -
显示快捷键?