📄 gauss.cpp
字号:
#include<stdio.h>
#include<iostream.h>
#include<fstream.h>
#include<math.h>
void main()
{
ifstream fin("input.txt",ios::in);
ofstream fout("output.txt",ios::out);
double **a,*x,mid,det=0;
int n,i,j,k,num,flag=1;
fin>>n;
a=new double*[n];
for(i=0;i<n;++i)
a[i]=new double[n+1];
x=new double[n];
for(i=0;i<n;++i)
for(j=0;j<n+1;++j)
fin>>a[i][j];
for(i=0;i<n;++i)
fin>>x[i];
fin>>num;
for(i=0;i<n;++i)
{
if(a[i][i]==0)
{
fout<<"高斯迭代法无法运行!"<<endl;
flag=0;
break;
}
}
if(flag==1)
{
for(k=0;k<num;++k)
{
for(i=0;i<n;++i)
{
mid=x[i];
x[i]=a[i][n];
for(j=0;j<n;++j)
{
if(j!=i)
x[i]=x[i]-a[i][j]*x[j];
}
x[i]=x[i]/a[i][i];
if(fabs(mid-x[i])>det)
det=fabs(mid-x[i]);
}
if(det<0.000001)
{
fout<<"经过"<<k+1<<"次高斯迭代后,得:"<<endl;
for(i=0;i<n;++i)
fout<<x[i]<<endl;
break;
}
det=0;
}
if(k==num)
fout<<"在规定次数内没有迭代出所需要的结果。"<<endl;
}
delete[] a;
delete[] x;
fin.close();
fout.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -