用C语言写出列主元消去法求解线性方程组的代码
时间: 2024-05-15 08:19:00 浏览: 17
好的,以下是用C语言写出列主元消去法求解线性方程组的代码:
```
#include<stdio.h>
#include<math.h>
#define MAX_SIZE 10
#define EPSILON 1e-10
int main() {
int n, i, j, k, max_row;
double A[MAX_SIZE][MAX_SIZE], B[MAX_SIZE], X[MAX_SIZE], max, temp, multiplier;
printf("请输入线性方程组的未知数个数n:");
scanf("%d", &n);
printf("请输入增广矩阵A|B的系数:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%lf", &A[i][j]);
}
scanf("%lf", &B[i]);
}
// 高斯消元
for (i = 0; i < n - 1; i++) {
// 选主元
max_row = i;
max = fabs(A[i][i]);
for (j = i + 1; j < n; j++) {
if (fabs(A[j][i]) > max) {
max = fabs(A[j][i]);
max_row = j;
}
}
// 交换行
if (max_row != i) {
for (j = 0; j < n; j++) {
temp = A[i][j];
A[i][j] = A[max_row][j];
A[max_row][j] = temp;
}
temp = B[i];
B[i] = B[max_row];
B[max_row] = temp;
}
// 消元
for (j = i + 1; j < n; j++) {
multiplier = A[j][i] / A[i][i];
for (k = i; k < n; k++) {
A[j][k] -= multiplier * A[i][k];
}
B[j] -= multiplier * B[i];
}
}
// 回代
for (i = n - 1; i >= 0; i--) {
X[i] = B[i];
for (j = i + 1; j < n; j++) {
X[i] -= A[i][j] * X[j];
}
X[i] /= A[i][i];
}
// 打印结果
printf("方程组的解为:\n");
for (i = 0; i < n; i++) {
printf("%.2lf ", X[i]);
}
printf("\n");
return 0;
}
```
如果你还有其他问题,可以继续提出。