C语言线性方程组求解,很急!

如题所述

/*

方程组维数 : 3

控制精度 : 0.000001

增广矩阵第1行(空格隔开):3 4 -6 12

增广矩阵第2行(空格隔开):1 -2 1 -3

增广矩阵第3行(空格隔开):3 2 -1 11

整理完毕,此时方程组为 :

1 1.33333 -2 4 

0 1 -0.9 2.1 

0 0 1 1 

方程的解为 :

2 3 1

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 + 1],eps,temp;
cout << "方程组维数 : ";
cin >> n;
cout << "控制精度 : ";
cin >> eps;
for(i = 0;i < n;i++) {
cout << "增广矩阵第" << i + 1 << "行(空格隔开):";
for(j = 0;j < n + 1;j++) cin >> A[i][j];
}
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 + 1;i++) {
temp = A[k][i];
A[k][i] = A[m][i];
A[m][i] = temp;
}
}
temp = A[k][k];
for(i = k; i < n + 1; ++i) A[k][i] /= temp; // 主元系数“归一”划
for(i = k + 1;i < n;i++) { // 消元
temp = A[i][k];
for(j = k; j < n + 1; ++j) {
A[i][j] -= A[k][j] * temp;
}
}
}
cout << "整理完毕,此时方程组为 :" << endl;
for(i = 0;i < n;i++) {
for(j = 0;j < n + 1;j++)
cout << A[i][j] << " ";
cout << endl;
}
for(i = n - 2;i >= 0;i--) {
for(j = i + 1;j < n;j++)
A[i][n] -= A[i][j] * A[j][n];
}
cout << "方程的解为 :" << endl;
for(i = 0; i < n;i++) cout << A[i][n] << " ";
cout << endl;
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答