我写了一段高斯消去法的代码,但是运行结果都是nan,请教怎么回事
#include
using namespace std;
int main(){
int i=4;
double str[i][i+1]={{2,3,11,5,2},{1,1,5,2,1},{2,1,3,2,-3},{1,1,3,4,-3}};
for(int m=0;m for(int n=m+1;n str[m][n]/=str[m][m];
}
str[m][m]=1;
for(int p=m+1;p for(int q=m+1;q str[p][q]-=str[p][m]*str[m][q];
}
str[p][m]=0;
}
}
for(int m=i-1;m>0;m--){
for(int p=m-1;p>=0;p--){
for(int q=p+1;q<m;q++){
str[p][q]-=str[p][m]*str[m][p];
}
str[p][i]-=str[p][m]*str[m][i];
str[p][m]=0;
}
}
for(int m=0;m<i;m++){
cout<<"x"<<m<<"="<<str[m][i]<<endl;
}
return 0;
}
x0=-2
x1=-2.22045e-16
x2=1
x3=-1
可以执行
x1很小,可以视作是0