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

 我来答
xoaxa
2013-09-17 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3596万
展开全部

/*

方程组维数 : 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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式