简介
则高斯赛德尔迭代式为:
实例
代码
#include<iostream>
#include<math.h>
using namespace std;
int n;
double a[100][100],b[100],x[100][100];
double e;
void input()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cin>>a[i][j];
cin>>b[i];
}
}
void cau(){
for(int k=1;k<=10;k++)
{
for(int i=0;i<n;i++)
{
x[k][i] = 1.0/a[i][i];
double re = b[i];
for(int j=0;j<n;j++)
{
if(j!=i)
if(j<i) re -= a[i][j]*x[k][j];
else re -= a[i][j]*x[k-1][j];
}
x[k][i] *= re;
}
for(int i=0;i<n;i++)
cout<<x[k][i]<<" ";cout<<endl;
bool judge = true;
for(int i=0;i<n;i++)
if(fabs(x[k-1][i]-x[k][i])>e) {
judge = false;break;}
if(judge == true) return ;
}
}
int main()
{
cout<<"系数输入矩阵的阶数"<<endl;
cin>>n;
cout<<"请输入系数矩阵"<<endl;
input();
cout<<"请输入初始向量"<<endl;
for(int i=0;i<n;i++) cin>>x[0][i];
cout<<"输入求得的精度"<<endl;
cin>>e;
cau();
return 0;
}
结果: