C++高斯列主元消去法,这是我写的程序,计算结果不正确,求高手修改下

#include<iostream.h>
#include<math.h>
#define N 100
int main()
{
int n,k,i,j,m,l;
double A[N][N],b[N],eps,temp,x[N];
cout<<"请输入方程组维数"<<endl;
cin>>n;
cout<<"请输入控制精度"<<endl;
cin>>eps;
cout<<"请输入矩阵A"<<endl;
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{
cin>>A[i][j];
}
}
cout<<"矩阵输入完毕"<<endl;
cout<<"请输入右端项b"<<endl;
for(i=0;i<=n-1;i++)
{
cin>>b[i];
}
cout<<"右端项输入完毕"<<endl;
for(k=0;k<n-1;k++)
{
double max=A[k][k];
for(j=k+1;j<=n-1;j++)
{
if(abs(A[j][k])>abs(A[k][k]))
{
max=A[j][k];
}
}
if(max<eps)
{
return 0;
}
if(max!=A[k][k])
{
temp=A[k][k];
A[k][k]=A[j][k];
A[j][k]=temp;
temp=0;
temp=b[k];
b[k]=b[j];
b[j]=temp;
for(l=0;l<=n-1;l++)
{
temp=0;
temp=A[k][l];
A[k][l]=A[j][l];
A[j][l]=temp;
}
}
for(j=k+1;j<=n-1;j++)
{
double tmp=A[j][k]/A[k][k];
b[j]-=tmp*b[k];
for(l=0;l<=n-1;l++)
{
A[j][l]-=tmp*A[k][l];
}
}
}
cout<<"整理完毕,此时方程组为"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<A[i][j]<<" ";
}
}
cout<<"此时右端项为"<<endl;
for(i=0;i<n;i++)
{
cout<<b[i]<<" ";
}
x[n-1]=b[n-1]/A[n-1][n-1];
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i+1;j--)
{
b[i]-=A[i][j]*x[j];
}
x[i]=b[i]/A[i][i];
}
cout<<"方程的解为"<<endl;
for(l=0;l<n;l++)
cout<<x[i]<<" ";
return 0;
}

/*
方程组维数 : 3
控制精度 : 0.0000006
系数矩阵
2 1 -1
3 -1 1
1 3 -1
系数矩阵输入完毕!
常数项矩阵
-1 6 2
常数项矩阵输入完毕!
整理完毕,此时方程组为
1 -0.333333 0.333333 2
0 1 -0.4 0
0 0 1 5
方程的解为
1
2
5
Press any key to continue
*/
#include <iostream.h>#include <math.h>
#define N 100
int main() {
int n,k,i,j,m;
double A[N][N],b[N],eps,temp;
cout << "方程组维数 : ";
cin >> n;
cout << "控制精度 : ";
cin >> eps;
cout << "系数矩阵" << endl;
for(i = 0;i < n;i++)
for(j = 0;j < n;j++)
cin >> A[i][j];
cout << "系数矩阵输入完毕!" << endl;
cout << "常数项矩阵" << endl;
for(i = 0;i < n;i++) cin >> b[i];
cout << "常数项矩阵输入完毕!" << endl;
for(k = 0; k < n; ++k) {
m = k;
for(i = k + 1; i < n; ++i)
if(fabs(A[i][k]) > fabs(A[m][k]))
m = i;
if(fabs(A[m][k]) <= eps) return 0;
if(m != k) {
for(i = k;i < n;i++) {
temp = A[k][i];
A[k][i] = A[m][i];
A[m][i] = temp;
}
temp = b[k];
b[k] = b[m];
b[m] = temp;
}
for(i = k + 1; i < n; ++i) A[k][i] /= A[k][k]; // 主元系数“归一”划
b[k] /= A[k][k];
A[k][k] = 1.0;
for(i = k + 1;i < n;i++) { // 消元
temp = A[i][k];
for(j = k; j < n; ++j) {
A[i][j] -= A[k][j] * temp;
}
b[i] -= b[k] * temp;
A[i][k] = 0.0;
}
}
cout << "整理完毕,此时方程组为" << endl;
for(i = 0;i < n;i++) {
for(j = 0;j < n;j++) cout << A[i][j] << " ";
cout << b[i] << endl;
}
for(i = n - 2;i >= 0;i--)
for(j = i + 1;j < n;j++) b[i] -= A[i][j] * b[j];
cout << "方程的解为" << endl;
for(i = 0; i < n;i++) cout << b[i] << endl;
return 0;}
温馨提示:答案为网友推荐,仅供参考
相似回答