如果这样消元的话,怎样判断无解与无穷解呢
#include<iostream>
using namespace std;
double a[1010][1010];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
{
int p=i;
while(p<=n&&a[p][i]==0)
p++;
if(p==n+1)
{
/*
?
?
?
*/
}
for(int j=1;j<=n+1;j++)
swap(a[p][j],a[i][j]);
double kk=a[i][i];
for(int j=1;j<=n+1;j++)
a[i][j]=a[i][j]/kk;
for(int j=1;j<=n;j++)
{
if(i==j)
continue;
double st=a[j][i];
for(int k=1;k<=n+1;k++)
a[j][k]=a[j][k]-st*a[i][k];
}
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n+1;j++)
// cout<<a[i][j]<<" ";
// cout<<endl;
// }
for(int i=1;i<=n;i++)
printf("%.2lf\n",a[i][n+1]);
}
这样消元最后只会剩下对角线上的变量,且系数为 1 ,那么最后输出 ai,n+1 就是每个未知量的解,举个例子
3
1.00 2.00 -1.00 -6.00
2.00 1.00 -3.00 -9.00
-1.00 -1.00 2.00 7.00
此样例运行出来最后的矩阵是
1 0 0 1
-0 1 0 -2
0 0 1 3
这样的
那怎样判断无解与无穷解呢
谢谢