📄 高斯塞德尔.cpp
字号:
#include <iostream.h>
double qiuhe(double a[10][10],double y[10],int n,int i)
{
double sum=0;
for(int j=1;j<=n;j++)
{
if(i!=j)
sum=sum+a[i][j]*y[j];
}
return (sum);
}
void main()
{
bool sucess=0;
cout<<"请输入元素的个数:";
int n;
cin>>n;
cout<<"输入叠代次数:";
int N;
cin>>N;
double e;
cout<<"请输入精度"<<endl;
cin>>e;
double x[10];
double y[10];
double a[10][10];
double b[10];
cout<<"请输入数组叠代初值"<<endl;
for(int i3=1;i3<=n;i3++)
{
cin>>x[i3];
y[i3]=x[i3];
}
cout<<"输入B数组的值"<<endl;
for(int i4=1;i4<=n;i4++)
{
cin>>b[i4];
}
//创建系数矩阵
cout<<"创建系数矩阵"<<endl;
for(int i1=1;i1<=n;i1++)
for(int i2=1;i2<=n;i2++)
{
cin>>a[i1][i2];
}
double max=(y[1]-x[1])*(y[1]-x[1]);
int k=1;
while(k<N)
{
for(int i=1;i<=n;i++)
{
y[i]=(b[i]-qiuhe(a,y,n,i))/a[i][i];
}
//double max=(y[1]-x[1])*(y[1]-x[1]);
for(int j=1;j<=n;j++)
{
double t=(y[j]-x[j])*(y[j]-x[j]);
if(max<t)
max=t;
}
if(max<e*e)
{
sucess=1;
for(int j1=1;j1<=n;j1++)
cout<<y[i1]<<" ";
break;
}
else
{
// k++;
for(int j2=1;j2<=n;j2++)
x[j2]=y[j2];
}
if((k<=N)&&(sucess==0))
{
cout<<"叠代失败";
for(int j5=1;j5<=n;j5++)
cout<<y[j5]<<" ";
cout<<endl;
}
k++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -