double a[i][i];
const double eps =1e-5;//1*10^-5
void gauss(int n)
{
for(int i=1;i<=n;i++)//枚举方程
{
int k=-1;
for(int j=1;j<=n&&k==-1;j++)
if(fabs(a[i][j])>eps) k=j;//fabs 绝对值 eps自定义精度(相对于0)
if(k==-1){
if(fabs(a[i][n+1])<eps) puts("duo jie");
else puts("wu jie");
return;
}
where[i]=k;//记一下每个方程的主元位置
for(int j=1;j<=n;j++) if(i!=j)//其他方程
{
double t=a[j][p]/a[i][p];
for(int p=1;p<=n+1;p++)//注意是n+1
a[j][k]-=a[i][k]*t;
}
for(int i=1;i<=n;i++)
x[where[i]]=a[i][n+1]/a[i][where[i]];
}
}
其实原理和代入消元法差不多~
高斯消元法
最新推荐文章于 2018-07-11 13:01:32 发布